diff --git a/.gitignore b/.gitignore index 9bb0631d3..4df45b480 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,8 @@ DerivedData *.perspectivev3 !default.perspectivev3 xcuserdata +*.xcodeproj +*.xcworkspace ## Other *.xccheckout diff --git a/.gitmodules b/.gitmodules index 6bf44d67e..f854cfd2a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,30 +1,36 @@ -[submodule "Cores/DeltaCore"] - path = Cores/DeltaCore - url = git@github.com:rileytestut/DeltaCore.git [submodule "Cores/SNESDeltaCore"] path = Cores/SNESDeltaCore url = git@github.com:rileytestut/SNESDeltaCore.git -[submodule "External/Roxas"] - path = External/Roxas - url = git@github.com:rileytestut/Roxas.git [submodule "Cores/GBADeltaCore"] path = Cores/GBADeltaCore url = git@github.com:rileytestut/GBADeltaCore.git [submodule "Cores/GBCDeltaCore"] path = Cores/GBCDeltaCore url = git@github.com:rileytestut/GBCDeltaCore.git -[submodule "External/Harmony"] - path = External/Harmony - url = https://github.com/rileytestut/Harmony.git [submodule "Cores/NESDeltaCore"] path = Cores/NESDeltaCore url = git@github.com:rileytestut/NESDeltaCore.git -[submodule "Cores/N64DeltaCore"] - path = Cores/N64DeltaCore - url = git@github.com:rileytestut/N64DeltaCore.git -[submodule "Cores/DSDeltaCore"] - path = Cores/DSDeltaCore - url = https://github.com/rileytestut/DSDeltaCore.git -[submodule "Cores/MelonDSDeltaCore"] - path = Cores/MelonDSDeltaCore - url = https://github.com/rileytestut/MelonDSDeltaCore.git +[submodule "Cores/MelonDSDeltaCore/melonDS"] + path = Cores/MelonDSDeltaCore/melonDS + url = git@github.com:rileytestut/melonDS.git +[submodule "Cores/Mupen64PlusDeltaCore/Mupen64Plus/mupen64plus-core"] + path = Cores/Mupen64PlusDeltaCore/Mupen64Plus/mupen64plus-core + url = git@github.com:rileytestutrileytestut/mupen64plus-core.git +[submodule "Cores/Mupen64PlusDeltaCore/Mupen64Plus/GLideN64"] + path = Cores/Mupen64PlusDeltaCore/Mupen64Plus/GLideN64 + url = git@github.com:rileytestut/GLideN64.git +[submodule "Cores/Mupen64PlusDeltaCore/Mupen64Plus/libpng"] + path = Cores/Mupen64PlusDeltaCore/Mupen64Plus/libpng + url = git://git.code.sf.net/p/libpng/code +[submodule "Cores/Mupen64PlusDeltaCore/Mupen64Plus/mupen64plus-rsp-hle"] + path = Cores/Mupen64PlusDeltaCore/Mupen64Plus/mupen64plus-rsp-hle + url = git@github.com:mupen64plus/mupen64plus-rsp-hle.git +[submodule "Cores/DeSmuMEDeltaCore/desmume"] + path = Cores/DeSmuMEDeltaCore/desmume + url = git@github.com:TASVideos/desmume.git +[submodule "External/Harmony"] + path = External/Harmony + url = git@github.com:rileytestut/Harmony.git +[submodule "External/Roxas"] + path = External/Roxas + url = git@github.com:rileytestut/Roxas.git diff --git a/.package.resolved b/.package.resolved new file mode 100644 index 000000000..3fd8853da --- /dev/null +++ b/.package.resolved @@ -0,0 +1,16 @@ +{ + "object": { + "pins": [ + { + "package": "ZIPFoundation", + "repositoryURL": "https://github.com/rileytestut/ZIPFoundation", + "state": { + "branch": "development", + "revision": "9ea4da96aae5ae4842f81aed684e10cff057d7b9", + "version": null + } + } + ] + }, + "version": 1 +} diff --git a/.tuist-version b/.tuist-version new file mode 100644 index 000000000..83cf0d951 --- /dev/null +++ b/.tuist-version @@ -0,0 +1 @@ +1.29.1 diff --git a/Cores/DSDeltaCore b/Cores/DSDeltaCore deleted file mode 160000 index b59ca1970..000000000 --- a/Cores/DSDeltaCore +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b59ca197068be7cf8ca66ff52b24e686154a1c15 diff --git a/Cores/DeSmuMEDeltaCore/Derived/InfoPlists/DeSmuMEDeltaCore.plist b/Cores/DeSmuMEDeltaCore/Derived/InfoPlists/DeSmuMEDeltaCore.plist new file mode 100644 index 000000000..323e5ecfc --- /dev/null +++ b/Cores/DeSmuMEDeltaCore/Derived/InfoPlists/DeSmuMEDeltaCore.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/Cores/DeSmuMEDeltaCore/Derived/Sources/Bundle+DeSmuMEDeltaCore.swift b/Cores/DeSmuMEDeltaCore/Derived/Sources/Bundle+DeSmuMEDeltaCore.swift new file mode 100644 index 000000000..aac745f22 --- /dev/null +++ b/Cores/DeSmuMEDeltaCore/Derived/Sources/Bundle+DeSmuMEDeltaCore.swift @@ -0,0 +1,23 @@ +// swiftlint:disable all +import Foundation + +// MARK: - Swift Bundle Accessor + +private class BundleFinder {} + +extension Foundation.Bundle { + /// Since DeSmuMEDeltaCore is a framework, the bundle containing the resources is copied into the final product. + static var module: Bundle = { + return Bundle(for: BundleFinder.self) + }() +} + +// MARK: - Objective-C Bundle Accessor + +@objc +public class DeSmuMEDeltaCoreResources: NSObject { + @objc public class var bundle: Bundle { + return .module + } +} +// swiftlint:enable all \ No newline at end of file diff --git a/Cores/DeSmuMEDeltaCore/Project.swift b/Cores/DeSmuMEDeltaCore/Project.swift new file mode 100644 index 000000000..e8ac1610c --- /dev/null +++ b/Cores/DeSmuMEDeltaCore/Project.swift @@ -0,0 +1,85 @@ +import ProjectDescription + +let project = Project(name: "DeSmuMEDeltaCore", + packages: [], + targets: [ + Target(name: "DeSmuMEDeltaCore", + platform: .iOS, + product: .framework, + bundleId: "com.rileytestut.desmumeDeltaCore", + deploymentTarget: .iOS(targetVersion: "12.2", devices: [.iphone, .ipad]), + infoPlist: .extendingDefault(with: [:]), + sources: ["Sources/**/*.swift", "Sources/Bridge/DeSmuMEEmulatorBridge.{h,mm}"], + resources: ["Resources/**/*.{deltamapping,deltaskin}"], + headers: Headers(public: ["Sources/DeSmuMEDeltaCore.h", "Sources/Bridge/DeSmuMEEmulatorBridge.h"], project: "Sources/Types/DeSmuMETypes.h"), + dependencies: [ + .project(target: "DeltaCore", path: "../DeltaCore"), + .target(name: "libDeSMuME"), + .sdk(name: "libz.tbd"), + ], + settings: Settings(base: [ + "HEADER_SEARCH_PATHS": "\"$(SRCROOT)/desmume/desmume/src/libretro-common/include\"", + "OTHER_CFLAGS": "-DHOST_DARWIN -DDESMUME_COCOA -DHAVE_OPENGL -DHAVE_LIBZ -DANDROID -fexceptions -ftree-vectorize -DCOMPRESS_MT -DIOS -DOBJ_C -marm -fvisibility=hidden" + ])), + Target(name: "libDeSMuME", + platform: .iOS, + product: .staticLibrary, + bundleId: "com.rileytestut.libDeSMuME", + deploymentTarget: .iOS(targetVersion: "12.2", devices: [.iphone, .ipad]), + infoPlist: .extendingDefault(with: [:]), + sources: [ + SourceFileGlob("desmume/desmume/src/**/*.{c,cpp}", excluding: [ + "desmume/desmume/src/OGLRender*.{c,cpp}", + "desmume/desmume/src/lua-engine.{c,cpp}", + "desmume/desmume/src/frontend/**/*.{c,cpp}", + "desmume/desmume/src/libretro-common/algorithms/**/*.{c,cpp}", + "desmume/desmume/src/libretro-common/compat/**/*.{c,cpp}", + "desmume/desmume/src/libretro-common/conversion/**/*.{c,cpp}", + "desmume/desmume/src/libretro-common/crt/**/*.{c,cpp}", + "desmume/desmume/src/libretro-common/dynamic/**/*.{c,cpp}", + "desmume/desmume/src/libretro-common/file/nbio/**/*.{c,cpp}", + "desmume/desmume/src/libretro-common/file/archive_*.{c,cpp}", + "desmume/desmume/src/libretro-common/file/config_file.{c,cpp}", + "desmume/desmume/src/libretro-common/file/config_file.{c,cpp}", + "desmume/desmume/src/libretro-common/formats/**/*.{c,cpp}", + "desmume/desmume/src/libretro-common/gfx/**/*.{c,cpp}", + "desmume/desmume/src/libretro-common/glsm/**/*.{c,cpp}", + "desmume/desmume/src/libretro-common/glsym/**/*.{c,cpp}", + "desmume/desmume/src/libretro-common/hash/**/*.{c,cpp}", + "desmume/desmume/src/libretro-common/include/**/*.{c,cpp}", + "desmume/desmume/src/libretro-common/libco/**/*.{c,cpp}", + "desmume/desmume/src/libretro-common/lists/**/*.{c,cpp}", + "desmume/desmume/src/libretro-common/memmap/**/*.{c,cpp}", + "desmume/desmume/src/libretro-common/net/**/*.{c,cpp}", + "desmume/desmume/src/libretro-common/queues/**/*.{c,cpp}", + "desmume/desmume/src/libretro-common/rthreads/async_job.{c,cpp}", + "desmume/desmume/src/libretro-common/rthreads/rsemaphore.{c,cpp}", + "desmume/desmume/src/libretro-common/rthreads/xenon_sdl_threads.{c,cpp}", + "desmume/desmume/src/libretro-common/streams/**/*.{c,cpp}", + "desmume/desmume/src/libretro-common/string/**/*.{c,cpp}", + "desmume/desmume/src/libretro-common/utils/**/*.{c,cpp}", + "desmume/desmume/src/libretro-common/vulkan/**/*.{c,cpp}", + "desmume/desmume/src/metaspu/SoundTouch/*_win.{c,cpp}", + "desmume/desmume/src/metaspu/win32/**/*.{c,cpp}", + "desmume/desmume/src/utils/arm_arm/**/*.{c,cpp}", + "desmume/desmume/src/utils/AsmJit/**/*.{c,cpp}", + "desmume/desmume/src/utils/colorspacehandler/*_*.{c,cpp}" + ]) + ], + headers: Headers( + project: [ + "desmume/desmume/src/*.{h,hpp}", + "desmume/desmume/src/libretro-common/include/*.{h,hpp}", + "desmume/desmume/src/libretro-common/include/math/*.{h,hpp}", + "desmume/desmume/src/metaspu/**/*.{h,hpp}", + "libDeSmuME/*.{h,hpp}" + ] + ), + settings: Settings(base: [ + "OTHER_LDFLAGS": "-ObjC", + "CLANG_CXX_LANGUAGE_STANDARD": "compiler-default", + "CLANG_CXX_LIBRARY": "compiler-default", + "HEADER_SEARCH_PATHS": "\"$(SRCROOT)/desmume/desmume/src/libretro-common/include\"", + "OTHER_CFLAGS": "-DHOST_DARWIN -DDESMUME_COCOA -DHAVE_OPENGL -DHAVE_LIBZ -DANDROID -fexceptions -ftree-vectorize -DCOMPRESS_MT -DIOS -DOBJ_C -marm -fvisibility=hidden" + ])), + ]) diff --git a/Cores/DeSmuMEDeltaCore/Resources/Standard.deltamapping b/Cores/DeSmuMEDeltaCore/Resources/Standard.deltamapping new file mode 100644 index 000000000..4f87c0f39 Binary files /dev/null and b/Cores/DeSmuMEDeltaCore/Resources/Standard.deltamapping differ diff --git a/Cores/DeSmuMEDeltaCore/Resources/Standard.deltaskin b/Cores/DeSmuMEDeltaCore/Resources/Standard.deltaskin new file mode 100644 index 000000000..8f5adc4dc Binary files /dev/null and b/Cores/DeSmuMEDeltaCore/Resources/Standard.deltaskin differ diff --git a/Cores/DeSmuMEDeltaCore/Resources/info.json b/Cores/DeSmuMEDeltaCore/Resources/info.json new file mode 100644 index 000000000..0ed555b18 --- /dev/null +++ b/Cores/DeSmuMEDeltaCore/Resources/info.json @@ -0,0 +1,921 @@ +{ + "name" : "Standard DS", + "identifier" : "com.delta.ds.standard", + "gameTypeIdentifier" : "com.rileytestut.delta.game.ds", + "debug" : false, + "representations" : { + "iphone" : { + "standard" : { + "portrait" : { + "assets" : { + "resizable" : "iphone_portrait.pdf" + }, + "items": [ + { + "inputs": { + "up": "up", + "down": "down", + "left": "left", + "right": "right" + }, + "frame": { + "x": 15, + "y": 500, + "width": 128, + "height": 128 + }, + "extendedEdges": { + "top": 15, + "bottom": 15, + "left": 17, + "right": 10 + } + }, + { + "inputs": [ + "a" + ], + "frame": { + "x": 313, + "y": 540, + "width": 47, + "height": 47 + }, + "extendedEdges": { + "top": 0, + "bottom": 0, + "left": 0, + "right": 16 + } + }, + { + "inputs": [ + "b" + ], + "frame": { + "x": 267, + "y": 586, + "width": 47, + "height": 47 + }, + "extendedEdges": { + "top": 0, + "left": 0, + "right": 0 + } + }, + { + "inputs": [ + "l" + ], + "frame": { + "x": 18, + "y": 366, + "width": 32, + "height": 112 + }, + "extendedEdges": { + "right": 0, + "left": 18 + } + }, + { + "inputs": [ + "r" + ], + "frame": { + "x": 325, + "y": 366, + "width": 32, + "height": 112 + }, + "extendedEdges": { + "left": 0, + "right": 18 + } + }, + { + "inputs": [ + "start" + ], + "frame": { + "x": 154, + "y": 600, + "width": 18, + "height": 18 + }, + "extendedEdges": { + "top": 15, + "bottom": 0, + "left": 0, + "right": 45 + } + }, + { + "inputs": [ + "select" + ], + "frame": { + "x": 154, + "y": 631, + "width": 18, + "height": 18 + }, + "extendedEdges": { + "top": 0, + "bottom": 15, + "left": 0, + "right": 45 + } + }, + { + "inputs": [ + "menu" + ], + "frame": { + "x": 154, + "y": 498, + "width": 18, + "height": 18 + }, + "extendedEdges": { + "left": 0, + "right": 45 + } + }, + { + "inputs": [ + "y" + ], + "frame": { + "x": 221, + "y": 540, + "width": 47, + "height": 47 + }, + "extendedEdges": { + "top": 0, + "bottom": 0, + "right": 0 + } + }, + { + "inputs": [ + "x" + ], + "frame": { + "x": 267, + "y": 494, + "width": 47, + "height": 47 + }, + "extendedEdges": { + "bottom": 0, + "left": 0, + "right": 0 + } + }, + { + "inputs": { + "x": "touchScreenX", + "y": "touchScreenY" + }, + "frame": { + "x": 50, + "y": 252, + "width": 275, + "height": 206 + }, + "extendedEdges": { + "top": 0, + "bottom": 0, + "left": 0, + "right": 0 + } + } + ], + "screens": [ + { + "inputFrame": { + "x": 0, + "y": 0, + "width": 256, + "height": 192 + }, + "outputFrame": { + "x": 50, + "y": 18, + "width": 275, + "height": 206 + } + }, + { + "inputFrame": { + "x": 0, + "y": 192, + "width": 256, + "height": 192 + }, + "outputFrame": { + "x": 50, + "y": 252, + "width": 275, + "height": 206 + } + } + ], + "mappingSize" : { + "width" : 375, + "height" : 667 + }, + "extendedEdges" : { + "top" : 7, + "bottom" : 7, + "left" : 7, + "right" : 7 + } + }, + "landscape" : { + "assets" : { + "resizable" : "iphone_landscape.pdf" + }, + "items": [ + { + "inputs": { + "up": "up", + "down": "down", + "left": "left", + "right": "right" + }, + "frame": { + "x": 15, + "y": 235, + "width": 123, + "height": 123 + }, + "extendedEdges": { + "top": 15, + "bottom": 20, + "left": 20, + "right": 20 + } + }, + { + "inputs": [ + "a" + ], + "frame": { + "x": 606, + "y": 273, + "width": 47, + "height": 47 + }, + "extendedEdges": { + "top": 0, + "bottom": 0, + "left": 0, + "right": 30 + } + }, + { + "inputs": [ + "b" + ], + "frame": { + "x": 562, + "y": 318, + "width": 47, + "height": 47 + }, + "extendedEdges": { + "top": 0, + "left": 0, + "right": 0 + } + }, + { + "inputs": [ + "l" + ], + "frame": { + "x": 173, + "y": 219, + "width": 135, + "height": 33 + }, + "extendedEdges": { + "top": 0 + } + }, + { + "inputs": [ + "r" + ], + "frame": { + "x": 359, + "y": 219, + "width": 135, + "height": 33 + }, + "extendedEdges": { + "top": 0 + } + }, + { + "inputs": [ + "start" + ], + "frame": { + "x": 304, + "y": 287, + "width": 18, + "height": 18 + }, + "extendedEdges": { + "right": 50 + } + }, + { + "inputs": [ + "select" + ], + "frame": { + "x": 410, + "y": 288, + "width": 18, + "height": 18 + }, + "extendedEdges": { + "right": 50 + } + }, + { + "inputs": [ + "menu" + ], + "frame": { + "x": 195, + "y": 288, + "width": 18, + "height": 18 + }, + "extendedEdges": { + "right": 50 + } + }, + { + "inputs": [ + "x" + ], + "frame": { + "x": 562, + "y": 229, + "width": 47, + "height": 47 + }, + "extendedEdges": { + "top": 8, + "bottom": 0, + "left": 0, + "right": 0 + } + }, + { + "inputs": [ + "y" + ], + "frame": { + "x": 517, + "y": 273, + "width": 47, + "height": 47 + }, + "extendedEdges": { + "top": 0, + "bottom": 0, + "right": 0 + } + }, + { + "inputs": { + "x": "touchScreenX", + "y": "touchScreenY" + }, + "frame": { + "x": 361, + "y": 24, + "width": 259, + "height": 194 + }, + "extendedEdges": { + "top": 0, + "bottom": 0, + "left": 0, + "right": 0 + } + } + ], + "mappingSize" : { + "width" : 667, + "height" : 375 + }, + "screens": [ + { + "inputFrame": { + "x": 0, + "y": 0, + "width": 256, + "height": 192 + }, + "outputFrame": { + "x": 47, + "y": 24, + "width": 259, + "height": 194 + } + }, + { + "inputFrame": { + "x": 0, + "y": 192, + "width": 256, + "height": 192 + }, + "outputFrame": { + "x": 361, + "y": 24, + "width": 259, + "height": 194 + } + } + ], + "extendedEdges" : { + "top" : 15, + "bottom" : 15, + "left" : 15, + "right" : 15 + } + } + }, + "edgeToEdge" : { + "portrait" : { + "assets" : { + "resizable" : "iphone_edgetoedge_portrait.pdf" + }, + "items" : [ + { + "inputs" : { + "up" : "up", + "down" : "down", + "left" : "left", + "right" : "right" + }, + "frame" : { + "x" : 17, + "y" : 698, + "width" : 141, + "height" : 141 + }, + "extendedEdges" : { + "top" : 15, + "bottom" : 15, + "left" : 17, + "right" : 10 + } + }, + { + "inputs" : [ + "a" + ], + "frame" : { + "x" : 346, + "y" : 743, + "width" : 52, + "height" : 52 + }, + "extendedEdges" : { + "top" : 0, + "bottom" : 0, + "left" : 0, + "right" : 16 + } + }, + { + "inputs" : [ + "b" + ], + "frame" : { + "x" : 295, + "y" : 794, + "width" : 52, + "height" : 52 + }, + "extendedEdges" : { + "top" : 0, + "left" : 0, + "right" : 0 + } + }, + { + "inputs" : [ + "l" + ], + "frame" : { + "x" : 23, + "y" : 630, + "width" : 127, + "height" : 35 + } + , + "extendedEdges": { + "top": 0, + "left": 22 + } + }, + { + "inputs" : [ + "r" + ], + "frame" : { + "x" : 263, + "y" : 630, + "width" : 127, + "height" : 35 + } + , + "extendedEdges": { + "top": 0, + "right": 22 + } + }, + { + "inputs" : [ + "start" + ], + "frame" : { + "x" : 171, + "y" : 808, + "width" : 20, + "height" : 20 + }, + "extendedEdges" : { + "top": 15, + "bottom": 0, + "left": 0, + "right" : 45 + } + }, + { + "inputs" : [ + "select" + ], + "frame" : { + "x" : 171, + "y" : 844, + "width" : 20, + "height" : 20 + }, + "extendedEdges": { + "top": 0, + "bottom": 15, + "left": 0, + "right": 45 + } + }, + { + "inputs" : [ + "menu" + ], + "frame" : { + "x" : 170, + "y" : 697, + "width" : 20, + "height" : 20 + }, + "extendedEdges": { + "left": 0, + "right": 45 + } + }, + { + "inputs" : [ + "y" + ], + "frame" : { + "x" : 244, + "y" : 743, + "width" : 52, + "height" : 52 + }, + "extendedEdges" : { + "top" : 0, + "bottom" : 0, + "right" : 0 + } + }, + { + "inputs" : [ + "x" + ], + "frame" : { + "x" : 295, + "y" : 692, + "width" : 52, + "height" : 52 + }, + "extendedEdges" : { + "bottom" : 0, + "left" : 0, + "right" : 0 + } + }, + { + "inputs": { + "x": "touchScreenX", + "y": "touchScreenY" + }, + "frame": { + "x": 25, + "y": 366, + "width": 363, + "height": 273 + } + , + "extendedEdges": { + "top": 0, + "bottom": 0, + "left": 0, + "right": 0 + } + } + ], + "screens": [ + { + "inputFrame": { + "x": 0, + "y": 0, + "width": 256, + "height": 192 + }, + "outputFrame": { + "x": 25, + "y": 54, + "width": 363, + "height": 273 + } + }, + { + "inputFrame": { + "x": 0, + "y": 192, + "width": 256, + "height": 192 + }, + "outputFrame": { + "x": 25, + "y": 366, + "width": 363, + "height": 273 + } + } + ], + "mappingSize" : { + "width" : 414, + "height" : 896 + }, + "extendedEdges" : { + "top" : 7, + "bottom" : 7, + "left" : 7, + "right" : 7 + } + }, + "landscape" : { + "assets" : { + "resizable" : "iphone_edgetoedge_landscape.pdf" + }, + "items" : [ + { + "inputs" : { + "up" : "up", + "down" : "down", + "left" : "left", + "right" : "right" + }, + "frame" : { + "x" : 69, + "y" : 260, + "width" : 136, + "height" : 136 + }, + "extendedEdges" : { + "left" : 30, + "top" : 20, + "right" : 20, + "bottom" : 20 + } + }, + { + "inputs" : [ + "a" + ], + "frame" : { + "x" : 777, + "y" : 302, + "width" : 51, + "height" : 51 + }, + "extendedEdges" : { + "top" : 0, + "bottom" : 0, + "left" : 0, + "right" : 30 + } + }, + { + "inputs" : [ + "b" + ], + "frame" : { + "x" : 728, + "y" : 351, + "width" : 51, + "height" : 51 + }, + "extendedEdges" : { + "top" : 0, + "left" : 0, + "right" : 0 + } + }, + { + "inputs" : [ + "l" + ], + "frame" : { + "x" : 69, + "y" : 65, + "width" : 40, + "height" : 148 + } + , + "extendedEdges": { + "left": 50, + "right": 0 + } + }, + { + "inputs" : [ + "r" + ], + "frame" : { + "x" : 788, + "y" : 65, + "width" : 40, + "height" : 148 + } + , + "extendedEdges": { + "left": 0, + "right": 50 + } + }, + { + "inputs" : [ + "start" + ], + "frame" : { + "x" : 415, + "y" : 315, + "width" : 20, + "height" : 20 + }, + "extendedEdges": { + "right": 50 + } + }, + { + "inputs" : [ + "select" + ], + "frame" : { + "x" : 533, + "y" : 315, + "width" : 20, + "height" : 20 + }, + "extendedEdges" : { + "right" : 50 + } + }, + { + "inputs" : [ + "menu" + ], + "frame" : { + "x" : 295, + "y" : 315, + "width" : 20, + "height" : 20 + }, + "extendedEdges": { + "right": 50 + } + }, + { + "inputs" : [ + "x" + ], + "frame" : { + "x" : 728, + "y" : 253, + "width" : 51, + "height" : 51 + }, + "extendedEdges" : { + "bottom" : 0, + "left" : 0, + "right" : 0 + } + }, + { + "inputs" : [ + "y" + ], + "frame" : { + "x" : 679, + "y" : 302, + "width" : 51, + "height" : 51 + }, + "extendedEdges" : { + "top" : 0, + "bottom" : 0, + "right" : 0 + } + }, + { + "inputs": { + "x": "touchScreenX", + "y": "touchScreenY" + }, + "frame": { + "x": 500, + "y": 27, + "width": 286, + "height": 214 + } + , + "extendedEdges": { + "top": 0, + "bottom": 0, + "left": 0, + "right": 0 + } + } + ], + "mappingSize" : { + "width" : 896, + "height" : 414 + }, + "screens": [ + { + "inputFrame": { + "x": 0, + "y": 0, + "width": 256, + "height": 192 + }, + "outputFrame": { + "x": 110, + "y": 27, + "width": 286, + "height": 214 + } + }, + { + "inputFrame": { + "x": 0, + "y": 192, + "width": 256, + "height": 192 + }, + "outputFrame": { + "x": 500, + "y": 27, + "width": 286, + "height": 214 + } + } + ], + "extendedEdges" : { + "top" : 15, + "bottom" : 15, + "left" : 15, + "right" : 15 + } + } + } + } + } +} \ No newline at end of file diff --git a/Cores/DeSmuMEDeltaCore/Resources/iphone_edgetoedge_landscape.pdf b/Cores/DeSmuMEDeltaCore/Resources/iphone_edgetoedge_landscape.pdf new file mode 100644 index 000000000..949dc7b64 Binary files /dev/null and b/Cores/DeSmuMEDeltaCore/Resources/iphone_edgetoedge_landscape.pdf differ diff --git a/Cores/DeSmuMEDeltaCore/Resources/iphone_edgetoedge_portrait.pdf b/Cores/DeSmuMEDeltaCore/Resources/iphone_edgetoedge_portrait.pdf new file mode 100644 index 000000000..41e48bf4d Binary files /dev/null and b/Cores/DeSmuMEDeltaCore/Resources/iphone_edgetoedge_portrait.pdf differ diff --git a/Cores/DeSmuMEDeltaCore/Resources/iphone_landscape.pdf b/Cores/DeSmuMEDeltaCore/Resources/iphone_landscape.pdf new file mode 100644 index 000000000..d33daba9b Binary files /dev/null and b/Cores/DeSmuMEDeltaCore/Resources/iphone_landscape.pdf differ diff --git a/Cores/DeSmuMEDeltaCore/Resources/iphone_portrait.pdf b/Cores/DeSmuMEDeltaCore/Resources/iphone_portrait.pdf new file mode 100644 index 000000000..cc5bf29d3 Binary files /dev/null and b/Cores/DeSmuMEDeltaCore/Resources/iphone_portrait.pdf differ diff --git a/Cores/DeSmuMEDeltaCore/Sources/Bridge/DeSmuMEEmulatorBridge.h b/Cores/DeSmuMEDeltaCore/Sources/Bridge/DeSmuMEEmulatorBridge.h new file mode 100644 index 000000000..f33ab9940 --- /dev/null +++ b/Cores/DeSmuMEDeltaCore/Sources/Bridge/DeSmuMEEmulatorBridge.h @@ -0,0 +1,24 @@ +// +// DeSmuMEEmulatorBridge.h +// DeSmuMEDeltaCore +// +// Created by Riley Testut on 8/2/19. +// Copyright © 2019 Riley Testut. All rights reserved. +// + +#import + +@protocol DLTAEmulatorBridging; + +NS_ASSUME_NONNULL_BEGIN + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Weverything" // Silence "Cannot find protocol definition" warning due to forward declaration. +@interface DeSmuMEEmulatorBridge : NSObject +#pragma clang diagnostic pop + +@property (class, nonatomic, readonly) DeSmuMEEmulatorBridge *sharedBridge; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Cores/DeSmuMEDeltaCore/Sources/Bridge/DeSmuMEEmulatorBridge.mm b/Cores/DeSmuMEDeltaCore/Sources/Bridge/DeSmuMEEmulatorBridge.mm new file mode 100644 index 000000000..53dd5eb57 --- /dev/null +++ b/Cores/DeSmuMEDeltaCore/Sources/Bridge/DeSmuMEEmulatorBridge.mm @@ -0,0 +1,357 @@ +// +// DeSmuMEEmulatorBridge.m +// DeSmuMEDeltaCore +// +// Created by Riley Testut on 8/2/19. +// Copyright © 2019 Riley Testut. All rights reserved. +// + +#import "DeSmuMEEmulatorBridge.h" + +#import +#import + +#if STATIC_LIBRARY +#import "DeSmuMEDeltaCore-Swift.h" +#else +#import +#endif + +// DeSmuME +#include "types.h" +#include "render3D.h" +#include "rasterize.h" +#include "SPU.h" +#include "debug.h" +#include "NDSSystem.h" +#include "path.h" +#include "slot1.h" +#include "saves.h" +#include "cheatSystem.h" +#include "slot1.h" +#include "version.h" +#include "metaspu.h" +#include "GPU.h" + +#undef BOOL + +#define SNDCORE_DELTA 1 + +void DLTAUpdateAudio(s16 *buffer, u32 num_samples); +u32 DLTAGetAudioSpace(); + +SoundInterface_struct DeltaAudio = { + SNDCORE_DELTA, + "CoreAudio Sound Interface", + SNDDummy.Init, + SNDDummy.DeInit, + DLTAUpdateAudio, + DLTAGetAudioSpace, + SNDDummy.MuteAudio, + SNDDummy.UnMuteAudio, + SNDDummy.SetVolume, +}; + +volatile bool execute = true; + +GPU3DInterface *core3DList[] = { + &gpu3DNull, + &gpu3DRasterize, + NULL +}; + +SoundInterface_struct *SNDCoreList[] = { + &SNDDummy, + &DeltaAudio, + NULL +}; + +@interface DeSmuMEEmulatorBridge () +{ + BOOL _isPrepared; +} + +@property (nonatomic, copy, nullable, readwrite) NSURL *gameURL; + +@property (nonatomic) uint32_t activatedInputs; +@property (nonatomic) CGPoint touchScreenPoint; + +@end + +@implementation DeSmuMEEmulatorBridge +@synthesize audioRenderer = _audioRenderer; +@synthesize videoRenderer = _videoRenderer; +@synthesize saveUpdateHandler = _saveUpdateHandler; + ++ (instancetype)sharedBridge +{ + static DeSmuMEEmulatorBridge *_emulatorBridge = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _emulatorBridge = [[self alloc] init]; + }); + + return _emulatorBridge; +} + +#pragma mark - Emulation State - + +- (void)startWithGameURL:(NSURL *)gameURL +{ + self.gameURL = gameURL; + + path.ReadPathSettings(); + + // General + CommonSettings.num_cores = (int)sysconf( _SC_NPROCESSORS_ONLN ); + CommonSettings.advanced_timing = false; + CommonSettings.cheatsDisable = true; + CommonSettings.autodetectBackupMethod = 1; + CommonSettings.use_jit = false; + CommonSettings.micMode = TCommonSettings::Physical; + CommonSettings.showGpu.main = 1; + CommonSettings.showGpu.sub = 1; + + // HUD + CommonSettings.hud.FpsDisplay = false; + CommonSettings.hud.FrameCounterDisplay = false; + CommonSettings.hud.ShowInputDisplay = false; + CommonSettings.hud.ShowGraphicalInputDisplay = false; + CommonSettings.hud.ShowLagFrameCounter = false; + CommonSettings.hud.ShowMicrophone = false; + CommonSettings.hud.ShowRTC = false; + + // Graphics + CommonSettings.GFX3D_HighResolutionInterpolateColor = 0; + CommonSettings.GFX3D_EdgeMark = 0; + CommonSettings.GFX3D_Fog = 1; + CommonSettings.GFX3D_Texture = 1; + CommonSettings.GFX3D_LineHack = 0; + + // Sound + CommonSettings.spuInterpolationMode = SPUInterpolation_Cosine; + CommonSettings.spu_advanced = false; + + // Firmware + CommonSettings.fwConfig.language = NDS_FW_LANG_ENG; + CommonSettings.fwConfig.favoriteColor = 15; + CommonSettings.fwConfig.birthdayMonth = 10; + CommonSettings.fwConfig.birthdayDay = 7; + CommonSettings.fwConfig.consoleType = NDS_CONSOLE_TYPE_LITE; + + static const char *nickname = "Delta"; + CommonSettings.fwConfig.nicknameLength = strlen(nickname); + for(int i = 0 ; i < CommonSettings.fwConfig.nicknameLength ; ++i) + { + CommonSettings.fwConfig.nickname[i] = nickname[i]; + } + + static const char *message = "Delta is the best!"; + CommonSettings.fwConfig.messageLength = strlen(message); + for(int i = 0 ; i < CommonSettings.fwConfig.messageLength ; ++i) + { + CommonSettings.fwConfig.message[i] = message[i]; + } + + if (!_isPrepared) + { + Desmume_InitOnce(); + + NDS_Init(); + cur3DCore = 1; + + GPU->Change3DRendererByID(1); + GPU->SetColorFormat(NDSColorFormat_BGR888_Rev); + + SPU_ChangeSoundCore(SNDCORE_DELTA, DESMUME_SAMPLE_RATE * 8/60); + + _isPrepared = true; + } + + NSURL *gameDirectory = [NSURL URLWithString:@"/dev/null"]; + path.setpath(PathInfo::BATTERY, gameDirectory.fileSystemRepresentation); + + if (!NDS_LoadROM(gameURL.relativePath.UTF8String)) + { + NSLog(@"Error loading ROM: %@", gameURL); + } +} + +- (void)stop +{ + NDS_FreeROM(); +} + +- (void)pause +{ +} + +- (void)resume +{ +} + +#pragma mark - Game Loop - + +- (void)runFrameAndProcessVideo:(BOOL)processVideo +{ + // Inputs + NDS_setPad(self.activatedInputs & DeSmuMEGameInputRight, + self.activatedInputs & DeSmuMEGameInputLeft, + self.activatedInputs & DeSmuMEGameInputDown, + self.activatedInputs & DeSmuMEGameInputUp, + self.activatedInputs & DeSmuMEGameInputSelect, + self.activatedInputs & DeSmuMEGameInputStart, + self.activatedInputs & DeSmuMEGameInputB, + self.activatedInputs & DeSmuMEGameInputA, + self.activatedInputs & DeSmuMEGameInputY, + self.activatedInputs & DeSmuMEGameInputX, + self.activatedInputs & DeSmuMEGameInputL, + self.activatedInputs & DeSmuMEGameInputR, + false, + false); + + if (self.activatedInputs & DeSmuMEGameInputTouchScreenX || self.activatedInputs & DeSmuMEGameInputTouchScreenY) + { + NDS_setTouchPos(self.touchScreenPoint.x, self.touchScreenPoint.y); + } + else + { + NDS_releaseTouch(); + } + + NDS_beginProcessingInput(); + NDS_endProcessingInput(); + + if (!processVideo) + { + NDS_SkipNextFrame(); + } + + NDS_exec(); + + if (processVideo) + { + memcpy(self.videoRenderer.videoBuffer, GPU->GetDisplayInfo().masterNativeBuffer, 256 * 384 * 4); + [self.videoRenderer processFrame]; + } + + SPU_Emulate_user(); +} + +#pragma mark - Inputs - + +- (void)activateInput:(NSInteger)input value:(double)value +{ + self.activatedInputs |= (uint32_t)input; + + CGPoint touchPoint = self.touchScreenPoint; + + switch ((DeSmuMEGameInput)input) + { + case DeSmuMEGameInputTouchScreenX: + touchPoint.x = value * 256; + break; + + case DeSmuMEGameInputTouchScreenY: + touchPoint.y = value * 192; + break; + + default: break; + } + + self.touchScreenPoint = touchPoint; +} + +- (void)deactivateInput:(NSInteger)input +{ + self.activatedInputs &= ~((uint32_t)input); + + CGPoint touchPoint = self.touchScreenPoint; + + switch ((DeSmuMEGameInput)input) + { + case DeSmuMEGameInputTouchScreenX: + touchPoint.x = 0; + break; + + case DeSmuMEGameInputTouchScreenY: + touchPoint.y = 0; + break; + + default: break; + } + + self.touchScreenPoint = touchPoint; +} + +- (void)resetInputs +{ + self.activatedInputs = 0; + self.touchScreenPoint = CGPointZero; +} + +#pragma mark - Game Saves - + +- (void)saveGameSaveToURL:(NSURL *)URL +{ + MMU_new.backupDevice.export_raw(URL.fileSystemRepresentation); +} + +- (void)loadGameSaveFromURL:(NSURL *)URL +{ + if ([[NSFileManager defaultManager] fileExistsAtPath:URL.path]) + { + MMU_new.backupDevice.import_raw(URL.fileSystemRepresentation); + } +} + +#pragma mark - Save States - + +- (void)saveSaveStateToURL:(NSURL *)URL +{ + savestate_save(URL.fileSystemRepresentation); +} + +- (void)loadSaveStateFromURL:(NSURL *)URL +{ + savestate_load(URL.fileSystemRepresentation); +} + +#pragma mark - Cheats - + +- (BOOL)addCheatCode:(NSString *)cheatCode type:(NSString *)type +{ + return NO; +} + +- (void)resetCheats +{ +} + +- (void)updateCheats +{ +} + +#pragma mark - Audio - + +void DLTAUpdateAudio(s16 *buffer, u32 num_samples) +{ + [DeSmuMEEmulatorBridge.sharedBridge.audioRenderer.audioBuffer writeBuffer:(uint8_t *)buffer size:num_samples * 4]; +} + +u32 DLTAGetAudioSpace() +{ + NSInteger availableBytes = DeSmuMEEmulatorBridge.sharedBridge.audioRenderer.audioBuffer.availableBytesForWriting; + + u32 availableFrames = (u32)availableBytes / 4; + return availableFrames; +} + +#pragma mark - Getters/Setters - + +- (NSTimeInterval)frameDuration +{ + return (1.0 / 60.0); +} + +@end diff --git a/Cores/DeSmuMEDeltaCore/Sources/Bridge/texcache.cpp b/Cores/DeSmuMEDeltaCore/Sources/Bridge/texcache.cpp new file mode 100644 index 000000000..d5af6a91c --- /dev/null +++ b/Cores/DeSmuMEDeltaCore/Sources/Bridge/texcache.cpp @@ -0,0 +1,19 @@ +// +// texcache.cpp +// DSDeltaCore +// +// Created by Riley Testut on 2/3/20. +// Copyright © 2020 Riley Testut. All rights reserved. +// + +// Rename TextureCache to prevent static library collision with N64's TextureCache. +#define TextureCache TextureCacheDS + +#include "../../desmume/desmume/src/texcache.cpp" + +// Include files that reference texcache.h. +#include "../../desmume/desmume/src/driver.cpp" +#include "../../desmume/desmume/src/render3D.cpp" +#include "../../desmume/desmume/src/rasterize.cpp" + +#undef TextureCache diff --git a/Cores/DeSmuMEDeltaCore/Sources/DeSmuME.swift b/Cores/DeSmuMEDeltaCore/Sources/DeSmuME.swift new file mode 100644 index 000000000..bec36d3c6 --- /dev/null +++ b/Cores/DeSmuMEDeltaCore/Sources/DeSmuME.swift @@ -0,0 +1,75 @@ +// +// DeSmuMEDeltaCore.swift +// DeSmuMEDeltaCore +// +// Created by Riley Testut on 8/2/19. +// Copyright © 2019 Riley Testut. All rights reserved. +// + +import Foundation +import AVFoundation + +import DeltaCore + +#if !STATIC_LIBRARY +public extension GameType +{ + static let ds = GameType("com.rileytestut.delta.game.ds") +} +#endif + +@objc public enum DeSmuMEGameInput: Int, Input +{ + case up = 1 + case down = 2 + case left = 4 + case right = 8 + case a = 16 + case b = 32 + case x = 64 + case y = 128 + case l = 256 + case r = 512 + case start = 1024 + case select = 2048 + + case touchScreenX = 4096 + case touchScreenY = 8192 + + public var type: InputType { + return .game(.ds) + } + + public var isContinuous: Bool { + switch self + { + case .touchScreenX, .touchScreenY: return true + default: return false + } + } +} + +public struct DeSmuME: DeltaCoreProtocol +{ + public static let core = DeSmuME() + + public var name: String { "DeSmuMEDeltaCore" } + public var identifier: String { "com.rileytestut.DeSmuMEDeltaCore" } + + public var gameType: GameType { GameType.ds } + public var gameInputType: Input.Type { DeSmuMEGameInput.self } + public var gameSaveFileExtension: String { "dsv" } + + public let audioFormat = AVAudioFormat(commonFormat: .pcmFormatInt16, sampleRate: 44100, channels: 2, interleaved: true)! + public let videoFormat = VideoFormat(format: .bitmap(.rgba8), dimensions: CGSize(width: 256, height: 384)) + + public var supportedCheatFormats: Set { + return [] + } + + public var emulatorBridge: EmulatorBridging { DeSmuMEEmulatorBridge.shared } + + private init() + { + } +} diff --git a/Cores/DeSmuMEDeltaCore/Sources/DeSmuMEDeltaCore.h b/Cores/DeSmuMEDeltaCore/Sources/DeSmuMEDeltaCore.h new file mode 100644 index 000000000..830d0498b --- /dev/null +++ b/Cores/DeSmuMEDeltaCore/Sources/DeSmuMEDeltaCore.h @@ -0,0 +1,19 @@ +// +// DeSmuMEDeltaCore.h +// DeSmuMEDeltaCore +// +// Created by Riley Testut on 8/2/19. +// Copyright © 2019 Riley Testut. All rights reserved. +// + +#import + +//! Project version number for DeSmuMEDeltaCore. +FOUNDATION_EXPORT double DeSmuMEDeltaCoreVersionNumber; + +//! Project version string for DeSmuMEDeltaCore. +FOUNDATION_EXPORT const unsigned char DeSmuMEDeltaCoreVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import + diff --git a/Cores/DeSmuMEDeltaCore/Sources/Types/DeSmuMETypes.h b/Cores/DeSmuMEDeltaCore/Sources/Types/DeSmuMETypes.h new file mode 100644 index 000000000..f2204dff2 --- /dev/null +++ b/Cores/DeSmuMEDeltaCore/Sources/Types/DeSmuMETypes.h @@ -0,0 +1,12 @@ +// +// DeSmuMETypes.h +// DeSmuMEDeltaCore +// +// Created by Riley Testut on 2/1/20. +// Copyright © 2020 Riley Testut. All rights reserved. +// + +#import + +// Extensible Enums +FOUNDATION_EXPORT GameType const GameTypeDS NS_SWIFT_NAME(ds); diff --git a/Cores/DeSmuMEDeltaCore/desmume b/Cores/DeSmuMEDeltaCore/desmume new file mode 160000 index 000000000..aeaf40417 --- /dev/null +++ b/Cores/DeSmuMEDeltaCore/desmume @@ -0,0 +1 @@ +Subproject commit aeaf404177e3d5dc8f4f19a0eaa44096dff3df69 diff --git a/Cores/DeSmuMEDeltaCore/libDeSmuME/pcap.h b/Cores/DeSmuMEDeltaCore/libDeSmuME/pcap.h new file mode 100644 index 000000000..87647bd87 --- /dev/null +++ b/Cores/DeSmuMEDeltaCore/libDeSmuME/pcap.h @@ -0,0 +1,208 @@ +/* + * Copyright (c) 1993, 1994, 1995, 1996, 1997 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the Computer Systems + * Engineering Group at Lawrence Berkeley Laboratory. + * 4. Neither the name of the University nor of the Laboratory may be used + * to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#ifndef lib_pcap_h +#define lib_pcap_h + +#include +#include + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define HOST_WINDOWS // Allow us to compile wifi.cpp without modifications. + +#define PCAP_VERSION_MAJOR 2 +#define PCAP_VERSION_MINOR 4 + +#define PCAP_ERRBUF_SIZE 256 + + /* + * Compatibility for systems that have a bpf.h that + * predates the bpf typedefs for 64-bit support. + */ +#if BPF_RELEASE - 0 < 199406 + typedef int bpf_int32; + typedef u_int bpf_u_int32; +#endif + + typedef struct pcap pcap_t; + typedef struct pcap_dumper pcap_dumper_t; + typedef struct pcap_if pcap_if_t; + typedef struct pcap_addr pcap_addr_t; + + /* + * The first record in the file contains saved values for some + * of the flags used in the printout phases of tcpdump. + * Many fields here are 32 bit ints so compilers won't insert unwanted + * padding; these files need to be interchangeable across architectures. + * + * Do not change the layout of this structure, in any way (this includes + * changes that only affect the length of fields in this structure). + * + * Also, do not change the interpretation of any of the members of this + * structure, in any way (this includes using values other than + * LINKTYPE_ values, as defined in "savefile.c", in the "linktype" + * field). + * + * Instead: + * + * introduce a new structure for the new format, if the layout + * of the structure changed; + * + * send mail to "tcpdump-workers@tcpdump.org", requesting a new + * magic number for your new capture file format, and, when + * you get the new magic number, put it in "savefile.c"; + * + * use that magic number for save files with the changed file + * header; + * + * make the code in "savefile.c" capable of reading files with + * the old file header as well as files with the new file header + * (using the magic number to determine the header format). + * + * Then supply the changes to "patches@tcpdump.org", so that future + * versions of libpcap and programs that use it (such as tcpdump) will + * be able to read your new capture file format. + */ + struct pcap_file_header { + bpf_u_int32 magic; + u_short version_major; + u_short version_minor; + bpf_int32 thiszone; /* gmt to local correction */ + bpf_u_int32 sigfigs; /* accuracy of timestamps */ + bpf_u_int32 snaplen; /* max length saved portion of each pkt */ + bpf_u_int32 linktype; /* data link type (LINKTYPE_*) */ + }; + + /* + * Each packet in the dump file is prepended with this generic header. + * This gets around the problem of different headers for different + * packet interfaces. + */ + struct pcap_pkthdr { + struct timeval ts; /* time stamp */ + bpf_u_int32 caplen; /* length of portion present */ + bpf_u_int32 len; /* length this packet (off wire) */ + }; + + /* + * As returned by the pcap_stats() + */ + struct pcap_stat { + u_int ps_recv; /* number of packets received */ + u_int ps_drop; /* number of packets dropped */ + u_int ps_ifdrop; /* drops by interface XXX not yet supported */ + }; + + /* + * Item in a list of interfaces. + */ + struct pcap_if { + struct pcap_if *next; + char *name; /* name to hand to "pcap_open_live()" */ + char *description; /* textual description of interface, or NULL */ + struct pcap_addr *addresses; + u_int flags; /* PCAP_IF_ interface flags */ + }; + +#define PCAP_IF_LOOPBACK 0x00000001 /* interface is loopback */ + + /* + * Representation of an interface address. + */ + struct pcap_addr { + struct pcap_addr *next; + struct sockaddr *addr; /* address */ + struct sockaddr *netmask; /* netmask for that address */ + struct sockaddr *broadaddr; /* broadcast address for that address */ + struct sockaddr *dstaddr; /* P2P destination address for that address */ + }; + + typedef void (*pcap_handler)(u_char *, const struct pcap_pkthdr *, + const u_char *); + + char *pcap_lookupdev(char *); + int pcap_lookupnet(char *, bpf_u_int32 *, bpf_u_int32 *, char *); + pcap_t *pcap_open_live(char *, int, int, int, char *); + pcap_t *pcap_open_dead(int, int); + pcap_t *pcap_open_offline(const char *, char *); + void pcap_close(pcap_t *); + int pcap_loop(pcap_t *, int, pcap_handler, u_char *); + int pcap_dispatch(pcap_t *, int, pcap_handler, u_char *); + const u_char* + pcap_next(pcap_t *, struct pcap_pkthdr *); + int pcap_stats(pcap_t *, struct pcap_stat *); + int pcap_setfilter(pcap_t *, struct bpf_program *); + int pcap_getnonblock(pcap_t *, char *); + int pcap_setnonblock(pcap_t *, int, char *); + void pcap_perror(pcap_t *, char *); + char *pcap_strerror(int); + char *pcap_geterr(pcap_t *); + int pcap_compile(pcap_t *, struct bpf_program *, char *, int, + bpf_u_int32); + int pcap_compile_nopcap(int, int, struct bpf_program *, + char *, int, bpf_u_int32); + void pcap_freecode(struct bpf_program *); + int pcap_datalink(pcap_t *); + int pcap_snapshot(pcap_t *); + int pcap_is_swapped(pcap_t *); + int pcap_major_version(pcap_t *); + int pcap_minor_version(pcap_t *); + + /* XXX */ + FILE *pcap_file(pcap_t *); + int pcap_fileno(pcap_t *); + + pcap_dumper_t *pcap_dump_open(pcap_t *, const char *); + void pcap_dump_close(pcap_dumper_t *); + void pcap_dump(u_char *, const struct pcap_pkthdr *, const u_char *); + + int pcap_findalldevs(pcap_if_t **, char *); + void pcap_freealldevs(pcap_if_t *); + + /* XXX this guy lives in the bpf tree */ + u_int bpf_filter(struct bpf_insn *, u_char *, u_int, u_int); + int bpf_validate(struct bpf_insn *f, int len); + char *bpf_image(struct bpf_insn *, int); + void bpf_dump(struct bpf_program *, int); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Cores/DeltaCore b/Cores/DeltaCore deleted file mode 160000 index a07abad32..000000000 --- a/Cores/DeltaCore +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a07abad3214a310785055eddf86bed36ae7612ca diff --git a/Cores/DeltaCore/Derived/InfoPlists/DeltaCore.plist b/Cores/DeltaCore/Derived/InfoPlists/DeltaCore.plist new file mode 100644 index 000000000..323e5ecfc --- /dev/null +++ b/Cores/DeltaCore/Derived/InfoPlists/DeltaCore.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/Cores/DeltaCore/Derived/Sources/Bundle+DeltaCore.swift b/Cores/DeltaCore/Derived/Sources/Bundle+DeltaCore.swift new file mode 100644 index 000000000..65c8442a1 --- /dev/null +++ b/Cores/DeltaCore/Derived/Sources/Bundle+DeltaCore.swift @@ -0,0 +1,23 @@ +// swiftlint:disable all +import Foundation + +// MARK: - Swift Bundle Accessor + +private class BundleFinder {} + +extension Foundation.Bundle { + /// Since DeltaCore is a framework, the bundle containing the resources is copied into the final product. + static var module: Bundle = { + return Bundle(for: BundleFinder.self) + }() +} + +// MARK: - Objective-C Bundle Accessor + +@objc +public class DeltaCoreResources: NSObject { + @objc public class var bundle: Bundle { + return .module + } +} +// swiftlint:enable all \ No newline at end of file diff --git a/Cores/DeltaCore/Project.swift b/Cores/DeltaCore/Project.swift new file mode 100644 index 000000000..b7cd83dd2 --- /dev/null +++ b/Cores/DeltaCore/Project.swift @@ -0,0 +1,20 @@ +import ProjectDescription + +let project = Project(name: "DeltaCore", + packages: [ + .remote(url: "https://github.com/rileytestut/ZIPFoundation", requirement: .branch("development")), + ], + targets: [ + Target(name: "DeltaCore", + platform: .iOS, + product: .framework, + bundleId: "com.rileytestut.DeltaCore", + deploymentTarget: .iOS(targetVersion: "12.0", devices: [.iphone, .ipad]), + infoPlist: .extendingDefault(with: [:]), + sources: ["Sources/**"], + resources: ["Resources/**"], + headers: Headers(public: ["Sources/DeltaCore.h", "Sources/DeltaTypes.h", "Sources/Emulator Core/Audio/DLTAMuteSwitchMonitor.h"]), + dependencies: [ + .package(product: "ZIPFoundation"), + ]), + ]) diff --git a/Cores/DeltaCore/Resources/KeyboardGameController.deltamapping b/Cores/DeltaCore/Resources/KeyboardGameController.deltamapping new file mode 100644 index 000000000..ced86f15b Binary files /dev/null and b/Cores/DeltaCore/Resources/KeyboardGameController.deltamapping differ diff --git a/Cores/DeltaCore/Resources/MFiGameController.deltamapping b/Cores/DeltaCore/Resources/MFiGameController.deltamapping new file mode 100644 index 000000000..3983eb8d4 Binary files /dev/null and b/Cores/DeltaCore/Resources/MFiGameController.deltamapping differ diff --git a/Cores/DeltaCore/Sources/Cores/DeltaCoreProtocol.swift b/Cores/DeltaCore/Sources/Cores/DeltaCoreProtocol.swift new file mode 100644 index 000000000..8a441f7cb --- /dev/null +++ b/Cores/DeltaCore/Sources/Cores/DeltaCoreProtocol.swift @@ -0,0 +1,97 @@ +// +// DeltaCoreProtocol.swift +// DeltaCore +// +// Created by Riley Testut on 6/29/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +import AVFoundation + +public protocol DeltaCoreProtocol: CustomStringConvertible +{ + /* General */ + var name: String { get } + var identifier: String { get } + + var gameType: GameType { get } + var gameSaveFileExtension: String { get } + + // Should be associated type, but Swift type system makes this difficult, so ¯\_(ツ)_/¯ + var gameInputType: Input.Type { get } + + /* Rendering */ + var audioFormat: AVAudioFormat { get } + var videoFormat: VideoFormat { get } + + /* Cheats */ + var supportedCheatFormats: Set { get } + + /* Emulation */ + var emulatorBridge: EmulatorBridging { get } + + var resourceBundle: Bundle { get } +} + +public extension DeltaCoreProtocol +{ + var bundle: Bundle { + #if FRAMEWORK + let bundle = Bundle(for: type(of: self.emulatorBridge)) + #else + let bundle = Bundle.main + #endif + return bundle + } + + var resourceBundle: Bundle { + #if FRAMEWORK + let bundle = Bundle(for: type(of: self.emulatorBridge)) + #elseif STATIC_LIBRARY + let bundle: Bundle + if let bundleURL = Bundle.main.url(forResource: self.name, withExtension: "bundle") + { + bundle = Bundle(url: bundleURL)! + } + else + { + bundle = .main + } + #else + let bundle = Bundle.main + #endif + + return bundle + } + + var directoryURL: URL { + let directoryURL = Delta.coresDirectoryURL.appendingPathComponent(self.name, isDirectory: true) + + try? FileManager.default.createDirectory(at: directoryURL, withIntermediateDirectories: true, attributes: nil) + + return directoryURL + } +} + +public extension DeltaCoreProtocol +{ + var description: String { + let description = "\(self.name) (\(self.identifier))" + return description + } +} + +public func ==(lhs: DeltaCoreProtocol?, rhs: DeltaCoreProtocol?) -> Bool +{ + return lhs?.identifier == rhs?.identifier +} + +public func !=(lhs: DeltaCoreProtocol?, rhs: DeltaCoreProtocol?) -> Bool +{ + return !(lhs == rhs) +} + +public func ~=(lhs: DeltaCoreProtocol?, rhs: DeltaCoreProtocol?) -> Bool +{ + return lhs == rhs +} diff --git a/Cores/DeltaCore/Sources/Cores/EmulatorBridging.swift b/Cores/DeltaCore/Sources/Cores/EmulatorBridging.swift new file mode 100644 index 000000000..590b5d17f --- /dev/null +++ b/Cores/DeltaCore/Sources/Cores/EmulatorBridging.swift @@ -0,0 +1,56 @@ +// +// EmulatorBridging.swift +// DeltaCore +// +// Created by Riley Testut on 6/29/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +import Foundation + +@objc(DLTAEmulatorBridging) +public protocol EmulatorBridging: NSObjectProtocol +{ + /// State + var gameURL: URL? { get } + + /// System + var frameDuration: TimeInterval { get } + + /// Audio + var audioRenderer: AudioRendering? { get set } + + /// Video + var videoRenderer: VideoRendering? { get set } + + /// Saves + var saveUpdateHandler: (() -> Void)? { get set } + + + /// Emulation State + func start(withGameURL gameURL: URL) + func stop() + func pause() + func resume() + + /// Game Loop + @objc(runFrameAndProcessVideo:) func runFrame(processVideo: Bool) + + /// Inputs + func activateInput(_ input: Int, value: Double) + func deactivateInput(_ input: Int) + func resetInputs() + + /// Save States + @objc(saveSaveStateToURL:) func saveSaveState(to url: URL) + @objc(loadSaveStateFromURL:) func loadSaveState(from url: URL) + + /// Game Games + @objc(saveGameSaveToURL:) func saveGameSave(to url: URL) + @objc(loadGameSaveFromURL:) func loadGameSave(from url: URL) + + /// Cheats + @discardableResult func addCheatCode(_ cheatCode: String, type: String) -> Bool + func resetCheats() + func updateCheats() +} diff --git a/Cores/DeltaCore/Sources/Delta.swift b/Cores/DeltaCore/Sources/Delta.swift new file mode 100644 index 000000000..2b2c165fc --- /dev/null +++ b/Cores/DeltaCore/Sources/Delta.swift @@ -0,0 +1,56 @@ +// +// Delta.swift +// DeltaCore +// +// Created by Riley Testut on 7/22/15. +// Copyright © 2015 Riley Testut. All rights reserved. +// + +import Foundation + +extension GameType: CustomStringConvertible +{ + public var description: String { + return self.rawValue + } +} + +public extension GameType +{ + static let unknown = GameType("com.rileytestut.delta.game.unknown") +} + +public struct Delta +{ + public private(set) static var registeredCores = [GameType: DeltaCoreProtocol]() + + private init() + { + } + + public static func register(_ core: DeltaCoreProtocol) + { + self.registeredCores[core.gameType] = core + } + + public static func unregister(_ core: DeltaCoreProtocol) + { + // Ensure another core has not been registered for core.gameType. + guard let registeredCore = self.registeredCores[core.gameType], registeredCore == core else { return } + self.registeredCores[core.gameType] = nil + } + + public static func core(for gameType: GameType) -> DeltaCoreProtocol? + { + return self.registeredCores[gameType] + } + + public static var coresDirectoryURL: URL = { + let documentsDirectoryURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0] + let coresDirectoryURL = documentsDirectoryURL.appendingPathComponent("Cores", isDirectory: true) + + try? FileManager.default.createDirectory(at: coresDirectoryURL, withIntermediateDirectories: true, attributes: nil) + + return coresDirectoryURL + }() +} diff --git a/Cores/DeltaCore/Sources/DeltaCore.h b/Cores/DeltaCore/Sources/DeltaCore.h new file mode 100644 index 000000000..7c7a55764 --- /dev/null +++ b/Cores/DeltaCore/Sources/DeltaCore.h @@ -0,0 +1,23 @@ +// +// DeltaCore.h +// DeltaCore +// +// Created by Riley Testut on 3/8/15. +// Copyright (c) 2015 Riley Testut. All rights reserved. +// + +#import + +//! Project version number for DeltaCore. +FOUNDATION_EXPORT double DeltaCoreVersionNumber; + +//! Project version string for DeltaCore. +FOUNDATION_EXPORT const unsigned char DeltaCoreVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import +#import + +// HACK: Needed because the generated DeltaCore-Swift header file uses @import syntax, which isn't supported in Objective-C++ code. +#import +#import diff --git a/Cores/DeltaCore/Sources/DeltaTypes.h b/Cores/DeltaCore/Sources/DeltaTypes.h new file mode 100644 index 000000000..8f7869062 --- /dev/null +++ b/Cores/DeltaCore/Sources/DeltaTypes.h @@ -0,0 +1,16 @@ +// +// DeltaTypes.h +// DeltaCore +// +// Created by Riley Testut on 1/30/20. +// Copyright © 2020 Riley Testut. All rights reserved. +// + +#import + +// Extensible Enums +typedef NSString *GameType NS_TYPED_EXTENSIBLE_ENUM; +typedef NSString *CheatType NS_TYPED_EXTENSIBLE_ENUM; +typedef NSString *GameControllerInputType NS_TYPED_EXTENSIBLE_ENUM; + +extern NSNotificationName const DeltaRegistrationRequestNotification; diff --git a/Cores/DeltaCore/Sources/DeltaTypes.m b/Cores/DeltaCore/Sources/DeltaTypes.m new file mode 100644 index 000000000..eb7d87df0 --- /dev/null +++ b/Cores/DeltaCore/Sources/DeltaTypes.m @@ -0,0 +1,11 @@ +// +// DeltaTypes.m +// DeltaCore +// +// Created by Riley Testut on 6/30/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +@import Foundation; + +NSNotificationName const DeltaRegistrationRequestNotification = @"DeltaRegistrationRequestNotification"; diff --git a/Cores/DeltaCore/Sources/Emulator Core/Audio/AudioManager.swift b/Cores/DeltaCore/Sources/Emulator Core/Audio/AudioManager.swift new file mode 100644 index 000000000..7e754b813 --- /dev/null +++ b/Cores/DeltaCore/Sources/Emulator Core/Audio/AudioManager.swift @@ -0,0 +1,397 @@ +// +// AudioManager.swift +// DeltaCore +// +// Created by Riley Testut on 1/12/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +import AVFoundation + +internal extension AVAudioFormat +{ + var frameSize: Int { + return Int(self.streamDescription.pointee.mBytesPerFrame) + } +} + +private extension AVAudioSession +{ + func setDeltaCategory() throws + { + try AVAudioSession.sharedInstance().setCategory(.playAndRecord, + options: [.mixWithOthers, .allowBluetoothA2DP, .allowAirPlay]) + } +} + +private extension AVAudioSessionRouteDescription +{ + var isHeadsetPluggedIn: Bool + { + let isHeadsetPluggedIn = self.outputs.contains { $0.portType == .headphones || $0.portType == .bluetoothA2DP } + return isHeadsetPluggedIn + } + + var isOutputtingToReceiver: Bool + { + let isOutputtingToReceiver = self.outputs.contains { $0.portType == .builtInReceiver } + return isOutputtingToReceiver + } + + var isOutputtingToExternalDevice: Bool + { + let isOutputtingToExternalDevice = self.outputs.contains { $0.portType != .builtInSpeaker && $0.portType != .builtInReceiver } + return isOutputtingToExternalDevice + } +} + +public class AudioManager: NSObject, AudioRendering +{ + /// Currently only supports 16-bit interleaved Linear PCM. + public internal(set) var audioFormat: AVAudioFormat { + didSet { + self.resetAudioEngine() + } + } + + public var isEnabled = true { + didSet + { + self.audioBuffer.isEnabled = self.isEnabled + + self.updateOutputVolume() + + do + { + if self.isEnabled + { + try self.audioEngine.start() + } + else + { + self.audioEngine.pause() + } + } + catch + { + print(error) + } + + self.audioBuffer.reset() + } + } + + public private(set) var audioBuffer: RingBuffer + + public internal(set) var rate = 1.0 { + didSet { + self.timePitchEffect.rate = Float(self.rate) + } + } + + var frameDuration: Double = (1.0 / 60.0) { + didSet { + guard self.audioEngine.isRunning else { return } + self.resetAudioEngine() + } + } + + private let audioEngine: AVAudioEngine + private let audioPlayerNode: AVAudioPlayerNode + private let timePitchEffect: AVAudioUnitTimePitch + + @available(iOS 13.0, *) + private lazy var sourceNode = self.makeSourceNode() + + private var audioConverter: AVAudioConverter? + private var audioConverterRequiredFrameCount: AVAudioFrameCount? + + private let audioBufferCount = 3 + + // Used to synchronize access to self.audioPlayerNode without causing deadlocks. + private let renderingQueue = DispatchQueue(label: "com.rileytestut.Delta.AudioManager.renderingQueue") + + private var isMuted: Bool = false { + didSet { + self.updateOutputVolume() + } + } + + private let muteSwitchMonitor = DLTAMuteSwitchMonitor() + + public init(audioFormat: AVAudioFormat) + { + self.audioFormat = audioFormat + + // Temporary. Will be replaced with more accurate RingBuffer in resetAudioEngine(). + self.audioBuffer = RingBuffer(preferredBufferSize: 4096)! + + do + { + // Set category before configuring AVAudioEngine to prevent pausing any currently playing audio from another app. + try AVAudioSession.sharedInstance().setDeltaCategory() + } + catch + { + print(error) + } + + self.audioEngine = AVAudioEngine() + + self.audioPlayerNode = AVAudioPlayerNode() + self.audioEngine.attach(self.audioPlayerNode) + + self.timePitchEffect = AVAudioUnitTimePitch() + self.audioEngine.attach(self.timePitchEffect) + + super.init() + + if #available(iOS 13.0, *) + { + self.audioEngine.attach(self.sourceNode) + } + + self.updateOutputVolume() + + NotificationCenter.default.addObserver(self, selector: #selector(AudioManager.resetAudioEngine), name: .AVAudioEngineConfigurationChange, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(AudioManager.resetAudioEngine), name: AVAudioSession.routeChangeNotification, object: nil) + } +} + +public extension AudioManager +{ + func start() + { + self.muteSwitchMonitor.startMonitoring { [weak self] (isMuted) in + self?.isMuted = isMuted + } + + do + { + try AVAudioSession.sharedInstance().setDeltaCategory() + try AVAudioSession.sharedInstance().setPreferredIOBufferDuration(0.005) + + if #available(iOS 13.0, *) + { + try AVAudioSession.sharedInstance().setAllowHapticsAndSystemSoundsDuringRecording(true) + } + + try AVAudioSession.sharedInstance().setActive(true) + } + catch + { + print(error) + } + + self.resetAudioEngine() + } + + func stop() + { + self.muteSwitchMonitor.stopMonitoring() + + self.renderingQueue.sync { + self.audioPlayerNode.stop() + self.audioEngine.stop() + } + + self.audioBuffer.isEnabled = false + } +} + +private extension AudioManager +{ + func render(_ inputBuffer: AVAudioPCMBuffer, into outputBuffer: AVAudioPCMBuffer) + { + guard let buffer = inputBuffer.int16ChannelData, let audioConverter = self.audioConverter else { return } + + // Ensure any buffers from previous audio route configurations are no longer processed. + guard inputBuffer.format == audioConverter.inputFormat && outputBuffer.format == audioConverter.outputFormat else { return } + + if self.audioConverterRequiredFrameCount == nil + { + // Determine the minimum number of input frames needed to perform a conversion. + audioConverter.convert(to: outputBuffer, error: nil) { (requiredPacketCount, outStatus) -> AVAudioBuffer? in + // In Linear PCM, one packet = one frame. + self.audioConverterRequiredFrameCount = requiredPacketCount + + // Setting to ".noDataNow" sometimes results in crash, so we set to ".endOfStream" and reset audioConverter afterwards. + outStatus.pointee = .endOfStream + return nil + } + + audioConverter.reset() + } + + guard let audioConverterRequiredFrameCount = self.audioConverterRequiredFrameCount else { return } + + let availableFrameCount = AVAudioFrameCount(self.audioBuffer.availableBytesForReading / self.audioFormat.frameSize) + if self.audioEngine.isRunning && availableFrameCount >= audioConverterRequiredFrameCount + { + var conversionError: NSError? + let status = audioConverter.convert(to: outputBuffer, error: &conversionError) { (requiredPacketCount, outStatus) -> AVAudioBuffer? in + + // Copy requiredPacketCount frames into inputBuffer's first channel (since audio is interleaved, no need to modify other channels). + let preferredSize = min(Int(requiredPacketCount) * self.audioFormat.frameSize, Int(inputBuffer.frameCapacity) * self.audioFormat.frameSize) + buffer[0].withMemoryRebound(to: UInt8.self, capacity: preferredSize) { (uint8Buffer) in + let readBytes = self.audioBuffer.read(into: uint8Buffer, preferredSize: preferredSize) + + let frameLength = AVAudioFrameCount(readBytes / self.audioFormat.frameSize) + inputBuffer.frameLength = frameLength + } + + if inputBuffer.frameLength == 0 + { + outStatus.pointee = .noDataNow + return nil + } + else + { + outStatus.pointee = .haveData + return inputBuffer + } + } + + if status == .error + { + if let error = conversionError + { + print(error, error.userInfo) + } + } + } + else + { + // If not running or not enough input frames, set frameLength to 0 to minimize time until we check again. + inputBuffer.frameLength = 0 + } + + self.audioPlayerNode.scheduleBuffer(outputBuffer) { [weak self, weak node = audioPlayerNode] in + guard let self = self else { return } + + self.renderingQueue.async { + if node?.isPlaying == true + { + self.render(inputBuffer, into: outputBuffer) + } + } + } + } + + @objc func resetAudioEngine() + { + self.renderingQueue.sync { + self.audioPlayerNode.reset() + + guard let outputAudioFormat = AVAudioFormat(standardFormatWithSampleRate: AVAudioSession.sharedInstance().sampleRate, channels: self.audioFormat.channelCount) else { return } + + let inputAudioBufferFrameCount = Int(self.audioFormat.sampleRate * self.frameDuration) + let outputAudioBufferFrameCount = Int(outputAudioFormat.sampleRate * self.frameDuration) + + // Allocate enough space to prevent us from overwriting data before we've used it. + let ringBufferAudioBufferCount = Int((self.audioFormat.sampleRate / outputAudioFormat.sampleRate).rounded(.up) + 10.0) + + let preferredBufferSize = inputAudioBufferFrameCount * self.audioFormat.frameSize * ringBufferAudioBufferCount + guard let ringBuffer = RingBuffer(preferredBufferSize: preferredBufferSize) else { + fatalError("Cannot initialize RingBuffer with preferredBufferSize of \(preferredBufferSize)") + } + self.audioBuffer = ringBuffer + + let audioConverter = AVAudioConverter(from: self.audioFormat, to: outputAudioFormat) + self.audioConverter = audioConverter + + self.audioConverterRequiredFrameCount = nil + + self.audioEngine.disconnectNodeOutput(self.timePitchEffect) + self.audioEngine.connect(self.timePitchEffect, to: self.audioEngine.mainMixerNode, format: outputAudioFormat) + + if #available(iOS 13.0, *) + { + self.audioEngine.detach(self.sourceNode) + + self.sourceNode = self.makeSourceNode() + self.audioEngine.attach(self.sourceNode) + + self.audioEngine.connect(self.sourceNode, to: self.timePitchEffect, format: outputAudioFormat) + } + else + { + self.audioEngine.disconnectNodeOutput(self.audioPlayerNode) + self.audioEngine.connect(self.audioPlayerNode, to: self.timePitchEffect, format: outputAudioFormat) + + for _ in 0 ..< self.audioBufferCount + { + let inputAudioBufferFrameCapacity = max(inputAudioBufferFrameCount, outputAudioBufferFrameCount) + + if let inputBuffer = AVAudioPCMBuffer(pcmFormat: self.audioFormat, frameCapacity: AVAudioFrameCount(inputAudioBufferFrameCapacity)), + let outputBuffer = AVAudioPCMBuffer(pcmFormat: outputAudioFormat, frameCapacity: AVAudioFrameCount(outputAudioBufferFrameCount)) + { + self.render(inputBuffer, into: outputBuffer) + } + } + } + + do + { + // Explicitly set output port since .defaultToSpeaker option pauses external audio. + if AVAudioSession.sharedInstance().currentRoute.isOutputtingToReceiver + { + try AVAudioSession.sharedInstance().overrideOutputAudioPort(.speaker) + } + + try self.audioEngine.start() + + if #available(iOS 13.0, *) {} + else + { + self.audioPlayerNode.play() + } + } + catch + { + print(error) + } + } + } + + @objc func updateOutputVolume() + { + if !self.isEnabled + { + self.audioEngine.mainMixerNode.outputVolume = 0.0 + } + else + { + let route = AVAudioSession.sharedInstance().currentRoute + if self.isMuted && (route.isHeadsetPluggedIn || !route.isOutputtingToExternalDevice) + { + // Mute if playing through speaker or headphones. + self.audioEngine.mainMixerNode.outputVolume = 0.0 + } + else + { + // Ignore mute switch for other audio routes (e.g. AirPlay). + self.audioEngine.mainMixerNode.outputVolume = 1.0 + } + } + } + + @available(iOS 13.0, *) + func makeSourceNode() -> AVAudioSourceNode + { + let sourceNode = AVAudioSourceNode(format: self.audioFormat) { [frameSize = audioFormat.frameSize, audioBuffer] (_, _, frameCount, audioBufferList) -> OSStatus in + let unsafeAudioBufferList = UnsafeMutableAudioBufferListPointer(audioBufferList) + guard let buffer = unsafeAudioBufferList[0].mData else { return kAudioFileStreamError_UnspecifiedError } + + let requestedBytes = Int(frameCount) * frameSize + guard audioBuffer.availableBytesForReading >= requestedBytes else { return kAudioFileStreamError_DataUnavailable } + + let readBytes = audioBuffer.read(into: buffer, preferredSize: requestedBytes) + unsafeAudioBufferList[0].mDataByteSize = UInt32(readBytes) + + return noErr + } + + return sourceNode + } +} diff --git a/Cores/DeltaCore/Sources/Emulator Core/Audio/DLTAMuteSwitchMonitor.h b/Cores/DeltaCore/Sources/Emulator Core/Audio/DLTAMuteSwitchMonitor.h new file mode 100644 index 000000000..372fe9874 --- /dev/null +++ b/Cores/DeltaCore/Sources/Emulator Core/Audio/DLTAMuteSwitchMonitor.h @@ -0,0 +1,23 @@ +// +// DLTAMuteSwitchMonitor.h +// DeltaCore +// +// Created by Riley Testut on 11/19/20. +// Copyright © 2020 Riley Testut. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface DLTAMuteSwitchMonitor : NSObject + +@property (nonatomic, readonly) BOOL isMonitoring; +@property (nonatomic, readonly) BOOL isMuted; + +- (void)startMonitoring:(void (^)(BOOL isMuted))muteHandler; +- (void)stopMonitoring; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Cores/DeltaCore/Sources/Emulator Core/Audio/DLTAMuteSwitchMonitor.m b/Cores/DeltaCore/Sources/Emulator Core/Audio/DLTAMuteSwitchMonitor.m new file mode 100644 index 000000000..cce55d2e4 --- /dev/null +++ b/Cores/DeltaCore/Sources/Emulator Core/Audio/DLTAMuteSwitchMonitor.m @@ -0,0 +1,85 @@ +// +// DLTAMuteSwitchMonitor.m +// DeltaCore +// +// Created by Riley Testut on 11/19/20. +// Copyright © 2020 Riley Testut. All rights reserved. +// + +#import "DLTAMuteSwitchMonitor.h" + +#import + +#if STATIC_LIBRARY +#import "DeltaCore-Swift.h" +#else +#import +#endif + +@import AudioToolbox; + +@interface DLTAMuteSwitchMonitor () + +@property (nonatomic, readwrite) BOOL isMonitoring; +@property (nonatomic, readwrite) BOOL isMuted; + +@property (nonatomic) int notifyToken; + +@end + +@implementation DLTAMuteSwitchMonitor + +- (instancetype)init +{ + self = [super init]; + if (self) + { + _isMuted = YES; + } + + return self; +} + +- (void)startMonitoring:(void (^)(BOOL isMuted))muteHandler +{ + if ([self isMonitoring]) + { + return; + } + + self.isMonitoring = YES; + + void (^updateMutedState)(void) = ^{ + uint64_t state; + uint32_t result = notify_get_state(_notifyToken, &state); + if (result == NOTIFY_STATUS_OK) + { + self.isMuted = (state == 0); + muteHandler(self.isMuted); + } + else + { + NSLog(@"Failed to get mute state. Error: %@", @(result)); + } + }; + + notify_register_dispatch("com.apple.springboard.ringerstate", &_notifyToken, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(int token) { + updateMutedState(); + }); + + updateMutedState(); +} + +- (void)stopMonitoring +{ + if (![self isMonitoring]) + { + return; + } + + self.isMonitoring = NO; + + notify_cancel(self.notifyToken); +} + +@end diff --git a/Cores/DeltaCore/Sources/Emulator Core/Audio/RingBuffer.swift b/Cores/DeltaCore/Sources/Emulator Core/Audio/RingBuffer.swift new file mode 100644 index 000000000..d0795e132 --- /dev/null +++ b/Cores/DeltaCore/Sources/Emulator Core/Audio/RingBuffer.swift @@ -0,0 +1,168 @@ +// +// RingBuffer.swift +// DeltaCore +// +// Created by Riley Testut on 6/29/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// +// Heavily based on Michael Tyson's TPCircularBuffer (https://github.com/michaeltyson/TPCircularBuffer) +// + +import Foundation +import Darwin.Mach.machine.vm_types + +private func trunc_page(_ x: vm_size_t) -> vm_size_t +{ + return x & ~(vm_page_size - 1) +} + +private func round_page(_ x: vm_size_t) -> vm_size_t +{ + return trunc_page(x + (vm_size_t(vm_page_size) - 1)) +} + +@objc(DLTARingBuffer) @objcMembers +public class RingBuffer: NSObject +{ + public var isEnabled: Bool = true + + public var availableBytesForWriting: Int { + return Int(self.bufferLength - Int(self.usedBytesCount)) + } + + public var availableBytesForReading: Int { + return Int(self.usedBytesCount) + } + + private var head: UnsafeMutableRawPointer { + let head = self.buffer.advanced(by: self.headOffset) + return head + } + + private var tail: UnsafeMutableRawPointer { + let head = self.buffer.advanced(by: self.tailOffset) + return head + } + + private let buffer: UnsafeMutableRawPointer + private var bufferLength = 0 + private var tailOffset = 0 + private var headOffset = 0 + private var usedBytesCount: Int32 = 0 + + public init?(preferredBufferSize: Int) + { + assert(preferredBufferSize > 0) + + // To handle race conditions, repeat initialization process up to 3 times before failing. + for _ in 1...3 + { + let length = round_page(vm_size_t(preferredBufferSize)) + self.bufferLength = Int(length) + + var bufferAddress: vm_address_t = 0 + guard vm_allocate(mach_task_self_, &bufferAddress, vm_size_t(length * 2), VM_FLAGS_ANYWHERE) == ERR_SUCCESS else { continue } + + guard vm_deallocate(mach_task_self_, bufferAddress + length, length) == ERR_SUCCESS else { + vm_deallocate(mach_task_self_, bufferAddress, length) + continue + } + + var virtualAddress: vm_address_t = bufferAddress + length + var current_protection: vm_prot_t = 0 + var max_protection: vm_prot_t = 0 + + guard vm_remap(mach_task_self_, &virtualAddress, length, 0, 0, mach_task_self_, bufferAddress, 0, ¤t_protection, &max_protection, VM_INHERIT_DEFAULT) == ERR_SUCCESS else { + vm_deallocate(mach_task_self_, bufferAddress, length) + continue + } + + guard virtualAddress == bufferAddress + length else { + vm_deallocate(mach_task_self_, virtualAddress, length) + vm_deallocate(mach_task_self_, bufferAddress, length) + + continue + } + + self.buffer = UnsafeMutableRawPointer(bitPattern: UInt(bufferAddress))! + + return + } + + return nil + } + + deinit + { + let address = UInt(bitPattern: self.buffer) + vm_deallocate(mach_task_self_, vm_address_t(address), vm_size_t(self.bufferLength * 2)) + } +} + +public extension RingBuffer +{ + /// Writes `size` bytes from `buffer` to ring buffer if possible. Otherwise, writes as many as possible. + @objc(writeBuffer:size:) + @discardableResult func write(_ buffer: UnsafeRawPointer, size: Int) -> Int + { + guard self.isEnabled else { return 0 } + guard self.availableBytesForWriting > 0 else { return 0 } + + if size > self.availableBytesForWriting + { + print("Ring Buffer Capacity reached. Available: \(self.availableBytesForWriting). Requested: \(size) Max: \(self.bufferLength). Filled: \(self.usedBytesCount).") + + self.reset() + } + + let size = min(size, self.availableBytesForWriting) + memcpy(self.head, buffer, size) + + self.decrementAvailableBytes(by: size) + + return size + } + + /// Copies `size` bytes from ring buffer to `buffer` if possible. Otherwise, copies as many as possible. + @objc(readIntoBuffer:preferredSize:) + @discardableResult func read(into buffer: UnsafeMutableRawPointer, preferredSize: Int) -> Int + { + guard self.isEnabled else { return 0 } + guard self.availableBytesForReading > 0 else { return 0 } + + if preferredSize > self.availableBytesForReading + { + print("Ring Buffer Empty. Available: \(self.availableBytesForReading). Requested: \(preferredSize) Max: \(self.bufferLength). Filled: \(self.usedBytesCount).") + + self.reset() + } + + let size = min(preferredSize, self.availableBytesForReading) + memcpy(buffer, self.tail, size) + + self.incrementAvailableBytes(by: size) + + return size + } + + func reset() + { + let size = self.availableBytesForReading + self.incrementAvailableBytes(by: size) + } +} + +private extension RingBuffer +{ + func incrementAvailableBytes(by size: Int) + { + self.tailOffset = (self.tailOffset + size) % self.bufferLength + OSAtomicAdd32(-Int32(size), &self.usedBytesCount) + } + + func decrementAvailableBytes(by size: Int) + { + self.headOffset = (self.headOffset + size) % self.bufferLength + OSAtomicAdd32(Int32(size), &self.usedBytesCount) + } +} diff --git a/Cores/DeltaCore/Sources/Emulator Core/EmulatorCore.swift b/Cores/DeltaCore/Sources/Emulator Core/EmulatorCore.swift new file mode 100644 index 000000000..f854899bf --- /dev/null +++ b/Cores/DeltaCore/Sources/Emulator Core/EmulatorCore.swift @@ -0,0 +1,528 @@ +// +// EmulatorCore.swift +// DeltaCore +// +// Created by Riley Testut on 3/11/15. +// Copyright (c) 2015 Riley Testut. All rights reserved. +// + +import AVFoundation + +extension EmulatorCore +{ + @objc public static let emulationDidQuitNotification = Notification.Name("com.rileytestut.DeltaCore.emulationDidQuit") + + private static let didUpdateFrameNotification = Notification.Name("com.rileytestut.DeltaCore.didUpdateFrame") +} + +public extension EmulatorCore +{ + @objc enum State: Int + { + case stopped + case running + case paused + } + + enum CheatError: Error + { + case invalid + } + + enum SaveStateError: Error + { + case doesNotExist + } +} + +@objc(DLTAEmulatorCore) +public final class EmulatorCore: NSObject +{ + //MARK: - Properties - + /** Properties **/ + public let game: GameProtocol + public private(set) var gameViews: [GameView] = [] + + public var updateHandler: ((EmulatorCore) -> Void)? + public var saveHandler: ((EmulatorCore) -> Void)? + + public let audioManager: AudioManager + public let videoManager: VideoManager + + // KVO-Compliant + @objc public private(set) dynamic var state = State.stopped + @objc public dynamic var rate = 1.0 { + didSet { + self.audioManager.rate = self.rate + } + } + + public let deltaCore: DeltaCoreProtocol + public var preferredRenderingSize: CGSize { return self.deltaCore.videoFormat.dimensions } + + //MARK: - Private Properties + + // We privately set this first to clean up before setting self.state, which notifies KVO observers + private var _state = State.stopped + + private let gameType: GameType + private let gameSaveURL: URL + + private var cheatCodes = [String: CheatType]() + + private var gameControllers = NSHashTable.weakObjects() + + private var previousState = State.stopped + private var previousFrameDuration: TimeInterval? = nil + + private var reactivateInputsDispatchGroup: DispatchGroup? + private let reactivateInputsQueue = DispatchQueue(label: "com.rileytestut.DeltaCore.EmulatorCore.reactivateInputsQueue", attributes: [.concurrent]) + + private let emulationLock = NSLock() + + //MARK: - Initializers - + /** Initializers **/ + public required init?(game: GameProtocol) + { + // These MUST be set in start(), because it's possible the same emulator core might be stopped, another one started, and then resumed back to this one + // AKA, these need to always be set at start to ensure it points to the correct managers + // self.configuration.bridge.audioRenderer = self.audioManager + // self.configuration.bridge.videoRenderer = self.videoManager + + guard let deltaCore = Delta.core(for: game.type) else { + print(game.type.rawValue + " is not a supported game type.") + return nil + } + + self.deltaCore = deltaCore + + self.game = game + + // Store separately in case self.game is an NSManagedObject subclass, and we need to access .type or .gameSaveURL on a different thread than its NSManagedObjectContext + self.gameType = self.game.type + self.gameSaveURL = self.game.gameSaveURL + + // These were previously lazy variables, but turns out Swift lazy variables are not thread-safe. + // Since they don't actually need to be lazy, we now explicitly initialize them in the initializer. + self.audioManager = AudioManager(audioFormat: deltaCore.audioFormat) + self.videoManager = VideoManager(videoFormat: deltaCore.videoFormat) + + super.init() + + NotificationCenter.default.addObserver(self, selector: #selector(EmulatorCore.emulationDidQuit), name: EmulatorCore.emulationDidQuitNotification, object: nil) + } +} + +//MARK: - Emulation - +/// Emulation +public extension EmulatorCore +{ + @discardableResult func start() -> Bool + { + guard self._state == .stopped else { return false } + + self.emulationLock.lock() + + self._state = .running + defer { self.state = self._state } + + self.deltaCore.emulatorBridge.audioRenderer = self.audioManager + self.deltaCore.emulatorBridge.videoRenderer = self.videoManager + self.deltaCore.emulatorBridge.saveUpdateHandler = { [unowned self] in + self.save() + } + + self.audioManager.start() + self.deltaCore.emulatorBridge.start(withGameURL: self.game.fileURL) + + let videoFormat = self.deltaCore.videoFormat + if videoFormat != self.videoManager.videoFormat + { + self.videoManager.videoFormat = videoFormat + } + + self.deltaCore.emulatorBridge.loadGameSave(from: self.gameSaveURL) + + self.runGameLoop() + self.waitForFrameUpdate() + + self.emulationLock.unlock() + + return true + } + + @discardableResult func stop() -> Bool + { + guard self._state != .stopped else { return false } + + self.emulationLock.lock() + + let isRunning = self.state == .running + + self._state = .stopped + defer { self.state = self._state } + + if isRunning + { + self.waitForFrameUpdate() + } + + self.save() + + self.audioManager.stop() + self.deltaCore.emulatorBridge.stop() + + self.emulationLock.unlock() + + return true + } + + @discardableResult func pause() -> Bool + { + guard self._state == .running else { return false } + + self.emulationLock.lock() + + self._state = .paused + defer { self.state = self._state } + + self.waitForFrameUpdate() + + self.save() + + self.audioManager.isEnabled = false + self.deltaCore.emulatorBridge.pause() + + self.emulationLock.unlock() + + return true + } + + @discardableResult func resume() -> Bool + { + guard self._state == .paused else { return false } + + self.emulationLock.lock() + + self._state = .running + defer { self.state = self._state } + + self.audioManager.isEnabled = true + self.deltaCore.emulatorBridge.resume() + + self.runGameLoop() + self.waitForFrameUpdate() + + self.emulationLock.unlock() + + return true + } + + private func waitForFrameUpdate() + { + let semaphore = DispatchSemaphore(value: 0) + + let token = NotificationCenter.default.addObserver(forName: EmulatorCore.didUpdateFrameNotification, object: self, queue: nil) { (notification) in + semaphore.signal() + } + + semaphore.wait() + + NotificationCenter.default.removeObserver(token, name: EmulatorCore.didUpdateFrameNotification, object: self) + } +} + +//MARK: - Game Views - +/// Game Views +public extension EmulatorCore +{ + func add(_ gameView: GameView) + { + self.gameViews.append(gameView) + + self.videoManager.add(gameView) + } + + func remove(_ gameView: GameView) + { + if let index = self.gameViews.firstIndex(of: gameView) + { + self.gameViews.remove(at: index) + } + + self.videoManager.remove(gameView) + } +} + +//MARK: - Game Saves - +/// Game Saves +public extension EmulatorCore +{ + func save() + { + self.deltaCore.emulatorBridge.saveGameSave(to: self.gameSaveURL) + self.saveHandler?(self) + } +} + +//MARK: - Save States - +/// Save States +public extension EmulatorCore +{ + @discardableResult func saveSaveState(to url: URL) -> SaveStateProtocol + { + self.deltaCore.emulatorBridge.saveSaveState(to: url) + + let saveState = SaveState(fileURL: url, gameType: self.gameType) + return saveState + } + + func load(_ saveState: SaveStateProtocol) throws + { + guard FileManager.default.fileExists(atPath: saveState.fileURL.path) else { throw SaveStateError.doesNotExist } + + self.deltaCore.emulatorBridge.loadSaveState(from: saveState.fileURL) + + self.updateCheats() + self.deltaCore.emulatorBridge.resetInputs() + + // Reactivate activated inputs. + for gameController in self.gameControllers.allObjects as! [GameController] + { + for (input, value) in gameController.activatedInputs + { + gameController.activate(input, value: value) + } + } + } +} + +//MARK: - Cheats - +/// Cheats +public extension EmulatorCore +{ + func activate(_ cheat: CheatProtocol) throws + { + let success = self.deltaCore.emulatorBridge.addCheatCode(String(cheat.code), type: cheat.type.rawValue) + if success + { + self.cheatCodes[cheat.code] = cheat.type + } + + // Ensures correct state, especially if attempted cheat was invalid + self.updateCheats() + + if !success + { + throw CheatError.invalid + } + } + + func deactivate(_ cheat: CheatProtocol) + { + guard self.cheatCodes[cheat.code] != nil else { return } + + self.cheatCodes[cheat.code] = nil + + self.updateCheats() + } + + private func updateCheats() + { + self.deltaCore.emulatorBridge.resetCheats() + + for (cheatCode, type) in self.cheatCodes + { + self.deltaCore.emulatorBridge.addCheatCode(String(cheatCode), type: type.rawValue) + } + + self.deltaCore.emulatorBridge.updateCheats() + } +} + +extension EmulatorCore: GameControllerReceiver +{ + public func gameController(_ gameController: GameController, didActivate input: Input, value: Double) + { + self.gameControllers.add(gameController) + + guard let input = self.mappedInput(for: input), input.type == .game(self.gameType) else { return } + + // If any of game controller's sustained inputs map to input, treat input as sustained. + let isSustainedInput = gameController.sustainedInputs.keys.contains(where: { + guard let mappedInput = gameController.mappedInput(for: $0, receiver: self) else { return false } + return self.mappedInput(for: mappedInput) == input + }) + + if isSustainedInput && !input.isContinuous + { + self.reactivateInputsQueue.async { + + self.deltaCore.emulatorBridge.deactivateInput(input.intValue!) + + self.reactivateInputsDispatchGroup = DispatchGroup() + + // To ensure the emulator core recognizes us activating an input that is currently active, we need to first deactivate it, wait at least two frames, then activate it again. + self.reactivateInputsDispatchGroup?.enter() + self.reactivateInputsDispatchGroup?.enter() + self.reactivateInputsDispatchGroup?.wait() + + self.reactivateInputsDispatchGroup = nil + + self.deltaCore.emulatorBridge.activateInput(input.intValue!, value: value) + } + } + else + { + self.deltaCore.emulatorBridge.activateInput(input.intValue!, value: value) + } + } + + public func gameController(_ gameController: GameController, didDeactivate input: Input) + { + guard let input = self.mappedInput(for: input), input.type == .game(self.gameType) else { return } + + self.deltaCore.emulatorBridge.deactivateInput(input.intValue!) + } + + private func mappedInput(for input: Input) -> Input? + { + guard let standardInput = StandardGameControllerInput(input: input) else { return input } + + let mappedInput = standardInput.input(for: self.gameType) + return mappedInput + } +} + +private extension EmulatorCore +{ + func runGameLoop() + { + let emulationQueue = DispatchQueue(label: "com.rileytestut.DeltaCore.emulationQueue", qos: .userInitiated) + emulationQueue.async { + + let screenRefreshRate = 1.0 / 60.0 + + var emulationTime = Thread.absoluteSystemTime + var counter = 0.0 + + while true + { + let frameDuration = self.deltaCore.emulatorBridge.frameDuration / self.rate + if frameDuration != self.previousFrameDuration + { + Thread.setRealTimePriority(withPeriod: frameDuration) + + self.previousFrameDuration = frameDuration + + // Reset counter + counter = 0 + } + + // Update audio/video configurations if necessary. + + let internalFrameDuration = self.deltaCore.emulatorBridge.frameDuration + if internalFrameDuration != self.audioManager.frameDuration + { + self.audioManager.frameDuration = internalFrameDuration + } + + let audioFormat = self.deltaCore.audioFormat + if audioFormat != self.audioManager.audioFormat + { + self.audioManager.audioFormat = audioFormat + } + + let videoFormat = self.deltaCore.videoFormat + if videoFormat != self.videoManager.videoFormat + { + self.videoManager.videoFormat = videoFormat + } + + if counter >= screenRefreshRate + { + self.runFrame(renderGraphics: true) + + // Reset counter + counter = 0 + } + else + { + // No need to render graphics more than once per screen refresh rate + self.runFrame(renderGraphics: false) + } + + counter += frameDuration + emulationTime += frameDuration + + let currentTime = Thread.absoluteSystemTime + + // The number of frames we need to skip to keep in sync + var framesToSkip = Int((currentTime - emulationTime) / frameDuration) + framesToSkip = min(framesToSkip, 5) // Prevent unbounding frame skipping resulting in frozen game. + + if framesToSkip > 0 + { + // Only actually skip frames if we're running at normal speed + if self.rate == 1.0 + { + for _ in 0 ..< framesToSkip + { + // "Skip" frames by running them without rendering graphics + self.runFrame(renderGraphics: false) + } + } + + emulationTime = currentTime + } + + // Prevent race conditions + let state = self._state + + defer + { + if self.previousState != state + { + NotificationCenter.default.post(name: EmulatorCore.didUpdateFrameNotification, object: self) + self.previousState = state + } + } + + if state != .running + { + break + } + + Thread.realTimeWait(until: emulationTime) + } + } + } + + func runFrame(renderGraphics: Bool) + { + self.deltaCore.emulatorBridge.runFrame(processVideo: renderGraphics) + + if renderGraphics + { + self.videoManager.render() + } + + if let dispatchGroup = self.reactivateInputsDispatchGroup + { + dispatchGroup.leave() + } + + self.updateHandler?(self) + } +} + +private extension EmulatorCore +{ + @objc func emulationDidQuit(_ notification: Notification) + { + DispatchQueue.global(qos: .userInitiated).async { + // Dispatch onto global queue to prevent deadlock. + self.stop() + } + } +} diff --git a/Cores/DeltaCore/Sources/Emulator Core/Video/BitmapProcessor.swift b/Cores/DeltaCore/Sources/Emulator Core/Video/BitmapProcessor.swift new file mode 100644 index 000000000..5a6ce4cff --- /dev/null +++ b/Cores/DeltaCore/Sources/Emulator Core/Video/BitmapProcessor.swift @@ -0,0 +1,101 @@ +// +// BitmapProcessor.swift +// DeltaCore +// +// Created by Riley Testut on 4/8/19. +// Copyright © 2019 Riley Testut. All rights reserved. +// + +import CoreImage +import Accelerate + +fileprivate extension VideoFormat.PixelFormat +{ + var nativeCIFormat: CIFormat? { + switch self + { + case .rgb565: return nil + case .bgra8: return .BGRA8 + case .rgba8: return .RGBA8 + } + } +} + +fileprivate extension VideoFormat +{ + var pixelFormat: PixelFormat { + switch self.format + { + case .bitmap(let format): return format + case .openGLES: fatalError("Should not be using VideoFormat.Format.openGLES with BitmapProcessor.") + } + } + + var bufferSize: Int { + let bufferSize = Int(self.dimensions.width * self.dimensions.height) * self.pixelFormat.bytesPerPixel + return bufferSize + } +} + +class BitmapProcessor: VideoProcessor +{ + let videoFormat: VideoFormat + let videoBuffer: UnsafeMutablePointer? + + private let outputVideoFormat: VideoFormat + private let outputVideoBuffer: UnsafeMutablePointer + + init(videoFormat: VideoFormat) + { + self.videoFormat = videoFormat + + switch self.videoFormat.pixelFormat + { + case .rgb565: self.outputVideoFormat = VideoFormat(format: .bitmap(.bgra8), dimensions: self.videoFormat.dimensions) + case .bgra8, .rgba8: self.outputVideoFormat = self.videoFormat + } + + self.videoBuffer = UnsafeMutablePointer.allocate(capacity: self.videoFormat.bufferSize) + self.outputVideoBuffer = UnsafeMutablePointer.allocate(capacity: self.outputVideoFormat.bufferSize) + } + + deinit + { + self.videoBuffer?.deallocate() + self.outputVideoBuffer.deallocate() + } +} + +extension BitmapProcessor +{ + func prepare() + { + } + + func processFrame() -> CIImage? + { + guard let ciFormat = self.outputVideoFormat.pixelFormat.nativeCIFormat else { + print("VideoManager output format is not supported.") + return nil + } + + return autoreleasepool { + var inputVImageBuffer = vImage_Buffer(data: self.videoBuffer, height: vImagePixelCount(self.videoFormat.dimensions.height), width: vImagePixelCount(self.videoFormat.dimensions.width), rowBytes: self.videoFormat.pixelFormat.bytesPerPixel * Int(self.videoFormat.dimensions.width)) + var outputVImageBuffer = vImage_Buffer(data: self.outputVideoBuffer, height: vImagePixelCount(self.outputVideoFormat.dimensions.height), width: vImagePixelCount(self.outputVideoFormat.dimensions.width), rowBytes: self.outputVideoFormat.pixelFormat.bytesPerPixel * Int(self.outputVideoFormat.dimensions.width)) + + switch self.videoFormat.pixelFormat + { + case .rgb565: vImageConvert_RGB565toBGRA8888(255, &inputVImageBuffer, &outputVImageBuffer, 0) + case .bgra8, .rgba8: + // Ensure alpha value is 255, not 0. + // 0x1 refers to the Blue channel in ARGB, which corresponds to the Alpha channel in BGRA and RGBA. + vImageOverwriteChannelsWithScalar_ARGB8888(255, &inputVImageBuffer, &outputVImageBuffer, 0x1, vImage_Flags(kvImageNoFlags)) + } + + let bitmapData = Data(bytes: self.outputVideoBuffer, count: self.outputVideoFormat.bufferSize) + + let image = CIImage(bitmapData: bitmapData, bytesPerRow: self.outputVideoFormat.pixelFormat.bytesPerPixel * Int(self.outputVideoFormat.dimensions.width), size: self.outputVideoFormat.dimensions, format: ciFormat, colorSpace: nil) + return image + } + } +} diff --git a/Cores/DeltaCore/Sources/Emulator Core/Video/OpenGLESProcessor.swift b/Cores/DeltaCore/Sources/Emulator Core/Video/OpenGLESProcessor.swift new file mode 100644 index 000000000..a01a34481 --- /dev/null +++ b/Cores/DeltaCore/Sources/Emulator Core/Video/OpenGLESProcessor.swift @@ -0,0 +1,149 @@ +// +// OpenGLESProcessor.swift +// DeltaCore +// +// Created by Riley Testut on 4/8/19. +// Copyright © 2019 Riley Testut. All rights reserved. +// + +import CoreImage +import GLKit + +class OpenGLESProcessor: VideoProcessor +{ + var videoFormat: VideoFormat { + didSet { + self.resizeVideoBuffers() + } + } + + private let context: EAGLContext + + private var framebuffer: GLuint = 0 + private var texture: GLuint = 0 + private var renderbuffer: GLuint = 0 + + private var indexBuffer: GLuint = 0 + private var vertexBuffer: GLuint = 0 + + init(videoFormat: VideoFormat, context: EAGLContext) + { + self.videoFormat = videoFormat + self.context = EAGLContext(api: .openGLES2, sharegroup: context.sharegroup)! + } + + deinit + { + if self.renderbuffer > 0 + { + glDeleteRenderbuffers(1, &self.renderbuffer) + } + + if self.texture > 0 + { + glDeleteTextures(1, &self.texture) + } + + if self.framebuffer > 0 + { + glDeleteFramebuffers(1, &self.framebuffer) + } + + if self.indexBuffer > 0 + { + glDeleteBuffers(1, &self.indexBuffer) + } + + if self.vertexBuffer > 0 + { + glDeleteBuffers(1, &self.vertexBuffer) + } + } +} + +extension OpenGLESProcessor +{ + var videoBuffer: UnsafeMutablePointer? { + return nil + } + + func prepare() + { + struct Vertex + { + var x: GLfloat + var y: GLfloat + var z: GLfloat + + var u: GLfloat + var v: GLfloat + } + + EAGLContext.setCurrent(self.context) + + // Vertex buffer + let vertices = [Vertex(x: -1.0, y: -1.0, z: 1.0, u: 0.0, v: 0.0), + Vertex(x: 1.0, y: -1.0, z: 1.0, u: 1.0, v: 0.0), + Vertex(x: 1.0, y: 1.0, z: 1.0, u: 1.0, v: 1.0), + Vertex(x: -1.0, y: 1.0, z: 1.0, u: 0.0, v: 1.0)] + glGenBuffers(1, &self.vertexBuffer) + glBindBuffer(GLenum(GL_ARRAY_BUFFER), self.vertexBuffer) + glBufferData(GLenum(GL_ARRAY_BUFFER), MemoryLayout.size * vertices.count, vertices, GLenum(GL_DYNAMIC_DRAW)) + glBindBuffer(GLenum(GL_ARRAY_BUFFER), 0) + + // Index buffer + let indices: [GLushort] = [0, 1, 2, 0, 2, 3] + glGenBuffers(1, &self.indexBuffer) + glBindBuffer(GLenum(GL_ELEMENT_ARRAY_BUFFER), self.indexBuffer) + glBufferData(GLenum(GL_ELEMENT_ARRAY_BUFFER), MemoryLayout.size * indices.count, indices, GLenum(GL_STATIC_DRAW)) + glBindBuffer(GLenum(GL_ELEMENT_ARRAY_BUFFER), 0) + + // Framebuffer + glGenFramebuffers(1, &self.framebuffer) + glBindFramebuffer(GLenum(GL_FRAMEBUFFER), self.framebuffer) + + // Texture + glGenTextures(1, &self.texture) + glBindTexture(GLenum(GL_TEXTURE_2D), self.texture) + glTexParameteri(GLenum(GL_TEXTURE_2D), GLenum(GL_TEXTURE_MIN_FILTER), GLint(GL_LINEAR)) + glTexParameteri(GLenum(GL_TEXTURE_2D), GLenum(GL_TEXTURE_MAG_FILTER), GLint(GL_LINEAR)) + glTexParameteri(GLenum(GL_TEXTURE_2D), GLenum(GL_TEXTURE_WRAP_S), GLint(GL_CLAMP_TO_EDGE)) + glTexParameteri(GLenum(GL_TEXTURE_2D), GLenum(GL_TEXTURE_WRAP_T), GLint(GL_CLAMP_TO_EDGE)) + glBindTexture(GLenum(GL_TEXTURE_2D), 0) + glFramebufferTexture2D(GLenum(GL_FRAMEBUFFER), GLenum(GL_COLOR_ATTACHMENT0), GLenum(GL_TEXTURE_2D), self.texture, 0) + + // Renderbuffer + glGenRenderbuffers(1, &self.renderbuffer) + glBindRenderbuffer(GLenum(GL_RENDERBUFFER), self.renderbuffer) + glFramebufferRenderbuffer(GLenum(GL_FRAMEBUFFER), GLenum(GL_DEPTH_ATTACHMENT), GLenum(GL_RENDERBUFFER), self.renderbuffer) + + self.resizeVideoBuffers() + } + + func processFrame() -> CIImage? + { + glFlush() + + let image = CIImage(texture: self.texture, size: self.videoFormat.dimensions, flipped: false, colorSpace: nil) + return image + } +} + +private extension OpenGLESProcessor +{ + func resizeVideoBuffers() + { + guard self.texture > 0 && self.renderbuffer > 0 else { return } + + EAGLContext.setCurrent(self.context) + + glBindTexture(GLenum(GL_TEXTURE_2D), self.texture) + glTexImage2D(GLenum(GL_TEXTURE_2D), 0, GL_RGBA, GLsizei(self.videoFormat.dimensions.width), GLsizei(self.videoFormat.dimensions.height), 0, GLenum(GL_RGBA), GLenum(GL_UNSIGNED_BYTE), nil) + glBindTexture(GLenum(GL_TEXTURE_2D), 0) + + glBindRenderbuffer(GLenum(GL_RENDERBUFFER), self.renderbuffer) + glRenderbufferStorage(GLenum(GL_RENDERBUFFER), GLenum(GL_DEPTH_COMPONENT16), GLsizei(self.videoFormat.dimensions.width), GLsizei(self.videoFormat.dimensions.height)) + + glViewport(0, 0, GLsizei(self.videoFormat.dimensions.width), GLsizei(self.videoFormat.dimensions.height)) + } +} diff --git a/Cores/DeltaCore/Sources/Emulator Core/Video/VideoFormat.swift b/Cores/DeltaCore/Sources/Emulator Core/Video/VideoFormat.swift new file mode 100644 index 000000000..6bedc72e0 --- /dev/null +++ b/Cores/DeltaCore/Sources/Emulator Core/Video/VideoFormat.swift @@ -0,0 +1,47 @@ +// +// VideoBufferInfo.swift +// DeltaCore +// +// Created by Riley Testut on 4/18/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +import CoreGraphics +import CoreImage + +extension VideoFormat +{ + public enum Format: Equatable + { + case bitmap(PixelFormat) + case openGLES + } + + public enum PixelFormat: Equatable + { + case rgb565 + case bgra8 + case rgba8 + + public var bytesPerPixel: Int { + switch self + { + case .rgb565: return 2 + case .bgra8: return 4 + case .rgba8: return 4 + } + } + } +} + +public struct VideoFormat: Equatable +{ + public var format: Format + public var dimensions: CGSize + + public init(format: Format, dimensions: CGSize) + { + self.format = format + self.dimensions = dimensions + } +} diff --git a/Cores/DeltaCore/Sources/Emulator Core/Video/VideoManager.swift b/Cores/DeltaCore/Sources/Emulator Core/Video/VideoManager.swift new file mode 100644 index 000000000..f1f857945 --- /dev/null +++ b/Cores/DeltaCore/Sources/Emulator Core/Video/VideoManager.swift @@ -0,0 +1,152 @@ +// +// VideoManager.swift +// DeltaCore +// +// Created by Riley Testut on 3/16/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +import Foundation +import Accelerate +import CoreImage +import GLKit + +protocol VideoProcessor +{ + var videoBuffer: UnsafeMutablePointer? { get } + + func prepare() + func processFrame() -> CIImage? +} + +public class VideoManager: NSObject, VideoRendering +{ + public internal(set) var videoFormat: VideoFormat { + didSet { + self.updateProcessor() + } + } + + public private(set) var gameViews = [GameView]() + + public var isEnabled = true + + private let context: EAGLContext + private let ciContext: CIContext + + private var processor: VideoProcessor + @NSCopying private var processedImage: CIImage? + @NSCopying private var displayedImage: CIImage? // Can only accurately snapshot rendered images. + + public init(videoFormat: VideoFormat) + { + self.videoFormat = videoFormat + self.context = EAGLContext(api: .openGLES2)! + self.ciContext = CIContext(eaglContext: self.context, options: [.workingColorSpace: NSNull()]) + + switch videoFormat.format + { + case .bitmap: self.processor = BitmapProcessor(videoFormat: videoFormat) + case .openGLES: self.processor = OpenGLESProcessor(videoFormat: videoFormat, context: self.context) + } + + super.init() + } + + private func updateProcessor() + { + switch self.videoFormat.format + { + case .bitmap: + self.processor = BitmapProcessor(videoFormat: self.videoFormat) + + case .openGLES: + guard let processor = self.processor as? OpenGLESProcessor else { return } + processor.videoFormat = self.videoFormat + } + } +} + +public extension VideoManager +{ + func add(_ gameView: GameView) + { + gameView.eaglContext = self.context + self.gameViews.append(gameView) + } + + func remove(_ gameView: GameView) + { + if let index = self.gameViews.firstIndex(of: gameView) + { + self.gameViews.remove(at: index) + } + } +} + +public extension VideoManager +{ + var videoBuffer: UnsafeMutablePointer? { + return self.processor.videoBuffer + } + + func prepare() + { + self.processor.prepare() + } + + func processFrame() + { + guard self.isEnabled else { return } + + autoreleasepool { + self.processedImage = self.processor.processFrame() + } + } + + func render() + { + guard self.isEnabled else { return } + + guard let image = self.processedImage else { return } + + // Autoreleasepool necessary to prevent leaking CIImages. + autoreleasepool { + for gameView in self.gameViews + { + gameView.inputImage = image + } + + self.displayedImage = image + } + } + + func snapshot() -> UIImage? + { + guard let displayedImage = self.displayedImage else { return nil } + + let imageWidth = Int(self.videoFormat.dimensions.width) + let imageHeight = Int(self.videoFormat.dimensions.height) + let capacity = imageWidth * imageHeight * 4 + + let imageBuffer = UnsafeMutableRawBufferPointer.allocate(byteCount: capacity, alignment: 1) + defer { imageBuffer.deallocate() } + + guard let baseAddress = imageBuffer.baseAddress, let colorSpace = CGColorSpace(name: CGColorSpace.sRGB) else { return nil } + + // Must render to raw buffer first so we can set CGImageAlphaInfo.noneSkipLast flag when creating CGImage. + // Otherwise, some parts of images may incorrectly be transparent. + self.ciContext.render(displayedImage, toBitmap: baseAddress, rowBytes: imageWidth * 4, bounds: displayedImage.extent, format: .RGBA8, colorSpace: colorSpace) + + let data = Data(bytes: baseAddress, count: imageBuffer.count) + let bitmapInfo: CGBitmapInfo = [CGBitmapInfo.byteOrder32Big, CGBitmapInfo(rawValue: CGImageAlphaInfo.noneSkipLast.rawValue)] + + guard + let dataProvider = CGDataProvider(data: data as CFData), + let cgImage = CGImage(width: imageWidth, height: imageHeight, bitsPerComponent: 8, bitsPerPixel: 32, bytesPerRow: imageWidth * 4, space: colorSpace, bitmapInfo: bitmapInfo, provider: dataProvider, decode: nil, shouldInterpolate: true, intent: .defaultIntent) + else { return nil } + + let image = UIImage(cgImage: cgImage) + return image + } +} diff --git a/Cores/DeltaCore/Sources/Extensions/Bundle+Resources.swift b/Cores/DeltaCore/Sources/Extensions/Bundle+Resources.swift new file mode 100644 index 000000000..63cbfdade --- /dev/null +++ b/Cores/DeltaCore/Sources/Extensions/Bundle+Resources.swift @@ -0,0 +1,32 @@ +// +// Bundle+Resources.swift +// DeltaCore +// +// Created by Riley Testut on 2/3/20. +// Copyright © 2020 Riley Testut. All rights reserved. +// + +import Foundation + +extension Bundle +{ + class var resources: Bundle { + #if FRAMEWORK + let bundle = Bundle(for: RingBuffer.self) + #elseif STATIC_LIBRARY + let bundle: Bundle + if let bundleURL = Bundle.main.url(forResource: "DeltaCore", withExtension: "bundle") + { + bundle = Bundle(url: bundleURL)! + } + else + { + bundle = .main + } + #else + let bundle = Bundle.main + #endif + + return bundle + } +} diff --git a/Cores/DeltaCore/Sources/Extensions/CGGeometry+Dictionary.swift b/Cores/DeltaCore/Sources/Extensions/CGGeometry+Dictionary.swift new file mode 100644 index 000000000..fd27b1c4f --- /dev/null +++ b/Cores/DeltaCore/Sources/Extensions/CGGeometry+Dictionary.swift @@ -0,0 +1,53 @@ +// +// CGGeometry+Dictionary.swift +// DeltaCore +// +// Created by Riley Testut on 12/19/15. +// Copyright © 2015 Riley Testut. All rights reserved. +// + +import UIKit + +internal extension CGRect +{ + init?(dictionary: [String: CGFloat]) + { + guard + let x = dictionary["x"], + let y = dictionary["y"], + let width = dictionary["width"], + let height = dictionary["height"] + else { return nil } + + self = CGRect(x: x, y: y, width: width, height: height) + } +} + +internal extension CGSize +{ + init?(dictionary: [String: CGFloat]) + { + guard + let width = dictionary["width"], + let height = dictionary["height"] + else { return nil } + + self = CGSize(width: width, height: height) + } +} + +internal extension UIEdgeInsets +{ + init?(dictionary: [String: CGFloat]) + { + guard + let top = dictionary["top"], + let bottom = dictionary["bottom"], + let left = dictionary["left"], + let right = dictionary["right"] + else { return nil } + + self = UIEdgeInsets(top: top, left: left, bottom: bottom, right: right) + } +} + diff --git a/Cores/DeltaCore/Sources/Extensions/CharacterSet+Hexadecimals.swift b/Cores/DeltaCore/Sources/Extensions/CharacterSet+Hexadecimals.swift new file mode 100644 index 000000000..feb2038d0 --- /dev/null +++ b/Cores/DeltaCore/Sources/Extensions/CharacterSet+Hexadecimals.swift @@ -0,0 +1,38 @@ +// +// CharacterSet+Hexadecimals.swift +// DeltaCore +// +// Created by Riley Testut on 4/30/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +import Foundation + +// Extend NSCharacterSet for Objective-C interopability. +public extension NSCharacterSet +{ + @objc(hexadecimalCharacterSet) + class var hexadecimals: NSCharacterSet + { + let characterSet = NSCharacterSet(charactersIn: "0123456789ABCDEFabcdef") + return characterSet + } +} + +public extension NSMutableCharacterSet +{ + @objc(hexadecimalCharacterSet) + override class var hexadecimals: NSMutableCharacterSet + { + let characterSet = NSCharacterSet.hexadecimals.mutableCopy() as! NSMutableCharacterSet + return characterSet + } +} + +public extension CharacterSet +{ + static var hexadecimals: CharacterSet + { + return NSCharacterSet.hexadecimals as CharacterSet + } +} diff --git a/Cores/DeltaCore/Sources/Extensions/Thread+RealTime.swift b/Cores/DeltaCore/Sources/Extensions/Thread+RealTime.swift new file mode 100644 index 000000000..8b2598867 --- /dev/null +++ b/Cores/DeltaCore/Sources/Extensions/Thread+RealTime.swift @@ -0,0 +1,57 @@ +// +// Thread+RealTime.swift +// DeltaCore +// +// Created by Riley Testut on 6/29/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +import Foundation +import Darwin.Mach + +private let machToSeconds: Double = { + var base = mach_timebase_info() + mach_timebase_info(&base) + return 1e-9 * Double(base.numer) / Double(base.denom) +}() + +internal extension Thread +{ + class var absoluteSystemTime: TimeInterval { + return Double(mach_absolute_time()) * machToSeconds; + } + + @discardableResult class func setRealTimePriority(withPeriod period: TimeInterval) -> Bool + { + var policy = thread_time_constraint_policy() + policy.period = UInt32(period / machToSeconds) + policy.computation = UInt32(0.007 / machToSeconds) + policy.constraint = UInt32(0.03 / machToSeconds) + policy.preemptible = 0 + + let threadport = pthread_mach_thread_np(pthread_self()) + let count = mach_msg_type_number_t(MemoryLayout.size / MemoryLayout.size) + + var result = KERN_SUCCESS + + withUnsafePointer(to: &policy) { (pointer) in + pointer.withMemoryRebound(to: integer_t.self, capacity: 1) { (policyPointer) in + let mutablePolicyPointer = UnsafeMutablePointer(mutating: policyPointer) + result = thread_policy_set(threadport, UInt32(THREAD_TIME_CONSTRAINT_POLICY), mutablePolicyPointer, count) + } + } + + if result != KERN_SUCCESS + { + print("Thread.setRealTimePriority(withPeriod:) failed.") + return false + } + + return true + } + + class func realTimeWait(until targetTime: TimeInterval) + { + mach_wait_until(UInt64(targetTime / machToSeconds)) + } +} diff --git a/Cores/DeltaCore/Sources/Extensions/UIApplication+AppExtension.swift b/Cores/DeltaCore/Sources/Extensions/UIApplication+AppExtension.swift new file mode 100644 index 000000000..7b56d2fa1 --- /dev/null +++ b/Cores/DeltaCore/Sources/Extensions/UIApplication+AppExtension.swift @@ -0,0 +1,18 @@ +// +// UIApplication+AppExtension.swift +// DeltaCore +// +// Created by Riley Testut on 6/14/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import UIKit + +public extension UIApplication +{ + // Cannot normally use UIApplication.shared from extensions, so we get around this by calling value(forKey:). + class var delta_shared: UIApplication? { + return UIApplication.value(forKey: "sharedApplication") as? UIApplication + } +} + diff --git a/Cores/DeltaCore/Sources/Extensions/UIDevice+Vibration.swift b/Cores/DeltaCore/Sources/Extensions/UIDevice+Vibration.swift new file mode 100644 index 000000000..b0ff27282 --- /dev/null +++ b/Cores/DeltaCore/Sources/Extensions/UIDevice+Vibration.swift @@ -0,0 +1,93 @@ +// +// UIDevice+Vibration.swift +// DeltaCore +// +// Created by Riley Testut on 11/28/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +import UIKit +import AudioToolbox + +@_silgen_name("AudioServicesStopSystemSound") +func AudioServicesStopSystemSound(_ soundID: SystemSoundID) + +// vibrationPattern parameter must be NSDictionary to prevent crash when bridging from Swift.Dictionary. +@_silgen_name("AudioServicesPlaySystemSoundWithVibration") +func AudioServicesPlaySystemSoundWithVibration(_ soundID: SystemSoundID, _ idk: Any?, _ vibrationPattern: NSDictionary) + +public extension UIDevice +{ + enum FeedbackSupportLevel: Int + { + case unsupported + case basic + case feedbackGenerator + } +} + +public extension UIDevice +{ + var feedbackSupportLevel: FeedbackSupportLevel + { + guard let rawValue = self.value(forKey: "_feedbackSupportLevel") as? Int else { return .unsupported } + + let feedbackSupportLevel = FeedbackSupportLevel(rawValue: rawValue) + return feedbackSupportLevel ?? .feedbackGenerator // We'll assume raw values greater than 2 still support UIFeedbackGenerator ¯\_(ツ)_/¯ + } + + var isVibrationSupported: Bool { + #if (arch(i386) || arch(x86_64)) + // Return false for iOS simulator + return false + #else + // All iPhones support some form of vibration, and potentially future non-iPhone devices will support taptic feedback + return (self.model.hasPrefix("iPhone")) || self.feedbackSupportLevel != .unsupported + #endif + } + + func vibrate() + { + guard self.isVibrationSupported else { return } + + switch self.feedbackSupportLevel + { + case .unsupported: + AudioServicesStopSystemSound(kSystemSoundID_Vibrate) + + var vibrationLength = 30 + + if self.modelGeneration.hasPrefix("iPhone6") + { + // iPhone 5S has a weaker vibration motor, so we vibrate for 10ms longer to compensate + vibrationLength = 40; + } + + // Must use NSArray/NSDictionary to prevent crash. + let pattern: [Any] = [false, 0, true, vibrationLength] + let dictionary: [String: Any] = ["VibePattern": pattern, "Intensity": 1] + + AudioServicesPlaySystemSoundWithVibration(kSystemSoundID_Vibrate, nil, dictionary as NSDictionary) + + case .basic, .feedbackGenerator: AudioServicesPlaySystemSound(1519) // "peek" vibration + } + } +} + +private extension UIDevice +{ + var modelGeneration: String { + var sysinfo = utsname() + uname(&sysinfo) + + var modelGeneration: String! + + withUnsafePointer(to: &sysinfo.machine) { pointer in + pointer.withMemoryRebound(to: UInt8.self, capacity: Int(Mirror(reflecting: pointer.pointee).children.count), { (pointer) in + modelGeneration = String(cString: pointer) + }) + } + + return modelGeneration + } +} diff --git a/Cores/DeltaCore/Sources/Extensions/UIImage+PDF.swift b/Cores/DeltaCore/Sources/Extensions/UIImage+PDF.swift new file mode 100644 index 000000000..cf0763201 --- /dev/null +++ b/Cores/DeltaCore/Sources/Extensions/UIImage+PDF.swift @@ -0,0 +1,70 @@ +// +// UIImage+PDF.swift +// DeltaCore +// +// Created by Riley Testut on 12/21/15. +// Copyright © 2015 Riley Testut. All rights reserved. +// +// Based on Erica Sadun's UIImage+PDFUtility ( https://github.com/erica/useful-things/blob/master/useful%20pack/UIImage%2BPDF/UIImage%2BPDFUtility.m ) +// + +import UIKit +import CoreGraphics +import AVFoundation + +internal extension UIImage +{ + class func image(withPDFData data: Data, targetSize: CGSize) -> UIImage? + { + guard targetSize.width > 0 && targetSize.height > 0 else { return nil } + + guard + let dataProvider = CGDataProvider(data: data as CFData), + let document = CGPDFDocument(dataProvider), + let page = document.page(at: 1) + else { return nil } + + let pageFrame = page.getBoxRect(.cropBox) + + var destinationFrame = AVMakeRect(aspectRatio: pageFrame.size, insideRect: CGRect(origin: CGPoint.zero, size: targetSize)) + destinationFrame.origin = CGPoint.zero + + let format = UIGraphicsImageRendererFormat() + format.scale = UIScreen.main.scale + let imageRenderer = UIGraphicsImageRenderer(bounds: destinationFrame, format: format) + + let image = imageRenderer.image { (imageRendererContext) in + + let context = imageRendererContext.cgContext + + // Save state + context.saveGState() + + // Flip coordinate system to match Quartz system + let transform = CGAffineTransform.identity.scaledBy(x: 1.0, y: -1.0).translatedBy(x: 0.0, y: -targetSize.height) + context.concatenate(transform) + + // Calculate rendering frames + destinationFrame = destinationFrame.applying(transform) + + let aspectScale = min(destinationFrame.width / pageFrame.width, destinationFrame.height / pageFrame.height) + + // Ensure aspect ratio is preserved + var drawingFrame = pageFrame.applying(CGAffineTransform(scaleX: aspectScale, y: aspectScale)) + drawingFrame.origin.x = destinationFrame.midX - (drawingFrame.width / 2.0) + drawingFrame.origin.y = destinationFrame.midY - (drawingFrame.height / 2.0) + + // Scale the context + context.translateBy(x: destinationFrame.minX, y: destinationFrame.minY) + context.scaleBy(x: aspectScale, y: aspectScale) + + // Render the PDF + context.drawPDFPage(page) + + // Restore state + context.restoreGState() + } + + return image + } +} diff --git a/Cores/DeltaCore/Sources/Extensions/UIResponder+FirstResponder.swift b/Cores/DeltaCore/Sources/Extensions/UIResponder+FirstResponder.swift new file mode 100644 index 000000000..bdd445f66 --- /dev/null +++ b/Cores/DeltaCore/Sources/Extensions/UIResponder+FirstResponder.swift @@ -0,0 +1,30 @@ +// +// UIResponder+FirstResponder.swift +// DeltaCore +// +// Created by Riley Testut on 6/14/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import UIKit + +private class FirstResponderEvent: UIEvent +{ + var firstResponder: UIResponder? +} + +extension UIResponder +{ + @objc(delta_firstResponder) + class var firstResponder: UIResponder? { + let event = FirstResponderEvent() + UIApplication.delta_shared?.sendAction(#selector(UIResponder.findFirstResponder(sender:event:)), to: nil, from: nil, for: event) + return event.firstResponder + } + + @objc(delta_findFirstResponderWithSender:event:) + private func findFirstResponder(sender: Any?, event: FirstResponderEvent) + { + event.firstResponder = self + } +} diff --git a/Cores/DeltaCore/Sources/Extensions/UIScreen+ControllerSkin.swift b/Cores/DeltaCore/Sources/Extensions/UIScreen+ControllerSkin.swift new file mode 100644 index 000000000..9b0c2ccf5 --- /dev/null +++ b/Cores/DeltaCore/Sources/Extensions/UIScreen+ControllerSkin.swift @@ -0,0 +1,36 @@ +// +// UIScreen+ControllerSkin.swift +// DeltaCore +// +// Created by Riley Testut on 7/4/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +import UIKit + +public extension UIScreen +{ + var defaultControllerSkinSize: ControllerSkin.Size + { + let fixedBounds = self.fixedCoordinateSpace.convert(self.bounds, from: self.coordinateSpace) + + if UIDevice.current.userInterfaceIdiom == .pad + { + switch fixedBounds.width + { + case 768: return .small + case 834: return .medium + default: return .large + } + } + else + { + switch fixedBounds.width + { + case 320: return .small + case 375: return .medium + default: return .large + } + } + } +} diff --git a/Cores/DeltaCore/Sources/Filters/FilterChain.swift b/Cores/DeltaCore/Sources/Filters/FilterChain.swift new file mode 100644 index 000000000..334a41f83 --- /dev/null +++ b/Cores/DeltaCore/Sources/Filters/FilterChain.swift @@ -0,0 +1,89 @@ +// +// FilterChain.swift +// DeltaCore +// +// Created by Riley Testut on 4/13/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +import CoreImage + +private extension CIImage +{ + func flippingYAxis() -> CIImage + { + let transform = CGAffineTransform(scaleX: 1, y: -1) + let flippedImage = self.applyingFilter("CIAffineTransform", parameters: ["inputTransform": NSValue(cgAffineTransform: transform)]) + + let translation = CGAffineTransform(translationX: 0, y: self.extent.height) + let translatedImage = flippedImage.applyingFilter("CIAffineTransform", parameters: ["inputTransform": NSValue(cgAffineTransform: translation)]) + + return translatedImage + } +} + +@objcMembers +public class FilterChain: CIFilter +{ + public var inputFilters = [CIFilter]() + + public var inputImage: CIImage? + + public override var outputImage: CIImage? { + return self.inputFilters.reduce(self.inputImage, { (image, filter) -> CIImage? in + guard var image = image else { return nil } + + let flippedImage = image.flippingYAxis() + + var outputImage: CIImage? + + if filter.inputKeys.contains(kCIInputImageKey) + { + filter.setValue(flippedImage, forKey: kCIInputImageKey) + outputImage = filter.outputImage + } + else + { + guard var filterImage = filter.outputImage else { return image } + + if filterImage.extent.isInfinite + { + filterImage = filterImage.cropped(to: flippedImage.extent) + } + + // Filter is already "flipped", so no need to flip it again. + // filterImage = filterImage.flippingYAxis() + + outputImage = filterImage.composited(over: flippedImage) + } + + outputImage = outputImage?.flippingYAxis() + + if let image = outputImage, image.extent.origin != .zero + { + // Always translate CIImage back to origin so later calculations are correct. + let translation = CGAffineTransform(translationX: -image.extent.origin.x, y: -image.extent.origin.y) + outputImage = image.applyingFilter("CIAffineTransform", parameters: ["inputTransform": NSValue(cgAffineTransform: translation)]) + } + + return outputImage + }) + } + + public override init() + { + // Must be declared or else we'll get "Use of unimplemented initializer FilterChain.init()" runtime exception. + super.init() + } + + public init(filters: [CIFilter]) + { + self.inputFilters = filters + super.init() + } + + public required init?(coder aDecoder: NSCoder) + { + super.init(coder: aDecoder) + } +} diff --git a/Cores/DeltaCore/Sources/Game Controllers/ExternalGameControllerManager.swift b/Cores/DeltaCore/Sources/Game Controllers/ExternalGameControllerManager.swift new file mode 100644 index 000000000..c6d402593 --- /dev/null +++ b/Cores/DeltaCore/Sources/Game Controllers/ExternalGameControllerManager.swift @@ -0,0 +1,237 @@ +// +// ExternalGameControllerManager.swift +// DeltaCore +// +// Created by Riley Testut on 8/20/15. +// Copyright © 2015 Riley Testut. All rights reserved. +// + +import Foundation +import GameController + +private let ExternalKeyboardStatusDidChange: @convention(c) (CFNotificationCenter?, UnsafeMutableRawPointer?, CFNotificationName?, UnsafeRawPointer?, CFDictionary?) -> Void = { + (notificationCenter, observer, name, object, userInfo) in + + if ExternalGameControllerManager.shared.isKeyboardConnected + { + NotificationCenter.default.post(name: .externalKeyboardDidConnect, object: nil) + } + else + { + NotificationCenter.default.post(name: .externalKeyboardDidDisconnect, object: nil) + } +} + +public extension Notification.Name +{ + static let externalGameControllerDidConnect = Notification.Name("ExternalGameControllerDidConnectNotification") + static let externalGameControllerDidDisconnect = Notification.Name("ExternalGameControllerDidDisconnectNotification") + + static let externalKeyboardDidConnect = Notification.Name("ExternalKeyboardDidConnect") + static let externalKeyboardDidDisconnect = Notification.Name("ExternalKeyboardDidDisconnect") +} + +public class ExternalGameControllerManager: UIResponder +{ + public static let shared = ExternalGameControllerManager() + + //MARK: - Properties - + /** Properties **/ + public private(set) var connectedControllers: [GameController] = [] + + public var automaticallyAssignsPlayerIndexes: Bool + + private var nextAvailablePlayerIndex: Int { + var nextPlayerIndex = -1 + + let sortedGameControllers = self.connectedControllers.sorted { ($0.playerIndex ?? -1) < ($1.playerIndex ?? -1) } + for controller in sortedGameControllers + { + let playerIndex = controller.playerIndex ?? -1 + + if abs(playerIndex - nextPlayerIndex) > 1 + { + break + } + else + { + nextPlayerIndex = playerIndex + } + } + + nextPlayerIndex += 1 + + return nextPlayerIndex + } + + private override init() + { +#if targetEnvironment(simulator) + self.automaticallyAssignsPlayerIndexes = false +#else + self.automaticallyAssignsPlayerIndexes = true +#endif + + super.init() + } +} + +//MARK: - Discovery - +/** Discovery **/ +public extension ExternalGameControllerManager +{ + func startMonitoring() + { + for controller in GCController.controllers() + { + let externalController = MFiGameController(controller: controller) + self.add(externalController) + } + + if self.isKeyboardConnected + { + let keyboardController = KeyboardGameController() + self.add(keyboardController) + } + + NotificationCenter.default.addObserver(self, selector: #selector(ExternalGameControllerManager.mfiGameControllerDidConnect(_:)), name: .GCControllerDidConnect, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(ExternalGameControllerManager.mfiGameControllerDidDisconnect(_:)), name: .GCControllerDidDisconnect, object: nil) + + NotificationCenter.default.addObserver(self, selector: #selector(ExternalGameControllerManager.keyboardDidConnect(_:)), name: .externalKeyboardDidConnect, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(ExternalGameControllerManager.keyboardDidDisconnect(_:)), name: .externalKeyboardDidDisconnect, object: nil) + + if let notificationCenter = CFNotificationCenterGetDarwinNotifyCenter() + { + CFNotificationCenterAddObserver(notificationCenter, nil, ExternalKeyboardStatusDidChange, "GSEventHardwareKeyboardAttached" as CFString, nil, .deliverImmediately) + } + } + + func stopMonitoring() + { + NotificationCenter.default.removeObserver(self, name: .GCControllerDidConnect, object: nil) + NotificationCenter.default.removeObserver(self, name: .GCControllerDidDisconnect, object: nil) + + NotificationCenter.default.removeObserver(self, name: .externalKeyboardDidConnect, object: nil) + NotificationCenter.default.removeObserver(self, name: .externalKeyboardDidDisconnect, object: nil) + + self.connectedControllers.removeAll() + } + + func startWirelessControllerDiscovery(withCompletionHandler completionHandler: (() -> Void)?) + { + GCController.startWirelessControllerDiscovery(completionHandler: completionHandler) + } + + func stopWirelessControllerDiscovery() + { + GCController.stopWirelessControllerDiscovery() + } +} + +//MARK: - External Keyboard - +public extension ExternalGameControllerManager +{ + // Implementation based on Ian McDowell's tweet: https://twitter.com/ian_mcdowell/status/844572113759547392 + var isKeyboardConnected: Bool { + guard let uiKeyboardClass: AnyObject = NSClassFromString("UIKeyboard") else { return false } + + let selector = NSSelectorFromString("shouldMinimizeForHardwareKeyboard") + guard uiKeyboardClass.responds(to: selector) else { return false } + + if let _ = uiKeyboardClass.perform(selector) + { + // Returns non-nil value when true, so return true ourselves. + return true + } + + return false + } + + override func keyPressesBegan(_ presses: Set, with event: UIEvent) + { + for case let keyboardController as KeyboardGameController in self.connectedControllers + { + keyboardController.keyPressesBegan(presses, with: event) + } + } + + override func keyPressesEnded(_ presses: Set, with event: UIEvent) + { + for case let keyboardController as KeyboardGameController in self.connectedControllers + { + keyboardController.keyPressesEnded(presses, with: event) + } + } +} + +//MARK: - Managing Controllers - +private extension ExternalGameControllerManager +{ + func add(_ controller: GameController) + { + if self.automaticallyAssignsPlayerIndexes + { + let playerIndex = self.nextAvailablePlayerIndex + controller.playerIndex = playerIndex + } + + self.connectedControllers.append(controller) + + NotificationCenter.default.post(name: .externalGameControllerDidConnect, object: controller) + } + + func remove(_ controller: GameController) + { + guard let index = self.connectedControllers.firstIndex(where: { $0.isEqual(controller) }) else { return } + + self.connectedControllers.remove(at: index) + + NotificationCenter.default.post(name: .externalGameControllerDidDisconnect, object: controller) + } +} + +//MARK: - MFi Game Controllers - +private extension ExternalGameControllerManager +{ + @objc func mfiGameControllerDidConnect(_ notification: Notification) + { + guard let controller = notification.object as? GCController else { return } + + let externalController = MFiGameController(controller: controller) + self.add(externalController) + } + + @objc func mfiGameControllerDidDisconnect(_ notification: Notification) + { + guard let controller = notification.object as? GCController else { return } + + for externalController in self.connectedControllers + { + guard let mfiController = externalController as? MFiGameController else { continue } + + if mfiController.controller == controller + { + self.remove(externalController) + } + } + } +} + +//MARK: - Keyboard Game Controllers - +private extension ExternalGameControllerManager +{ + @objc func keyboardDidConnect(_ notification: Notification) + { + guard !self.connectedControllers.contains(where: { $0 is KeyboardGameController }) else { return } + + let keyboardController = KeyboardGameController() + self.add(keyboardController) + } + + @objc func keyboardDidDisconnect(_ notification: Notification) + { + guard let keyboardController = self.connectedControllers.first(where: { $0 is KeyboardGameController }) else { return } + + self.remove(keyboardController) + } +} diff --git a/Cores/DeltaCore/Sources/Game Controllers/Keyboard/KeyboardGameController.swift b/Cores/DeltaCore/Sources/Game Controllers/Keyboard/KeyboardGameController.swift new file mode 100644 index 000000000..8d1781c89 --- /dev/null +++ b/Cores/DeltaCore/Sources/Game Controllers/Keyboard/KeyboardGameController.swift @@ -0,0 +1,114 @@ +// +// KeyboardGameController.swift +// DeltaCore +// +// Created by Riley Testut on 6/14/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import UIKit + +public extension GameControllerInputType +{ + static let keyboard = GameControllerInputType("keyboard") +} + +extension KeyboardGameController +{ + public struct Input: Hashable, RawRepresentable, Codable + { + public let rawValue: String + + public init(rawValue: String) + { + self.rawValue = rawValue + } + + public init(_ rawValue: String) + { + self.rawValue = rawValue + } + } +} + +extension KeyboardGameController.Input: Input +{ + public var type: InputType { + return .controller(.keyboard) + } + + public init(stringValue: String) + { + self.init(rawValue: stringValue) + } +} + +public extension KeyboardGameController.Input +{ + static let up = KeyboardGameController.Input("up") + static let down = KeyboardGameController.Input("down") + static let left = KeyboardGameController.Input("left") + static let right = KeyboardGameController.Input("right") + + static let escape = KeyboardGameController.Input("escape") + + static let shift = KeyboardGameController.Input("shift") + static let command = KeyboardGameController.Input("command") + static let option = KeyboardGameController.Input("option") + static let control = KeyboardGameController.Input("control") + static let capsLock = KeyboardGameController.Input("capsLock") + + static let space = KeyboardGameController.Input("space") + static let `return` = KeyboardGameController.Input("return") + static let tab = KeyboardGameController.Input("tab") +} + +public class KeyboardGameController: UIResponder, GameController +{ + public var name: String { + return NSLocalizedString("Keyboard", comment: "") + } + + public var playerIndex: Int? + + public let inputType: GameControllerInputType = .keyboard + + public private(set) lazy var defaultInputMapping: GameControllerInputMappingProtocol? = { + guard let fileURL = Bundle.resources.url(forResource: "KeyboardGameController", withExtension: "deltamapping") else { + fatalError("KeyboardGameController.deltamapping does not exist.") + } + + do + { + let inputMapping = try GameControllerInputMapping(fileURL: fileURL) + return inputMapping + } + catch + { + print(error) + + fatalError("KeyboardGameController.deltamapping does not exist.") + } + }() +} + +public extension KeyboardGameController +{ + override func keyPressesBegan(_ presses: Set, with event: UIEvent) + { + for press in presses + { + let input = Input(press.key) + self.activate(input) + } + } + + override func keyPressesEnded(_ presses: Set, with event: UIEvent) + { + for press in presses + { + let input = Input(press.key) + self.deactivate(input) + } + } +} diff --git a/Cores/DeltaCore/Sources/Game Controllers/Keyboard/KeyboardResponder.swift b/Cores/DeltaCore/Sources/Game Controllers/Keyboard/KeyboardResponder.swift new file mode 100644 index 000000000..d38b2270b --- /dev/null +++ b/Cores/DeltaCore/Sources/Game Controllers/Keyboard/KeyboardResponder.swift @@ -0,0 +1,169 @@ +// +// KeyboardResponder.swift +// DeltaCore +// +// Created by Riley Testut on 6/14/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import UIKit +import ObjectiveC + +public extension UIResponder +{ + @objc func keyPressesBegan(_ presses: Set, with event: UIEvent) + { + self.next?.keyPressesBegan(presses, with: event) + } + + @objc func keyPressesEnded(_ presses: Set, with event: UIEvent) + { + self.next?.keyPressesEnded(presses, with: event) + } +} + +private extension UIResponder +{ + @objc(_keyCommandForEvent:target:) + @NSManaged func _keyCommand(for event: UIEvent, target: UnsafeMutablePointer) -> UIKeyCommand? +} + +@objc public class KeyPress: NSObject +{ + public fileprivate(set) var key: String + public fileprivate(set) var keyCode: Int + + public fileprivate(set) var modifierFlags: UIKeyModifierFlags + + public fileprivate(set) var isActive: Bool = true + + fileprivate init(key: String, keyCode: Int, modifierFlags: UIKeyModifierFlags) + { + self.key = key + self.keyCode = keyCode + self.modifierFlags = modifierFlags + } +} + +public class KeyboardResponder: UIResponder +{ + private let _nextResponder: UIResponder? + + public override var next: UIResponder? { + return self._nextResponder + } + + // Use KeyPress.keyCode as dictionary key because KeyPress.key may be invalid for keyUp events. + private static var activeKeyPresses = [Int: KeyPress]() + private static var activeModifierFlags = UIKeyModifierFlags(rawValue: 0) + + public init(nextResponder: UIResponder?) + { + self._nextResponder = nextResponder + } +} + +private extension KeyboardResponder +{ + // Implementation based on Steve Troughton-Smith's gist: https://gist.github.com/steventroughtonsmith/7515380 + override func _keyCommand(for event: UIEvent, target: UnsafeMutablePointer) -> UIKeyCommand? + { + // Retrieve information from event. + guard + let key = event.value(forKey: "_unmodifiedInput") as? String, + let keyCode = event.value(forKey: "_keyCode") as? Int, + let rawModifierFlags = event.value(forKey: "_modifierFlags") as? Int, + let isActive = event.value(forKey: "_isKeyDown") as? Bool + else { return nil } + + let modifierFlags = UIKeyModifierFlags(rawValue: rawModifierFlags) + defer { KeyboardResponder.activeModifierFlags = modifierFlags } + + let previousKeyPress = KeyboardResponder.activeKeyPresses[keyCode] + + // Ignore key presses that haven't changed activate state to filter out duplicate key press events. + guard previousKeyPress?.isActive != isActive else { return nil } + + // Attempt to use previousKeyPress.key because key may be invalid for keyUp events. + var pressedKey = previousKeyPress?.key ?? key + + // Check if pressedKey is a whitespace or newline character. + if pressedKey.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty + { + if pressedKey.isEmpty + { + if isActive + { + // Determine the newly activated modifier key. + let activatedModifierFlags = modifierFlags.subtracting(KeyboardResponder.activeModifierFlags) + + guard let key = self.key(for: activatedModifierFlags) else { return nil } + pressedKey = key + } + else + { + // Determine the newly deactivated modifier key. + let deactivatedModifierFlags = KeyboardResponder.activeModifierFlags.subtracting(modifierFlags) + + guard let key = self.key(for: deactivatedModifierFlags) else { return nil } + pressedKey = key + } + } + else + { + switch pressedKey + { + case " ": pressedKey = KeyboardGameController.Input.space.rawValue + case "\r", "\n": pressedKey = KeyboardGameController.Input.return.rawValue + case "\t": pressedKey = KeyboardGameController.Input.tab.rawValue + default: break + } + } + } + else + { + switch pressedKey + { + case UIKeyCommand.inputUpArrow: pressedKey = KeyboardGameController.Input.up.rawValue + case UIKeyCommand.inputDownArrow: pressedKey = KeyboardGameController.Input.down.rawValue + case UIKeyCommand.inputLeftArrow: pressedKey = KeyboardGameController.Input.left.rawValue + case UIKeyCommand.inputRightArrow: pressedKey = KeyboardGameController.Input.right.rawValue + case UIKeyCommand.inputEscape: pressedKey = KeyboardGameController.Input.escape.rawValue + default: break + } + } + + let keyPress = previousKeyPress ?? KeyPress(key: pressedKey, keyCode: keyCode, modifierFlags: modifierFlags) + keyPress.isActive = isActive + + if keyPress.isActive + { + KeyboardResponder.activeKeyPresses[keyCode] = keyPress + + UIResponder.firstResponder?.keyPressesBegan([keyPress], with: event) + ExternalGameControllerManager.shared.keyPressesBegan([keyPress], with: event) + } + else + { + UIResponder.firstResponder?.keyPressesEnded([keyPress], with: event) + ExternalGameControllerManager.shared.keyPressesEnded([keyPress], with: event) + + KeyboardResponder.activeKeyPresses[keyCode] = nil + } + + return nil + } + + func key(for modifierFlags: UIKeyModifierFlags) -> String? + { + switch modifierFlags + { + case .shift: return KeyboardGameController.Input.shift.rawValue + case .control: return KeyboardGameController.Input.control.rawValue + case .alternate: return KeyboardGameController.Input.option.rawValue + case .command: return KeyboardGameController.Input.command.rawValue + case .alphaShift: return KeyboardGameController.Input.capsLock.rawValue + default: return nil + } + } +} diff --git a/Cores/DeltaCore/Sources/Game Controllers/MFi/MFiGameController.swift b/Cores/DeltaCore/Sources/Game Controllers/MFi/MFiGameController.swift new file mode 100644 index 000000000..b95cb7017 --- /dev/null +++ b/Cores/DeltaCore/Sources/Game Controllers/MFi/MFiGameController.swift @@ -0,0 +1,195 @@ +// +// MFiGameController.swift +// DeltaCore +// +// Created by Riley Testut on 7/22/15. +// Copyright © 2015 Riley Testut. All rights reserved. +// + +import GameController + +public extension GameControllerInputType +{ + static let mfi = GameControllerInputType("mfi") +} + +extension MFiGameController +{ + public enum Input: String, Codable + { + case menu + + case up + case down + case left + case right + + case leftThumbstickUp + case leftThumbstickDown + case leftThumbstickLeft + case leftThumbstickRight + + case rightThumbstickUp + case rightThumbstickDown + case rightThumbstickLeft + case rightThumbstickRight + + case a + case b + case x + case y + + case leftShoulder + case leftTrigger + + case rightShoulder + case rightTrigger + } +} + +extension MFiGameController.Input: Input +{ + public var type: InputType { + return .controller(.mfi) + } + + public var isContinuous: Bool { + switch self + { + case .leftThumbstickUp, .leftThumbstickDown, .leftThumbstickLeft, .leftThumbstickRight: return true + case .rightThumbstickUp, .rightThumbstickDown, .rightThumbstickLeft, .rightThumbstickRight: return true + default: return false + } + } +} + +public class MFiGameController: NSObject, GameController +{ + //MARK: - Properties - + /** Properties **/ + public let controller: GCController + + public var name: String { + return self.controller.vendorName ?? NSLocalizedString("MFi Controller", comment: "") + } + + public var playerIndex: Int? { + get { + switch self.controller.playerIndex + { + case .indexUnset: return nil + case .index1: return 0 + case .index2: return 1 + case .index3: return 2 + case .index4: return 3 + @unknown default: return nil + } + } + set { + switch newValue + { + case .some(0): self.controller.playerIndex = .index1 + case .some(1): self.controller.playerIndex = .index2 + case .some(2): self.controller.playerIndex = .index3 + case .some(3): self.controller.playerIndex = .index4 + default: self.controller.playerIndex = .indexUnset + } + } + } + + public let inputType: GameControllerInputType = .mfi + + public private(set) lazy var defaultInputMapping: GameControllerInputMappingProtocol? = { + guard let fileURL = Bundle.resources.url(forResource: "MFiGameController", withExtension: "deltamapping") else { + fatalError("MFiGameController.deltamapping does not exist.") + } + + do + { + let inputMapping = try GameControllerInputMapping(fileURL: fileURL) + return inputMapping + } + catch + { + print(error) + fatalError("MFiGameController.deltamapping does not exist.") + } + }() + + //MARK: - Initializers - + /** Initializers **/ + public init(controller: GCController) + { + self.controller = controller + + super.init() + + self.controller.controllerPausedHandler = { [unowned self] controller in + self.activate(Input.menu) + self.deactivate(Input.menu) + } + + let inputChangedHandler: (_ input: MFiGameController.Input, _ pressed: Bool) -> Void = { [unowned self] (input, pressed) in + if pressed + { + self.activate(input) + } + else + { + self.deactivate(input) + } + } + + let thumbstickChangedHandler: (_ input1: MFiGameController.Input, _ input2: MFiGameController.Input, _ value: Float) -> Void = { [unowned self] (input1, input2, value) in + + switch value + { + case ..<0: + self.activate(input1, value: Double(-value)) + self.deactivate(input2) + + case 0: + self.deactivate(input1) + self.deactivate(input2) + + default: + self.deactivate(input1) + self.activate(input2, value: Double(value)) + } + } + + if let gamepad = self.controller.gamepad + { + gamepad.buttonA.pressedChangedHandler = { (button, value, pressed) in inputChangedHandler(.a, pressed) } + gamepad.buttonB.pressedChangedHandler = { (button, value, pressed) in inputChangedHandler(.b, pressed) } + gamepad.buttonX.pressedChangedHandler = { (button, value, pressed) in inputChangedHandler(.x, pressed) } + gamepad.buttonY.pressedChangedHandler = { (button, value, pressed) in inputChangedHandler(.y, pressed) } + gamepad.leftShoulder.pressedChangedHandler = { (button, value, pressed) in inputChangedHandler(.leftShoulder, pressed) } + gamepad.rightShoulder.pressedChangedHandler = { (button, value, pressed) in inputChangedHandler(.rightShoulder, pressed) } + + gamepad.dpad.up.pressedChangedHandler = { (button, value, pressed) in inputChangedHandler(.up, pressed) } + gamepad.dpad.down.pressedChangedHandler = { (button, value, pressed) in inputChangedHandler(.down, pressed) } + gamepad.dpad.left.pressedChangedHandler = { (button, value, pressed) in inputChangedHandler(.left, pressed) } + gamepad.dpad.right.pressedChangedHandler = { (button, value, pressed) in inputChangedHandler(.right, pressed) } + } + + if let extendedGamepad = self.controller.extendedGamepad + { + extendedGamepad.leftTrigger.pressedChangedHandler = { (button, value, pressed) in inputChangedHandler(.leftTrigger, pressed) } + extendedGamepad.rightTrigger.pressedChangedHandler = { (button, value, pressed) in inputChangedHandler(.rightTrigger, pressed) } + + extendedGamepad.leftThumbstick.xAxis.valueChangedHandler = { (axis, value) in + thumbstickChangedHandler(.leftThumbstickLeft, .leftThumbstickRight, value) + } + extendedGamepad.leftThumbstick.yAxis.valueChangedHandler = { (axis, value) in + thumbstickChangedHandler(.leftThumbstickDown, .leftThumbstickUp, value) + } + extendedGamepad.rightThumbstick.xAxis.valueChangedHandler = { (axis, value) in + thumbstickChangedHandler(.rightThumbstickLeft, .rightThumbstickRight, value) + } + extendedGamepad.rightThumbstick.yAxis.valueChangedHandler = { (axis, value) in + thumbstickChangedHandler(.rightThumbstickDown, .rightThumbstickUp, value) + } + } + } +} diff --git a/Cores/DeltaCore/Sources/Model/Cheat.swift b/Cores/DeltaCore/Sources/Model/Cheat.swift new file mode 100644 index 000000000..7171a60b9 --- /dev/null +++ b/Cores/DeltaCore/Sources/Model/Cheat.swift @@ -0,0 +1,21 @@ +// +// Cheat.swift +// DeltaCore +// +// Created by Riley Testut on 5/19/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +import Foundation + +public struct Cheat: CheatProtocol +{ + public var code: String + public var type: CheatType + + public init(code: String, type: CheatType) + { + self.code = code + self.type = type + } +} diff --git a/Cores/DeltaCore/Sources/Model/CheatFormat.swift b/Cores/DeltaCore/Sources/Model/CheatFormat.swift new file mode 100644 index 000000000..fde970e4a --- /dev/null +++ b/Cores/DeltaCore/Sources/Model/CheatFormat.swift @@ -0,0 +1,108 @@ +// +// CheatFormat.swift +// DeltaCore +// +// Created by Riley Testut on 5/22/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +import Foundation + +public struct CheatFormat: Hashable +{ + public let name: String + + // Must begin and end with an alphanumberic character. Besides these, non-alphanumberic characters will be treated as special formatting characters. + // Ex: XXXX-YYYY. The "-" is a special formatting character, and should be automatically inserted between alphanumeric characters by a code editor + public let format: String + + public let type: CheatType + + public let allowedCodeCharacters: CharacterSet + + public init(name: String, format: String, type: CheatType, allowedCodeCharacters: CharacterSet = CharacterSet.hexadecimals) + { + self.name = name + self.format = format + self.type = type + self.allowedCodeCharacters = allowedCodeCharacters + } +} + +public extension String +{ + func sanitized(with characterSet: CharacterSet) -> String + { + let sanitizedString = (self as NSString).components(separatedBy: characterSet.inverted).joined(separator: "") + return sanitizedString + } + + func formatted(with cheatFormat: CheatFormat) -> String + { + // NOTE: We do not use cheatFormat.allowedCodeCharacters because the code format typically includes non-legal characters. + // Ex: Using "XXXX-YYYY" for the code format despite the actual code format being strictly hexadecial characters. + // This is okay because this function's job is not to validate the input, but simply to format it + let characterSet = CharacterSet.alphanumerics + + // Remove all characters not in characterSet + let sanitizedFormat = cheatFormat.format.sanitized(with: characterSet) + + // We need to repeat the format enough times so it is greater than or equal to the length of self + // This prevents us from having to account for wrapping around the cheat format + let repetitions = Int(ceil((Float(self.count) / Float(sanitizedFormat.count)))) + + var format = "" + for i in 0 ..< repetitions + { + if i > 0 + { + format += "\n" + } + + format += cheatFormat.format + } + + + var formattedString = "" + + // Serves as a sort of stack buffer for us to draw characters from + let codeBuffer = NSMutableString(string: self) + + let scanner = Scanner(string: format) + scanner.charactersToBeSkipped = nil + + while !scanner.isAtEnd + { + // Scan up until the first separator character + var string: NSString? = nil + scanner.scanCharacters(from: characterSet, into: &string) + + // Might start with separator characters, in which case scannedString would be nil/empty + if let scannedString = string, scannedString.length > 0 + { + let range = NSRange(location: 0, length: min(scannedString.length, codeBuffer.length)) + + // "Pop off" characters from the front of codeBuffer + let code = codeBuffer.substring(with: range) + codeBuffer.replaceCharacters(in: range, with: "") + + formattedString += code + + // No characters left in buffer means we've finished formatting + guard codeBuffer.length > 0 else { break } + } + + // Scan all separator characters + var separatorString: NSString? = nil + scanner.scanUpToCharacters(from: characterSet, into: &separatorString) + + // If no separator characters, we're done! + guard let tempString = separatorString as String?, separatorString?.length ?? 0 > 0 else { break } + + formattedString += tempString + } + + // Ensure it is all uppercase + return formattedString.uppercased() + } +} diff --git a/Cores/DeltaCore/Sources/Model/ControllerSkin.swift b/Cores/DeltaCore/Sources/Model/ControllerSkin.swift new file mode 100644 index 000000000..58a722cb3 --- /dev/null +++ b/Cores/DeltaCore/Sources/Model/ControllerSkin.swift @@ -0,0 +1,905 @@ +// +// ControllerSkin.swift +// DeltaCore +// +// Created by Riley Testut on 5/5/15. +// Copyright © 2015 Riley Testut. All rights reserved. +// + +import UIKit +import ZIPFoundation + +public let kUTTypeDeltaControllerSkin: CFString = "com.rileytestut.delta.skin" as CFString + +private typealias RepresentationDictionary = [String: [String: AnyObject]] + +public extension GameControllerInputType +{ + static let controllerSkin = GameControllerInputType("controllerSkin") +} + +private extension Archive +{ + func extract(_ entry: Entry) throws -> Data + { + var data = Data() + _ = try self.extract(entry) { data.append($0) } + + return data + } +} + +extension ControllerSkin +{ + public struct Screen + { + public var inputFrame: CGRect? + public var outputFrame: CGRect + + public var filters: [CIFilter]? + } +} + +public struct ControllerSkin: ControllerSkinProtocol +{ + public let name: String + public let identifier: String + public let gameType: GameType + public let isDebugModeEnabled: Bool + + public let fileURL: URL + + private let representations: [Traits: Representation] + private let imageCache = NSCache() + + private let archive: Archive + + public init?(fileURL: URL) + { + self.fileURL = fileURL + + guard let archive = Archive(url: fileURL, accessMode: .read) else { return nil } + self.archive = archive + + guard let infoEntry = archive["info.json"] else { return nil } + + do + { + let infoData = try archive.extract(infoEntry) + + guard let info = try JSONSerialization.jsonObject(with: infoData) as? [String: AnyObject] else { return nil } + + guard + let name = info["name"] as? String, + let identifier = info["identifier"] as? String, + let isDebugModeEnabled = info["debug"] as? Bool, + let representationsDictionary = info["representations"] as? RepresentationDictionary + else { return nil } + + #if FRAMEWORK + guard let gameType = info["gameTypeIdentifier"] as? GameType else { return nil } + #else + guard let gameTypeString = info["gameTypeIdentifier"] as? String else { return nil } + let gameType = GameType(gameTypeString) + #endif + + self.name = name + self.identifier = identifier + self.gameType = gameType + self.isDebugModeEnabled = isDebugModeEnabled + + let representationsSet = ControllerSkin.parsedRepresentations(from: representationsDictionary) + + var representations = [Traits: Representation]() + for representation in representationsSet + { + representations[representation.traits] = representation + } + self.representations = representations + + guard self.representations.count > 0 else { return nil } + } + catch let error as NSError + { + print("\(error) \(error.userInfo)") + + return nil + } + } + + // Sometimes, recursion really is the best solution ¯\_(ツ)_/¯ + private static func parsedRepresentations(from representationsDictionary: RepresentationDictionary, device: Device? = nil, displayType: DisplayType? = nil, orientation: Orientation? = nil) -> Set + { + var representations = Set() + + for (key, dictionary) in representationsDictionary + { + if device == nil + { + guard let device = Device(rawValue: key), let dictionary = dictionary as? RepresentationDictionary else { continue } + + representations.formUnion(self.parsedRepresentations(from: dictionary, device: device)) + } + else if displayType == nil + { + if let displayType = DisplayType(rawValue: key), let dictionary = dictionary as? RepresentationDictionary + { + representations.formUnion(self.parsedRepresentations(from: dictionary, device: device, displayType: displayType)) + } + else + { + // Key doesn't exist, so we continue with the same dictionary we're currently iterating, but pass in .standard for displayMode + representations.formUnion(self.parsedRepresentations(from: representationsDictionary, device: device, displayType: .standard)) + + // Return early to prevent us from repeating the above step multiple times + return representations + } + } + else if orientation == nil + { + guard + let device = device, + let displayType = displayType, + let orientation = Orientation(rawValue: key) + else { continue } + + let traits = Traits(device: device, displayType: displayType, orientation: orientation) + if let representation = Representation(traits: traits, dictionary: dictionary) + { + representations.insert(representation) + } + } + } + + return representations + } +} + +public extension ControllerSkin +{ + static func standardControllerSkin(for gameType: GameType) -> ControllerSkin? + { + guard + let deltaCore = Delta.core(for: gameType), + let fileURL = deltaCore.resourceBundle.url(forResource: "Standard", withExtension: "deltaskin") + else { return nil } + + let controllerSkin = ControllerSkin(fileURL: fileURL) + return controllerSkin + } +} + +public extension ControllerSkin +{ + func supports(_ traits: Traits) -> Bool + { + let representation = self.representations[traits] + return representation != nil + } + + func thumbstick(for item: ControllerSkin.Item, traits: Traits, preferredSize: Size) -> (UIImage, CGSize)? + { + guard let representation = self.representation(for: traits) else { return nil } + guard let imageName = item.thumbstickImageName, let size = item.thumbstickSize else { return nil } + guard let entry = self.archive[imageName] else { return nil } + + let cacheKey = imageName + self.cacheKey(for: traits, size: preferredSize) + + if let image = self.imageCache.object(forKey: cacheKey as NSString) + { + return (image, size) + } + + let thumbstickImage: UIImage? + + do + { + let data = try self.archive.extract(entry) + + switch (imageName as NSString).pathExtension.lowercased() + { + case "pdf": + let assetSize = AssetSize(size: preferredSize) + guard let targetSize = assetSize.targetSize(for: representation.traits) else { return nil } + + let thumbstickSize = CGSize(width: size.width * targetSize.width, height: size.height * targetSize.height) + thumbstickImage = UIImage.image(withPDFData: data, targetSize: thumbstickSize) + + default: + thumbstickImage = UIImage(data: data, scale: 1.0) + } + } + catch + { + print(error) + + return nil + } + + guard let image = thumbstickImage else { return nil } + + self.imageCache.setObject(image, forKey: cacheKey as NSString) + + return (image, size) + } + + func image(for traits: Traits, preferredSize: Size) -> UIImage? + { + guard let representation = self.representation(for: traits) else { return nil } + + let cacheKey = self.cacheKey(for: traits, size: preferredSize) + + if let image = self.imageCache.object(forKey: cacheKey as NSString) + { + return image + } + + var returnedImage: UIImage? = nil + + switch preferredSize + { + case .small: + if let image = self.image(for: representation, assetSize: AssetSize(size: .small)) { returnedImage = image } + else if let image = self.image(for: representation, assetSize: AssetSize(size: .small, resizable: true)) { returnedImage = image } + else if let image = self.image(for: representation, assetSize: AssetSize(size: .medium)) { returnedImage = image } + else if let image = self.image(for: representation, assetSize: AssetSize(size: .large)) { returnedImage = image } + + case .medium: + // First, attempt to load a medium image + if let image = self.image(for: representation, assetSize: AssetSize(size: .medium)) { returnedImage = image } + + // If a medium image doesn't exist, fallback to trying to load a medium resizable image + else if let image = self.image(for: representation, assetSize: AssetSize(size: .medium, resizable: true)) { returnedImage = image } + + // If neither medium nor resizable exists, check for a large image (because downscaling large is better than upscaling small) + else if let image = self.image(for: representation, assetSize: AssetSize(size: .large)) { returnedImage = image } + + // If still no images exist, finally check the small image size + else if let image = self.image(for: representation, assetSize: AssetSize(size: .small)) { returnedImage = image } + + case .large: + if let image = self.image(for: representation, assetSize: AssetSize(size: .large)) { returnedImage = image } + else if let image = self.image(for: representation, assetSize: AssetSize(size: .large, resizable: true)) { returnedImage = image } + else if let image = self.image(for: representation, assetSize: AssetSize(size: .medium)) { returnedImage = image } + else if let image = self.image(for: representation, assetSize: AssetSize(size: .small)) { returnedImage = image } + + } + + if let image = returnedImage + { + self.imageCache.setObject(image, forKey: cacheKey as NSString) + } + + return returnedImage + } + + func inputs(for traits: Traits, at point: CGPoint) -> [Input]? + { + guard let representation = self.representation(for: traits) else { return nil } + + var inputs: [Input] = [] + + for item in representation.items + { + guard item.extendedFrame.contains(point) else { continue } + + switch item.inputs + { + // Don't return inputs for thumbsticks or touch screens since they're handled separately. + case .directional where item.kind == .thumbstick: break + case .touch: break + + case .standard(let itemInputs): + inputs.append(contentsOf: itemInputs) + + case let .directional(up, down, left, right): + + let divisor: CGFloat + if case .thumbstick = item.kind + { + divisor = 2.0 + } + else + { + divisor = 3.0 + } + + let topRect = CGRect(x: item.extendedFrame.minX, y: item.extendedFrame.minY, width: item.extendedFrame.width, height: (item.frame.height / divisor) + (item.frame.minY - item.extendedFrame.minY)) + let bottomRect = CGRect(x: item.extendedFrame.minX, y: item.frame.maxY - item.frame.height / divisor, width: item.extendedFrame.width, height: (item.frame.height / divisor) + (item.extendedFrame.maxY - item.frame.maxY)) + let leftRect = CGRect(x: item.extendedFrame.minX, y: item.extendedFrame.minY, width: (item.frame.width / divisor) + (item.frame.minX - item.extendedFrame.minX), height: item.extendedFrame.height) + let rightRect = CGRect(x: item.frame.maxX - item.frame.width / divisor, y: item.extendedFrame.minY, width: (item.frame.width / divisor) + (item.extendedFrame.maxX - item.frame.maxX), height: item.extendedFrame.height) + + if topRect.contains(point) + { + inputs.append(up) + } + + if bottomRect.contains(point) + { + inputs.append(down) + } + + if leftRect.contains(point) + { + inputs.append(left) + } + + if rightRect.contains(point) + { + inputs.append(right) + } + } + } + + return inputs + } + + func items(for traits: Traits) -> [Item]? + { + guard let representation = self.representation(for: traits) else { return nil } + return representation.items + } + + func isTranslucent(for traits: Traits) -> Bool? + { + guard let representation = self.representation(for: traits) else { return nil } + return representation.isTranslucent + } + + func gameScreenFrame(for traits: Traits) -> CGRect? + { + guard let representation = self.representation(for: traits) else { return nil } + return representation.screens?.first?.outputFrame + } + + func screens(for traits: Traits) -> [ControllerSkin.Screen]? + { + guard let representation = self.representation(for: traits) else { return nil } + return representation.screens + } + + func aspectRatio(for traits: ControllerSkin.Traits) -> CGSize? + { + guard let representation = self.representation(for: traits) else { return nil } + return representation.aspectRatio + } +} + +private extension ControllerSkin +{ + func image(for representation: Representation, assetSize: AssetSize) -> UIImage? + { + guard let filename = representation.assets[assetSize], let entry = self.archive[filename] else { return nil } + + do + { + let data = try self.archive.extract(entry) + + let image: UIImage? + + switch assetSize + { + case .small, .medium, .large: + guard let imageScale = assetSize.imageScale(for: representation.traits) else { return nil } + image = UIImage(data: data, scale: imageScale) + + case .resizable: + guard let targetSize = assetSize.targetSize(for: representation.traits) else { return nil } + image = UIImage.image(withPDFData: data, targetSize: targetSize) + } + + return image + } + catch + { + print(error) + + return nil + } + } + + func cacheKey(for traits: Traits, size: Size) -> String + { + return String(describing: traits) + "-" + String(describing: size) + } + + func representation(for traits: Traits) -> Representation? + { + let representation = self.representations[traits] + guard representation == nil else { + return representation + } + + guard let fallbackTraits = self.supportedTraits(for: traits) else { + return nil + } + + let fallbackRepresentation = self.representations[fallbackTraits] + return fallbackRepresentation + } +} + +extension ControllerSkin +{ + public struct Item + { + public enum Kind: Equatable + { + case button + case dPad + case thumbstick + case touchScreen + } + + public enum Inputs + { + case standard([Input]) + case directional(up: Input, down: Input, left: Input, right: Input) + case touch(x: Input, y: Input) + + public var allInputs: [Input] { + switch self + { + case .standard(let inputs): return inputs + case let .directional(up, down, left, right): return [up, down, left, right] + case let .touch(x, y): return [x, y] + } + } + } + + public var kind: Kind + public var inputs: Inputs + + public var frame: CGRect + public var extendedFrame: CGRect + + fileprivate var thumbstickImageName: String? + fileprivate var thumbstickSize: CGSize? + + fileprivate init?(dictionary: [String: AnyObject], extendedEdges: ExtendedEdges, mappingSize: CGSize) + { + guard + let frameDictionary = dictionary["frame"] as? [String: CGFloat], let frame = CGRect(dictionary: frameDictionary) + else { return nil } + + if let inputs = dictionary["inputs"] as? [String] + { + self.kind = .button + self.inputs = .standard(inputs.map { AnyInput(stringValue: $0, intValue: nil, type: .controller(.controllerSkin)) }) + } + else if let inputs = dictionary["inputs"] as? [String: String] + { + if let up = inputs["up"], let down = inputs["down"], let left = inputs["left"], let right = inputs["right"] + { + let isContinuous: Bool + + if + let thumbstickDictionary = dictionary["thumbstick"] as? [String: Any], + let imageName = thumbstickDictionary["name"] as? String, + let width = thumbstickDictionary["width"] as? CGFloat, + let height = thumbstickDictionary["height"] as? CGFloat + { + self.thumbstickImageName = imageName + self.thumbstickSize = CGSize(width: CGFloat(width) / mappingSize.width, height: CGFloat(height) / mappingSize.height) + + self.kind = .thumbstick + isContinuous = true + } + else + { + self.kind = .dPad + isContinuous = false + } + + self.inputs = .directional(up: AnyInput(stringValue: up, intValue: nil, type: .controller(.controllerSkin), isContinuous: isContinuous), + down: AnyInput(stringValue: down, intValue: nil, type: .controller(.controllerSkin), isContinuous: isContinuous), + left: AnyInput(stringValue: left, intValue: nil, type: .controller(.controllerSkin), isContinuous: isContinuous), + right: AnyInput(stringValue: right, intValue: nil, type: .controller(.controllerSkin), isContinuous: isContinuous)) + } + else if let x = inputs["x"], let y = inputs["y"] + { + self.kind = .touchScreen + self.inputs = .touch(x: AnyInput(stringValue: x, intValue: nil, type: .controller(.controllerSkin), isContinuous: true), + y: AnyInput(stringValue: y, intValue: nil, type: .controller(.controllerSkin), isContinuous: true)) + } + else + { + return nil + } + } + else + { + return nil + } + + let overrideExtendedEdges = ExtendedEdges(dictionary: dictionary["extendedEdges"] as? [String: CGFloat]) + + var extendedEdges = extendedEdges + extendedEdges.top = overrideExtendedEdges.top ?? extendedEdges.top + extendedEdges.bottom = overrideExtendedEdges.bottom ?? extendedEdges.bottom + extendedEdges.left = overrideExtendedEdges.left ?? extendedEdges.left + extendedEdges.right = overrideExtendedEdges.right ?? extendedEdges.right + + var extendedFrame = frame + extendedFrame.origin.x -= extendedEdges.left ?? 0 + extendedFrame.origin.y -= extendedEdges.top ?? 0 + extendedFrame.size.width += (extendedEdges.left ?? 0) + (extendedEdges.right ?? 0) + extendedFrame.size.height += (extendedEdges.top ?? 0) + (extendedEdges.bottom ?? 0) + + // Convert frames to relative values. + let scaleTransform = CGAffineTransform(scaleX: 1.0 / mappingSize.width, y: 1.0 / mappingSize.height) + self.frame = frame.applying(scaleTransform) + self.extendedFrame = extendedFrame.applying(scaleTransform) + } + } +} + +extension ControllerSkin.Item: Hashable +{ + public static func ==(lhs: ControllerSkin.Item, rhs: ControllerSkin.Item) -> Bool + { + guard + lhs.kind == rhs.kind, + lhs.thumbstickImageName == rhs.thumbstickImageName, lhs.thumbstickSize == rhs.thumbstickSize, + lhs.inputs.allInputs.map({ $0.stringValue }) == rhs.inputs.allInputs.map({ $0.stringValue }), + lhs.frame == rhs.frame && lhs.extendedFrame == rhs.extendedFrame + else { return false } + + return true + } + + public func hash(into hasher: inout Hasher) + { + switch self.kind + { + case .button: hasher.combine(0) + case .dPad: hasher.combine(1) + case .thumbstick: hasher.combine(2) + case .touchScreen: hasher.combine(3) + } + + hasher.combine(self.thumbstickImageName) + hasher.combine(self.thumbstickSize?.width) + hasher.combine(self.thumbstickSize?.height) + + for input in self.inputs.allInputs + { + hasher.combine(input.stringValue) + } + + for frame in [self.frame, self.extendedFrame] + { + hasher.combine(frame.origin.x) + hasher.combine(frame.origin.y) + hasher.combine(frame.width) + hasher.combine(frame.height) + } + } +} + +private extension ControllerSkin +{ + struct ExtendedEdges + { + var top: CGFloat? + var bottom: CGFloat? + var left: CGFloat? + var right: CGFloat? + + init(dictionary: [String: CGFloat]?) + { + self.top = dictionary?["top"] + self.bottom = dictionary?["bottom"] + self.left = dictionary?["left"] + self.right = dictionary?["right"] + } + } + + enum AssetSize: RawRepresentable, Hashable + { + case small + case medium + case large + indirect case resizable(assetSize: AssetSize?) + + // If we're resizable, return our associated AssetSize + // Otherwise, we just return self + var unwrapped: AssetSize? + { + if case .resizable(let size) = self + { + if let size = size + { + return size + } + else + { + return nil + } + } + else + { + return self + } + } + + /// Hashable + var hashValue: Int { + return self.rawValue.hashValue + } + + /// RawRepresentable + typealias RawValue = String + + var rawValue: String { + switch self + { + case .small: return "small" + case .medium: return "medium" + case .large: return "large" + case .resizable: return "resizable" + } + } + + init?(rawValue: String) + { + switch rawValue + { + case "small": self = .small + case "medium": self = .medium + case "large": self = .large + case "resizable": self = .resizable(assetSize: nil) + default: return nil + } + } + + init(size: Size, resizable: Bool = false) + { + switch size + { + case .small: self = .small + case .medium: self = .medium + case .large: self = .large + } + + if resizable + { + self = .resizable(assetSize: self) + } + } + + // Should always be used over the associated value for .resizable because it handles orientation + func targetSize(for traits: ControllerSkin.Traits) -> CGSize? + { + guard let assetSize = self.unwrapped else { return nil } + + var targetSize: CGSize + + switch (traits.device, traits.displayType, assetSize) + { + case (.iphone, .standard, .small): targetSize = CGSize(width: 320, height: 568) + case (.iphone, .standard, .medium): targetSize = CGSize(width: 375, height: 667) + case (.iphone, .standard, .large): targetSize = CGSize(width: 414, height: 736) + + case (.iphone, .edgeToEdge, _): targetSize = CGSize(width: 375, height: 812) + case (.iphone, .splitView, _): return nil + + case (.ipad, _, .small): targetSize = CGSize(width: 768, height: 1024) + case (.ipad, _, .medium): targetSize = CGSize(width: 834, height: 1112) + case (.ipad, _, .large): targetSize = CGSize(width: 1024, height: 1366) + + case (_, _, .resizable): return nil + } + + switch traits.orientation + { + case .portrait: break + case .landscape: targetSize = CGSize(width: targetSize.height, height: targetSize.width) + } + + return targetSize + } + + func imageScale(for traits: ControllerSkin.Traits) -> CGFloat? + { + guard let assetSize = self.unwrapped else { return nil } + + switch (traits.device, traits.displayType, assetSize) + { + case (.iphone, .standard, .small): return 2.0 + case (.iphone, .standard, .medium): return 2.0 + case (.iphone, .standard, .large): return 3.0 + + case (.iphone, .edgeToEdge, _): return 3.0 + case (.iphone, .splitView, _): return nil + + case (.ipad, .standard, _): return 2.0 + case (.ipad, .edgeToEdge, _): return nil + case (.ipad, .splitView, _): return 2.0 + + case (_, _, .resizable): return nil + } + } + } + + struct Representation: Hashable, CustomStringConvertible + { + let traits: Traits + + let assets: [AssetSize: String] + let isTranslucent: Bool + let screens: [Screen]? + let aspectRatio: CGSize + + let items: [Item] + + /// CustomStringConvertible + var description: String { + return self.traits.description + } + + init?(traits: Traits, dictionary: [String: AnyObject]) + { + guard + let mappingSizeDictionary = dictionary["mappingSize"] as? [String: CGFloat], let mappingSize = CGSize(dictionary: mappingSizeDictionary), + let itemsArray = dictionary["items"] as? [[String: AnyObject]], + let assetsDictionary = dictionary["assets"] as? [String: String] + else { return nil } + + self.aspectRatio = mappingSize + + self.traits = traits + + let extendedEdges = ExtendedEdges(dictionary: dictionary["extendedEdges"] as? [String: CGFloat]) + + var items = [Item]() + for dictionary in itemsArray + { + if let item = Item(dictionary: dictionary, extendedEdges: extendedEdges, mappingSize: mappingSize) + { + items.append(item) + } + } + self.items = items + + var assets = [AssetSize: String]() + for (key, value) in assetsDictionary + { + if let size = AssetSize(rawValue: key) + { + assets[size] = value + } + } + self.assets = assets + + guard self.assets.count > 0 else { return nil } + + self.isTranslucent = dictionary["translucent"] as? Bool ?? false + + if + let gameScreenFrameDictionary = dictionary["gameScreenFrame"] as? [String: CGFloat], + let gameScreenFrame = CGRect(dictionary: gameScreenFrameDictionary) + { + let scaleTransform = CGAffineTransform(scaleX: 1.0 / mappingSize.width, y: 1.0 / mappingSize.height) + let frame = gameScreenFrame.applying(scaleTransform) + + self.screens = [Screen(inputFrame: nil, outputFrame: frame)] + } + else if let screensArray = dictionary["screens"] as? [[String: Any]] + { + let scaleTransform = CGAffineTransform(scaleX: 1.0 / mappingSize.width, y: 1.0 / mappingSize.height) + + let screens = screensArray.compactMap { (screenDictionary) -> Screen? in + guard + let outputFrameDictionary = screenDictionary["outputFrame"] as? [String: CGFloat], + let outputFrame = CGRect(dictionary: outputFrameDictionary) + else { return nil } + + let normalizedOutputFrame = outputFrame.applying(scaleTransform) + + var inputFrame: CGRect? + if let dictionary = screenDictionary["inputFrame"] as? [String: CGFloat], let frame = CGRect(dictionary: dictionary) + { + inputFrame = frame + } + + var filters: [CIFilter]? + if let filtersArray = screenDictionary["filters"] as? [[String: Any]] + { + filters = filtersArray.compactMap { (dictionary) -> CIFilter? in + guard let name = dictionary["name"] as? String else { return nil } + let parameters = dictionary["parameters"] as? [String: Any] + + guard let filter = CIFilter(name: name) else { return nil } + + var filterParameters = [String: Any]() + + for (parameter, value) in parameters ?? [:] + { + guard let attribute = filter.attributes[parameter] as? [String: Any] else { continue } + guard let className = attribute[kCIAttributeClass] as? String else { continue } + guard let attributeType = attribute[kCIAttributeType] as? String else { continue } + + let mappedValue: Any + + switch (className, value) + { + case (NSStringFromClass(NSNumber.self), let value as NSNumber): + mappedValue = value + + case (NSStringFromClass(CIVector.self), let value as [String: CGFloat]): + guard let x = value["x"], let y = value["y"] else { continue } + + if let width = value["width"], let height = value["height"] + { + let vector = CIVector(cgRect: CGRect(x: x, y: y, width: width, height: height)) + mappedValue = vector + } + else + { + let vector = CIVector(x: x, y: y) + mappedValue = vector + } + + case (NSStringFromClass(CIColor.self), let value as [String: CGFloat]): + guard let red = value["r"], let green = value["g"], let blue = value["b"] else { continue } + + let alpha = value["a"] ?? 255.0 + + let color = CIColor(red: red / 255.0, green: green / 255.0, blue: blue / 255.0, alpha: alpha / 255.0) + mappedValue = color + + case (NSStringFromClass(NSValue.self), let value as [String: CGFloat]) where attributeType == kCIAttributeTypeTransform: + let transform: CGAffineTransform + + if let angle = value["rotation"] + { + let radians = angle * .pi / 180 + transform = CGAffineTransform.identity.rotated(by: radians) + } + else + { + let x = value["scaleX"] ?? 1 + let y = value["scaleY"] ?? 1 + + transform = CGAffineTransform(scaleX: x, y: y) + } + + let value = NSValue(cgAffineTransform: transform) + mappedValue = value + + default: continue + } + + filter.setValue(mappedValue, forKey: parameter) + } + + return filter + } + } + + let screen = Screen(inputFrame: inputFrame, outputFrame: normalizedOutputFrame, filters: filters) + return screen + } + + self.screens = screens + } + else + { + self.screens = nil + } + } + + /// Equatable + static func ==(lhs: ControllerSkin.Representation, rhs: ControllerSkin.Representation) -> Bool + { + return lhs.traits == rhs.traits + } + + /// Hashable + func hash(into hasher: inout Hasher) + { + hasher.combine(self.traits) + } + } +} diff --git a/Cores/DeltaCore/Sources/Model/ControllerSkinTraits.swift b/Cores/DeltaCore/Sources/Model/ControllerSkinTraits.swift new file mode 100644 index 000000000..43fb34c0d --- /dev/null +++ b/Cores/DeltaCore/Sources/Model/ControllerSkinTraits.swift @@ -0,0 +1,94 @@ +// +// ControllerSkinTraits.swift +// DeltaCore +// +// Created by Riley Testut on 7/4/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +import UIKit + +extension ControllerSkin +{ + public enum Device: String + { + // Naming conventions? I treat the "P" as the capital letter, so since it's a value (not a type) I've opted to lowercase it + case iphone + case ipad + } + + public enum DisplayType: String + { + case standard + case edgeToEdge + case splitView + } + + public enum Orientation: String + { + case portrait + case landscape + } + + public enum Size: String + { + case small + case medium + case large + } + + public struct Traits: Hashable, CustomStringConvertible + { + public var device: Device + public var displayType: DisplayType + public var orientation: Orientation + + /// CustomStringConvertible + public var description: String { + return self.device.rawValue + "-" + self.displayType.rawValue + "-" + self.orientation.rawValue + } + + public init(device: Device, displayType: DisplayType, orientation: Orientation) + { + self.device = device + self.displayType = displayType + self.orientation = orientation + } + + public static func defaults(for window: UIWindow) -> ControllerSkin.Traits + { + let device: Device + let displayType: DisplayType + let orientation: Orientation + + // Use trait collection to determine device because our container app may be containing us in an "iPhone" trait collection despite being on iPad + // 99% of the time, won't make a difference ¯\_(ツ)_/¯ + if window.traitCollection.userInterfaceIdiom == .pad + { + device = .ipad + + if !window.bounds.equalTo(window.screen.bounds) + { + displayType = .splitView + + // Use screen bounds because in split view window bounds might be portrait, but device is actually landscape (and we want landscape skin) + orientation = (window.screen.bounds.width > window.screen.bounds.height) ? .landscape : .portrait + } + else + { + displayType = .standard + orientation = (window.bounds.width > window.bounds.height) ? .landscape : .portrait + } + } + else + { + device = .iphone + displayType = (window.safeAreaInsets.bottom != 0) ? .edgeToEdge : .standard + orientation = (window.bounds.width > window.bounds.height) ? .landscape : .portrait + } + + let traits = ControllerSkin.Traits(device: device, displayType: displayType, orientation: orientation) + return traits + } + } +} diff --git a/Cores/DeltaCore/Sources/Model/Game.swift b/Cores/DeltaCore/Sources/Model/Game.swift new file mode 100644 index 000000000..4368bddd4 --- /dev/null +++ b/Cores/DeltaCore/Sources/Model/Game.swift @@ -0,0 +1,21 @@ +// +// Game.swift +// DeltaCore +// +// Created by Riley Testut on 6/20/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +import Foundation + +public struct Game: GameProtocol +{ + public var fileURL: URL + public var type: GameType + + public init(fileURL: URL, type: GameType) + { + self.fileURL = fileURL + self.type = type + } +} diff --git a/Cores/DeltaCore/Sources/Model/GameControllerInputMapping.swift b/Cores/DeltaCore/Sources/Model/GameControllerInputMapping.swift new file mode 100644 index 000000000..bb2ed204c --- /dev/null +++ b/Cores/DeltaCore/Sources/Model/GameControllerInputMapping.swift @@ -0,0 +1,72 @@ +// +// GameControllerInputMapping.swift +// DeltaCore +// +// Created by Riley Testut on 7/22/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +import Foundation + +public struct GameControllerInputMapping: GameControllerInputMappingProtocol, Codable +{ + public var name: String? + public var gameControllerInputType: GameControllerInputType + + public var supportedControllerInputs: [Input] { + return self.inputMappings.keys.map { AnyInput(stringValue: $0, intValue: nil, type: .controller(self.gameControllerInputType)) } + } + + private var inputMappings: [String: AnyInput] + + public init(gameControllerInputType: GameControllerInputType) + { + self.gameControllerInputType = gameControllerInputType + + self.inputMappings = [:] + } + + public func input(forControllerInput controllerInput: Input) -> Input? + { + precondition(controllerInput.type == .controller(self.gameControllerInputType), "controllerInput.type must match GameControllerInputMapping.gameControllerInputType") + + let input = self.inputMappings[controllerInput.stringValue] + return input + } +} + +public extension GameControllerInputMapping +{ + init(fileURL: URL) throws + { + let data = try Data(contentsOf: fileURL) + + let decoder = PropertyListDecoder() + self = try decoder.decode(GameControllerInputMapping.self, from: data) + } + + func write(to url: URL) throws + { + let encoder = PropertyListEncoder() + + let data = try encoder.encode(self) + try data.write(to: url) + } +} + +public extension GameControllerInputMapping +{ + mutating func set(_ input: Input?, forControllerInput controllerInput: Input) + { + precondition(controllerInput.type == .controller(self.gameControllerInputType), "controllerInput.type must match GameControllerInputMapping.gameControllerInputType") + + if let input = input + { + self.inputMappings[controllerInput.stringValue] = AnyInput(input) + } + else + { + self.inputMappings[controllerInput.stringValue] = nil + } + } +} diff --git a/Cores/DeltaCore/Sources/Model/GameControllerStateManager.swift b/Cores/DeltaCore/Sources/Model/GameControllerStateManager.swift new file mode 100644 index 000000000..aea635da0 --- /dev/null +++ b/Cores/DeltaCore/Sources/Model/GameControllerStateManager.swift @@ -0,0 +1,149 @@ +// +// GameControllerStateManager.swift +// DeltaCore +// +// Created by Riley Testut on 5/29/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +import Foundation + +internal class GameControllerStateManager +{ + let gameController: GameController + + private(set) var activatedInputs = [AnyInput: Double]() + private(set) var sustainedInputs = [AnyInput: Double]() + + var receivers: [GameControllerReceiver] { + var objects: [GameControllerReceiver]! + + self.dispatchQueue.sync { + objects = self._receivers.keyEnumerator().allObjects as? [GameControllerReceiver] + } + + return objects + } + + private let _receivers = NSMapTable.weakToStrongObjects() + + // Used to synchronize access to _receivers to prevent race conditions (yay ObjC) + private let dispatchQueue = DispatchQueue(label: "com.rileytestut.Delta.GameControllerStateManager.dispatchQueue") + + + init(gameController: GameController) + { + self.gameController = gameController + } +} + +extension GameControllerStateManager +{ + func addReceiver(_ receiver: GameControllerReceiver, inputMapping: GameControllerInputMappingProtocol?) + { + self.dispatchQueue.sync { + self._receivers.setObject(inputMapping as AnyObject, forKey: receiver) + } + } + + func removeReceiver(_ receiver: GameControllerReceiver) + { + self.dispatchQueue.sync { + self._receivers.removeObject(forKey: receiver) + } + } +} + +extension GameControllerStateManager +{ + func activate(_ input: Input, value: Double) + { + precondition(input.type == .controller(self.gameController.inputType), "input.type must match self.gameController.inputType") + + // An input may be "activated" multiple times, such as by pressing different buttons that map to same input, or moving an analog stick. + self.activatedInputs[AnyInput(input)] = value + + for receiver in self.receivers + { + if let mappedInput = self.mappedInput(for: input, receiver: receiver) + { + receiver.gameController(self.gameController, didActivate: mappedInput, value: value) + } + } + } + + func deactivate(_ input: Input) + { + precondition(input.type == .controller(self.gameController.inputType), "input.type must match self.gameController.inputType") + + // Unlike activate(_:), we don't allow an input to be deactivated multiple times. + guard self.activatedInputs.keys.contains(AnyInput(input)) else { return } + + if let sustainedValue = self.sustainedInputs[AnyInput(input)] + { + // Currently sustained, so reset value to sustained value. + self.activate(input, value: sustainedValue) + } + else + { + // Not sustained, so simply deactivate it. + self.activatedInputs[AnyInput(input)] = nil + + for receiver in self.receivers + { + if let mappedInput = self.mappedInput(for: input, receiver: receiver) + { + let hasActivatedMappedControllerInputs = self.activatedInputs.keys.contains { + guard let input = self.mappedInput(for: $0, receiver: receiver) else { return false } + return input == mappedInput + } + + if !hasActivatedMappedControllerInputs + { + // All controller inputs that map to this input have been deactivated, so we can deactivate the mapped input. + receiver.gameController(self.gameController, didDeactivate: mappedInput) + } + } + } + } + } + + func sustain(_ input: Input, value: Double) + { + precondition(input.type == .controller(self.gameController.inputType), "input.type must match self.gameController.inputType") + + if self.activatedInputs[AnyInput(input)] != value + { + self.activate(input, value: value) + } + + self.sustainedInputs[AnyInput(input)] = value + } + + // Technically not a word, but no good alternative, so ¯\_(ツ)_/¯ + func unsustain(_ input: Input) + { + precondition(input.type == .controller(self.gameController.inputType), "input.type must match self.gameController.inputType") + + self.sustainedInputs[AnyInput(input)] = nil + + self.deactivate(AnyInput(input)) + } +} + +extension GameControllerStateManager +{ + func inputMapping(for receiver: GameControllerReceiver) -> GameControllerInputMappingProtocol? + { + let inputMapping = self._receivers.object(forKey: receiver) as? GameControllerInputMappingProtocol + return inputMapping + } + + func mappedInput(for input: Input, receiver: GameControllerReceiver) -> Input? + { + guard let inputMapping = self.inputMapping(for: receiver) else { return input } + + let mappedInput = inputMapping.input(forControllerInput: input) + return mappedInput + } +} diff --git a/Cores/DeltaCore/Sources/Model/Inputs/AnyInput.swift b/Cores/DeltaCore/Sources/Model/Inputs/AnyInput.swift new file mode 100644 index 000000000..2eeae1d9f --- /dev/null +++ b/Cores/DeltaCore/Sources/Model/Inputs/AnyInput.swift @@ -0,0 +1,111 @@ +// +// AnyInput.swift +// DeltaCore +// +// Created by Riley Testut on 7/24/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +import Foundation + +public struct AnyInput: Input, Codable, Hashable +{ + public let stringValue: String + public let intValue: Int? + + public var type: InputType + public var isContinuous: Bool + + public init(_ input: Input) + { + self.init(stringValue: input.stringValue, intValue: input.intValue, type: input.type, isContinuous: input.isContinuous) + } + + public init(stringValue: String, intValue: Int?, type: InputType, isContinuous: Bool? = nil) + { + self.stringValue = stringValue + self.intValue = intValue + + self.type = type + self.isContinuous = false + + if let isContinuous = isContinuous + { + self.isContinuous = isContinuous + } + else + { + switch type + { + case .game(let gameType): + guard let deltaCore = Delta.core(for: gameType), let input = deltaCore.gameInputType.init(stringValue: self.stringValue) else { break } + self.isContinuous = input.isContinuous + + case .controller(.standard): + guard let standardInput = StandardGameControllerInput(input: self) else { break } + self.isContinuous = standardInput.isContinuous + + case .controller(.mfi): + guard let mfiInput = MFiGameController.Input(input: self) else { break } + self.isContinuous = mfiInput.isContinuous + + case .controller: + // FIXME: We have no way to look up arbitrary controller inputs at runtime, so just leave isContinuous as false for now. + // In practice this is not too bad, since it's very uncommon to map from an input to a non-standard controller input. + break + } + } + } +} + +public extension AnyInput +{ + init?(stringValue: String) + { + return nil + } + + init?(intValue: Int) + { + return nil + } +} + +public extension AnyInput +{ + private enum CodingKeys: String, CodingKey + { + case stringValue = "identifier" + case type + } + + init(from decoder: Decoder) throws + { + let container = try decoder.container(keyedBy: CodingKeys.self) + + let stringValue = try container.decode(String.self, forKey: .stringValue) + let type = try container.decode(InputType.self, forKey: .type) + + let intValue: Int? + + switch type + { + case .controller: intValue = nil + case .game(let gameType): + guard let deltaCore = Delta.core(for: gameType), let input = deltaCore.gameInputType.init(stringValue: stringValue) else { + throw DecodingError.dataCorruptedError(forKey: .stringValue, in: container, debugDescription: "The Input game type \(gameType) is unsupported.") + } + + intValue = input.intValue + } + + self.init(stringValue: stringValue, intValue: intValue, type: type) + } + + func encode(to encoder: Encoder) throws + { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(self.stringValue, forKey: .stringValue) + try container.encode(self.type, forKey: .type) + } +} diff --git a/Cores/DeltaCore/Sources/Model/Inputs/StandardGameControllerInput.swift b/Cores/DeltaCore/Sources/Model/Inputs/StandardGameControllerInput.swift new file mode 100644 index 000000000..0fb0a976a --- /dev/null +++ b/Cores/DeltaCore/Sources/Model/Inputs/StandardGameControllerInput.swift @@ -0,0 +1,98 @@ +// +// StandardGameControllerInput.swift +// DeltaCore +// +// Created by Riley Testut on 7/20/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +import Foundation + +public extension GameControllerInputType +{ + static let standard = GameControllerInputType("standard") +} + +public enum StandardGameControllerInput: String, Codable +{ + case menu + + case up + case down + case left + case right + + case leftThumbstickUp + case leftThumbstickDown + case leftThumbstickLeft + case leftThumbstickRight + + case rightThumbstickUp + case rightThumbstickDown + case rightThumbstickLeft + case rightThumbstickRight + + case a + case b + case x + case y + + case start + case select + + case l1 + case l2 + case l3 + + case r1 + case r2 + case r3 +} + +extension StandardGameControllerInput: Input +{ + public var type: InputType { + return .controller(.standard) + } + + public var isContinuous: Bool { + switch self + { + case .leftThumbstickUp, .leftThumbstickDown, .leftThumbstickLeft, .leftThumbstickRight: return true + case .rightThumbstickUp, .rightThumbstickDown, .rightThumbstickLeft, .rightThumbstickRight: return true + default: return false + } + } +} + +public extension StandardGameControllerInput +{ + private static var inputMappings = [GameType: GameControllerInputMapping]() + + func input(for gameType: GameType) -> Input? + { + if let inputMapping = StandardGameControllerInput.inputMappings[gameType] + { + let input = inputMapping.input(forControllerInput: self) + return input + } + + guard + let deltaCore = Delta.core(for: gameType), + let fileURL = deltaCore.resourceBundle.url(forResource: "Standard", withExtension: "deltamapping") + else { fatalError("Cannot find Standard.deltamapping for game type \(gameType)") } + + do + { + let inputMapping = try GameControllerInputMapping(fileURL: fileURL) + StandardGameControllerInput.inputMappings[gameType] = inputMapping + + let input = inputMapping.input(forControllerInput: self) + return input + } + catch + { + fatalError(String(describing: error)) + } + } +} diff --git a/Cores/DeltaCore/Sources/Model/SaveState.swift b/Cores/DeltaCore/Sources/Model/SaveState.swift new file mode 100644 index 000000000..974dcf313 --- /dev/null +++ b/Cores/DeltaCore/Sources/Model/SaveState.swift @@ -0,0 +1,21 @@ +// +// SaveState.swift +// DeltaCore +// +// Created by Riley Testut on 1/31/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +import Foundation + +public struct SaveState: SaveStateProtocol +{ + public var fileURL: URL + public var gameType: GameType + + public init(fileURL: URL, gameType: GameType) + { + self.fileURL = fileURL + self.gameType = gameType + } +} diff --git a/Cores/DeltaCore/Sources/Protocols/Inputs/GameController.swift b/Cores/DeltaCore/Sources/Protocols/Inputs/GameController.swift new file mode 100644 index 000000000..843648c32 --- /dev/null +++ b/Cores/DeltaCore/Sources/Protocols/Inputs/GameController.swift @@ -0,0 +1,132 @@ +// +// GameController.swift +// DeltaCore +// +// Created by Riley Testut on 5/3/15. +// Copyright (c) 2015 Riley Testut. All rights reserved. +// + +import ObjectiveC + +private var gameControllerStateManagerKey = 0 + +//MARK: - GameControllerReceiver - +public protocol GameControllerReceiver: class +{ + /// Equivalent to pressing a button, or moving an analog stick + func gameController(_ gameController: GameController, didActivate input: Input, value: Double) + + /// Equivalent to releasing a button or an analog stick + func gameController(_ gameController: GameController, didDeactivate input: Input) +} + +//MARK: - GameController - +public protocol GameController: NSObjectProtocol +{ + var name: String { get } + + var playerIndex: Int? { get set } + + var inputType: GameControllerInputType { get } + + var defaultInputMapping: GameControllerInputMappingProtocol? { get } +} + +public extension GameController +{ + private var stateManager: GameControllerStateManager { + var stateManager = objc_getAssociatedObject(self, &gameControllerStateManagerKey) as? GameControllerStateManager + + if stateManager == nil + { + stateManager = GameControllerStateManager(gameController: self) + objc_setAssociatedObject(self, &gameControllerStateManagerKey, stateManager, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) + } + + return stateManager! + } + + var receivers: [GameControllerReceiver] { + return self.stateManager.receivers + } + + var activatedInputs: [AnyInput: Double] { + return self.stateManager.activatedInputs + } + + var sustainedInputs: [AnyInput: Double] { + return self.stateManager.sustainedInputs + } +} + +public extension GameController +{ + func addReceiver(_ receiver: GameControllerReceiver) + { + self.addReceiver(receiver, inputMapping: self.defaultInputMapping) + } + + func addReceiver(_ receiver: GameControllerReceiver, inputMapping: GameControllerInputMappingProtocol?) + { + self.stateManager.addReceiver(receiver, inputMapping: inputMapping) + } + + func removeReceiver(_ receiver: GameControllerReceiver) + { + self.stateManager.removeReceiver(receiver) + } + + func activate(_ input: Input, value: Double = 1.0) + { + self.stateManager.activate(input, value: value) + } + + func deactivate(_ input: Input) + { + self.stateManager.deactivate(input) + } + + func sustain(_ input: Input, value: Double = 1.0) + { + self.stateManager.sustain(input, value: value) + } + + func unsustain(_ input: Input) + { + self.stateManager.unsustain(input) + } +} + +public extension GameController +{ + func inputMapping(for receiver: GameControllerReceiver) -> GameControllerInputMappingProtocol? + { + return self.stateManager.inputMapping(for: receiver) + } + + func mappedInput(for input: Input, receiver: GameControllerReceiver) -> Input? + { + return self.stateManager.mappedInput(for: input, receiver: receiver) + } +} + +public func ==(lhs: GameController?, rhs: GameController?) -> Bool +{ + switch (lhs, rhs) + { + case (nil, nil): return true + case (_?, nil): return false + case (nil, _?): return false + case (let lhs?, let rhs?): return lhs.isEqual(rhs) + } +} + +public func !=(lhs: GameController?, rhs: GameController?) -> Bool +{ + return !(lhs == rhs) +} + +public func ~=(pattern: GameController?, value: GameController?) -> Bool +{ + return pattern == value +} diff --git a/Cores/DeltaCore/Sources/Protocols/Inputs/Input.swift b/Cores/DeltaCore/Sources/Protocols/Inputs/Input.swift new file mode 100644 index 000000000..71d2dd71b --- /dev/null +++ b/Cores/DeltaCore/Sources/Protocols/Inputs/Input.swift @@ -0,0 +1,105 @@ +// +// Input.swift +// DeltaCore +// +// Created by Riley Testut on 7/4/15. +// Copyright © 2015 Riley Testut. All rights reserved. +// + +public enum InputType: Codable +{ + case controller(GameControllerInputType) + case game(GameType) +} + +extension InputType: RawRepresentable +{ + public var rawValue: String { + switch self + { + case .controller(let inputType): return inputType.rawValue + case .game(let gameType): return gameType.rawValue + } + } + + public init(rawValue: String) + { + let gameType = GameType(rawValue) + + if Delta.core(for: gameType) != nil + { + self = .game(gameType) + } + else + { + let inputType = GameControllerInputType(rawValue) + self = .controller(inputType) + } + } +} + +extension InputType: Hashable +{ + public func hash(into hasher: inout Hasher) + { + hasher.combine(self.rawValue) + } +} + +// Conformance to CodingKey allows compiler to automatically generate intValue/stringValue logic for enums. +public protocol Input: CodingKey +{ + var type: InputType { get } + + var isContinuous: Bool { get } +} + +public extension RawRepresentable where Self: Input, RawValue == String +{ + var stringValue: String { + return self.rawValue + } + + var intValue: Int? { + return nil + } + + init?(stringValue: String) + { + self.init(rawValue: stringValue) + } + + init?(intValue: Int) + { + return nil + } +} + +public extension Input +{ + var isContinuous: Bool { + return false + } + + init?(input: Input) + { + self.init(stringValue: input.stringValue) + + guard self.type == input.type else { return nil } + } +} + +public func ==(lhs: Input?, rhs: Input?) -> Bool +{ + return lhs?.type == rhs?.type && lhs?.stringValue == rhs?.stringValue +} + +public func !=(lhs: Input?, rhs: Input?) -> Bool +{ + return !(lhs == rhs) +} + +public func ~=(pattern: Input?, value: Input?) -> Bool +{ + return pattern == value +} diff --git a/Cores/DeltaCore/Sources/Protocols/Model/CheatProtocol.swift b/Cores/DeltaCore/Sources/Protocols/Model/CheatProtocol.swift new file mode 100644 index 000000000..b9eeff7b8 --- /dev/null +++ b/Cores/DeltaCore/Sources/Protocols/Model/CheatProtocol.swift @@ -0,0 +1,15 @@ +// +// CheatProtocol.swift +// DeltaCore +// +// Created by Riley Testut on 5/19/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +import Foundation + +public protocol CheatProtocol +{ + var code: String { get } + var type: CheatType { get } +} diff --git a/Cores/DeltaCore/Sources/Protocols/Model/ControllerSkinProtocol.swift b/Cores/DeltaCore/Sources/Protocols/Model/ControllerSkinProtocol.swift new file mode 100644 index 000000000..88dca012a --- /dev/null +++ b/Cores/DeltaCore/Sources/Protocols/Model/ControllerSkinProtocol.swift @@ -0,0 +1,73 @@ +// +// ControllerSkinProtocol.swift +// DeltaCore +// +// Created by Riley Testut on 10/13/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +import UIKit + +public protocol ControllerSkinProtocol +{ + var name: String { get } + var identifier: String { get } + var gameType: GameType { get } + var isDebugModeEnabled: Bool { get } + + func supports(_ traits: ControllerSkin.Traits) -> Bool + + func image(for traits: ControllerSkin.Traits, preferredSize: ControllerSkin.Size) -> UIImage? + func thumbstick(for item: ControllerSkin.Item, traits: ControllerSkin.Traits, preferredSize: ControllerSkin.Size) -> (UIImage, CGSize)? + + /// Provided point should be normalized [0,1] for both axies. + func inputs(for traits: ControllerSkin.Traits, at point: CGPoint) -> [Input]? + + func items(for traits: ControllerSkin.Traits) -> [ControllerSkin.Item]? + + func isTranslucent(for traits: ControllerSkin.Traits) -> Bool? + + func gameScreenFrame(for traits: ControllerSkin.Traits) -> CGRect? + func screens(for traits: ControllerSkin.Traits) -> [ControllerSkin.Screen]? + + func aspectRatio(for traits: ControllerSkin.Traits) -> CGSize? + + func supportedTraits(for traits: ControllerSkin.Traits) -> ControllerSkin.Traits? +} + +public extension ControllerSkinProtocol +{ + func supportedTraits(for traits: ControllerSkin.Traits) -> ControllerSkin.Traits? + { + var traits = traits + + while !self.supports(traits) + { + guard traits.device == .iphone, traits.displayType == .edgeToEdge else { return nil } + + traits.displayType = .standard + } + + return traits + } + + func gameScreenFrame(for traits: DeltaCore.ControllerSkin.Traits) -> CGRect? + { + return self.screens(for: traits)?.first?.outputFrame + } +} + +public func ==(lhs: ControllerSkinProtocol?, rhs: ControllerSkinProtocol?) -> Bool +{ + return lhs?.identifier == rhs?.identifier +} + +public func !=(lhs: ControllerSkinProtocol?, rhs: ControllerSkinProtocol?) -> Bool +{ + return !(lhs == rhs) +} + +public func ~=(pattern: ControllerSkinProtocol?, value: ControllerSkinProtocol?) -> Bool +{ + return pattern == value +} diff --git a/Cores/DeltaCore/Sources/Protocols/Model/GameControllerInputMappingProtocol.swift b/Cores/DeltaCore/Sources/Protocols/Model/GameControllerInputMappingProtocol.swift new file mode 100644 index 000000000..88a462f08 --- /dev/null +++ b/Cores/DeltaCore/Sources/Protocols/Model/GameControllerInputMappingProtocol.swift @@ -0,0 +1,16 @@ +// +// GameControllerInputMappingProtocol.swift +// DeltaCore +// +// Created by Riley Testut on 8/14/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +import Foundation + +public protocol GameControllerInputMappingProtocol +{ + var gameControllerInputType: GameControllerInputType { get } + + func input(forControllerInput controllerInput: Input) -> Input? +} diff --git a/Cores/DeltaCore/Sources/Protocols/Model/GameProtocol.swift b/Cores/DeltaCore/Sources/Protocols/Model/GameProtocol.swift new file mode 100644 index 000000000..b0d9dc03c --- /dev/null +++ b/Cores/DeltaCore/Sources/Protocols/Model/GameProtocol.swift @@ -0,0 +1,28 @@ +// +// GameProtocol.swift +// DeltaCore +// +// Created by Riley Testut on 3/8/15. +// Copyright (c) 2015 Riley Testut. All rights reserved. +// + +import Foundation + +public protocol GameProtocol +{ + var fileURL: URL { get } + var gameSaveURL: URL { get } + + var type: GameType { get } +} + +public extension GameProtocol +{ + var gameSaveURL: URL { + let fileExtension = Delta.core(for: self.type)?.gameSaveFileExtension ?? "sav" + + let gameURL = self.fileURL.deletingPathExtension() + let gameSaveURL = gameURL.appendingPathExtension(fileExtension) + return gameSaveURL + } +} diff --git a/Cores/DeltaCore/Sources/Protocols/Model/SaveStateProtocol.swift b/Cores/DeltaCore/Sources/Protocols/Model/SaveStateProtocol.swift new file mode 100644 index 000000000..c40407eb3 --- /dev/null +++ b/Cores/DeltaCore/Sources/Protocols/Model/SaveStateProtocol.swift @@ -0,0 +1,15 @@ +// +// SaveStateProtocol.swift +// DeltaCore +// +// Created by Riley Testut on 1/31/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +import Foundation + +public protocol SaveStateProtocol +{ + var fileURL: URL { get } + var gameType: GameType { get } +} diff --git a/Cores/DeltaCore/Sources/Protocols/Rendering/AudioRendering.swift b/Cores/DeltaCore/Sources/Protocols/Rendering/AudioRendering.swift new file mode 100644 index 000000000..5c9bb861c --- /dev/null +++ b/Cores/DeltaCore/Sources/Protocols/Rendering/AudioRendering.swift @@ -0,0 +1,15 @@ +// +// AudioRendering.swift +// DeltaCore +// +// Created by Riley Testut on 6/29/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +import Foundation + +@objc(DLTAAudioRendering) +public protocol AudioRendering: NSObjectProtocol +{ + var audioBuffer: RingBuffer { get } +} diff --git a/Cores/DeltaCore/Sources/Protocols/Rendering/VideoRendering.swift b/Cores/DeltaCore/Sources/Protocols/Rendering/VideoRendering.swift new file mode 100644 index 000000000..6dc87e974 --- /dev/null +++ b/Cores/DeltaCore/Sources/Protocols/Rendering/VideoRendering.swift @@ -0,0 +1,18 @@ +// +// VideoRendering.swift +// DeltaCore +// +// Created by Riley Testut on 6/29/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +import Foundation + +@objc(DLTAVideoRendering) +public protocol VideoRendering: NSObjectProtocol +{ + var videoBuffer: UnsafeMutablePointer? { get } + + func prepare() + func processFrame() +} diff --git a/Cores/DeltaCore/Sources/Types/ExtensibleEnums.swift b/Cores/DeltaCore/Sources/Types/ExtensibleEnums.swift new file mode 100644 index 000000000..140dc071e --- /dev/null +++ b/Cores/DeltaCore/Sources/Types/ExtensibleEnums.swift @@ -0,0 +1,38 @@ +// +// ExtensibleEnum.swift +// DeltaCore +// +// Created by Riley Testut on 6/9/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import Foundation + +public protocol ExtensibleEnum: Hashable, Codable, RawRepresentable where RawValue == String {} + +public extension ExtensibleEnum +{ + init(_ rawValue: String) + { + self.init(rawValue: rawValue)! + } + + init(from decoder: Decoder) throws + { + let container = try decoder.singleValueContainer() + + let rawValue = try container.decode(String.self) + self.init(rawValue: rawValue)! + } + + func encode(to encoder: Encoder) throws + { + var container = encoder.singleValueContainer() + try container.encode(self.rawValue) + } +} + +// Conform types to ExtensibleEnum to receive automatic Codable conformance + implementation. +extension GameType: ExtensibleEnum {} +extension CheatType: ExtensibleEnum {} +extension GameControllerInputType: ExtensibleEnum {} diff --git a/Cores/DeltaCore/Sources/UI/Controller/ButtonsInputView.swift b/Cores/DeltaCore/Sources/UI/Controller/ButtonsInputView.swift new file mode 100644 index 000000000..c2a8f71d8 --- /dev/null +++ b/Cores/DeltaCore/Sources/UI/Controller/ButtonsInputView.swift @@ -0,0 +1,154 @@ +// +// ButtonsInputView.swift +// DeltaCore +// +// Created by Riley Testut on 8/4/19. +// Copyright © 2019 Riley Testut. All rights reserved. +// + +import UIKit + +class ButtonsInputView: UIView +{ + var isHapticFeedbackEnabled = true + + var controllerSkin: ControllerSkinProtocol? + var controllerSkinTraits: ControllerSkin.Traits? + + var activateInputsHandler: ((Set) -> Void)? + var deactivateInputsHandler: ((Set) -> Void)? + + var image: UIImage? { + get { + return self.imageView.image + } + set { + self.imageView.image = newValue + } + } + + private let imageView = UIImageView(frame: .zero) + + private let feedbackGenerator = UIImpactFeedbackGenerator(style: .medium) + + private var touchInputsMappingDictionary: [UITouch: Set] = [:] + private var previousTouchInputs = Set() + private var touchInputs: Set { + return self.touchInputsMappingDictionary.values.reduce(Set(), { $0.union($1) }) + } + + override var intrinsicContentSize: CGSize { + return self.imageView.intrinsicContentSize + } + + override init(frame: CGRect) + { + super.init(frame: frame) + + self.isMultipleTouchEnabled = true + + self.feedbackGenerator.prepare() + + self.imageView.translatesAutoresizingMaskIntoConstraints = false + self.addSubview(self.imageView) + + NSLayoutConstraint.activate([self.imageView.leadingAnchor.constraint(equalTo: self.leadingAnchor), + self.imageView.trailingAnchor.constraint(equalTo: self.trailingAnchor), + self.imageView.topAnchor.constraint(equalTo: self.topAnchor), + self.imageView.bottomAnchor.constraint(equalTo: self.bottomAnchor)]) + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + public override func touchesBegan(_ touches: Set, with event: UIEvent?) + { + for touch in touches + { + self.touchInputsMappingDictionary[touch] = [] + } + + self.updateInputs(for: touches) + } + + public override func touchesMoved(_ touches: Set, with event: UIEvent?) + { + self.updateInputs(for: touches) + } + + public override func touchesEnded(_ touches: Set, with event: UIEvent?) + { + for touch in touches + { + self.touchInputsMappingDictionary[touch] = nil + } + + self.updateInputs(for: touches) + } + + public override func touchesCancelled(_ touches: Set, with event: UIEvent?) + { + return self.touchesEnded(touches, with: event) + } +} + +private extension ButtonsInputView +{ + func updateInputs(for touches: Set) + { + guard let controllerSkin = self.controllerSkin else { return } + + // Don't add the touches if it has been removed in touchesEnded:/touchesCancelled: + for touch in touches where self.touchInputsMappingDictionary[touch] != nil + { + guard touch.view == self else { continue } + + var point = touch.location(in: self) + point.x /= self.bounds.width + point.y /= self.bounds.height + + if let traits = self.controllerSkinTraits + { + let inputs = Set((controllerSkin.inputs(for: traits, at: point) ?? []).map { AnyInput($0) }) + + let menuInput = AnyInput(stringValue: StandardGameControllerInput.menu.stringValue, intValue: nil, type: .controller(.controllerSkin)) + if inputs.contains(menuInput) + { + // If the menu button is located at this position, ignore all other inputs that might be overlapping. + self.touchInputsMappingDictionary[touch] = [menuInput] + } + else + { + self.touchInputsMappingDictionary[touch] = Set(inputs) + } + } + } + + let activatedInputs = self.touchInputs.subtracting(self.previousTouchInputs) + let deactivatedInputs = self.previousTouchInputs.subtracting(self.touchInputs) + + // We must update previousTouchInputs *before* calling activate() and deactivate(). + // Otherwise, race conditions that cause duplicate touches from activate() or deactivate() calls can result in various bugs. + self.previousTouchInputs = self.touchInputs + + if !activatedInputs.isEmpty + { + self.activateInputsHandler?(activatedInputs) + + if self.isHapticFeedbackEnabled + { + switch UIDevice.current.feedbackSupportLevel + { + case .feedbackGenerator: self.feedbackGenerator.impactOccurred() + case .basic, .unsupported: UIDevice.current.vibrate() + } + } + } + + if !deactivatedInputs.isEmpty + { + self.deactivateInputsHandler?(deactivatedInputs) + } + } +} diff --git a/Cores/DeltaCore/Sources/UI/Controller/ControllerDebugView.swift b/Cores/DeltaCore/Sources/UI/Controller/ControllerDebugView.swift new file mode 100644 index 000000000..2248c98dd --- /dev/null +++ b/Cores/DeltaCore/Sources/UI/Controller/ControllerDebugView.swift @@ -0,0 +1,125 @@ +// +// ControllerDebugView.swift +// DeltaCore +// +// Created by Riley Testut on 12/20/15. +// Copyright © 2015 Riley Testut. All rights reserved. +// + +import UIKit +import Foundation + +internal class ControllerDebugView: UIView +{ + var items: [ControllerSkin.Item]? { + didSet { + self.updateItems() + } + } + + private var itemViews = [ItemView]() + + override init(frame: CGRect) + { + super.init(frame: frame) + + self.initialize() + } + + required init?(coder aDecoder: NSCoder) + { + super.init(coder: aDecoder) + + self.initialize() + } + + private func initialize() + { + self.backgroundColor = UIColor.clear + self.isUserInteractionEnabled = false + } + + override func layoutSubviews() + { + super.layoutSubviews() + + for view in self.itemViews + { + var frame = view.item.extendedFrame + frame.origin.x *= self.bounds.width + frame.origin.y *= self.bounds.height + frame.size.width *= self.bounds.width + frame.size.height *= self.bounds.height + + view.frame = frame + } + } + + private func updateItems() + { + self.itemViews.forEach { $0.removeFromSuperview() } + + var itemViews = [ItemView]() + + for item in (self.items ?? []) + { + let itemView = ItemView(item: item) + self.addSubview(itemView) + + itemViews.append(itemView) + } + + self.itemViews = itemViews + + self.setNeedsLayout() + } +} + +private class ItemView: UIView +{ + let item: ControllerSkin.Item + + private let label: UILabel + + init(item: ControllerSkin.Item) + { + self.item = item + + self.label = UILabel() + self.label.translatesAutoresizingMaskIntoConstraints = false + self.label.textColor = UIColor.white + self.label.font = UIFont.boldSystemFont(ofSize: 16) + + var text = "" + + for input in item.inputs.allInputs + { + if text.isEmpty + { + text = input.stringValue + } + else + { + text = text + "," + input.stringValue + } + } + + self.label.text = text + + self.label.sizeToFit() + + super.init(frame: CGRect.zero) + + self.addSubview(self.label) + + self.label.centerXAnchor.constraint(equalTo: self.centerXAnchor).isActive = true + self.label.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true + + self.backgroundColor = UIColor.red.withAlphaComponent(0.75) + } + + required init?(coder aDecoder: NSCoder) + { + fatalError() + } +} diff --git a/Cores/DeltaCore/Sources/UI/Controller/ControllerInputView.swift b/Cores/DeltaCore/Sources/UI/Controller/ControllerInputView.swift new file mode 100644 index 000000000..ceb5c2a7f --- /dev/null +++ b/Cores/DeltaCore/Sources/UI/Controller/ControllerInputView.swift @@ -0,0 +1,57 @@ +// +// ControllerInputView.swift +// DeltaCore +// +// Created by Riley Testut on 6/17/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import UIKit + +class ControllerInputView: UIInputView +{ + let controllerView: ControllerView + + private var aspectRatioConstraint: NSLayoutConstraint? { + didSet { + oldValue?.isActive = false + } + } + + init(frame: CGRect) + { + self.controllerView = ControllerView(frame: CGRect(x: 0, y: 0, width: frame.width, height: frame.height)) + self.controllerView.autoresizingMask = [.flexibleWidth, .flexibleHeight] + self.controllerView.isControllerInputView = true + + super.init(frame: frame, inputViewStyle: .keyboard) + + self.addSubview(self.controllerView) + + self.translatesAutoresizingMaskIntoConstraints = false + self.allowsSelfSizing = true + + self.setNeedsUpdateConstraints() + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func layoutSubviews() + { + super.layoutSubviews() + + guard + let controllerSkin = self.controllerView.controllerSkin, + let traits = self.controllerView.controllerSkinTraits, + let aspectRatio = controllerSkin.aspectRatio(for: traits) + else { return } + + let multiplier = aspectRatio.height / aspectRatio.width + guard self.aspectRatioConstraint?.multiplier != multiplier else { return } + + self.aspectRatioConstraint = self.heightAnchor.constraint(equalTo: self.widthAnchor, multiplier: multiplier) + self.aspectRatioConstraint?.isActive = true + } +} diff --git a/Cores/DeltaCore/Sources/UI/Controller/ControllerView.swift b/Cores/DeltaCore/Sources/UI/Controller/ControllerView.swift new file mode 100644 index 000000000..0d1f328bb --- /dev/null +++ b/Cores/DeltaCore/Sources/UI/Controller/ControllerView.swift @@ -0,0 +1,647 @@ +// +// ControllerView.swift +// DeltaCore +// +// Created by Riley Testut on 5/3/15. +// Copyright (c) 2015 Riley Testut. All rights reserved. +// + +import UIKit + +private struct ControllerViewInputMapping: GameControllerInputMappingProtocol +{ + let controllerView: ControllerView + + var name: String { + return self.controllerView.name + } + + var gameControllerInputType: GameControllerInputType { + return self.controllerView.inputType + } + + func input(forControllerInput controllerInput: Input) -> Input? + { + guard let gameType = self.controllerView.controllerSkin?.gameType, let deltaCore = Delta.core(for: gameType) else { return nil } + + if let gameInput = deltaCore.gameInputType.init(stringValue: controllerInput.stringValue) + { + return gameInput + } + + if let standardInput = StandardGameControllerInput(stringValue: controllerInput.stringValue) + { + return standardInput + } + + return nil + } +} + +extension ControllerView +{ + public static let controllerViewDidChangeControllerSkinNotification = Notification.Name("controllerViewDidChangeControllerSkinNotification") +} + +public class ControllerView: UIView, GameController +{ + //MARK: - Properties - + /** Properties **/ + public var controllerSkin: ControllerSkinProtocol? { + didSet { + self.updateControllerSkin() + NotificationCenter.default.post(name: ControllerView.controllerViewDidChangeControllerSkinNotification, object: self) + } + } + + public var controllerSkinTraits: ControllerSkin.Traits? { + if let traits = self.overrideControllerSkinTraits + { + return traits + } + + guard let window = self.window else { return nil } + + let traits = ControllerSkin.Traits.defaults(for: window) + + guard let controllerSkin = self.controllerSkin else { return traits } + + guard let supportedTraits = controllerSkin.supportedTraits(for: traits) else { return traits } + return supportedTraits + } + + public var controllerSkinSize: ControllerSkin.Size! { + let size = self.overrideControllerSkinSize ?? UIScreen.main.defaultControllerSkinSize + return size + } + + public var overrideControllerSkinTraits: ControllerSkin.Traits? + public var overrideControllerSkinSize: ControllerSkin.Size? + + public var translucentControllerSkinOpacity: CGFloat = 0.7 + + public var isButtonHapticFeedbackEnabled = true { + didSet { + self.buttonsView.isHapticFeedbackEnabled = self.isButtonHapticFeedbackEnabled + } + } + + public var isThumbstickHapticFeedbackEnabled = true { + didSet { + self.thumbstickViews.values.forEach { $0.isHapticFeedbackEnabled = self.isThumbstickHapticFeedbackEnabled } + } + } + + //MARK: - + /// + public var name: String { + return self.controllerSkin?.name ?? NSLocalizedString("Game Controller", comment: "") + } + + public var playerIndex: Int? { + didSet { + self.reloadInputViews() + } + } + + public let inputType: GameControllerInputType = .controllerSkin + + public lazy var defaultInputMapping: GameControllerInputMappingProtocol? = ControllerViewInputMapping(controllerView: self) + + internal var isControllerInputView = false + + //MARK: - Private Properties + private let contentView = UIView(frame: .zero) + private var transitionSnapshotView: UIView? = nil + private let controllerDebugView = ControllerDebugView() + + private let buttonsView = ButtonsInputView(frame: CGRect.zero) + private var thumbstickViews = [ControllerSkin.Item: ThumbstickInputView]() + private var touchViews = [ControllerSkin.Item: TouchInputView]() + + private var _performedInitialLayout = false + + private var controllerInputView: ControllerInputView? + + private(set) var imageCache = NSCache>() + + public override var intrinsicContentSize: CGSize { + return self.buttonsView.intrinsicContentSize + } + + //MARK: - Initializers - + /** Initializers **/ + public override init(frame: CGRect) + { + super.init(frame: frame) + + self.initialize() + } + + public required init?(coder aDecoder: NSCoder) + { + super.init(coder: aDecoder) + + self.initialize() + } + + private func initialize() + { + self.backgroundColor = UIColor.clear + + self.contentView.translatesAutoresizingMaskIntoConstraints = false + self.addSubview(self.contentView) + + self.buttonsView.translatesAutoresizingMaskIntoConstraints = false + self.buttonsView.activateInputsHandler = { [weak self] (inputs) in + self?.activateButtonInputs(inputs) + } + self.buttonsView.deactivateInputsHandler = { [weak self] (inputs) in + self?.deactivateButtonInputs(inputs) + } + self.contentView.addSubview(self.buttonsView) + + self.controllerDebugView.translatesAutoresizingMaskIntoConstraints = false + self.contentView.addSubview(self.controllerDebugView) + + self.isMultipleTouchEnabled = true + + // Remove shortcuts from shortcuts bar so it doesn't appear when using external keyboard as input. + self.inputAssistantItem.leadingBarButtonGroups = [] + self.inputAssistantItem.trailingBarButtonGroups = [] + + NotificationCenter.default.addObserver(self, selector: #selector(ControllerView.keyboardDidDisconnect(_:)), name: .externalKeyboardDidDisconnect, object: nil) + + NSLayoutConstraint.activate([self.contentView.leadingAnchor.constraint(equalTo: self.leadingAnchor), + self.contentView.trailingAnchor.constraint(equalTo: self.trailingAnchor), + self.contentView.topAnchor.constraint(equalTo: self.topAnchor), + self.contentView.bottomAnchor.constraint(equalTo: self.bottomAnchor)]) + + NSLayoutConstraint.activate([self.buttonsView.leadingAnchor.constraint(equalTo: self.contentView.leadingAnchor), + self.buttonsView.trailingAnchor.constraint(equalTo: self.contentView.trailingAnchor), + self.buttonsView.topAnchor.constraint(equalTo: self.contentView.topAnchor), + self.buttonsView.bottomAnchor.constraint(equalTo: self.contentView.bottomAnchor)]) + + NSLayoutConstraint.activate([self.controllerDebugView.leadingAnchor.constraint(equalTo: self.contentView.leadingAnchor), + self.controllerDebugView.trailingAnchor.constraint(equalTo: self.contentView.trailingAnchor), + self.controllerDebugView.topAnchor.constraint(equalTo: self.contentView.topAnchor), + self.controllerDebugView.bottomAnchor.constraint(equalTo: self.contentView.bottomAnchor)]) + } + + //MARK: - UIView + /// UIView + public override func layoutSubviews() + { + super.layoutSubviews() + + self._performedInitialLayout = true + + self.updateControllerSkin() + } + + public override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? + { + guard self.bounds.contains(point) else { return super.hitTest(point, with: event) } + + let adjustedPoint = CGPoint(x: point.x / self.bounds.width, y: point.y / self.bounds.height) + + for (item, thumbstickView) in self.thumbstickViews + { + guard item.extendedFrame.contains(adjustedPoint) else { continue } + return thumbstickView + } + + for (item, touchView) in self.touchViews + { + guard item.frame.contains(adjustedPoint) else { continue } + + if let traits = self.controllerSkinTraits, let inputs = self.controllerSkin?.inputs(for: traits, at: adjustedPoint) + { + // No other inputs at this position, so return touchView. + if inputs.isEmpty + { + return touchView + } + } + } + + return self.buttonsView + } + + //MARK: - + /// + public override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) + { + super.traitCollectionDidChange(previousTraitCollection) + + self.setNeedsLayout() + } +} + +//MARK: - UIResponder - +/// UIResponder +extension ControllerView +{ + public override var canBecomeFirstResponder: Bool { + let canBecomeFirstResponder = (self.controllerSkinTraits?.displayType == .splitView || ExternalGameControllerManager.shared.isKeyboardConnected) + return canBecomeFirstResponder + } + + public override var next: UIResponder? { + return KeyboardResponder(nextResponder: super.next) + } + + public override var inputView: UIView? { + guard self.playerIndex != nil else { return nil } + return self.controllerInputView + } + + @discardableResult public override func becomeFirstResponder() -> Bool + { + guard super.becomeFirstResponder() else { return false } + + self.reloadInputViews() + + return self.isFirstResponder + } +} + +//MARK: - Update Skins - +/// Update Skins +public extension ControllerView +{ + func beginAnimatingUpdateControllerSkin() + { + guard self.transitionSnapshotView == nil else { return } + + guard let transitionSnapshotView = self.contentView.snapshotView(afterScreenUpdates: false) else { return } + transitionSnapshotView.frame = self.contentView.frame + transitionSnapshotView.autoresizingMask = [.flexibleWidth, .flexibleHeight] + transitionSnapshotView.alpha = self.contentView.alpha + self.addSubview(transitionSnapshotView) + + self.transitionSnapshotView = transitionSnapshotView + + self.contentView.alpha = 0.0 + } + + func updateControllerSkin() + { + guard self._performedInitialLayout else { return } + + self.buttonsView.controllerSkin = self.controllerSkin + self.buttonsView.controllerSkinTraits = self.controllerSkinTraits + + if let isDebugModeEnabled = self.controllerSkin?.isDebugModeEnabled + { + self.controllerDebugView.isHidden = !isDebugModeEnabled + } + + var isTranslucent = false + + if let traits = self.controllerSkinTraits + { + let items = self.controllerSkin?.items(for: traits) + self.controllerDebugView.items = items + + if traits.displayType == .splitView && !self.isControllerInputView + { + self.buttonsView.image = nil + + self.isUserInteractionEnabled = false + self.controllerDebugView.alpha = 0.0 + } + else + { + let image: UIImage? + + if let controllerSkin = self.controllerSkin + { + let cacheKey = String(describing: traits) + "-" + String(describing: self.controllerSkinSize) + + if + let cache = self.imageCache.object(forKey: controllerSkin.identifier as NSString), + let cachedImage = cache.object(forKey: cacheKey as NSString) + { + image = cachedImage + } + else + { + image = controllerSkin.image(for: traits, preferredSize: self.controllerSkinSize) + } + + if let image = image + { + let cache = self.imageCache.object(forKey: controllerSkin.identifier as NSString) ?? NSCache() + cache.setObject(image, forKey: cacheKey as NSString) + self.imageCache.setObject(cache, forKey: controllerSkin.identifier as NSString) + } + } + else + { + image = nil + } + + self.buttonsView.image = image + + self.isUserInteractionEnabled = true + self.controllerDebugView.alpha = 1.0 + } + + isTranslucent = self.controllerSkin?.isTranslucent(for: traits) ?? false + + var thumbstickViews = [ControllerSkin.Item: ThumbstickInputView]() + var previousThumbstickViews = self.thumbstickViews + + var touchViews = [ControllerSkin.Item: TouchInputView]() + var previousTouchViews = self.touchViews + + for item in items ?? [] + { + var frame = item.frame + frame.origin.x *= self.bounds.width + frame.origin.y *= self.bounds.height + frame.size.width *= self.bounds.width + frame.size.height *= self.bounds.height + + var extendedFrame = item.extendedFrame + extendedFrame.origin.x *= self.bounds.width + extendedFrame.origin.y *= self.bounds.height + extendedFrame.size.width *= self.bounds.width + extendedFrame.size.height *= self.bounds.height + + switch item.kind + { + case .button, .dPad: break + case .thumbstick: + let thumbstickView: ThumbstickInputView + + if let previousThumbstickView = previousThumbstickViews[item] + { + thumbstickView = previousThumbstickView + previousThumbstickViews[item] = nil + } + else + { + thumbstickView = ThumbstickInputView(frame: frame) + self.contentView.addSubview(thumbstickView) + } + + thumbstickView.frame = frame + thumbstickView.valueChangedHandler = { [weak self] (xAxis, yAxis) in + self?.updateThumbstickValues(item: item, xAxis: xAxis, yAxis: yAxis) + } + + if let (image, size) = self.controllerSkin?.thumbstick(for: item, traits: traits, preferredSize: self.controllerSkinSize) + { + let size = CGSize(width: size.width * self.bounds.width, height: size.height * self.bounds.height) + thumbstickView.thumbstickImage = image + thumbstickView.thumbstickSize = size + } + + thumbstickView.isHapticFeedbackEnabled = self.isThumbstickHapticFeedbackEnabled + + thumbstickViews[item] = thumbstickView + + case .touchScreen: + let touchView: TouchInputView + + if let previousTouchView = previousTouchViews[item] + { + touchView = previousTouchView + previousTouchViews[item] = nil + } + else + { + touchView = TouchInputView(frame: frame) + self.contentView.addSubview(touchView) + } + + touchView.frame = frame + touchView.valueChangedHandler = { [weak self] (point) in + self?.updateTouchValues(item: item, point: point) + } + + touchViews[item] = touchView + } + } + + previousThumbstickViews.values.forEach { $0.removeFromSuperview() } + self.thumbstickViews = thumbstickViews + + previousTouchViews.values.forEach { $0.removeFromSuperview() } + self.touchViews = touchViews + } + else + { + self.thumbstickViews.values.forEach { $0.removeFromSuperview() } + self.thumbstickViews = [:] + + self.touchViews.values.forEach { $0.removeFromSuperview() } + self.touchViews = [:] + } + + if self.transitionSnapshotView != nil + { + // Wrap in an animation closure to ensure it actually animates correctly + // As of iOS 8.3, calling this within transition coordinator animation closure without wrapping + // in this animation closure causes the change to be instantaneous + UIView.animate(withDuration: 0.0) { + self.contentView.alpha = isTranslucent ? self.translucentControllerSkinOpacity : 1.0 + } + } + else + { + self.contentView.alpha = isTranslucent ? self.translucentControllerSkinOpacity : 1.0 + } + + self.transitionSnapshotView?.alpha = 0.0 + + if self.controllerSkinTraits?.displayType == .splitView + { + self.presentInputControllerView() + } + else + { + self.dismissInputControllerView() + } + + self.controllerInputView?.controllerView.overrideControllerSkinTraits = self.controllerSkinTraits + + self.invalidateIntrinsicContentSize() + self.setNeedsUpdateConstraints() + + self.reloadInputViews() + } + + func finishAnimatingUpdateControllerSkin() + { + if let transitionImageView = self.transitionSnapshotView + { + transitionImageView.removeFromSuperview() + self.transitionSnapshotView = nil + } + + self.contentView.alpha = 1.0 + } +} + +private extension ControllerView +{ + func presentInputControllerView() + { + guard !self.isControllerInputView else { return } + + guard let controllerSkin = self.controllerSkin, let traits = self.controllerSkinTraits else { return } + + if self.controllerInputView == nil + { + let inputControllerView = ControllerInputView(frame: CGRect(x: 0, y: 0, width: 1024, height: 300)) + inputControllerView.controllerView.addReceiver(self, inputMapping: nil) + self.controllerInputView = inputControllerView + } + + if controllerSkin.supports(traits) + { + self.controllerInputView?.controllerView.controllerSkin = controllerSkin + } + else + { + self.controllerInputView?.controllerView.controllerSkin = ControllerSkin.standardControllerSkin(for: controllerSkin.gameType) + } + } + + func dismissInputControllerView() + { + guard !self.isControllerInputView else { return } + + guard self.controllerInputView != nil else { return } + + self.controllerInputView = nil + } +} + +//MARK: - Activating/Deactivating Inputs - +/// Activating/Deactivating Inputs +private extension ControllerView +{ + func activateButtonInputs(_ inputs: Set) + { + for input in inputs + { + self.activate(input) + } + } + + func deactivateButtonInputs(_ inputs: Set) + { + for input in inputs + { + self.deactivate(input) + } + } + + func updateThumbstickValues(item: ControllerSkin.Item, xAxis: Double, yAxis: Double) + { + guard case .directional(let up, let down, let left, let right) = item.inputs else { return } + + switch xAxis + { + case ..<0: + self.activate(left, value: -xAxis) + self.deactivate(right) + + case 0: + self.deactivate(left) + self.deactivate(right) + + default: + self.deactivate(left) + self.activate(right, value: xAxis) + } + + switch yAxis + { + case ..<0: + self.activate(down, value: -yAxis) + self.deactivate(up) + + case 0: + self.deactivate(down) + self.deactivate(up) + + default: + self.deactivate(down) + self.activate(up, value: yAxis) + } + } + + func updateTouchValues(item: ControllerSkin.Item, point: CGPoint?) + { + guard case .touch(let x, let y) = item.inputs else { return } + + if let point = point + { + self.activate(x, value: Double(point.x)) + self.activate(y, value: Double(point.y)) + } + else + { + self.deactivate(x) + self.deactivate(y) + } + } +} + +private extension ControllerView +{ + @objc func keyboardDidDisconnect(_ notification: Notification) + { + guard self.isFirstResponder else { return } + + self.resignFirstResponder() + + if self.canBecomeFirstResponder + { + self.becomeFirstResponder() + } + } +} + +//MARK: - GameControllerReceiver - +/// GameControllerReceiver +extension ControllerView: GameControllerReceiver +{ + public func gameController(_ gameController: GameController, didActivate input: Input, value: Double) + { + guard gameController == self.controllerInputView?.controllerView else { return } + + self.activate(input) + } + + public func gameController(_ gameController: GameController, didDeactivate input: Input) + { + guard gameController == self.controllerInputView?.controllerView else { return } + + self.deactivate(input) + } +} + +//MARK: - UIKeyInput +/// UIKeyInput +// Becoming first responder doesn't steal keyboard focus from other apps in split view unless the first responder conforms to UIKeyInput. +// So, we conform ControllerView to UIKeyInput and provide stub method implementations. +extension ControllerView: UIKeyInput +{ + public var hasText: Bool { + return false + } + + public func insertText(_ text: String) + { + } + + public func deleteBackward() + { + } +} diff --git a/Cores/DeltaCore/Sources/UI/Controller/ImmediatePanGestureRecognizer.swift b/Cores/DeltaCore/Sources/UI/Controller/ImmediatePanGestureRecognizer.swift new file mode 100644 index 000000000..13511dff2 --- /dev/null +++ b/Cores/DeltaCore/Sources/UI/Controller/ImmediatePanGestureRecognizer.swift @@ -0,0 +1,21 @@ +// +// ImmediatePanGestureRecognizer.swift +// DeltaCore +// +// Created by Riley Testut on 8/5/19. +// Copyright © 2019 Riley Testut. All rights reserved. +// + +import UIKit.UIGestureRecognizerSubclass + +class ImmediatePanGestureRecognizer: UIPanGestureRecognizer +{ + override func touchesBegan(_ touches: Set, with event: UIEvent) + { + guard self.state != .began else { return } + + super.touchesBegan(touches, with: event) + + self.state = .began + } +} diff --git a/Cores/DeltaCore/Sources/UI/Controller/ThumbstickInputView.swift b/Cores/DeltaCore/Sources/UI/Controller/ThumbstickInputView.swift new file mode 100644 index 000000000..4a99042bd --- /dev/null +++ b/Cores/DeltaCore/Sources/UI/Controller/ThumbstickInputView.swift @@ -0,0 +1,257 @@ +// +// ThumbstickInputView.swift +// DeltaCore +// +// Created by Riley Testut on 4/18/19. +// Copyright © 2019 Riley Testut. All rights reserved. +// + +import UIKit +import simd + +extension ThumbstickInputView +{ + private enum Direction + { + case up + case down + case left + case right + + init?(xAxis: Double, yAxis: Double, threshold: Double) + { + let deadzone = -threshold...threshold + switch (xAxis, yAxis) + { + case (deadzone, deadzone): return nil + case (...0, deadzone): self = .left + case (0..., deadzone): self = .right + case (deadzone, ...0): self = .down + case (deadzone, 0...): self = .up + default: return nil + } + } + } +} + +class ThumbstickInputView: UIView +{ + var isHapticFeedbackEnabled = true + + var valueChangedHandler: ((Double, Double) -> Void)? + + var thumbstickImage: UIImage? { + didSet { + self.update() + } + } + + var thumbstickSize: CGSize? { + didSet { + self.update() + } + } + + private let imageView = UIImageView(image: nil) + private let panGestureRecognizer = ImmediatePanGestureRecognizer(target: nil, action: nil) + + private let lightFeedbackGenerator = UISelectionFeedbackGenerator() + private let mediumFeedbackGenerator = UIImpactFeedbackGenerator(style: .medium) + + private var isActivated = false + + private var trackingOrigin: CGPoint? + private var previousDirection: Direction? + + private var isTracking: Bool { + return self.trackingOrigin != nil + } + + override init(frame: CGRect) + { + super.init(frame: frame) + + self.panGestureRecognizer.addTarget(self, action: #selector(ThumbstickInputView.handlePanGesture(_:))) + self.panGestureRecognizer.delaysTouchesBegan = true + self.panGestureRecognizer.cancelsTouchesInView = true + self.addGestureRecognizer(self.panGestureRecognizer) + + self.addSubview(self.imageView) + + self.update() + } + + required init?(coder aDecoder: NSCoder) + { + fatalError("init(coder:) has not been implemented") + } + + override func layoutSubviews() + { + super.layoutSubviews() + + self.update() + } +} + +private extension ThumbstickInputView +{ + @objc func handlePanGesture(_ gestureRecognizer: UIPanGestureRecognizer) + { + switch gestureRecognizer.state + { + case .began: + let location = gestureRecognizer.location(in: self) + self.trackingOrigin = location + + if self.isHapticFeedbackEnabled + { + self.lightFeedbackGenerator.prepare() + self.mediumFeedbackGenerator.prepare() + } + + self.update() + + case .changed: + // When initially tracking the gesture, we calculate the translation + // relative to where the user began the pan gesture. + // This works well, but becomes weird once we leave the bounds then return later, + // since it's more obvious at that point if the thumbstick position doesn't match the user's finger. + // + // To compensate, once we've left the bounds (and have reached maximum translation), + // we reset the origin we're using for calculation to 0. + // This won't change the visual position of the thumbstick since it's snapped to the edge, + // but will correctly track user's finger upon re-entering the bounds. + + guard var origin = self.trackingOrigin else { break } + + let location = gestureRecognizer.location(in: self) + let translationX = location.x - origin.x + let translationY = location.y - origin.y + + let x = origin.x + translationX + let y = origin.y + translationY + + let horizontalRange = self.bounds.minX...self.bounds.maxX + let verticalRange = self.bounds.minY...self.bounds.maxY + + if !horizontalRange.contains(x) && abs(translationX) >= self.bounds.midX + { + origin.x = self.bounds.midX + } + + if !verticalRange.contains(y) && abs(translationY) >= self.bounds.midY + { + origin.y = self.bounds.midY + } + + let translation = CGPoint(x: translationX, y: translationY) + self.update(translation) + + self.trackingOrigin = origin + + case .ended, .cancelled: + + if self.isHapticFeedbackEnabled + { + self.mediumFeedbackGenerator.impactOccurred() + } + + self.update() + + self.trackingOrigin = nil + self.isActivated = false + self.previousDirection = nil + + default: break + } + } + + func update(_ translation: CGPoint = CGPoint(x: 0, y: 0)) + { + let center = SIMD2(Double(self.bounds.midX), Double(self.bounds.midY)) + let point = SIMD2(Double(translation.x), Double(translation.y)) + + self.imageView.image = self.thumbstickImage + + if let size = self.thumbstickSize + { + self.imageView.bounds.size = CGSize(width: size.width, height: size.height) + } + else + { + self.imageView.sizeToFit() + } + + guard !self.bounds.isEmpty, self.isTracking else { + self.imageView.center = CGPoint(x: self.bounds.midX, y: self.bounds.midY) + return + } + + let maximumDistance = Double(self.bounds.midX) + let distance = min(simd_length(point), maximumDistance) + + let angle = atan2(point.y, point.x) + + var adjustedX = distance * cos(angle) + adjustedX += center.x + + var adjustedY = distance * sin(angle) + adjustedY += center.y + + let insetSideLength = maximumDistance / sqrt(2) + let insetFrame = CGRect(x: center.x - insetSideLength / 2, + y: center.y - insetSideLength / 2, + width: insetSideLength, + height: insetSideLength) + + let threshold = 0.1 + + var xAxis = Double((CGFloat(adjustedX) - insetFrame.minX) / insetFrame.width) + xAxis = max(xAxis, 0) + xAxis = min(xAxis, 1) + xAxis = (xAxis * 2) - 1 // Convert range from [0, 1] to [-1, 1]. + + if abs(xAxis) < threshold + { + xAxis = 0 + } + + var yAxis = Double((CGFloat(adjustedY) - insetFrame.minY) / insetFrame.height) + yAxis = max(yAxis, 0) + yAxis = min(yAxis, 1) + yAxis = -((yAxis * 2) - 1) // Convert range from [0, 1] to [-1, 1], then invert it (due to flipped coordinates). + + if abs(yAxis) < threshold + { + yAxis = 0 + } + + let magnitude = simd_length(SIMD2(xAxis, yAxis)) + let isActivated = (magnitude > 0.1) + + if let direction = Direction(xAxis: xAxis, yAxis: yAxis, threshold: threshold) + { + if self.previousDirection != direction && self.isHapticFeedbackEnabled + { + self.mediumFeedbackGenerator.impactOccurred() + } + + self.previousDirection = direction + } + else + { + if isActivated && !self.isActivated && self.isHapticFeedbackEnabled + { + self.lightFeedbackGenerator.selectionChanged() + } + + self.previousDirection = nil + } + + self.isActivated = isActivated + + self.imageView.center = CGPoint(x: adjustedX, y: adjustedY) + self.valueChangedHandler?(xAxis, yAxis) + } +} diff --git a/Cores/DeltaCore/Sources/UI/Controller/TouchControllerSkin.swift b/Cores/DeltaCore/Sources/UI/Controller/TouchControllerSkin.swift new file mode 100644 index 000000000..7736b3ed0 --- /dev/null +++ b/Cores/DeltaCore/Sources/UI/Controller/TouchControllerSkin.swift @@ -0,0 +1,204 @@ +// +// TouchControllerSkin.swift +// DeltaCore +// +// Created by Riley Testut on 12/1/20. +// Copyright © 2020 Riley Testut. All rights reserved. +// + +import AVFoundation +import UIKit + +extension TouchControllerSkin +{ + public enum LayoutAxis + { + case vertical + case horizontal + } +} + +public struct TouchControllerSkin +{ + public var name: String { "TouchControllerSkin" } + public var identifier: String { "com.delta.TouchControllerSkin" } + public var gameType: GameType { self.controllerSkin.gameType } + public var isDebugModeEnabled: Bool { false } + + public var screenLayoutAxis: LayoutAxis = .vertical + public var layoutGuide: UILayoutGuide? + + private let controllerSkin: ControllerSkin + + public init(controllerSkin: ControllerSkin) + { + self.controllerSkin = controllerSkin + } +} + +extension TouchControllerSkin: ControllerSkinProtocol +{ + public func supports(_ traits: ControllerSkin.Traits) -> Bool + { + return true + } + + public func image(for traits: ControllerSkin.Traits, preferredSize: ControllerSkin.Size) -> UIImage? + { + return nil + } + + public func thumbstick(for item: ControllerSkin.Item, traits: ControllerSkin.Traits, preferredSize: ControllerSkin.Size) -> (UIImage, CGSize)? + { + return nil + } + + public func inputs(for traits: ControllerSkin.Traits, at point: CGPoint) -> [Input]? + { + // Return empty array since touch inputs are normally filtered out. + return [] + } + + public func items(for traits: ControllerSkin.Traits) -> [ControllerSkin.Item]? + { + guard + let fullScreenFrame = self.fullScreenFrame(for: traits), + var touchScreenItem = self.controllerSkin.items(for: traits)?.first(where: { $0.kind == .touchScreen }) + else { return nil } + + let touchScreenFrame: CGRect + + if let touchScreenIndex = self.controllerSkin.screens(for: traits)?.firstIndex(where: { touchScreenItem.frame.contains($0.outputFrame) }), + let updatedScreen = self.screens(for: traits)?[touchScreenIndex] + { + // This (original) screen is completely covered by a touch screen input, + // therefore we assume it's a touch screen and use its (updated) frame. + touchScreenFrame = updatedScreen.outputFrame + } + else + { + // The touch screen (if one exists) is partially covering the main screen, + // so calculate the intersection to determine where to place touch screen. + + var screenFrame = self.controllerSkin.gameScreenFrame(for: traits) ?? fullScreenFrame + var itemFrame = touchScreenItem.frame + + // Align itemFrame relative to screenFrame's origin. + itemFrame.origin.x -= screenFrame.minX + itemFrame.origin.y -= screenFrame.minY + screenFrame.origin = .zero + + var intersection = screenFrame.intersection(itemFrame) + intersection.origin.x /= screenFrame.width + intersection.origin.y /= screenFrame.height + intersection.size.width /= screenFrame.width + intersection.size.height /= screenFrame.height + + intersection.origin.x *= fullScreenFrame.width + intersection.origin.y *= fullScreenFrame.height + intersection.size.width *= fullScreenFrame.width + intersection.size.height *= fullScreenFrame.height + + // Translate intersection back to correct location. + intersection.origin.x += fullScreenFrame.minX + intersection.origin.y += fullScreenFrame.minY + + touchScreenFrame = intersection + } + + touchScreenItem.frame = touchScreenFrame + touchScreenItem.extendedFrame = touchScreenFrame + return [touchScreenItem] + } + + public func isTranslucent(for traits: ControllerSkin.Traits) -> Bool? + { + return false + } + + public func screens(for traits: ControllerSkin.Traits) -> [ControllerSkin.Screen]? + { + guard let fullScreenFrame = self.fullScreenFrame(for: traits) else { return nil } + + let screensCount = CGFloat(self.controllerSkin.screens(for: traits)?.count ?? 0) + + let screens = self.controllerSkin.screens(for: traits)?.enumerated().map { (index, screen) -> ControllerSkin.Screen in + var screen = screen + + switch self.screenLayoutAxis + { + case .horizontal: + let length = fullScreenFrame.width / screensCount + screen.outputFrame = CGRect(x: fullScreenFrame.minX + length * CGFloat(index), y: fullScreenFrame.minY, width: length, height: fullScreenFrame.height) + + case .vertical: + let length = fullScreenFrame.height / screensCount + screen.outputFrame = CGRect(x: fullScreenFrame.minX, y: fullScreenFrame.minY + length * CGFloat(index), width: fullScreenFrame.width, height: length) + } + + return screen + } + + return screens + } + + public func aspectRatio(for traits: ControllerSkin.Traits) -> CGSize? + { + return self.controllerSkin.aspectRatio(for: traits) + } +} + +private extension TouchControllerSkin +{ + func fullScreenFrame(for traits: ControllerSkin.Traits) -> CGRect? + { + // Assumes skin is a full screen skin. + + guard let mappingSize = self.aspectRatio(for: traits), let core = Delta.core(for: self.gameType) else { return nil } + + let fullScreenSize: CGSize + + if let screens = self.controllerSkin.screens(for: traits), let outputFrame = screens.first?.outputFrame + { + var size = CGSize(width: outputFrame.width * mappingSize.width, height: outputFrame.height * mappingSize.height) + + // Assume screens are the same size. + switch self.screenLayoutAxis + { + case .horizontal: size.width *= CGFloat(screens.count) + case .vertical: size.height *= CGFloat(screens.count) + } + + fullScreenSize = size + } + else + { + fullScreenSize = core.videoFormat.dimensions + } + + let layoutFrame: CGRect + let containingSize: CGSize + + if let layoutGuide = self.layoutGuide, let bounds = layoutGuide.owningView?.bounds + { + var frame = layoutGuide.layoutFrame + frame.size.height = bounds.height - frame.minY // HACK: Ignore bottom insets to prevent home indicator messing up calculations. + + layoutFrame = frame + containingSize = bounds.size + } + else + { + layoutFrame = CGRect(origin: .zero, size: mappingSize) + containingSize = layoutFrame.size + } + + var screenFrame = AVMakeRect(aspectRatio: fullScreenSize, insideRect: layoutFrame) + screenFrame.origin.x /= containingSize.width + screenFrame.origin.y /= containingSize.height + screenFrame.size.width /= containingSize.width + screenFrame.size.height /= containingSize.height + + return screenFrame + } +} diff --git a/Cores/DeltaCore/Sources/UI/Controller/TouchInputView.swift b/Cores/DeltaCore/Sources/UI/Controller/TouchInputView.swift new file mode 100644 index 000000000..142bab58d --- /dev/null +++ b/Cores/DeltaCore/Sources/UI/Controller/TouchInputView.swift @@ -0,0 +1,55 @@ +// +// TouchInputView.swift +// DeltaCore +// +// Created by Riley Testut on 8/4/19. +// Copyright © 2019 Riley Testut. All rights reserved. +// + +import UIKit + +class TouchInputView: UIView +{ + var valueChangedHandler: ((CGPoint?) -> Void)? + + override init(frame: CGRect) + { + super.init(frame: frame) + + self.isMultipleTouchEnabled = false + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func touchesBegan(_ touches: Set, with event: UIEvent?) + { + // Manually track touches because UIPanGestureRecognizer delays touches near screen edges, + // even if we've opted to de-prioritize system gestures. + self.touchesMoved(touches, with: event) + } + + override func touchesMoved(_ touches: Set, with event: UIEvent?) + { + guard let touch = touches.first else { return } + + let location = touch.location(in: self) + + var adjustedLocation = CGPoint(x: location.x / self.bounds.width, y: location.y / self.bounds.height) + adjustedLocation.x = min(max(adjustedLocation.x, 0), 1) + adjustedLocation.y = min(max(adjustedLocation.y, 0), 1) + + self.valueChangedHandler?(adjustedLocation) + } + + override func touchesCancelled(_ touches: Set, with event: UIEvent?) + { + self.touchesEnded(touches, with: event) + } + + override func touchesEnded(_ touches: Set, with event: UIEvent?) + { + self.valueChangedHandler?(nil) + } +} diff --git a/Cores/DeltaCore/Sources/UI/Game/GameView.swift b/Cores/DeltaCore/Sources/UI/Game/GameView.swift new file mode 100644 index 000000000..04b127cb5 --- /dev/null +++ b/Cores/DeltaCore/Sources/UI/Game/GameView.swift @@ -0,0 +1,209 @@ +// +// GameView.swift +// DeltaCore +// +// Created by Riley Testut on 3/16/15. +// Copyright (c) 2015 Riley Testut. All rights reserved. +// + +import UIKit +import CoreImage +import GLKit +import AVFoundation + +// Create wrapper class to prevent exposing GLKView (and its annoying deprecation warnings) to clients. +private class GameViewGLKViewDelegate: NSObject, GLKViewDelegate +{ + weak var gameView: GameView? + + init(gameView: GameView) + { + self.gameView = gameView + } + + func glkView(_ view: GLKView, drawIn rect: CGRect) + { + self.gameView?.glkView(view, drawIn: rect) + } +} + +public enum SamplerMode +{ + case linear + case nearestNeighbor +} + +public class GameView: UIView +{ + @NSCopying public var inputImage: CIImage? { + didSet { + if self.inputImage?.extent != oldValue?.extent + { + DispatchQueue.main.async { + self.setNeedsLayout() + } + } + + self.update() + } + } + + @NSCopying public var filter: CIFilter? { + didSet { + self.update() + } + } + + public var samplerMode: SamplerMode = .nearestNeighbor { + didSet { + self.update() + } + } + + public var outputImage: CIImage? { + guard let inputImage = self.inputImage else { return nil } + + var image: CIImage? + + switch self.samplerMode + { + case .linear: image = inputImage.samplingLinear() + case .nearestNeighbor: image = inputImage.samplingNearest() + } + + if let filter = self.filter + { + filter.setValue(image, forKey: kCIInputImageKey) + image = filter.outputImage + } + + return image + } + + internal var eaglContext: EAGLContext { + get { return self.glkView.context } + set { + self.renderQueue.sync { + // For some reason, if we don't explicitly set current EAGLContext to nil, assigning + // to self.glkView may crash if we've already rendered to a game view. + EAGLContext.setCurrent(nil) + + self.glkView.context = EAGLContext(api: .openGLES2, sharegroup: newValue.sharegroup)! + self.context = self.makeContext() + } + } + } + private lazy var context: CIContext = self.makeContext() + + private let glkView: GLKView + private lazy var glkViewDelegate = GameViewGLKViewDelegate(gameView: self) + + private let renderQueue = DispatchQueue(label: "DeltaCore.GameView.renderQueue") + + public override init(frame: CGRect) + { + let eaglContext = EAGLContext(api: .openGLES2)! + self.glkView = GLKView(frame: CGRect.zero, context: eaglContext) + + super.init(frame: frame) + + self.initialize() + } + + public required init?(coder aDecoder: NSCoder) + { + let eaglContext = EAGLContext(api: .openGLES2)! + self.glkView = GLKView(frame: CGRect.zero, context: eaglContext) + + super.init(coder: aDecoder) + + self.initialize() + } + + private func initialize() + { + self.glkView.frame = self.bounds + self.glkView.autoresizingMask = [.flexibleWidth, .flexibleHeight] + self.glkView.delegate = self.glkViewDelegate + self.glkView.enableSetNeedsDisplay = false + self.addSubview(self.glkView) + } + + public override func didMoveToWindow() + { + if let window = self.window + { + self.glkView.contentScaleFactor = window.screen.scale + self.update() + } + } + + public override func layoutSubviews() + { + super.layoutSubviews() + + self.glkView.isHidden = (self.outputImage == nil) + } +} + +public extension GameView +{ + func snapshot() -> UIImage? + { + // Unfortunately, rendering CIImages doesn't always work when backed by an OpenGLES texture. + // As a workaround, we simply render the view itself into a graphics context the same size + // as our output image. + // + // let cgImage = self.context.createCGImage(outputImage, from: outputImage.extent) + + guard let outputImage = self.outputImage else { return nil } + + let rect = CGRect(origin: .zero, size: outputImage.extent.size) + + let format = UIGraphicsImageRendererFormat() + format.scale = 1.0 + format.opaque = true + + let renderer = UIGraphicsImageRenderer(size: rect.size, format: format) + + let snapshot = renderer.image { (context) in + self.glkView.drawHierarchy(in: rect, afterScreenUpdates: false) + } + + return snapshot + } +} + +private extension GameView +{ + func makeContext() -> CIContext + { + let context = CIContext(eaglContext: self.glkView.context, options: [.workingColorSpace: NSNull()]) + return context + } + + func update() + { + // Calling display when outputImage is nil may crash for OpenGLES-based rendering. + guard self.outputImage != nil else { return } + + self.renderQueue.sync { + self.glkView.display() + } + } +} + +private extension GameView +{ + func glkView(_ view: GLKView, drawIn rect: CGRect) + { + glClearColor(0.0, 0.0, 0.0, 1.0) + glClear(UInt32(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)) + + if let outputImage = self.outputImage + { + let bounds = CGRect(x: 0, y: 0, width: self.glkView.drawableWidth, height: self.glkView.drawableHeight) + self.context.draw(outputImage, in: bounds, from: outputImage.extent) + } + } +} diff --git a/Cores/DeltaCore/Sources/UI/Game/GameViewController.swift b/Cores/DeltaCore/Sources/UI/Game/GameViewController.swift new file mode 100644 index 000000000..1af87a2c8 --- /dev/null +++ b/Cores/DeltaCore/Sources/UI/Game/GameViewController.swift @@ -0,0 +1,589 @@ +// +// GameViewController.swift +// DeltaCore +// +// Created by Riley Testut on 7/4/16. +// Happy 4th of July, Everyone! 🎉 +// Copyright © 2016 Riley Testut. All rights reserved. +// + +import UIKit +import AVFoundation + +fileprivate extension NSLayoutConstraint +{ + class func constraints(aspectFitting view1: UIView, to view2: UIView) -> [NSLayoutConstraint] + { + let boundingWidthConstraint = view1.widthAnchor.constraint(lessThanOrEqualTo: view2.widthAnchor, multiplier: 1.0) + let boundingHeightConstraint = view1.heightAnchor.constraint(lessThanOrEqualTo: view2.heightAnchor, multiplier: 1.0) + + let widthConstraint = view1.widthAnchor.constraint(equalTo: view2.widthAnchor) + widthConstraint.priority = .defaultHigh + + let heightConstraint = view1.heightAnchor.constraint(equalTo: view2.heightAnchor) + heightConstraint.priority = .defaultHigh + + return [boundingWidthConstraint, boundingHeightConstraint, widthConstraint, heightConstraint] + } +} + +public protocol GameViewControllerDelegate: class +{ + func gameViewControllerShouldPauseEmulation(_ gameViewController: GameViewController) -> Bool + func gameViewControllerShouldResumeEmulation(_ gameViewController: GameViewController) -> Bool + + func gameViewController(_ gameViewController: GameViewController, handleMenuInputFrom gameController: GameController) + + func gameViewControllerDidUpdate(_ gameViewController: GameViewController) +} + +public extension GameViewControllerDelegate +{ + func gameViewControllerShouldPauseEmulation(_ gameViewController: GameViewController) -> Bool { return true } + func gameViewControllerShouldResumeEmulation(_ gameViewController: GameViewController) -> Bool { return true } + + func gameViewController(_ gameViewController: GameViewController, handleMenuInputFrom gameController: GameController) {} + + func gameViewControllerDidUpdate(_ gameViewController: GameViewController) {} +} + +private var kvoContext = 0 + +open class GameViewController: UIViewController, GameControllerReceiver +{ + open var game: GameProtocol? + { + didSet + { + if let game = self.game + { + self.emulatorCore = EmulatorCore(game: game) + } + else + { + self.emulatorCore = nil + } + } + } + + open private(set) var emulatorCore: EmulatorCore? + { + didSet + { + oldValue?.stop() + + self.emulatorCore?.updateHandler = { [weak self] core in + guard let strongSelf = self else { return } + strongSelf.delegate?.gameViewControllerDidUpdate(strongSelf) + } + + self.prepareForGame() + } + } + + open weak var delegate: GameViewControllerDelegate? + + public var gameView: GameView! { + return self.gameViews.first + } + public private(set) var gameViews: [GameView] = [] + + open private(set) var controllerView: ControllerView! + private var splitViewInputViewHeight: CGFloat = 0 + + private let emulatorCoreQueue = DispatchQueue(label: "com.rileytestut.DeltaCore.GameViewController.emulatorCoreQueue", qos: .userInitiated) + + private var _previousControllerSkin: ControllerSkinProtocol? + private var _previousControllerSkinTraits: ControllerSkin.Traits? + + /// UIViewController + open override var prefersStatusBarHidden: Bool { + return true + } + + public required init() + { + super.init(nibName: nil, bundle: nil) + + self.initialize() + } + + public required init?(coder aDecoder: NSCoder) + { + super.init(coder: aDecoder) + + self.initialize() + } + + private func initialize() + { + NotificationCenter.default.addObserver(self, selector: #selector(GameViewController.willResignActive(with:)), name: UIApplication.willResignActiveNotification, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(GameViewController.didBecomeActive(with:)), name: UIApplication.didBecomeActiveNotification, object: nil) + + NotificationCenter.default.addObserver(self, selector: #selector(GameViewController.keyboardWillShow(with:)), name: UIResponder.keyboardWillShowNotification, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(GameViewController.keyboardWillChangeFrame(with:)), name: UIResponder.keyboardWillChangeFrameNotification, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(GameViewController.keyboardWillHide(with:)), name: UIResponder.keyboardWillHideNotification, object: nil) + } + + deinit + { + self.controllerView.removeObserver(self, forKeyPath: #keyPath(ControllerView.isHidden), context: &kvoContext) + self.emulatorCore?.stop() + } + + // MARK: - UIViewController - + /// UIViewController + // These would normally be overridden in a public extension, but overriding these methods in subclasses of GameViewController segfaults compiler if so + + open override var prefersHomeIndicatorAutoHidden: Bool + { + let prefersHomeIndicatorAutoHidden = self.view.bounds.width > self.view.bounds.height + return prefersHomeIndicatorAutoHidden + } + + open dynamic override func viewDidLoad() + { + super.viewDidLoad() + + self.view.backgroundColor = UIColor.black + + let gameView = GameView(frame: CGRect.zero) + self.view.addSubview(gameView) + self.gameViews.append(gameView) + + self.controllerView = ControllerView(frame: CGRect.zero) + self.view.addSubview(self.controllerView) + + self.controllerView.addObserver(self, forKeyPath: #keyPath(ControllerView.isHidden), options: [.old, .new], context: &kvoContext) + NotificationCenter.default.addObserver(self, selector: #selector(GameViewController.updateGameViews), name: ControllerView.controllerViewDidChangeControllerSkinNotification, object: self.controllerView) + + let tapGestureRecognizer = UITapGestureRecognizer(target: self.controllerView, action: #selector(ControllerView.becomeFirstResponder)) + self.view.addGestureRecognizer(tapGestureRecognizer) + + self.prepareForGame() + } + + open dynamic override func viewWillAppear(_ animated: Bool) + { + super.viewWillAppear(animated) + + self.emulatorCoreQueue.async { + _ = self._startEmulation() + } + } + + open dynamic override func viewDidAppear(_ animated: Bool) + { + super.viewDidAppear(animated) + + UIApplication.delta_shared?.isIdleTimerDisabled = true + + self.controllerView.becomeFirstResponder() + } + + open dynamic override func viewDidDisappear(_ animated: Bool) + { + super.viewDidDisappear(animated) + + UIApplication.delta_shared?.isIdleTimerDisabled = false + + self.emulatorCoreQueue.async { + _ = self._pauseEmulation() + } + } + + override open func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) + { + super.viewWillTransition(to: size, with: coordinator) + + self.controllerView.beginAnimatingUpdateControllerSkin() + + // Disable VideoManager temporarily to prevent random Metal crashes due to rendering while adjusting layout. + let isVideoManagerEnabled = self.emulatorCore?.videoManager.isEnabled ?? true + self.emulatorCore?.videoManager.isEnabled = false + + // As of iOS 11, the keyboard NSNotifications may return incorrect values for split view controller input view when rotating device. + // As a workaround, we explicitly resign controllerView as first responder, then restore first responder status after rotation. + let isControllerViewFirstResponder = self.controllerView.isFirstResponder + self.controllerView.resignFirstResponder() + + self.view.setNeedsUpdateConstraints() + + coordinator.animate(alongsideTransition: { (context) in + self.updateGameViews() + }) { (context) in + self.controllerView.finishAnimatingUpdateControllerSkin() + + if isControllerViewFirstResponder + { + self.controllerView.becomeFirstResponder() + } + + // Re-enable VideoManager if necessary. + self.emulatorCore?.videoManager.isEnabled = isVideoManagerEnabled + } + } + + open override func viewDidLayoutSubviews() + { + super.viewDidLayoutSubviews() + + let screenAspectRatio = self.emulatorCore?.preferredRenderingSize ?? CGSize(width: 1, height: 1) + + let controllerViewFrame: CGRect + let availableGameFrame: CGRect + + /* Controller View */ + switch self.controllerView.controllerSkinTraits + { + case let traits? where traits.displayType == .splitView: + // Split-View: + // - Controller View is pinned to bottom and spans width of device as keyboard input view. + // - Game View should be vertically centered between top of screen and input view. + + controllerViewFrame = CGRect(x: 0, y: self.view.bounds.maxY, width: self.view.bounds.width, height: 0) + (_, availableGameFrame) = self.view.bounds.divided(atDistance: self.splitViewInputViewHeight, from: .maxYEdge) + + case .none: fallthrough + case _? where self.controllerView.isHidden: + // Controller View Hidden: + // - Controller View should have a height of 0. + // - Game View should be centered in self.view. + + (controllerViewFrame, availableGameFrame) = self.view.bounds.divided(atDistance: 0, from: .maxYEdge) + + case let traits? where traits.orientation == .portrait: + // Portrait: + // - Controller View should be pinned to bottom of self.view and centered horizontally. + // - Game View should be vertically centered between top of screen and controller view. + + let intrinsicContentSize = self.controllerView.intrinsicContentSize + if intrinsicContentSize.height != UIView.noIntrinsicMetric && intrinsicContentSize.width != UIView.noIntrinsicMetric + { + let controllerViewHeight = (self.view.bounds.width / intrinsicContentSize.width) * intrinsicContentSize.height + (controllerViewFrame, availableGameFrame) = self.view.bounds.divided(atDistance: controllerViewHeight, from: .maxYEdge) + } + else + { + controllerViewFrame = self.view.bounds + availableGameFrame = self.view.bounds + } + + case _?: + // Landscape: + // - Controller View should be centered vertically in view (though most of the time its height will == self.view height). + // - Game View should be centered in self.view. + + let intrinsicContentSize = self.controllerView.intrinsicContentSize + if intrinsicContentSize.height != UIView.noIntrinsicMetric && intrinsicContentSize.width != UIView.noIntrinsicMetric + { + controllerViewFrame = AVMakeRect(aspectRatio: intrinsicContentSize, insideRect: self.view.bounds) + } + else + { + controllerViewFrame = self.view.bounds + } + + availableGameFrame = self.view.bounds + } + + self.controllerView.frame = controllerViewFrame + + /* Game View */ + if + let controllerSkin = self.controllerView.controllerSkin, + let traits = self.controllerView.controllerSkinTraits, + let screens = controllerSkin.screens(for: traits), + !self.controllerView.isHidden + { + for (screen, gameView) in zip(screens, self.gameViews) + { + let outputFrame = screen.outputFrame.applying(.init(scaleX: self.view.bounds.width, y: self.view.bounds.height)) + gameView.frame = outputFrame + } + } + else + { + let gameViewFrame = AVMakeRect(aspectRatio: screenAspectRatio, insideRect: availableGameFrame) + self.gameView.frame = gameViewFrame + } + + if self.emulatorCore?.state != .running + { + // WORKAROUND + // Sometimes, iOS will cache the rendered image (such as when covered by a UIVisualEffectView), and as a result the game view might appear skewed + // To compensate, we manually "refresh" the game screen + self.gameView.inputImage = self.gameView.outputImage + } + + self.setNeedsUpdateOfHomeIndicatorAutoHidden() + } + + // MARK: - KVO - + /// KVO + open dynamic override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) + { + guard context == &kvoContext else { return super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context) } + + // Ensures the value is actually different, or else we might potentially run into an infinite loop if subclasses hide/show controllerView in viewDidLayoutSubviews() + guard (change?[.newKey] as? Bool) != (change?[.oldKey] as? Bool) else { return } + + self.view.setNeedsLayout() + self.view.layoutIfNeeded() + } + + // MARK: - GameControllerReceiver - + /// GameControllerReceiver + // These would normally be declared in an extension, but non-ObjC compatible methods cannot be overridden if declared in extension :( + open func gameController(_ gameController: GameController, didActivate input: Input, value: Double) + { + guard let standardInput = StandardGameControllerInput(input: input), standardInput == .menu else { return } + self.delegate?.gameViewController(self, handleMenuInputFrom: gameController) + } + + open func gameController(_ gameController: GameController, didDeactivate input: Input) + { + // This method intentionally left blank + } +} + +// MARK: - Layout - +/// Layout +extension GameViewController +{ + @objc func updateGameViews() + { + var previousGameViews = Array(self.gameViews.reversed()) + var gameViews = [GameView]() + + if + let controllerSkin = self.controllerView.controllerSkin, + let traits = self.controllerView.controllerSkinTraits, + let screens = controllerSkin.screens(for: traits), + !self.controllerView.isHidden + { + for screen in screens + { + let gameView = previousGameViews.popLast() ?? GameView(frame: .zero) + + var filters = [CIFilter]() + + if let inputFrame = screen.inputFrame + { + let cropFilter = CIFilter(name: "CICrop", parameters: ["inputRectangle": CIVector(cgRect: inputFrame)])! + filters.append(cropFilter) + } + + if let screenFilters = screen.filters + { + filters.append(contentsOf: screenFilters) + } + + if filters.isEmpty + { + gameView.filter = nil + } + else + { + // Always use FilterChain since it has additional logic for chained filters. + let filterChain = FilterChain(filters: filters) + gameView.filter = filterChain + } + + let outputFrame = screen.outputFrame.applying(.init(scaleX: self.view.bounds.width, y: self.view.bounds.height)) + gameView.frame = outputFrame + + gameViews.append(gameView) + } + } + else + { + for gameView in self.gameViews + { + gameView.filter = nil + } + + gameViews.append(self.gameView) + } + + for gameView in gameViews + { + guard !self.gameViews.contains(gameView) else { continue } + + self.view.insertSubview(gameView, aboveSubview: self.gameView) + self.emulatorCore?.add(gameView) + } + + for gameView in previousGameViews + { + guard !gameViews.contains(gameView) else { continue } + + gameView.removeFromSuperview() + self.emulatorCore?.remove(gameView) + } + + self.gameViews = gameViews + self.view.setNeedsLayout() + } +} + +// MARK: - Emulation - +/// Emulation +public extension GameViewController +{ + @discardableResult func startEmulation() -> Bool + { + return self.emulatorCoreQueue.sync { + return self._startEmulation() + } + } + + @discardableResult func pauseEmulation() -> Bool + { + return self.emulatorCoreQueue.sync { + return self._pauseEmulation() + } + } + + @discardableResult func resumeEmulation() -> Bool + { + return self.emulatorCoreQueue.sync { + self._resumeEmulation() + } + } +} + +private extension GameViewController +{ + func _startEmulation() -> Bool + { + guard let emulatorCore = self.emulatorCore else { return false } + + // Toggle audioManager.enabled to reset the audio buffer and ensure the audio isn't delayed from the beginning + // This is especially noticeable when peeking a game + emulatorCore.audioManager.isEnabled = false + emulatorCore.audioManager.isEnabled = true + + return self._resumeEmulation() + } + + private func _pauseEmulation() -> Bool + { + guard let emulatorCore = self.emulatorCore, self.delegate?.gameViewControllerShouldPauseEmulation(self) ?? true else { return false } + + let result = emulatorCore.pause() + return result + } + + private func _resumeEmulation() -> Bool + { + guard let emulatorCore = self.emulatorCore, self.delegate?.gameViewControllerShouldResumeEmulation(self) ?? true else { return false } + + DispatchQueue.main.async { + if self.view.window != nil + { + self.controllerView.becomeFirstResponder() + } + } + + let result: Bool + + switch emulatorCore.state + { + case .stopped: result = emulatorCore.start() + case .paused: result = emulatorCore.resume() + case .running: result = true + } + + return result + } +} + +// MARK: - Preparation - +private extension GameViewController +{ + func prepareForGame() + { + guard + let controllerView = self.controllerView, + let emulatorCore = self.emulatorCore, + let game = self.game + else { return } + + for gameView in self.gameViews + { + emulatorCore.add(gameView) + } + + controllerView.addReceiver(self) + controllerView.addReceiver(emulatorCore) + + let controllerSkin = ControllerSkin.standardControllerSkin(for: game.type) + controllerView.controllerSkin = controllerSkin + + self.view.setNeedsUpdateConstraints() + } +} + +// MARK: - Notifications - +private extension GameViewController +{ + @objc func willResignActive(with notification: Notification) + { + self.emulatorCoreQueue.async { + _ = self._pauseEmulation() + } + } + + @objc func didBecomeActive(with notification: Notification) + { + self.emulatorCoreQueue.async { + _ = self._resumeEmulation() + } + } + + @objc func keyboardWillShow(with notification: Notification) + { + guard let traits = self.controllerView.controllerSkinTraits, traits.displayType == .splitView else { return } + + let keyboardFrame = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as! CGRect + guard keyboardFrame.height > 0 else { return } + + self.splitViewInputViewHeight = keyboardFrame.height + + let duration = notification.userInfo?[UIResponder.keyboardAnimationDurationUserInfoKey] as! TimeInterval + + let rawAnimationCurve = notification.userInfo?[UIResponder.keyboardAnimationCurveUserInfoKey] as! Int + let animationCurve = UIView.AnimationCurve(rawValue: rawAnimationCurve)! + + let animator = UIViewPropertyAnimator(duration: duration, curve: animationCurve) { + self.view.setNeedsLayout() + self.view.layoutIfNeeded() + } + animator.startAnimation() + } + + @objc func keyboardWillChangeFrame(with notification: Notification) + { + self.keyboardWillShow(with: notification) + } + + @objc func keyboardWillHide(with notification: Notification) + { + let keyboardFrame = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as! CGRect + guard keyboardFrame.height > 0 else { return } + + let duration = notification.userInfo?[UIResponder.keyboardAnimationDurationUserInfoKey] as! TimeInterval + + let rawAnimationCurve = notification.userInfo?[UIResponder.keyboardAnimationCurveUserInfoKey] as! Int + let animationCurve = UIView.AnimationCurve(rawValue: rawAnimationCurve)! + + self.splitViewInputViewHeight = 0 + + let animator = UIViewPropertyAnimator(duration: duration, curve: animationCurve) { + self.view.setNeedsLayout() + self.view.layoutIfNeeded() + } + animator.startAnimation() + } +} diff --git a/Cores/MelonDSDeltaCore b/Cores/MelonDSDeltaCore deleted file mode 160000 index 92fd10895..000000000 --- a/Cores/MelonDSDeltaCore +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 92fd10895a0821ad9455ea5a2d0494c5df8ebe54 diff --git a/Cores/MelonDSDeltaCore/Derived/InfoPlists/MelonDSDeltaCore.plist b/Cores/MelonDSDeltaCore/Derived/InfoPlists/MelonDSDeltaCore.plist new file mode 100644 index 000000000..323e5ecfc --- /dev/null +++ b/Cores/MelonDSDeltaCore/Derived/InfoPlists/MelonDSDeltaCore.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/Cores/MelonDSDeltaCore/Derived/Sources/Bundle+MelonDSDeltaCore.swift b/Cores/MelonDSDeltaCore/Derived/Sources/Bundle+MelonDSDeltaCore.swift new file mode 100644 index 000000000..88b687b53 --- /dev/null +++ b/Cores/MelonDSDeltaCore/Derived/Sources/Bundle+MelonDSDeltaCore.swift @@ -0,0 +1,23 @@ +// swiftlint:disable all +import Foundation + +// MARK: - Swift Bundle Accessor + +private class BundleFinder {} + +extension Foundation.Bundle { + /// Since MelonDSDeltaCore is a framework, the bundle containing the resources is copied into the final product. + static var module: Bundle = { + return Bundle(for: BundleFinder.self) + }() +} + +// MARK: - Objective-C Bundle Accessor + +@objc +public class MelonDSDeltaCoreResources: NSObject { + @objc public class var bundle: Bundle { + return .module + } +} +// swiftlint:enable all \ No newline at end of file diff --git a/Cores/MelonDSDeltaCore/Project.swift b/Cores/MelonDSDeltaCore/Project.swift new file mode 100644 index 000000000..b0c9f4eab --- /dev/null +++ b/Cores/MelonDSDeltaCore/Project.swift @@ -0,0 +1,52 @@ +import ProjectDescription + +let project = Project(name: "MelonDSDeltaCore", + packages: [], + targets: [ + Target(name: "MelonDSDeltaCore", + platform: .iOS, + product: .framework, + bundleId: "com.rileytestut.melonDSDeltaCore", + deploymentTarget: .iOS(targetVersion: "12.2", devices: [.iphone, .ipad]), + infoPlist: .extendingDefault(with: [:]), + sources: ["Sources/**/*.swift", "Sources/Bridge/MelonDSEmulatorBridge.{h,mm}"], + resources: ["Resources/**/*.{deltamapping,deltaskin}"], + headers: Headers(public: ["Sources/MelonDSDeltaCore.h", "Sources/Bridge/MelonDSEmulatorBridge.h"], project: "Sources/Types/MelonDSTypes.h"), + dependencies: [ + .project(target: "DeltaCore", path: "../DeltaCore"), + .target(name: "libMelonDS") + ], + settings: Settings(base: [ + "GCC_PREPROCESSOR_DEFINITIONS": "$(inherited) JIT_ENABLED=1", + "USER_HEADER_SEARCH_PATHS": "\"$(SRCROOT)\"", + ])), + Target(name: "libMelonDS", + platform: .iOS, + product: .staticLibrary, + bundleId: "com.rileytestut.libMelonDS", + deploymentTarget: .iOS(targetVersion: "13.4", devices: [.iphone, .ipad]), + infoPlist: .extendingDefault(with: [:]), + sources: [ + "melonDS/src/frontend/qt_sdl/PlatformConfig.{h,cpp}", + "melonDS/src/tiny-AES-c/*.{h,hpp,c}", + "melonDS/src/ARMJIT_A64/*.{h,cpp,s}", + "melonDS/src/dolphin/Arm64Emitter.{h,cpp}", + "melonDS/src/xxhash/*.{h,c}", + SourceFileGlob("melonDS/src/*.{h,hpp,cpp}", excluding: [ + "melonDS/src/GPU3D_OpenGL.cpp", + "melonDS/src/OpenGLSupport.cpp", + "melonDS/src/GPU_OpenGL.cpp" + ]) + ], + headers: Headers(project: [ + "melonDS/src/*.h", + "melonDS/src/frontend/qt_sdl/PlatformConfig.h", + "melonDS/src/tiny-AES-c/*.{h,hpp}", + "melonDS/src/ARMJIT_A64/*.h", + "melonDS/src/dolphin/Arm64Emitter.h", + "melonDS/src/xxhash/*.h" + ]), + settings: Settings(base: [ + "GCC_PREPROCESSOR_DEFINITIONS": "$(inherited) JIT_ENABLED=1", + ])), + ]) diff --git a/Cores/MelonDSDeltaCore/Resources/Standard.deltamapping b/Cores/MelonDSDeltaCore/Resources/Standard.deltamapping new file mode 100644 index 000000000..4f87c0f39 Binary files /dev/null and b/Cores/MelonDSDeltaCore/Resources/Standard.deltamapping differ diff --git a/Cores/MelonDSDeltaCore/Resources/Standard.deltaskin b/Cores/MelonDSDeltaCore/Resources/Standard.deltaskin new file mode 100644 index 000000000..8f5adc4dc Binary files /dev/null and b/Cores/MelonDSDeltaCore/Resources/Standard.deltaskin differ diff --git a/Cores/MelonDSDeltaCore/Resources/info.json b/Cores/MelonDSDeltaCore/Resources/info.json new file mode 100644 index 000000000..0ed555b18 --- /dev/null +++ b/Cores/MelonDSDeltaCore/Resources/info.json @@ -0,0 +1,921 @@ +{ + "name" : "Standard DS", + "identifier" : "com.delta.ds.standard", + "gameTypeIdentifier" : "com.rileytestut.delta.game.ds", + "debug" : false, + "representations" : { + "iphone" : { + "standard" : { + "portrait" : { + "assets" : { + "resizable" : "iphone_portrait.pdf" + }, + "items": [ + { + "inputs": { + "up": "up", + "down": "down", + "left": "left", + "right": "right" + }, + "frame": { + "x": 15, + "y": 500, + "width": 128, + "height": 128 + }, + "extendedEdges": { + "top": 15, + "bottom": 15, + "left": 17, + "right": 10 + } + }, + { + "inputs": [ + "a" + ], + "frame": { + "x": 313, + "y": 540, + "width": 47, + "height": 47 + }, + "extendedEdges": { + "top": 0, + "bottom": 0, + "left": 0, + "right": 16 + } + }, + { + "inputs": [ + "b" + ], + "frame": { + "x": 267, + "y": 586, + "width": 47, + "height": 47 + }, + "extendedEdges": { + "top": 0, + "left": 0, + "right": 0 + } + }, + { + "inputs": [ + "l" + ], + "frame": { + "x": 18, + "y": 366, + "width": 32, + "height": 112 + }, + "extendedEdges": { + "right": 0, + "left": 18 + } + }, + { + "inputs": [ + "r" + ], + "frame": { + "x": 325, + "y": 366, + "width": 32, + "height": 112 + }, + "extendedEdges": { + "left": 0, + "right": 18 + } + }, + { + "inputs": [ + "start" + ], + "frame": { + "x": 154, + "y": 600, + "width": 18, + "height": 18 + }, + "extendedEdges": { + "top": 15, + "bottom": 0, + "left": 0, + "right": 45 + } + }, + { + "inputs": [ + "select" + ], + "frame": { + "x": 154, + "y": 631, + "width": 18, + "height": 18 + }, + "extendedEdges": { + "top": 0, + "bottom": 15, + "left": 0, + "right": 45 + } + }, + { + "inputs": [ + "menu" + ], + "frame": { + "x": 154, + "y": 498, + "width": 18, + "height": 18 + }, + "extendedEdges": { + "left": 0, + "right": 45 + } + }, + { + "inputs": [ + "y" + ], + "frame": { + "x": 221, + "y": 540, + "width": 47, + "height": 47 + }, + "extendedEdges": { + "top": 0, + "bottom": 0, + "right": 0 + } + }, + { + "inputs": [ + "x" + ], + "frame": { + "x": 267, + "y": 494, + "width": 47, + "height": 47 + }, + "extendedEdges": { + "bottom": 0, + "left": 0, + "right": 0 + } + }, + { + "inputs": { + "x": "touchScreenX", + "y": "touchScreenY" + }, + "frame": { + "x": 50, + "y": 252, + "width": 275, + "height": 206 + }, + "extendedEdges": { + "top": 0, + "bottom": 0, + "left": 0, + "right": 0 + } + } + ], + "screens": [ + { + "inputFrame": { + "x": 0, + "y": 0, + "width": 256, + "height": 192 + }, + "outputFrame": { + "x": 50, + "y": 18, + "width": 275, + "height": 206 + } + }, + { + "inputFrame": { + "x": 0, + "y": 192, + "width": 256, + "height": 192 + }, + "outputFrame": { + "x": 50, + "y": 252, + "width": 275, + "height": 206 + } + } + ], + "mappingSize" : { + "width" : 375, + "height" : 667 + }, + "extendedEdges" : { + "top" : 7, + "bottom" : 7, + "left" : 7, + "right" : 7 + } + }, + "landscape" : { + "assets" : { + "resizable" : "iphone_landscape.pdf" + }, + "items": [ + { + "inputs": { + "up": "up", + "down": "down", + "left": "left", + "right": "right" + }, + "frame": { + "x": 15, + "y": 235, + "width": 123, + "height": 123 + }, + "extendedEdges": { + "top": 15, + "bottom": 20, + "left": 20, + "right": 20 + } + }, + { + "inputs": [ + "a" + ], + "frame": { + "x": 606, + "y": 273, + "width": 47, + "height": 47 + }, + "extendedEdges": { + "top": 0, + "bottom": 0, + "left": 0, + "right": 30 + } + }, + { + "inputs": [ + "b" + ], + "frame": { + "x": 562, + "y": 318, + "width": 47, + "height": 47 + }, + "extendedEdges": { + "top": 0, + "left": 0, + "right": 0 + } + }, + { + "inputs": [ + "l" + ], + "frame": { + "x": 173, + "y": 219, + "width": 135, + "height": 33 + }, + "extendedEdges": { + "top": 0 + } + }, + { + "inputs": [ + "r" + ], + "frame": { + "x": 359, + "y": 219, + "width": 135, + "height": 33 + }, + "extendedEdges": { + "top": 0 + } + }, + { + "inputs": [ + "start" + ], + "frame": { + "x": 304, + "y": 287, + "width": 18, + "height": 18 + }, + "extendedEdges": { + "right": 50 + } + }, + { + "inputs": [ + "select" + ], + "frame": { + "x": 410, + "y": 288, + "width": 18, + "height": 18 + }, + "extendedEdges": { + "right": 50 + } + }, + { + "inputs": [ + "menu" + ], + "frame": { + "x": 195, + "y": 288, + "width": 18, + "height": 18 + }, + "extendedEdges": { + "right": 50 + } + }, + { + "inputs": [ + "x" + ], + "frame": { + "x": 562, + "y": 229, + "width": 47, + "height": 47 + }, + "extendedEdges": { + "top": 8, + "bottom": 0, + "left": 0, + "right": 0 + } + }, + { + "inputs": [ + "y" + ], + "frame": { + "x": 517, + "y": 273, + "width": 47, + "height": 47 + }, + "extendedEdges": { + "top": 0, + "bottom": 0, + "right": 0 + } + }, + { + "inputs": { + "x": "touchScreenX", + "y": "touchScreenY" + }, + "frame": { + "x": 361, + "y": 24, + "width": 259, + "height": 194 + }, + "extendedEdges": { + "top": 0, + "bottom": 0, + "left": 0, + "right": 0 + } + } + ], + "mappingSize" : { + "width" : 667, + "height" : 375 + }, + "screens": [ + { + "inputFrame": { + "x": 0, + "y": 0, + "width": 256, + "height": 192 + }, + "outputFrame": { + "x": 47, + "y": 24, + "width": 259, + "height": 194 + } + }, + { + "inputFrame": { + "x": 0, + "y": 192, + "width": 256, + "height": 192 + }, + "outputFrame": { + "x": 361, + "y": 24, + "width": 259, + "height": 194 + } + } + ], + "extendedEdges" : { + "top" : 15, + "bottom" : 15, + "left" : 15, + "right" : 15 + } + } + }, + "edgeToEdge" : { + "portrait" : { + "assets" : { + "resizable" : "iphone_edgetoedge_portrait.pdf" + }, + "items" : [ + { + "inputs" : { + "up" : "up", + "down" : "down", + "left" : "left", + "right" : "right" + }, + "frame" : { + "x" : 17, + "y" : 698, + "width" : 141, + "height" : 141 + }, + "extendedEdges" : { + "top" : 15, + "bottom" : 15, + "left" : 17, + "right" : 10 + } + }, + { + "inputs" : [ + "a" + ], + "frame" : { + "x" : 346, + "y" : 743, + "width" : 52, + "height" : 52 + }, + "extendedEdges" : { + "top" : 0, + "bottom" : 0, + "left" : 0, + "right" : 16 + } + }, + { + "inputs" : [ + "b" + ], + "frame" : { + "x" : 295, + "y" : 794, + "width" : 52, + "height" : 52 + }, + "extendedEdges" : { + "top" : 0, + "left" : 0, + "right" : 0 + } + }, + { + "inputs" : [ + "l" + ], + "frame" : { + "x" : 23, + "y" : 630, + "width" : 127, + "height" : 35 + } + , + "extendedEdges": { + "top": 0, + "left": 22 + } + }, + { + "inputs" : [ + "r" + ], + "frame" : { + "x" : 263, + "y" : 630, + "width" : 127, + "height" : 35 + } + , + "extendedEdges": { + "top": 0, + "right": 22 + } + }, + { + "inputs" : [ + "start" + ], + "frame" : { + "x" : 171, + "y" : 808, + "width" : 20, + "height" : 20 + }, + "extendedEdges" : { + "top": 15, + "bottom": 0, + "left": 0, + "right" : 45 + } + }, + { + "inputs" : [ + "select" + ], + "frame" : { + "x" : 171, + "y" : 844, + "width" : 20, + "height" : 20 + }, + "extendedEdges": { + "top": 0, + "bottom": 15, + "left": 0, + "right": 45 + } + }, + { + "inputs" : [ + "menu" + ], + "frame" : { + "x" : 170, + "y" : 697, + "width" : 20, + "height" : 20 + }, + "extendedEdges": { + "left": 0, + "right": 45 + } + }, + { + "inputs" : [ + "y" + ], + "frame" : { + "x" : 244, + "y" : 743, + "width" : 52, + "height" : 52 + }, + "extendedEdges" : { + "top" : 0, + "bottom" : 0, + "right" : 0 + } + }, + { + "inputs" : [ + "x" + ], + "frame" : { + "x" : 295, + "y" : 692, + "width" : 52, + "height" : 52 + }, + "extendedEdges" : { + "bottom" : 0, + "left" : 0, + "right" : 0 + } + }, + { + "inputs": { + "x": "touchScreenX", + "y": "touchScreenY" + }, + "frame": { + "x": 25, + "y": 366, + "width": 363, + "height": 273 + } + , + "extendedEdges": { + "top": 0, + "bottom": 0, + "left": 0, + "right": 0 + } + } + ], + "screens": [ + { + "inputFrame": { + "x": 0, + "y": 0, + "width": 256, + "height": 192 + }, + "outputFrame": { + "x": 25, + "y": 54, + "width": 363, + "height": 273 + } + }, + { + "inputFrame": { + "x": 0, + "y": 192, + "width": 256, + "height": 192 + }, + "outputFrame": { + "x": 25, + "y": 366, + "width": 363, + "height": 273 + } + } + ], + "mappingSize" : { + "width" : 414, + "height" : 896 + }, + "extendedEdges" : { + "top" : 7, + "bottom" : 7, + "left" : 7, + "right" : 7 + } + }, + "landscape" : { + "assets" : { + "resizable" : "iphone_edgetoedge_landscape.pdf" + }, + "items" : [ + { + "inputs" : { + "up" : "up", + "down" : "down", + "left" : "left", + "right" : "right" + }, + "frame" : { + "x" : 69, + "y" : 260, + "width" : 136, + "height" : 136 + }, + "extendedEdges" : { + "left" : 30, + "top" : 20, + "right" : 20, + "bottom" : 20 + } + }, + { + "inputs" : [ + "a" + ], + "frame" : { + "x" : 777, + "y" : 302, + "width" : 51, + "height" : 51 + }, + "extendedEdges" : { + "top" : 0, + "bottom" : 0, + "left" : 0, + "right" : 30 + } + }, + { + "inputs" : [ + "b" + ], + "frame" : { + "x" : 728, + "y" : 351, + "width" : 51, + "height" : 51 + }, + "extendedEdges" : { + "top" : 0, + "left" : 0, + "right" : 0 + } + }, + { + "inputs" : [ + "l" + ], + "frame" : { + "x" : 69, + "y" : 65, + "width" : 40, + "height" : 148 + } + , + "extendedEdges": { + "left": 50, + "right": 0 + } + }, + { + "inputs" : [ + "r" + ], + "frame" : { + "x" : 788, + "y" : 65, + "width" : 40, + "height" : 148 + } + , + "extendedEdges": { + "left": 0, + "right": 50 + } + }, + { + "inputs" : [ + "start" + ], + "frame" : { + "x" : 415, + "y" : 315, + "width" : 20, + "height" : 20 + }, + "extendedEdges": { + "right": 50 + } + }, + { + "inputs" : [ + "select" + ], + "frame" : { + "x" : 533, + "y" : 315, + "width" : 20, + "height" : 20 + }, + "extendedEdges" : { + "right" : 50 + } + }, + { + "inputs" : [ + "menu" + ], + "frame" : { + "x" : 295, + "y" : 315, + "width" : 20, + "height" : 20 + }, + "extendedEdges": { + "right": 50 + } + }, + { + "inputs" : [ + "x" + ], + "frame" : { + "x" : 728, + "y" : 253, + "width" : 51, + "height" : 51 + }, + "extendedEdges" : { + "bottom" : 0, + "left" : 0, + "right" : 0 + } + }, + { + "inputs" : [ + "y" + ], + "frame" : { + "x" : 679, + "y" : 302, + "width" : 51, + "height" : 51 + }, + "extendedEdges" : { + "top" : 0, + "bottom" : 0, + "right" : 0 + } + }, + { + "inputs": { + "x": "touchScreenX", + "y": "touchScreenY" + }, + "frame": { + "x": 500, + "y": 27, + "width": 286, + "height": 214 + } + , + "extendedEdges": { + "top": 0, + "bottom": 0, + "left": 0, + "right": 0 + } + } + ], + "mappingSize" : { + "width" : 896, + "height" : 414 + }, + "screens": [ + { + "inputFrame": { + "x": 0, + "y": 0, + "width": 256, + "height": 192 + }, + "outputFrame": { + "x": 110, + "y": 27, + "width": 286, + "height": 214 + } + }, + { + "inputFrame": { + "x": 0, + "y": 192, + "width": 256, + "height": 192 + }, + "outputFrame": { + "x": 500, + "y": 27, + "width": 286, + "height": 214 + } + } + ], + "extendedEdges" : { + "top" : 15, + "bottom" : 15, + "left" : 15, + "right" : 15 + } + } + } + } + } +} \ No newline at end of file diff --git a/Cores/MelonDSDeltaCore/Resources/iphone_edgetoedge_landscape.pdf b/Cores/MelonDSDeltaCore/Resources/iphone_edgetoedge_landscape.pdf new file mode 100644 index 000000000..949dc7b64 Binary files /dev/null and b/Cores/MelonDSDeltaCore/Resources/iphone_edgetoedge_landscape.pdf differ diff --git a/Cores/MelonDSDeltaCore/Resources/iphone_edgetoedge_portrait.pdf b/Cores/MelonDSDeltaCore/Resources/iphone_edgetoedge_portrait.pdf new file mode 100644 index 000000000..41e48bf4d Binary files /dev/null and b/Cores/MelonDSDeltaCore/Resources/iphone_edgetoedge_portrait.pdf differ diff --git a/Cores/MelonDSDeltaCore/Resources/iphone_landscape.pdf b/Cores/MelonDSDeltaCore/Resources/iphone_landscape.pdf new file mode 100644 index 000000000..d33daba9b Binary files /dev/null and b/Cores/MelonDSDeltaCore/Resources/iphone_landscape.pdf differ diff --git a/Cores/MelonDSDeltaCore/Resources/iphone_portrait.pdf b/Cores/MelonDSDeltaCore/Resources/iphone_portrait.pdf new file mode 100644 index 000000000..cc5bf29d3 Binary files /dev/null and b/Cores/MelonDSDeltaCore/Resources/iphone_portrait.pdf differ diff --git a/Cores/MelonDSDeltaCore/Sources/Bridge/MelonDSEmulatorBridge.h b/Cores/MelonDSDeltaCore/Sources/Bridge/MelonDSEmulatorBridge.h new file mode 100644 index 000000000..c8e405ae3 --- /dev/null +++ b/Cores/MelonDSDeltaCore/Sources/Bridge/MelonDSEmulatorBridge.h @@ -0,0 +1,42 @@ +// +// MelonDSEmulatorBridge.h +// MelonDSDeltaCore +// +// Created by Riley Testut on 10/31/19. +// Copyright © 2019 Riley Testut. All rights reserved. +// + +#import + +@protocol DLTAEmulatorBridging; + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, MelonDSSystemType) +{ + MelonDSSystemTypeDS NS_SWIFT_NAME(ds) = 0, + MelonDSSystemTypeDSi NS_SWIFT_NAME(dsi) = 1 +}; + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Weverything" // Silence "Cannot find protocol definition" warning due to forward declaration. +@interface MelonDSEmulatorBridge : NSObject +#pragma clang diagnostic pop + +@property (class, nonatomic, readonly) MelonDSEmulatorBridge *sharedBridge; + +@property (nonatomic) MelonDSSystemType systemType; +@property (nonatomic, getter=isJITEnabled) BOOL jitEnabled; + +@property (nonatomic, readonly) NSURL *bios7URL; +@property (nonatomic, readonly) NSURL *bios9URL; +@property (nonatomic, readonly) NSURL *firmwareURL; + +@property (nonatomic, readonly) NSURL *dsiBIOS7URL; +@property (nonatomic, readonly) NSURL *dsiBIOS9URL; +@property (nonatomic, readonly) NSURL *dsiFirmwareURL; +@property (nonatomic, readonly) NSURL *dsiNANDURL; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Cores/MelonDSDeltaCore/Sources/Bridge/MelonDSEmulatorBridge.mm b/Cores/MelonDSDeltaCore/Sources/Bridge/MelonDSEmulatorBridge.mm new file mode 100644 index 000000000..16b47c1e3 --- /dev/null +++ b/Cores/MelonDSDeltaCore/Sources/Bridge/MelonDSEmulatorBridge.mm @@ -0,0 +1,740 @@ +// +// MelonDSEmulatorBridge.m +// MelonDSDeltaCore +// +// Created by Riley Testut on 10/31/19. +// Copyright © 2019 Riley Testut. All rights reserved. +// + +#import "MelonDSEmulatorBridge.h" + +#import // Prevent undeclared symbols in below headers + +#import +#import + +#if STATIC_LIBRARY +#import "MelonDSDeltaCore-Swift.h" +#else +#import +#endif + +#include "melonDS/src/Platform.h" +#include "melonDS/src/NDS.h" +#include "melonDS/src/SPU.h" +#include "melonDS/src/GPU.h" +#include "melonDS/src/AREngine.h" + +#include "melonDS/src/Config.h" + +#include + +#import + +// Copied from melonDS source (no longer exists in HEAD) +void ParseTextCode(char* text, int tlen, u32* code, int clen) // or whatever this should be named? +{ + u32 cur_word = 0; + u32 ndigits = 0; + u32 nin = 0; + u32 nout = 0; + + char c; + while ((c = *text++) != '\0') + { + u32 val; + if (c >= '0' && c <= '9') + val = c - '0'; + else if (c >= 'a' && c <= 'f') + val = c - 'a' + 0xA; + else if (c >= 'A' && c <= 'F') + val = c - 'A' + 0xA; + else + continue; + + cur_word <<= 4; + cur_word |= val; + + ndigits++; + if (ndigits >= 8) + { + if (nout >= clen) + { + printf("AR: code too long!\n"); + return; + } + + *code++ = cur_word; + nout++; + + ndigits = 0; + cur_word = 0; + } + + nin++; + if (nin >= tlen) break; + } + + if (nout & 1) + { + printf("AR: code was missing one word\n"); + if (nout >= clen) + { + printf("AR: code too long!\n"); + return; + } + *code++ = 0; + } +} + +@interface MelonDSEmulatorBridge () + +@property (nonatomic, copy, nullable, readwrite) NSURL *gameURL; + +@property (nonatomic) uint32_t activatedInputs; +@property (nonatomic) CGPoint touchScreenPoint; + +@property (nonatomic, readonly) std::shared_ptr cheatCodes; +@property (nonatomic, readonly) int notifyToken; + +@property (nonatomic, getter=isInitialized) BOOL initialized; +@property (nonatomic, getter=isStopping) BOOL stopping; + +@property (nonatomic, readonly) AVAudioEngine *audioEngine; +@property (nonatomic, readonly) AVAudioUnitEQ *audioEQEffect; +@property (nonatomic, readonly) AVAudioConverter *audioConverter; +@property (nonatomic, readonly) DLTARingBuffer *microphoneBuffer; +@property (nonatomic, readonly) dispatch_queue_t microphoneQueue; + +@end + +@implementation MelonDSEmulatorBridge +@synthesize audioRenderer = _audioRenderer; +@synthesize videoRenderer = _videoRenderer; +@synthesize saveUpdateHandler = _saveUpdateHandler; +@synthesize audioConverter = _audioConverter; + ++ (instancetype)sharedBridge +{ + static MelonDSEmulatorBridge *_emulatorBridge = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _emulatorBridge = [[self alloc] init]; + }); + + return _emulatorBridge; +} + +- (instancetype)init +{ + self = [super init]; + if (self) + { + _cheatCodes = std::make_shared(""); + _activatedInputs = 0; + + _audioEngine = [[AVAudioEngine alloc] init]; + _audioEQEffect = [[AVAudioUnitEQ alloc] initWithNumberOfBands:2]; + + _microphoneBuffer = [[DLTARingBuffer alloc] initWithPreferredBufferSize:100 * 1024]; + _microphoneQueue = dispatch_queue_create("com.rileytestut.MelonDSDeltaCore.Microphone", DISPATCH_QUEUE_SERIAL); + } + + return self; +} + +#pragma mark - Emulation State - + +- (void)startWithGameURL:(NSURL *)gameURL +{ + self.gameURL = gameURL; + + if ([self isInitialized]) + { + NDS::DeInit(); + } + else + { + // DS paths + strncpy(Config::BIOS7Path, self.bios7URL.lastPathComponent.UTF8String, self.bios7URL.lastPathComponent.length); + strncpy(Config::BIOS9Path, self.bios9URL.lastPathComponent.UTF8String, self.bios9URL.lastPathComponent.length); + strncpy(Config::FirmwarePath, self.firmwareURL.lastPathComponent.UTF8String, self.firmwareURL.lastPathComponent.length); + + // DSi paths + strncpy(Config::DSiBIOS7Path, self.dsiBIOS7URL.lastPathComponent.UTF8String, self.dsiBIOS7URL.lastPathComponent.length); + strncpy(Config::DSiBIOS9Path, self.dsiBIOS9URL.lastPathComponent.UTF8String, self.dsiBIOS9URL.lastPathComponent.length); + strncpy(Config::DSiFirmwarePath, self.dsiFirmwareURL.lastPathComponent.UTF8String, self.dsiFirmwareURL.lastPathComponent.length); + strncpy(Config::DSiNANDPath, self.dsiNANDURL.lastPathComponent.UTF8String, self.dsiNANDURL.lastPathComponent.length); + + [self registerForNotifications]; + [self prepareAudioEngine]; + } + + NDS::SetConsoleType((int)self.systemType); + + Config::JIT_Enable = [self isJITEnabled]; + Config::JIT_FastMemory = NO; + + NDS::Init(); + self.initialized = YES; + + GPU::RenderSettings settings; + settings.Soft_Threaded = NO; + + GPU::InitRenderer(0); + GPU::SetRenderSettings(0, settings); + + BOOL isDirectory = NO; + if ([[NSFileManager defaultManager] fileExistsAtPath:gameURL.path isDirectory:&isDirectory] && !isDirectory) + { + if (!NDS::LoadROM(gameURL.fileSystemRepresentation, "", YES)) + { + NSLog(@"Failed to load Nintendo DS ROM."); + } + } + else + { + NDS::LoadBIOS(); + } + + self.stopping = NO; +} + +- (void)stop +{ + self.stopping = YES; + + NDS::Stop(); + + [self.audioEngine stop]; +} + +- (void)pause +{ + [self.audioEngine pause]; +} + +- (void)resume +{ +} + +#pragma mark - Game Loop - + +- (void)runFrameAndProcessVideo:(BOOL)processVideo +{ + if ([self isStopping]) + { + return; + } + + uint32_t inputs = self.activatedInputs; + uint32_t inputsMask = 0xFFF; // 0b000000111111111111; + + uint16_t sanitizedInputs = inputsMask ^ inputs; + NDS::SetKeyMask(sanitizedInputs); + + if (self.activatedInputs & MelonDSGameInputTouchScreenX || self.activatedInputs & MelonDSGameInputTouchScreenY) + { + NDS::TouchScreen(self.touchScreenPoint.x, self.touchScreenPoint.y); + } + else + { + NDS::ReleaseScreen(); + } + + if (self.activatedInputs & MelonDSGameInputLid) + { + NDS::SetLidClosed(true); + } + else if (NDS::IsLidClosed()) + { + NDS::SetLidClosed(false); + } + + static int16_t micBuffer[735]; + NSInteger readBytes = (NSInteger)[self.microphoneBuffer readIntoBuffer:micBuffer preferredSize:735 * sizeof(int16_t)]; + NSInteger readFrames = readBytes / sizeof(int16_t); + + if (readFrames > 0) + { + NDS::MicInputFrame(micBuffer, (int)readFrames); + } + + NDS::RunFrame(); + + static int16_t buffer[0x1000]; + u32 availableBytes = SPU::GetOutputSize(); + availableBytes = MAX(availableBytes, (u32)(sizeof(buffer) / (2 * sizeof(int16_t)))); + + int samples = SPU::ReadOutput(buffer, availableBytes); + [self.audioRenderer.audioBuffer writeBuffer:buffer size:samples * 4]; + + if (processVideo) + { + int screenBufferSize = 256 * 192 * 4; + + memcpy(self.videoRenderer.videoBuffer, GPU::Framebuffer[GPU::FrontBuffer][0], screenBufferSize); + memcpy(self.videoRenderer.videoBuffer + screenBufferSize, GPU::Framebuffer[GPU::FrontBuffer][1], screenBufferSize); + + [self.videoRenderer processFrame]; + } +} + +#pragma mark - Inputs - + +- (void)activateInput:(NSInteger)input value:(double)value +{ + self.activatedInputs |= (uint32_t)input; + + CGPoint touchPoint = self.touchScreenPoint; + + switch ((MelonDSGameInput)input) + { + case MelonDSGameInputTouchScreenX: + touchPoint.x = value * (256 - 1); + break; + + case MelonDSGameInputTouchScreenY: + touchPoint.y = value * (192 - 1); + break; + + default: break; + } + + self.touchScreenPoint = touchPoint; +} + +- (void)deactivateInput:(NSInteger)input +{ + self.activatedInputs &= ~((uint32_t)input); + + CGPoint touchPoint = self.touchScreenPoint; + + switch ((MelonDSGameInput)input) + { + case MelonDSGameInputTouchScreenX: + touchPoint.x = 0; + break; + + case MelonDSGameInputTouchScreenY: + touchPoint.y = 0; + break; + + default: break; + } + + self.touchScreenPoint = touchPoint; +} + +- (void)resetInputs +{ + self.activatedInputs = 0; + self.touchScreenPoint = CGPointZero; +} + +#pragma mark - Game Saves - + +- (void)saveGameSaveToURL:(NSURL *)URL +{ + NDS::RelocateSave(URL.fileSystemRepresentation, true); +} + +- (void)loadGameSaveFromURL:(NSURL *)URL +{ + if (![[NSFileManager defaultManager] fileExistsAtPath:URL.path]) + { + return; + } + + NDS::RelocateSave(URL.fileSystemRepresentation, false); +} + +#pragma mark - Save States - + +- (void)saveSaveStateToURL:(NSURL *)URL +{ + Savestate *savestate = new Savestate(URL.fileSystemRepresentation, true); + NDS::DoSavestate(savestate); + delete savestate; +} + +- (void)loadSaveStateFromURL:(NSURL *)URL +{ + Savestate *savestate = new Savestate(URL.fileSystemRepresentation, false); + NDS::DoSavestate(savestate); + delete savestate; +} + +#pragma mark - Cheats - + +- (BOOL)addCheatCode:(NSString *)cheatCode type:(NSString *)type +{ + NSArray *codes = [cheatCode componentsSeparatedByString:@"\n"]; + for (NSString *code in codes) + { + if (code.length != 17) + { + return NO; + } + + NSMutableCharacterSet *legalCharactersSet = [NSMutableCharacterSet hexadecimalCharacterSet]; + [legalCharactersSet addCharactersInString:@" "]; + + if ([code rangeOfCharacterFromSet:legalCharactersSet.invertedSet].location != NSNotFound) + { + return NO; + } + } + + NSString *sanitizedCode = [[cheatCode componentsSeparatedByCharactersInSet:NSCharacterSet.hexadecimalCharacterSet.invertedSet] componentsJoinedByString:@""]; + int codeLength = (sanitizedCode.length / 8); + + ARCode code; + memset(code.Name, 0, 128); + memset(code.Code, 0, 128); + memcpy(code.Name, sanitizedCode.UTF8String, MIN(128, sanitizedCode.length)); + ParseTextCode((char *)sanitizedCode.UTF8String, (int)[sanitizedCode lengthOfBytesUsingEncoding:NSUTF8StringEncoding], &code.Code[0], 128); + code.Enabled = YES; + code.CodeLen = codeLength; + + ARCodeCat category; + memcpy(category.Name, sanitizedCode.UTF8String, MIN(128, sanitizedCode.length)); + category.Codes.push_back(code); + + self.cheatCodes->Categories.push_back(category); + + return YES; +} + +- (void)resetCheats +{ + self.cheatCodes->Categories.clear(); + AREngine::Reset(); +} + +- (void)updateCheats +{ + AREngine::SetCodeFile(self.cheatCodes.get()); +} + +#pragma mark - Notifications - + +- (void)registerForNotifications +{ + int status = notify_register_dispatch("com.apple.springboard.hasBlankedScreen", &_notifyToken, dispatch_get_main_queue(), ^(int t) { + uint64_t state; + int result = notify_get_state(self.notifyToken, &state); + NSLog(@"Lock screen state = %llu", state); + + if (state == 0) + { + [self deactivateInput:MelonDSGameInputLid]; + } + else + { + [self activateInput:MelonDSGameInputLid value:1]; + } + + if (result != NOTIFY_STATUS_OK) + { + NSLog(@"Lock screen notification returned: %d", result); + } + }); + + if (status != NOTIFY_STATUS_OK) + { + NSLog(@"Lock screen notification registration returned: %d", status); + } +} + +#pragma mark - Microphone - + +- (void)prepareAudioEngine +{ + self.audioEQEffect.globalGain = 3; + + // Experimentally-determined values. Focuses on ensuring blows are registered correctly. + self.audioEQEffect.bands[0].filterType = AVAudioUnitEQFilterTypeLowShelf; + self.audioEQEffect.bands[0].frequency = 100; + self.audioEQEffect.bands[0].gain = 20; + self.audioEQEffect.bands[0].bypass = NO; + + self.audioEQEffect.bands[1].filterType = AVAudioUnitEQFilterTypeHighShelf; + self.audioEQEffect.bands[1].frequency = 10000; + self.audioEQEffect.bands[1].gain = -30; + self.audioEQEffect.bands[1].bypass = NO; + + [self.audioEngine attachNode:self.audioEQEffect]; + [self.audioEngine connect:self.audioEngine.inputNode to:self.audioEQEffect format:self.audioConverter.inputFormat]; + + NSInteger bufferSize = 1024 * self.audioConverter.inputFormat.streamDescription->mBytesPerFrame; + [self.audioEQEffect installTapOnBus:0 bufferSize:bufferSize format:self.audioConverter.inputFormat block:^(AVAudioPCMBuffer * _Nonnull buffer, AVAudioTime * _Nonnull when) { + dispatch_async(self.microphoneQueue, ^{ + [self processMicrophoneBuffer:buffer]; + }); + }]; +} + +- (void)processMicrophoneBuffer:(AVAudioPCMBuffer *)inputBuffer +{ + static AVAudioPCMBuffer *outputBuffer = [[AVAudioPCMBuffer alloc] initWithPCMFormat:self.audioConverter.outputFormat frameCapacity:5000]; + outputBuffer.frameLength = 5000; + + __block BOOL didReturnBuffer = NO; + + NSError *error = nil; + AVAudioConverterOutputStatus status = [self.audioConverter convertToBuffer:outputBuffer error:&error + withInputFromBlock:^AVAudioBuffer * _Nullable(AVAudioPacketCount packetCount, AVAudioConverterInputStatus * _Nonnull outStatus) { + if (didReturnBuffer) + { + *outStatus = AVAudioConverterInputStatus_NoDataNow; + return nil; + } + else + { + didReturnBuffer = YES; + *outStatus = AVAudioConverterInputStatus_HaveData; + return inputBuffer; + } + }]; + + if (status == AVAudioConverterOutputStatus_Error) + { + NSLog(@"Conversion error: %@", error); + } + + NSInteger outputSize = outputBuffer.frameLength * outputBuffer.format.streamDescription->mBytesPerFrame; + [self.microphoneBuffer writeBuffer:outputBuffer.int16ChannelData[0] size:outputSize]; +} +#pragma mark - Getters/Setters - + +- (NSTimeInterval)frameDuration +{ + return (1.0 / 60.0); +} + +- (NSURL *)bios7URL +{ + return [MelonDSEmulatorBridge.coreDirectoryURL URLByAppendingPathComponent:@"bios7.bin"]; +} + +- (NSURL *)bios9URL +{ + return [MelonDSEmulatorBridge.coreDirectoryURL URLByAppendingPathComponent:@"bios9.bin"]; +} + +- (NSURL *)firmwareURL +{ + return [MelonDSEmulatorBridge.coreDirectoryURL URLByAppendingPathComponent:@"firmware.bin"]; +} + +- (NSURL *)dsiBIOS7URL +{ + return [MelonDSEmulatorBridge.coreDirectoryURL URLByAppendingPathComponent:@"dsibios7.bin"]; +} + +- (NSURL *)dsiBIOS9URL +{ + return [MelonDSEmulatorBridge.coreDirectoryURL URLByAppendingPathComponent:@"dsibios9.bin"]; +} + +- (NSURL *)dsiFirmwareURL +{ + return [MelonDSEmulatorBridge.coreDirectoryURL URLByAppendingPathComponent:@"dsifirmware.bin"]; +} + +- (NSURL *)dsiNANDURL +{ + return [MelonDSEmulatorBridge.coreDirectoryURL URLByAppendingPathComponent:@"dsinand.bin"]; +} + +- (AVAudioConverter *)audioConverter +{ + if (_audioConverter == nil) + { + // Lazily initialize so we don't cause microphone permission alert to appear prematurely. + AVAudioFormat *inputFormat = [_audioEngine.inputNode inputFormatForBus:0]; + AVAudioFormat *outputFormat = [[AVAudioFormat alloc] initWithCommonFormat:AVAudioPCMFormatInt16 sampleRate:44100 channels:1 interleaved:NO]; + _audioConverter = [[AVAudioConverter alloc] initFromFormat:inputFormat toFormat:outputFormat]; + } + + return _audioConverter; +} + +@end + +namespace Platform +{ + void StopEmu() + { + if ([MelonDSEmulatorBridge.sharedBridge isStopping]) + { + return; + } + + MelonDSEmulatorBridge.sharedBridge.stopping = YES; + [[NSNotificationCenter defaultCenter] postNotificationName:DLTAEmulatorCore.emulationDidQuitNotification object:nil]; + } + + FILE* OpenFile(const char* path, const char* mode, bool mustexist) + { + FILE* ret; + + if (mustexist) + { + ret = fopen(path, "rb"); + if (ret) ret = freopen(path, mode, ret); + } + else + ret = fopen(path, mode); + + return ret; + } + + FILE* OpenLocalFile(const char* path, const char* mode) + { + NSURL *fileURL = [MelonDSEmulatorBridge.coreDirectoryURL URLByAppendingPathComponent:@(path)]; + return OpenFile(fileURL.fileSystemRepresentation, mode); + } + + FILE* OpenDataFile(const char* path) + { + NSString *resourceName = [@(path) stringByDeletingPathExtension]; + NSString *extension = [@(path) pathExtension]; + + NSURL *fileURL = [MelonDSEmulatorBridge.dsResources URLForResource:resourceName withExtension:extension]; + return OpenFile(fileURL.fileSystemRepresentation, "rb"); + } + + void *Thread_Create(void (*func)()) + { + return NULL; + } + + void Thread_Free(void* thread) + { + } + + void Thread_Wait(void* thread) + { + } + + void *Semaphore_Create() + { + return NULL; + } + + void Semaphore_Free(void *semaphore) + { + } + + void Semaphore_Reset(void *semaphore) + { + } + + void Semaphore_Wait(void *semaphore) + { + } + + void Semaphore_Post(void *semaphore) + { + } + + void *GL_GetProcAddress(const char* proc) + { + return NULL; + } + + bool MP_Init() + { + return false; + } + + void MP_DeInit() + { + } + + int MP_SendPacket(u8* bytes, int len) + { + return 0; + } + + int MP_RecvPacket(u8* bytes, bool block) + { + return 0; + } + + bool LAN_Init() + { + return false; + } + + void LAN_DeInit() + { + } + + int LAN_SendPacket(u8* data, int len) + { + return 0; + } + + int LAN_RecvPacket(u8* data) + { + return 0; + } + + void Mic_Prepare() + { + if ([MelonDSEmulatorBridge.sharedBridge.audioEngine isRunning]) + { + return; + } + + NSError *error = nil; + if (![MelonDSEmulatorBridge.sharedBridge.audioEngine startAndReturnError:&error]) + { + NSLog(@"Failed to start listening to microphone. %@", error); + } + } +} + +namespace GPU3D +{ +namespace GLRenderer +{ + bool Init() + { + return false; + } + + void DeInit() + { + } + + void Reset() + { + } + + void UpdateDisplaySettings() + { + } + + void RenderFrame() + { + } + + void PrepareCaptureFrame() + { + } + + u32* GetLine(int line) + { + return NULL; + } + + void SetupAccelFrame() + { + return; + } +} +} diff --git a/Cores/MelonDSDeltaCore/Sources/MelonDS.swift b/Cores/MelonDSDeltaCore/Sources/MelonDS.swift new file mode 100644 index 000000000..6cd994614 --- /dev/null +++ b/Cores/MelonDSDeltaCore/Sources/MelonDS.swift @@ -0,0 +1,97 @@ +// +// MelonDS.swift +// MelonDSDeltaCore +// +// Created by Riley Testut on 10/31/19. +// Copyright © 2019 Riley Testut. All rights reserved. +// + +import Foundation +import AVFoundation + +import DeltaCore + +#if !STATIC_LIBRARY +public extension GameType +{ + static let ds = GameType("com.rileytestut.delta.game.ds") +} + +public extension CheatType +{ + static let actionReplay = CheatType("ActionReplay") +} +#endif + +@objc public enum MelonDSGameInput: Int, Input +{ + case a = 1 + case b = 2 + case select = 4 + case start = 8 + case right = 16 + case left = 32 + case up = 64 + case down = 128 + case r = 256 + case l = 512 + case x = 1024 + case y = 2048 + + case touchScreenX = 4096 + case touchScreenY = 8192 + + case lid = 16_384 + + public var type: InputType { + return .game(.ds) + } + + public var isContinuous: Bool { + switch self + { + case .touchScreenX, .touchScreenY: return true + default: return false + } + } +} + +public struct MelonDS: DeltaCoreProtocol +{ + public static let core = MelonDS() + + public var name: String { "melonDS" } + public var identifier: String { "com.rileytestut.MelonDSDeltaCore" } + + public var gameType: GameType { GameType.ds } + public var gameInputType: Input.Type { MelonDSGameInput.self } + public var gameSaveFileExtension: String { "dsv" } + + public let audioFormat = AVAudioFormat(commonFormat: .pcmFormatInt16, sampleRate: 32768, channels: 2, interleaved: true)! + public let videoFormat = VideoFormat(format: .bitmap(.bgra8), dimensions: CGSize(width: 256, height: 384)) + + public var supportedCheatFormats: Set { + let actionReplayFormat = CheatFormat(name: NSLocalizedString("Action Replay", comment: ""), format: "XXXXXXXX YYYYYYYY", type: .actionReplay) + return [actionReplayFormat] + } + + public var emulatorBridge: EmulatorBridging { MelonDSEmulatorBridge.shared } + + private init() + { + } +} + +// Expose DeltaCore properties to Objective-C. +public extension MelonDSEmulatorBridge +{ + @objc(dsResources) class var __dsResources: Bundle { + return MelonDS.core.resourceBundle + } + + @objc(coreDirectoryURL) class var __coreDirectoryURL: URL { + return _coreDirectoryURL + } +} + +private let _coreDirectoryURL = MelonDS.core.directoryURL diff --git a/Cores/MelonDSDeltaCore/Sources/MelonDSDeltaCore.h b/Cores/MelonDSDeltaCore/Sources/MelonDSDeltaCore.h new file mode 100644 index 000000000..3d800caed --- /dev/null +++ b/Cores/MelonDSDeltaCore/Sources/MelonDSDeltaCore.h @@ -0,0 +1,20 @@ +// +// MelonDSDeltaCore.h +// MelonDSDeltaCore +// +// Created by Riley Testut on 10/15/19. +// Copyright © 2019 Riley Testut. All rights reserved. +// + +#import + +//! Project version number for MelonDSDeltaCore. +FOUNDATION_EXPORT double MelonDSDeltaCoreVersionNumber; + +//! Project version string for MelonDSDeltaCore. +FOUNDATION_EXPORT const unsigned char MelonDSDeltaCoreVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#if !STATIC_LIBRARY +#import +#endif diff --git a/Cores/MelonDSDeltaCore/Sources/Types/MelonDSTypes.h b/Cores/MelonDSDeltaCore/Sources/Types/MelonDSTypes.h new file mode 100644 index 000000000..2d3574e83 --- /dev/null +++ b/Cores/MelonDSDeltaCore/Sources/Types/MelonDSTypes.h @@ -0,0 +1,14 @@ +// +// MelonDSTypes.h +// MelonDSDeltaCore +// +// Created by Riley Testut on 4/2/20. +// Copyright © 2020 Riley Testut. All rights reserved. +// + +#import + +// Extensible Enums +FOUNDATION_EXPORT GameType const GameTypeDS NS_SWIFT_NAME(ds); + +FOUNDATION_EXPORT CheatType const CheatTypeActionReplay; diff --git a/Cores/MelonDSDeltaCore/Sources/Types/MelonDSTypes.m b/Cores/MelonDSDeltaCore/Sources/Types/MelonDSTypes.m new file mode 100644 index 000000000..359759a29 --- /dev/null +++ b/Cores/MelonDSDeltaCore/Sources/Types/MelonDSTypes.m @@ -0,0 +1,13 @@ +// +// MelonDSTypes.m +// MelonDSDeltaCore +// +// Created by Riley Testut on 4/2/20. +// Copyright © 2020 Riley Testut. All rights reserved. +// + +#import "MelonDSTypes.h" + +GameType const GameTypeDS = @"com.rileytestut.delta.game.ds"; + +CheatType const CheatTypeActionReplay = @"ActionReplay"; diff --git a/Cores/MelonDSDeltaCore/melonDS b/Cores/MelonDSDeltaCore/melonDS new file mode 160000 index 000000000..c353e7760 --- /dev/null +++ b/Cores/MelonDSDeltaCore/melonDS @@ -0,0 +1 @@ +Subproject commit c353e7760be6a61f6dc34551d5b10637aafaa04b diff --git a/Cores/Mupen64PlusDeltaCore/Derived/InfoPlists/Mupen64PlusDeltaCore.plist b/Cores/Mupen64PlusDeltaCore/Derived/InfoPlists/Mupen64PlusDeltaCore.plist new file mode 100644 index 000000000..323e5ecfc --- /dev/null +++ b/Cores/Mupen64PlusDeltaCore/Derived/InfoPlists/Mupen64PlusDeltaCore.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/Cores/Mupen64PlusDeltaCore/Derived/InfoPlists/mupen64plus-rsp-hle.plist b/Cores/Mupen64PlusDeltaCore/Derived/InfoPlists/mupen64plus-rsp-hle.plist new file mode 100644 index 000000000..323e5ecfc --- /dev/null +++ b/Cores/Mupen64PlusDeltaCore/Derived/InfoPlists/mupen64plus-rsp-hle.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/Cores/Mupen64PlusDeltaCore/Derived/InfoPlists/mupen64plus-video-GLideN64.plist b/Cores/Mupen64PlusDeltaCore/Derived/InfoPlists/mupen64plus-video-GLideN64.plist new file mode 100644 index 000000000..323e5ecfc --- /dev/null +++ b/Cores/Mupen64PlusDeltaCore/Derived/InfoPlists/mupen64plus-video-GLideN64.plist @@ -0,0 +1,22 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/Cores/Mupen64PlusDeltaCore/Derived/Sources/Bundle+Mupen64PlusDeltaCore.swift b/Cores/Mupen64PlusDeltaCore/Derived/Sources/Bundle+Mupen64PlusDeltaCore.swift new file mode 100644 index 000000000..f1557a7ac --- /dev/null +++ b/Cores/Mupen64PlusDeltaCore/Derived/Sources/Bundle+Mupen64PlusDeltaCore.swift @@ -0,0 +1,23 @@ +// swiftlint:disable all +import Foundation + +// MARK: - Swift Bundle Accessor + +private class BundleFinder {} + +extension Foundation.Bundle { + /// Since Mupen64PlusDeltaCore is a framework, the bundle containing the resources is copied into the final product. + static var module: Bundle = { + return Bundle(for: BundleFinder.self) + }() +} + +// MARK: - Objective-C Bundle Accessor + +@objc +public class Mupen64PlusDeltaCoreResources: NSObject { + @objc public class var bundle: Bundle { + return .module + } +} +// swiftlint:enable all \ No newline at end of file diff --git a/Cores/Mupen64PlusDeltaCore/Mupen64Plus/GLideN64 b/Cores/Mupen64PlusDeltaCore/Mupen64Plus/GLideN64 new file mode 160000 index 000000000..86738998d --- /dev/null +++ b/Cores/Mupen64PlusDeltaCore/Mupen64Plus/GLideN64 @@ -0,0 +1 @@ +Subproject commit 86738998d393ad211604c6701358227ee1de6940 diff --git a/Cores/Mupen64PlusDeltaCore/Mupen64Plus/libpng b/Cores/Mupen64PlusDeltaCore/Mupen64Plus/libpng new file mode 160000 index 000000000..dbe3e0c43 --- /dev/null +++ b/Cores/Mupen64PlusDeltaCore/Mupen64Plus/libpng @@ -0,0 +1 @@ +Subproject commit dbe3e0c43e549a1602286144d94b0666549b18e6 diff --git a/Cores/Mupen64PlusDeltaCore/Mupen64Plus/mupen64plus-core b/Cores/Mupen64PlusDeltaCore/Mupen64Plus/mupen64plus-core new file mode 160000 index 000000000..aa9903b54 --- /dev/null +++ b/Cores/Mupen64PlusDeltaCore/Mupen64Plus/mupen64plus-core @@ -0,0 +1 @@ +Subproject commit aa9903b5446a9b50b8f5a31f927ca98e5a33a230 diff --git a/Cores/Mupen64PlusDeltaCore/Mupen64Plus/mupen64plus-rsp-hle b/Cores/Mupen64PlusDeltaCore/Mupen64Plus/mupen64plus-rsp-hle new file mode 160000 index 000000000..e653930d7 --- /dev/null +++ b/Cores/Mupen64PlusDeltaCore/Mupen64Plus/mupen64plus-rsp-hle @@ -0,0 +1 @@ +Subproject commit e653930d75019f88dd386a3d534008d89dbc12ff diff --git a/Cores/Mupen64PlusDeltaCore/Project.swift b/Cores/Mupen64PlusDeltaCore/Project.swift new file mode 100644 index 000000000..5a00ba928 --- /dev/null +++ b/Cores/Mupen64PlusDeltaCore/Project.swift @@ -0,0 +1,235 @@ +import ProjectDescription + +let project = Project(name: "Mupen64PlusDeltaCore", + packages: [], + targets: [ + Target(name: "Mupen64PlusDeltaCore", + platform: .iOS, + product: .framework, + bundleId: "com.rileytestut.mupen64PlusDeltaCore", + deploymentTarget: .iOS(targetVersion: "12.0", devices: [.iphone, .ipad]), + infoPlist: .extendingDefault(with: [:]), + sources: [ + "Sources/**/*.{m,swift}", + "Mupen64Plus/mupen64plus-core/src/device/dd/dd_controller.c", + "Mupen64Plus/mupen64plus-core/src/backends/api/video_capture_backend.c", + "Mupen64Plus/mupen64plus-core/src/device/controllers/paks/biopak.c", + "Mupen64Plus/mupen64plus-core/src/backends/dummy_video_capture.c", + ], + resources: ["Resources/**/*.{deltamapping,deltaskin}", "Mupen64Plus/**/*.ini"], + headers: Headers(public: ["Sources/Mupen64PlusDeltaCore.h", "Sources/Bridge/Mupen64PlusEmulatorBridge.h"], project: "Sources/Types/Mupen64PlusTypes.h"), + dependencies: [ + .project(target: "DeltaCore", path: "../DeltaCore"), + .target(name: "libMupen64Plus") + ], + settings: Settings(base: [ + "HEADER_SEARCH_PATHS": "\"$(SRCROOT)/Mupen64Plus/mupen64plus-core/subprojects\"/** \"$(SRCROOT)/libMupen64Plus/SDL\" \"$(SRCROOT)/Mupen64Plus/mupen64plus-core/src\" \"$(SRCROOT)/Mupen64Plus/mupen64plus-core/src/api\" \"$(SRCROOT)/Mupen64Plus/GLideN64/src\"", + "USER_HEADER_SEARCH_PATHS": "\"$(SRCROOT)/Mupen64Plus/mupen64plus-core/src\" \"$(SRCROOT)/Mupen64Plus/mupen64plus-core/src/api\" \"$(SRCROOT)/Mupen64Plus/GLideN64/src\"", + ])), + Target(name: "libMupen64Plus", + platform: .iOS, + product: .staticLibrary, + bundleId: "com.rileytestut.libMupen64Plus", + deploymentTarget: .iOS(targetVersion: "12.0", devices: [.iphone, .ipad]), + infoPlist: .extendingDefault(with: [:]), + sources: [ + "libMupen64Plus/**/*.{h,m,mm,c,cpp}", + SourceFileGlob("Mupen64Plus/mupen64plus-core/**/*.{h,m,mm,c,cpp}", excluding: [ + "Mupen64Plus/mupen64plus-core/src/api/vidext.{c,cpp}", + "Mupen64Plus/mupen64plus-core/src/asm_defines/*.{c,cpp}", + "Mupen64Plus/mupen64plus-core/src/backends/api/*.{c,cpp}", + "Mupen64Plus/mupen64plus-core/src/backends/dummy_video_capture.{c,cpp}", + "Mupen64Plus/mupen64plus-core/src/backends/opencv_video_capture.{c,cpp}", + "Mupen64Plus/mupen64plus-core/src/debugger/*.{c,cpp}", + "Mupen64Plus/mupen64plus-core/src/device/controllers/paks/biopak.{c,cpp}", + "Mupen64Plus/mupen64plus-core/src/device/dd/*.{c,cpp}", + "Mupen64Plus/mupen64plus-core/src/device/r4300/new_dynarec/**/*.{c,cpp}", + "Mupen64Plus/mupen64plus-core/src/device/r4300/x86/*.{c,cpp}", + "Mupen64Plus/mupen64plus-core/src/device/r4300/x86_64/*.{c,cpp}", + "Mupen64Plus/mupen64plus-core/src/device/r4300/instr_counters.{c,cpp}", + "Mupen64Plus/mupen64plus-core/src/device/r4300/recomp.{c,cpp}", + "Mupen64Plus/mupen64plus-core/src/main/eventloop.{c,cpp}", + "Mupen64Plus/mupen64plus-core/src/main/screenshot.{c,cpp}", + "Mupen64Plus/mupen64plus-core/src/osal/dynamiclib_*.{c,cpp}", + "Mupen64Plus/mupen64plus-core/src/osal/files_unix.{c,cpp}", + "Mupen64Plus/mupen64plus-core/src/osal/files_win32.{c,cpp}", + "Mupen64Plus/mupen64plus-core/src/osd/*.{c,cpp}", + "Mupen64Plus/mupen64plus-core/subprojects/oglft/*.{c,cpp}", + "Mupen64Plus/mupen64plus-core/tools/*.{c,cpp}" + ]), + ], + settings: Settings(base: [ + "OTHER_CFLAGS": "$(inherited) -DM64P_PARALLEL=1 -DIN_OPENEMU=1 -DNO_ASM=1 -DM64P_CORE_PROTOTYPES=1 -DNDEBUG=1 -DPIC=1 -flto -fomit-frame-pointer -DUSE_GLES=1", + "HEADER_SEARCH_PATHS": "\"$(SRCROOT)/Mupen64Plus/mupen64plus-core/src\" \"$(SRCROOT)/libMupen64Plus/SDL\" \"$(SRCROOT)/Mupen64Plus/mupen64plus-core/subprojects\"/**", + ])), + Target(name: "mupen64plus-rsp-hle", + platform: .iOS, + product: .framework, + bundleId: "com.rileytestut.mupen64PlusRSPHLE", + deploymentTarget: .iOS(targetVersion: "12.0", devices: [.iphone, .ipad]), + infoPlist: .extendingDefault(with: [:]), + sources: [ + "Sources/mupen64plus-rsp-hle-plugin.c", + SourceFileGlob("Mupen64Plus/mupen64plus-rsp-hle/src/*.{h,c}", excluding: [ + "Mupen64Plus/mupen64plus-rsp-hle/src/osal_dynamiclib_unix.c", + "Mupen64Plus/mupen64plus-rsp-hle/src/osal_dynamiclib_win32.c", + "Mupen64Plus/mupen64plus-rsp-hle/src/plugin.c", + "Mupen64Plus/mupen64plus-rsp-hle/src/memory.h" + ]), + ], + headers: Headers(project: ["Mupen64Plus/mupen64plus-rsp-hle/src/**/*"]), + settings: Settings(base: [ + "HEADER_SEARCH_PATHS": "\"$(SRCROOT)/Mupen64Plus/mupen64plus-core/src/api\"", + "OTHER_CFLAGS": "-fno-strict-aliasing -DGCC -pthread -fPIC -D__unix__ -ffast-math", + ])), + Target(name: "mupen64plus-video-GLideN64", + platform: .iOS, + product: .framework, + bundleId: "com.rileytestut.mupen64PlusVideoGlideN64", + deploymentTarget: .iOS(targetVersion: "12.0", devices: [.iphone, .ipad]), + infoPlist: .extendingDefault(with: [:]), + sources: [ + "Sources/mupen64plus-video-GLideN64-plugin.cpp", + "**/3DMath.cpp", + "**/ClipPolygon.cpp", + "**/ColorBufferReader.cpp", + "**/ColorBufferToRDRAM.cpp", + "**/Combiner.cpp", + "**/CombinerKey.cpp", + "**/CombinerProgram.cpp", + "**/CommonAPIImpl_common.cpp", + "**/Config.cpp", + "**/Context.cpp", + "**/convert.cpp", + "**/CRC_OPT.cpp", + "**/DebugDump.cpp", + "**/Debugger.cpp", + "**/DepthBuffer.cpp", + "**/DepthBufferRender.cpp", + "**/DepthBufferToRDRAM.cpp", + "**/DisplayLoadProgress.cpp", + "**/DisplayWindow.cpp", + "**/F3D.cpp", + "**/F3DAM.cpp", + "**/F3DBETA.cpp", + "**/F3DDKR.cpp", + "**/F3DEX.cpp", + "**/F3DEX2.cpp", + "**/F3DEX2ACCLAIM.cpp", + "**/F3DEX2CBFD.cpp", + "**/F3DFLX2.cpp", + "**/F3DGOLDEN.cpp", + "**/F3DPD.cpp", + "**/F3DSETA.cpp", + "**/F3DTEXA.cpp", + "**/F3DZEX2.cpp", + "**/F5Indi_Naboo.cpp", + "**/F5Rogue.cpp", + "**/FrameBuffer.cpp", + "**/FrameBufferInfo.cpp", + "**/GBI.cpp", + "**/gDP.cpp", + "**/GLFunctions.cpp", + "**/GLideN64.cpp", + "**/glsl_CombinerInputs.cpp", + "**/glsl_CombinerProgramBuilder.cpp", + "**/glsl_CombinerProgramImpl.cpp", + "**/glsl_CombinerProgramUniformFactory.cpp", + "**/glsl_FXAA.cpp", + "**/glsl_ShaderStorage.cpp", + "**/glsl_SpecialShadersFactory.cpp", + "**/glsl_Utils.cpp", + "**/GraphicsDrawer.cpp", + "**/gSP.cpp", + "**/Keys.cpp", + "**/L3D.cpp", + "**/L3DEX.cpp", + "**/L3DEX2.cpp", + "**/Log_ios.mm", + "**/MemoryStatus_mupenplus.cpp", + "**/mupen64plus_DisplayWindow.cpp", + "**/N64.cpp", + "**/NoiseTexture.cpp", + "**/ObjectHandle.cpp", + "**/opengl_Attributes.cpp", + "**/opengl_BufferedDrawer.cpp", + "**/opengl_BufferManipulationObjectFactory.cpp", + "**/opengl_CachedFunctions.cpp", + "**/opengl_ColorBufferReaderWithBufferStorage.cpp", + "**/opengl_ColorBufferReaderWithPixelBuffer.cpp", + "**/opengl_ColorBufferReaderWithReadPixels.cpp", + "**/opengl_ContextImpl.cpp", + "**/opengl_GLInfo.cpp", + "**/opengl_Parameters.cpp", + "**/opengl_TextureManipulationObjectFactory.cpp", + "**/opengl_UnbufferedDrawer.cpp", + "**/opengl_Utils.cpp", + "**/osal_files_ios.mm", + "**/PaletteTexture.cpp", + "**/Performance.cpp", + "**/png.c", + "**/pngerror.c", + "**/pngget.c", + "**/pngmem.c", + "**/pngpread.c", + "**/pngread.c", + "**/pngrio.c", + "**/pngrtran.c", + "**/pngrutil.c", + "**/pngset.c", + "**/pngtest.c", + "**/pngtrans.c", + "**/pngwio.c", + "**/pngwrite.c", + "**/pngwtran.c", + "**/pngwutil.c", + "**/PostProcessor.cpp", + "**/RDP.cpp", + "**/RDRAMtoColorBuffer.cpp", + "**/RSP_LoadMatrix.cpp", + "**/RSP.cpp", + "**/S2DEX.cpp", + "**/S2DEX2.cpp", + "**/SoftwareRender.cpp", + "**/T3DUX.cpp", + "**/TexrectDrawer.cpp", + "**/TextDrawerStub.cpp", + "**/TextureFilterHandler.cpp", + "**/TextureFilters_2xsai.cpp", + "**/TextureFilters_hq2x.cpp", + "**/TextureFilters_hq4x.cpp", + "**/TextureFilters_xbrz.cpp", + "**/TextureFilters.cpp", + "**/Textures.cpp", + "**/Turbo3D.cpp", + "**/TxCache.cpp", + "**/TxDbg_ios.mm", + "**/TxFilter.cpp", + "**/TxFilterExport.cpp", + "**/TxHiResCache.cpp", + "**/TxImage.cpp", + "**/TxQuantize.cpp", + "**/TxReSample.cpp", + "**/TxTexCache.cpp", + "**/TxUtil.cpp", + "**/txWidestringWrapper.cpp", + "**/VI.cpp", + "**/xxhash.c", + "**/ZlutTexture.cpp", + "**/ZSort.cpp", + "**/ZSortBOSS.cpp", + ], + headers: Headers(private: ["**/*"]), + dependencies: [ + .sdk(name: "OpenGLES.framework", status: .required), + .sdk(name: "libz.tbd"), + ], + settings: Settings(base: [ + "HEADER_SEARCH_PATHS": "\"$(SRCROOT)/Mupen64Plus/GLideN64/src/\" \"$(SRCROOT)/Mupen64Plus/GLideN64/src/inc/\"", + "USER_HEADER_SEARCH_PATHS": "\"$(SRCROOT)/Mupen64Plus/GLideN64/src/\" \"$(SRCROOT)/Mupen64Plus/mupen64plus-core/src\"", + "ALWAYS_SEARCH_USER_PATHS": "YES", + "OTHER_CFLAGS": "-fno-strict-aliasing -DGCC -pthread -fPIC -D__unix__ -ffast-math -D__VEC4_OPT -fvisibility=hidden", + "OTHER_LDFLAGS": "-Wl,-exported_symbol,_Video_PluginStartup,-exported_symbol,_Video_PluginShutdown,-exported_symbol,_Video_PluginGetVersion,-exported_symbol,_Video_RomOpen,-exported_symbol,_Video_RomClosed,-exported_symbol,_ConfigGetSharedDataFilepath,-exported_symbol,_ConfigGetUserConfigPath,-exported_symbol,_ConfigGetUserCachePath,-exported_symbol,_ConfigGetUserDataPath,-exported_symbol,_ConfigOpenSection,-exported_symbol,_ConfigDeleteSection,-exported_symbol,_ConfigSaveSection,-exported_symbol,_ConfigSaveFile,-exported_symbol,_ConfigSetDefaultInt,-exported_symbol,_ConfigSetDefaultFloat,-exported_symbol,_ConfigSetDefaultBool,-exported_symbol,_ConfigSetDefaultString,-exported_symbol,_ConfigGetParamInt,-exported_symbol,_ConfigGetParamFloat,-exported_symbol,_ConfigGetParamBool,-exported_symbol,_ConfigGetParamString,-exported_symbol,_ConfigExternalGetParameter,-exported_symbol,_ConfigExternalOpen,-exported_symbol,_ConfigExternalClose,-exported_symbol,_VidExt_Init,-exported_symbol,_VidExt_Quit,-exported_symbol,_VidExt_ListFullscreenModes,-exported_symbol,_VidExt_SetVideoMode,-exported_symbol,_VidExt_SetCaption,-exported_symbol,_VidExt_ToggleFullScreen,-exported_symbol,_VidExt_ResizeWindow,-exported_symbol,_VidExt_GL_GetProcAddress,-exported_symbol,_VidExt_GL_SetAttribute,-exported_symbol,_VidExt_GL_GetAttribute,-exported_symbol,_VidExt_GL_SwapBuffers,-exported_symbol,_ChangeWindow,-exported_symbol,_InitiateGFX,-exported_symbol,_MoveScreen,-exported_symbol,_ProcessDList,-exported_symbol,_ProcessRDPList,-exported_symbol,_ShowCFB,-exported_symbol,_UpdateScreen,-exported_symbol,_ViStatusChanged,-exported_symbol,_ViWidthChanged,-exported_symbol,_ReadScreen2,-exported_symbol,_SetRenderingCallback,-exported_symbol,_FBRead,-exported_symbol,_FBWrite,-exported_symbol,_FBGetFrameBufferInfo,-exported_symbol,_ResizeVideoOutput,-exported_symbol,_RSP_PluginStartup,-exported_symbol,_RSP_PluginShutdown,-exported_symbol,_RSP_PluginGetVersion,-exported_symbol,_DoRspCycles,-exported_symbol,_InitiateRSP,-exported_symbol,_RSP_RomClosed,-exported_symbol,_CoreGetAPIVersions,-exported_symbol,_ConfigGetParameter,-exported_symbol,_ConfigSetParameter,-exported_symbol,_CoreDoCommand", + "GCC_PREPROCESSOR_DEFINITIONS": "MUPENPLUSAPI TXFILTER_LIB OS_IOS GLESX GL_ERROR_DEBUG GL_DEBUG GLESX PNG_ARM_NEON_OPT=0", + ])), + ]) diff --git a/Cores/Mupen64PlusDeltaCore/Resources/Standard.deltamapping b/Cores/Mupen64PlusDeltaCore/Resources/Standard.deltamapping new file mode 100644 index 000000000..1d0d4c8d9 Binary files /dev/null and b/Cores/Mupen64PlusDeltaCore/Resources/Standard.deltamapping differ diff --git a/Cores/Mupen64PlusDeltaCore/Resources/Standard.deltaskin b/Cores/Mupen64PlusDeltaCore/Resources/Standard.deltaskin new file mode 100644 index 000000000..c003b6ef3 Binary files /dev/null and b/Cores/Mupen64PlusDeltaCore/Resources/Standard.deltaskin differ diff --git a/Cores/Mupen64PlusDeltaCore/Resources/info.json b/Cores/Mupen64PlusDeltaCore/Resources/info.json new file mode 100644 index 000000000..1399a95d6 --- /dev/null +++ b/Cores/Mupen64PlusDeltaCore/Resources/info.json @@ -0,0 +1,848 @@ +{ + "name" : "Standard N64", + "identifier" : "com.delta.n64.standard", + "gameTypeIdentifier" : "com.rileytestut.delta.game.n64", + "debug" : false, + "representations" : { + "iphone" : { + "standard": { + "portrait": { + "assets": { + "resizable": "iphone_portrait.pdf" + }, + "items": [ + { + "thumbstick": { + "name": "portrait_thumbstick.pdf", + "width": 85, + "height": 87 + }, + "inputs": { + "up": "analogStickUp", + "down": "analogStickDown", + "left": "analogStickLeft", + "right": "analogStickRight" + }, + "frame": { + "x": 39, + "y": 77, + "width": 71, + "height": 71 + }, + "extendedEdges": { + "top": 20, + "bottom": 20, + "left": 20, + "right": 20 + } + }, + { + "inputs": { + "up": "up", + "down": "down", + "left": "left", + "right": "right" + }, + "frame": { + "x": 17, + "y": 195, + "width": 120, + "height": 120 + }, + "extendedEdges": { + "top": 15, + "bottom": 15, + "left": 17, + "right": 7 + } + }, + { + "inputs": [ + "a" + ], + "frame": { + "x": 247, + "y": 122, + "width": 56, + "height": 56 + }, + "extendedEdges": { + "right": 17, + "top": 15 + } + }, + { + "inputs": [ + "b" + ], + "frame": { + "x": 171, + "y": 98, + "width": 56, + "height": 56 + } + }, + { + "inputs": [ + "z" + ], + "frame": { + "x": 229, + "y": 50, + "width": 56, + "height": 56 + }, + "extendedEdges": { + "bottom": 15 + } + }, + { + "inputs": [ + "l" + ], + "frame": { + "x": 0, + "y": 0, + "width": 95, + "height": 30 + } + }, + { + "inputs": [ + "r" + ], + "frame": { + "x": 225, + "y": 0, + "width": 95, + "height": 30 + } + }, + { + "inputs": [ + "start" + ], + "frame": { + "x": 144, + "y": 179, + "width": 32, + "height": 32 + }, + "extendedEdges": { + "left": 0 + } + }, + { + "inputs": [ + "menu" + ], + "frame": { + "x": 150, + "y": 34, + "width": 18, + "height": 18 + } + }, + { + "inputs": [ + "cUp" + ], + "frame": { + "x": 215, + "y": 197, + "width": 42, + "height": 42 + }, + "extendedEdges": { + "bottom": 0, + "left": 0, + "right": 0 + } + }, + { + "inputs": [ + "cDown" + ], + "frame": { + "x": 215, + "y": 276, + "width": 42, + "height": 42 + }, + "extendedEdges": { + "top": 0, + "left": 0, + "right": 0 + } + }, + { + "inputs": [ + "cLeft" + ], + "frame": { + "x": 177, + "y": 236, + "width": 42, + "height": 42 + }, + "extendedEdges": { + "top": 0, + "bottom": 0, + "right": 0 + } + }, + { + "inputs": [ + "cRight" + ], + "frame": { + "x": 255, + "y": 237, + "width": 42, + "height": 42 + }, + "extendedEdges": { + "top": 0, + "bottom": 0, + "left": 0, + "right": 23 + } + } + ], + "mappingSize": { + "width": 320, + "height": 328 + }, + "extendedEdges": { + "top": 7, + "bottom": 7, + "left": 7, + "right": 7 + } + }, + "landscape": { + "assets": { + "resizable": "iphone_landscape.pdf" + }, + "items": [ + { + "thumbstick": { + "name": "thumbstick_landscape.pdf", + "width": 78, + "height": 78 + }, + "inputs": { + "up": "analogStickUp", + "down": "analogStickDown", + "left": "analogStickLeft", + "right": "analogStickRight" + }, + "frame": { + "x": 34, + "y": 103, + "width": 86, + "height": 86 + }, + "extendedEdges": { + "top": 30, + "bottom": 30, + "left": 34, + "right": 30 + } + }, + { + "inputs": { + "up": "up", + "down": "down", + "left": "left", + "right": "right" + }, + "frame": { + "x": 15, + "y": 237, + "width": 123, + "height": 123 + } + }, + { + "inputs": [ + "a" + ], + "frame": { + "x": 597, + "y": 158, + "width": 56, + "height": 56 + } + }, + { + "inputs": [ + "b" + ], + "frame": { + "x": 522, + "y": 134, + "width": 56, + "height": 56 + } + }, + { + "inputs": [ + "z" + ], + "frame": { + "x": 580, + "y": 86, + "width": 56, + "height": 56 + } + }, + { + "inputs": [ + "l" + ], + "frame": { + "x": 15, + "y": 14, + "width": 100, + "height": 41 + } + }, + { + "inputs": [ + "r" + ], + "frame": { + "x": 552, + "y": 14, + "width": 100, + "height": 41 + } + }, + { + "inputs": [ + "start" + ], + "frame": { + "x": 297, + "y": 334, + "width": 73, + "height": 26 + } + }, + { + "inputs": [ + "menu" + ], + "frame": { + "x": 299, + "y": 15, + "width": 73, + "height": 26 + } + }, + { + "inputs": [ + "cUp" + ], + "frame": { + "x": 575, + "y": 246, + "width": 40, + "height": 40 + }, + "extendedEdges": { + "bottom": 0, + "left": 0, + "right": 0 + } + }, + { + "inputs": [ + "cDown" + ], + "frame": { + "x": 575, + "y": 320, + "width": 40, + "height": 40 + }, + "extendedEdges": { + "top": 0, + "left": 0, + "right": 0 + } + }, + { + "inputs": [ + "cLeft" + ], + "frame": { + "x": 538, + "y": 283, + "width": 40, + "height": 40 + }, + "extendedEdges": { + "top": 0, + "bottom": 0, + "right": 0 + } + }, + { + "inputs": [ + "cRight" + ], + "frame": { + "x": 612, + "y": 283, + "width": 40, + "height": 40 + }, + "extendedEdges": { + "top": 0, + "bottom": 0, + "left": 0 + } + } + ], + "mappingSize": { + "width": 667, + "height": 375 + }, + "extendedEdges": { + "top": 15, + "bottom": 15, + "left": 15, + "right": 15 + }, + "translucent": true + } + }, + "edgeToEdge" : { + "portrait": { + "assets": { + "resizable": "iphone_edgetoedge_portrait.pdf" + }, + "items": [ + { + "thumbstick": { + "name": "portrait_thumbstick.pdf", + "width": 85, + "height": 87 + }, + "inputs": { + "up": "analogStickUp", + "down": "analogStickDown", + "left": "analogStickLeft", + "right": "analogStickRight" + }, + "frame": { + "x": 39, + "y": 77, + "width": 71, + "height": 71 + }, + "extendedEdges": { + "top": 20, + "bottom": 20, + "left": 20, + "right": 20 + } + }, + { + "inputs": { + "up": "up", + "down": "down", + "left": "left", + "right": "right" + }, + "frame": { + "x": 17, + "y": 195, + "width": 120, + "height": 120 + }, + "extendedEdges": { + "top": 15, + "bottom": 15, + "left": 17, + "right": 7 + } + }, + { + "inputs": [ + "a" + ], + "frame": { + "x": 247, + "y": 122, + "width": 56, + "height": 56 + }, + "extendedEdges": { + "right": 17, + "top": 15 + } + }, + { + "inputs": [ + "b" + ], + "frame": { + "x": 171, + "y": 98, + "width": 56, + "height": 56 + } + }, + { + "inputs": [ + "z" + ], + "frame": { + "x": 229, + "y": 50, + "width": 56, + "height": 56 + }, + "extendedEdges": { + "bottom": 15 + } + }, + { + "inputs": [ + "l" + ], + "frame": { + "x": 0, + "y": 0, + "width": 95, + "height": 30 + } + }, + { + "inputs": [ + "r" + ], + "frame": { + "x": 225, + "y": 0, + "width": 95, + "height": 30 + } + }, + { + "inputs": [ + "start" + ], + "frame": { + "x": 144, + "y": 179, + "width": 32, + "height": 32 + }, + "extendedEdges": { + "left": 0 + } + }, + { + "inputs": [ + "menu" + ], + "frame": { + "x": 150, + "y": 34, + "width": 18, + "height": 18 + } + }, + { + "inputs": [ + "cUp" + ], + "frame": { + "x": 215, + "y": 197, + "width": 42, + "height": 42 + }, + "extendedEdges": { + "bottom": 0, + "left": 0, + "right": 0 + } + }, + { + "inputs": [ + "cDown" + ], + "frame": { + "x": 215, + "y": 276, + "width": 42, + "height": 42 + }, + "extendedEdges": { + "top": 0, + "left": 0, + "right": 0 + } + }, + { + "inputs": [ + "cLeft" + ], + "frame": { + "x": 177, + "y": 236, + "width": 42, + "height": 42 + }, + "extendedEdges": { + "top": 0, + "bottom": 0, + "right": 0 + } + }, + { + "inputs": [ + "cRight" + ], + "frame": { + "x": 255, + "y": 237, + "width": 42, + "height": 42 + }, + "extendedEdges": { + "top": 0, + "bottom": 0, + "left": 0, + "right": 23 + } + } + ], + "mappingSize": { + "width": 320, + "height": 362 + }, + "extendedEdges": { + "top": 7, + "bottom": 7, + "left": 7, + "right": 7 + } + }, + "landscape": { + "assets": { + "resizable": "iphone_edgetoedge_landscape.pdf" + }, + "items": [ + { + "thumbstick": { + "name": "thumbstick_landscape.pdf", + "width": 78, + "height": 78 + }, + "inputs": { + "up": "analogStickUp", + "down": "analogStickDown", + "left": "analogStickLeft", + "right": "analogStickRight" + }, + "frame": { + "x": 49, + "y": 103, + "width": 86, + "height": 86 + }, + "extendedEdges": { + "top": 30, + "bottom": 30, + "left": 49, + "right": 30 + } + }, + { + "inputs": { + "up": "up", + "down": "down", + "left": "left", + "right": "right" + }, + "frame": { + "x": 30, + "y": 237, + "width": 123, + "height": 123 + }, + "extendedEdges": { + "left": 30 + } + }, + { + "inputs": [ + "a" + ], + "frame": { + "x": 727, + "y": 158, + "width": 56, + "height": 56 + }, + "extendedEdges": { + "right": 30 + } + }, + { + "inputs": [ + "b" + ], + "frame": { + "x": 652, + "y": 134, + "width": 56, + "height": 56 + } + }, + { + "inputs": [ + "z" + ], + "frame": { + "x": 710, + "y": 86, + "width": 56, + "height": 56 + }, + "extendedEdges": { + "right": 46 + } + }, + { + "inputs": [ + "l" + ], + "frame": { + "x": 15, + "y": 14, + "width": 100, + "height": 41 + } + }, + { + "inputs": [ + "r" + ], + "frame": { + "x": 697, + "y": 14, + "width": 100, + "height": 41 + } + }, + { + "inputs": [ + "start" + ], + "frame": { + "x": 370, + "y": 334, + "width": 73, + "height": 26 + } + }, + { + "inputs": [ + "menu" + ], + "frame": { + "x": 370, + "y": 15, + "width": 73, + "height": 26 + } + }, + { + "inputs": [ + "cUp" + ], + "frame": { + "x": 705, + "y": 246, + "width": 40, + "height": 40 + }, + "extendedEdges": { + "bottom": 0, + "left": 0, + "right": 0 + } + }, + { + "inputs": [ + "cDown" + ], + "frame": { + "x": 705, + "y": 320, + "width": 40, + "height": 40 + }, + "extendedEdges": { + "top": 0, + "left": 0, + "right": 0 + } + }, + { + "inputs": [ + "cLeft" + ], + "frame": { + "x": 668, + "y": 283, + "width": 40, + "height": 40 + }, + "extendedEdges": { + "top": 0, + "bottom": 0, + "right": 0 + } + }, + { + "inputs": [ + "cRight" + ], + "frame": { + "x": 742, + "y": 283, + "width": 40, + "height": 40 + }, + "extendedEdges": { + "top": 0, + "bottom": 0, + "left": 0, + "right": 30 + } + } + ], + "mappingSize": { + "width": 812, + "height": 375 + }, + "extendedEdges": { + "top": 15, + "bottom": 15, + "left": 15, + "right": 15 + }, + "translucent": true + } + } + } + } +} diff --git a/Cores/Mupen64PlusDeltaCore/Resources/iphone_edgetoedge_landscape.pdf b/Cores/Mupen64PlusDeltaCore/Resources/iphone_edgetoedge_landscape.pdf new file mode 100644 index 000000000..20e606599 Binary files /dev/null and b/Cores/Mupen64PlusDeltaCore/Resources/iphone_edgetoedge_landscape.pdf differ diff --git a/Cores/Mupen64PlusDeltaCore/Resources/iphone_edgetoedge_portrait.pdf b/Cores/Mupen64PlusDeltaCore/Resources/iphone_edgetoedge_portrait.pdf new file mode 100644 index 000000000..cebe51cd7 Binary files /dev/null and b/Cores/Mupen64PlusDeltaCore/Resources/iphone_edgetoedge_portrait.pdf differ diff --git a/Cores/Mupen64PlusDeltaCore/Resources/iphone_landscape.pdf b/Cores/Mupen64PlusDeltaCore/Resources/iphone_landscape.pdf new file mode 100644 index 000000000..f5eeedf29 Binary files /dev/null and b/Cores/Mupen64PlusDeltaCore/Resources/iphone_landscape.pdf differ diff --git a/Cores/Mupen64PlusDeltaCore/Resources/iphone_portrait.pdf b/Cores/Mupen64PlusDeltaCore/Resources/iphone_portrait.pdf new file mode 100644 index 000000000..77cf7fc7b Binary files /dev/null and b/Cores/Mupen64PlusDeltaCore/Resources/iphone_portrait.pdf differ diff --git a/Cores/Mupen64PlusDeltaCore/Resources/portrait_thumbstick.pdf b/Cores/Mupen64PlusDeltaCore/Resources/portrait_thumbstick.pdf new file mode 100644 index 000000000..44c4e3ea9 Binary files /dev/null and b/Cores/Mupen64PlusDeltaCore/Resources/portrait_thumbstick.pdf differ diff --git a/Cores/Mupen64PlusDeltaCore/Resources/thumbstick_landscape.pdf b/Cores/Mupen64PlusDeltaCore/Resources/thumbstick_landscape.pdf new file mode 100644 index 000000000..d6352ee48 Binary files /dev/null and b/Cores/Mupen64PlusDeltaCore/Resources/thumbstick_landscape.pdf differ diff --git a/Cores/Mupen64PlusDeltaCore/Sources/Bridge/Mupen64PlusEmulatorBridge.h b/Cores/Mupen64PlusDeltaCore/Sources/Bridge/Mupen64PlusEmulatorBridge.h new file mode 100644 index 000000000..edc32ced9 --- /dev/null +++ b/Cores/Mupen64PlusDeltaCore/Sources/Bridge/Mupen64PlusEmulatorBridge.h @@ -0,0 +1,29 @@ +// +// Mupen64PlusEmulatorBridge.h +// Mupen64PlusDeltaCore +// +// Created by Riley Testut on 3/27/19. +// Copyright © 2019 Riley Testut. All rights reserved. +// + +#import +#import + +@protocol DLTAEmulatorBridging; + +NS_ASSUME_NONNULL_BEGIN + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Weverything" // Silence "Cannot find protocol definition" warning due to forward declaration. +__attribute__((visibility("default"))) +@interface Mupen64PlusEmulatorBridge : NSObject +#pragma clang diagnostic pop + +@property (class, nonatomic, readonly) Mupen64PlusEmulatorBridge *sharedBridge; + +@property (nonatomic, readonly) AVAudioFormat *preferredAudioFormat; +@property (nonatomic, readonly) CGSize preferredVideoDimensions; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Cores/Mupen64PlusDeltaCore/Sources/Bridge/Mupen64PlusEmulatorBridge.m b/Cores/Mupen64PlusDeltaCore/Sources/Bridge/Mupen64PlusEmulatorBridge.m new file mode 100644 index 000000000..2d8a67b55 --- /dev/null +++ b/Cores/Mupen64PlusDeltaCore/Sources/Bridge/Mupen64PlusEmulatorBridge.m @@ -0,0 +1,953 @@ +// +// Mupen64PlusEmulatorBridge.m +// Mupen64PlusDeltaCore +// +// Created by Riley Testut on 3/27/19. +// Copyright © 2019 Riley Testut. All rights reserved. +// + +#import "Mupen64PlusEmulatorBridge.h" + +#import + +#if STATIC_LIBRARY +#import "Mupen64PlusDeltaCore-Swift.h" +#else +#import +#endif + +#define M64P_CORE_PROTOTYPES +#define N64_ANALOG_MAX 80 + +#include "api/m64p_common.h" +#include "api/m64p_config.h" +#include "api/m64p_frontend.h" +#include "api/m64p_vidext.h" +#include "api/callbacks.h" +#include "main/rom.h" +#include "main/savestates.h" +#include "main/cheat.h" +#include "osal/dynamiclib.h" +#include "main/version.h" +#include "main/main.h" +#include "osd.h" +#include "backends/api/storage_backend.h" +#include "backends/file_storage.h" + +#include "plugin/plugin.h" + +#import +#import + +m64p_error CALL Video_PluginStartup(m64p_dynlib_handle CoreLibHandle, void *Context, void (*DebugCallback)(void *, int, const char *)); +m64p_error CALL Video_PluginShutdown(void); +m64p_error CALL Video_PluginGetVersion(m64p_plugin_type *PluginType, int *PluginVersion, int *APIVersion, const char **PluginNamePtr, int *Capabilities); +int CALL Video_RomOpen(void); +void CALL Video_RomClosed(void); + +m64p_error CALL RSP_PluginStartup(m64p_dynlib_handle CoreLibHandle, void *Context, void (*DebugCallback)(void *, int, const char *)); +m64p_error CALL RSP_PluginShutdown(void); +m64p_error CALL RSP_PluginGetVersion(m64p_plugin_type *PluginType, int *PluginVersion, int *APIVersion, const char **PluginNamePtr, int *Capabilities); +void CALL RSP_RomClosed(void); + +@interface Mupen64PlusEmulatorBridge () +{ +@public + double inputs[20]; +} + +@property (nonatomic, copy, nullable, readwrite) NSURL *gameURL; + +@property (nonatomic, readonly) NSURL *gameSaveDirectoryURL; +@property (nonatomic, readonly) NSURL *configDirectoryURL; + +@property (nonatomic, assign) BOOL isNTSC; +@property (nonatomic, assign) double sampleRate; + +@property (nonatomic, strong) dispatch_semaphore_t beginFrameSemaphore; +@property (nonatomic, strong) dispatch_semaphore_t endFrameSemaphore; +@property (nonatomic, strong) dispatch_semaphore_t stopEmulationSemaphore; + +@property (nonatomic) BOOL didLoadPlugins; +@property (nonatomic, assign, getter=isRunning) BOOL running; + +@property (nonatomic, strong, readonly) NSMutableDictionary *stateCallbacks; + +@property (nonatomic, strong, readwrite) AVAudioFormat *preferredAudioFormat; +@property (nonatomic, readwrite) CGSize preferredVideoDimensions; + +@property (nonatomic, strong) NSMutableSet *activeCheats; +@property (nonatomic) m64p_plugin_type activePluginType; + +@end + +@implementation Mupen64PlusEmulatorBridge +@synthesize audioRenderer = _audioRenderer; +@synthesize videoRenderer = _videoRenderer; +@synthesize saveUpdateHandler = _saveUpdateHandler; + +static void MupenDebugCallback(void *context, int level, const char *message) +{ + NSLog(@"Mupen (%d): %s", level, message); +} + +static void MupenStateCallback(void *context, m64p_core_param paramType, int newValue) +{ + NSLog(@"Mupen: param %d -> %d", paramType, newValue); + + void (^callback)(void) = Mupen64PlusEmulatorBridge.sharedBridge.stateCallbacks[@(paramType)]; + + if (callback) + { + callback(); + } + + Mupen64PlusEmulatorBridge.sharedBridge.stateCallbacks[@(paramType)] = nil; +} + +static void *dlopen_Mupen64PlusDeltaCore() +{ + Dl_info info; + + dladdr((void *)dlopen_Mupen64PlusDeltaCore, &info); + + return dlopen(info.dli_fname, RTLD_LAZY | RTLD_NOLOAD); +} + +static void MupenGetKeys(int Control, BUTTONS *Keys) +{ + Keys->R_DPAD = Mupen64PlusEmulatorBridge.sharedBridge->inputs[Mupen64PlusGameInputRight]; + Keys->L_DPAD = Mupen64PlusEmulatorBridge.sharedBridge->inputs[Mupen64PlusGameInputLeft]; + Keys->D_DPAD = Mupen64PlusEmulatorBridge.sharedBridge->inputs[Mupen64PlusGameInputDown]; + Keys->U_DPAD = Mupen64PlusEmulatorBridge.sharedBridge->inputs[Mupen64PlusGameInputUp]; + Keys->START_BUTTON = Mupen64PlusEmulatorBridge.sharedBridge->inputs[Mupen64PlusGameInputStart]; + Keys->Z_TRIG = Mupen64PlusEmulatorBridge.sharedBridge->inputs[Mupen64PlusGameInputZ]; + Keys->B_BUTTON = Mupen64PlusEmulatorBridge.sharedBridge->inputs[Mupen64PlusGameInputB]; + Keys->A_BUTTON = Mupen64PlusEmulatorBridge.sharedBridge->inputs[Mupen64PlusGameInputA]; + Keys->R_CBUTTON = Mupen64PlusEmulatorBridge.sharedBridge->inputs[Mupen64PlusGameInputCRight]; + Keys->L_CBUTTON = Mupen64PlusEmulatorBridge.sharedBridge->inputs[Mupen64PlusGameInputCLeft]; + Keys->D_CBUTTON = Mupen64PlusEmulatorBridge.sharedBridge->inputs[Mupen64PlusGameInputCDown]; + Keys->U_CBUTTON = Mupen64PlusEmulatorBridge.sharedBridge->inputs[Mupen64PlusGameInputCUp]; + Keys->R_TRIG = Mupen64PlusEmulatorBridge.sharedBridge->inputs[Mupen64PlusGameInputR]; + Keys->L_TRIG = Mupen64PlusEmulatorBridge.sharedBridge->inputs[Mupen64PlusGameInputL]; + + if (Mupen64PlusEmulatorBridge.sharedBridge->inputs[Mupen64PlusGameInputAnalogStickLeft]) + { + Keys->X_AXIS = Mupen64PlusEmulatorBridge.sharedBridge->inputs[Mupen64PlusGameInputAnalogStickLeft] * -N64_ANALOG_MAX; + } + else if (Mupen64PlusEmulatorBridge.sharedBridge->inputs[Mupen64PlusGameInputAnalogStickRight]) + { + Keys->X_AXIS = Mupen64PlusEmulatorBridge.sharedBridge->inputs[Mupen64PlusGameInputAnalogStickRight] * N64_ANALOG_MAX; + } + else + { + Keys->X_AXIS = 0.0; + } + + if (Mupen64PlusEmulatorBridge.sharedBridge->inputs[Mupen64PlusGameInputAnalogStickUp]) + { + Keys->Y_AXIS = Mupen64PlusEmulatorBridge.sharedBridge->inputs[Mupen64PlusGameInputAnalogStickUp] * N64_ANALOG_MAX; + } + else if (Mupen64PlusEmulatorBridge.sharedBridge->inputs[Mupen64PlusGameInputAnalogStickDown]) + { + Keys->Y_AXIS = Mupen64PlusEmulatorBridge.sharedBridge->inputs[Mupen64PlusGameInputAnalogStickDown] * -N64_ANALOG_MAX; + } + else + { + Keys->Y_AXIS = 0.0; + } +} + +static void MupenInitiateControllers (CONTROL_INFO ControlInfo) +{ + ControlInfo.Controls[0].Present = 1; + ControlInfo.Controls[0].Plugin = PLUGIN_RAW; + ControlInfo.Controls[1].Present = 0; + ControlInfo.Controls[1].Plugin = PLUGIN_MEMPAK; + ControlInfo.Controls[2].Present = 0; + ControlInfo.Controls[2].Plugin = PLUGIN_MEMPAK; + ControlInfo.Controls[3].Present = 0; + ControlInfo.Controls[3].Plugin = PLUGIN_MEMPAK; +} + +static void MupenControllerCommand(int Control, unsigned char *Command) +{ +} + +static AUDIO_INFO AudioInfo; + +static void MupenAudioSampleRateChanged(int SystemType) +{ + double previousSampleRate = Mupen64PlusEmulatorBridge.sharedBridge.preferredAudioFormat.sampleRate; + double sampleRate = 0.0; + + switch (SystemType) + { + default: + case SYSTEM_NTSC: + sampleRate = 48681812 / (*AudioInfo.AI_DACRATE_REG + 1); + break; + case SYSTEM_PAL: + sampleRate = 49656530 / (*AudioInfo.AI_DACRATE_REG + 1); + break; + } + + NSLog(@"Mupen rate changed %f -> %f\n", previousSampleRate, sampleRate); + + Mupen64PlusEmulatorBridge.sharedBridge.preferredAudioFormat = [[AVAudioFormat alloc] initWithCommonFormat:AVAudioPCMFormatInt16 sampleRate:sampleRate channels:2 interleaved:YES]; +} + +static void MupenAudioLenChanged() +{ + int LenReg = *AudioInfo.AI_LEN_REG; + uint8_t *ptr = (uint8_t*)(AudioInfo.RDRAM + (*AudioInfo.AI_DRAM_ADDR_REG & 0xFFFFFF)); + + // Swap channels + for (uint32_t i = 0; i < LenReg; i += 4) + { + ptr[i] ^= ptr[i + 2]; + ptr[i + 2] ^= ptr[i]; + ptr[i] ^= ptr[i + 2]; + ptr[i + 1] ^= ptr[i + 3]; + ptr[i + 3] ^= ptr[i + 1]; + ptr[i + 1] ^= ptr[i + 3]; + } + + [Mupen64PlusEmulatorBridge.sharedBridge.audioRenderer.audioBuffer writeBuffer:ptr size:LenReg]; +} + +static void SetIsNTSC() +{ + switch (ROM_HEADER.Country_code & 0xFF) + { + case 0x44: + case 0x46: + case 0x49: + case 0x50: + case 0x53: + case 0x55: + case 0x58: + case 0x59: + Mupen64PlusEmulatorBridge.sharedBridge.isNTSC = NO; + break; + + case 0x37: + case 0x41: + case 0x45: + case 0x4a: + Mupen64PlusEmulatorBridge.sharedBridge.isNTSC = YES; + break; + } +} + +static int MupenOpenAudio(AUDIO_INFO info) +{ + AudioInfo = info; + + SetIsNTSC(); + + return M64ERR_SUCCESS; +} + +static void MupenSetAudioSpeed(int percent) +{ +} + ++ (instancetype)sharedBridge +{ + static Mupen64PlusEmulatorBridge *_emulatorBridge = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _emulatorBridge = [[self alloc] init]; + }); + + return _emulatorBridge; +} + +- (instancetype)init +{ + self = [super init]; + if (self) + { + _beginFrameSemaphore = dispatch_semaphore_create(0); + _endFrameSemaphore = dispatch_semaphore_create(0); + _stopEmulationSemaphore = dispatch_semaphore_create(0); + + _stateCallbacks = [NSMutableDictionary dictionary]; + + _preferredAudioFormat = [[AVAudioFormat alloc] initWithCommonFormat:AVAudioPCMFormatInt16 sampleRate:44100 channels:2 interleaved:YES]; + _preferredVideoDimensions = CGSizeMake(640, 480); + + _activeCheats = [NSMutableSet set]; + } + + return self; +} + +#pragma mark - Emulation State - + +- (void)startWithGameURL:(NSURL *)gameURL +{ + self.gameURL = gameURL; + + /* Copy .ini files */ + NSArray *iniFiles = @[@"GLideN64", @"GLideN64.custom", @"mupen64plus"]; + for (NSString *filename in iniFiles) + { + NSURL *sourceURL = [Mupen64PlusEmulatorBridge.n64Resources URLForResource:filename withExtension:@"ini"]; + NSURL *destinationURL = [[Mupen64PlusEmulatorBridge.coreDirectoryURL URLByAppendingPathComponent:filename] URLByAppendingPathExtension:@"ini"]; + + if ([[NSFileManager defaultManager] fileExistsAtPath:destinationURL.path isDirectory:nil]) + { + continue; + } + + NSError *error = nil; + if (![[NSFileManager defaultManager] copyItemAtURL:sourceURL toURL:destinationURL error:&error]) + { + NSLog(@"Error copying %@. %@", filename, error); + } + } + + /* Prepare Emulation */ + CoreStartup(FRONTEND_API_VERSION, self.configDirectoryURL.fileSystemRepresentation, Mupen64PlusEmulatorBridge.coreDirectoryURL.fileSystemRepresentation, (__bridge void *)self, MupenDebugCallback, (__bridge void *)self, MupenStateCallback); + + /* Configure Core */ + m64p_handle config; + ConfigOpenSection("Core", &config); + + ConfigSetParameter(config, "SaveSRAMPath", M64TYPE_STRING, self.gameSaveDirectoryURL.fileSystemRepresentation); + ConfigSetParameter(config, "SharedDataPath", M64TYPE_STRING, Mupen64PlusEmulatorBridge.coreDirectoryURL.fileSystemRepresentation); + + // Pure Interpreter = 0, Cached Interpreter = 1, Dynamic Recompiler = 2 + int emulationMode = 1; + ConfigSetParameter(config, "R4300Emulator", M64TYPE_INT, &emulationMode); + + ConfigSaveSection("Core"); + + + /* Configure Video */ + m64p_handle video; + ConfigOpenSection("Video-General", &video); + + int useFullscreen = 1; + ConfigSetParameter(video, "Fullscreen", M64TYPE_BOOL, &useFullscreen); + + int screenWidth = 640; + ConfigSetParameter(video, "ScreenWidth", M64TYPE_INT, &screenWidth); + + int screenHeight = 480; + ConfigSetParameter(video, "ScreenHeight", M64TYPE_INT, &screenHeight); + + ConfigSaveSection("Video-General"); + + + /* Configure GLideN64 */ + m64p_handle gliden64; + ConfigOpenSection("Video-GLideN64", &gliden64); + + // 0 = stretch, 1 = 4:3, 2 = 16:9, 3 = adjust + int aspectRatio = 1; + ConfigSetParameter(gliden64, "AspectRatio", M64TYPE_INT, &aspectRatio); + + int enablePerPixelLighting = 1; + ConfigSetParameter(gliden64, "EnableHWLighting", M64TYPE_BOOL, &enablePerPixelLighting); + + int osd = 0; + ConfigSetParameter(gliden64, "OnScreenDisplay", M64TYPE_BOOL, &osd); + ConfigSetParameter(gliden64, "ShowFPS", M64TYPE_BOOL, &osd); + ConfigSetParameter(gliden64, "ShowVIS", M64TYPE_BOOL, &osd); + ConfigSetParameter(gliden64, "ShowPercent", M64TYPE_BOOL, &osd); + ConfigSetParameter(gliden64, "ShowInternalResolution", M64TYPE_BOOL, &osd); + ConfigSetParameter(gliden64, "ShowRenderingResolution", M64TYPE_BOOL, &osd); + + ConfigSaveSection("Video-GLideN64"); + + NSData *romData = [NSData dataWithContentsOfURL:gameURL options:NSDataReadingMappedAlways error:nil]; + if (romData.length == 0) + { + NSLog(@"Error loading ROM at path: %@\n File does not exist.", gameURL); + return; + } + + m64p_error openStatus = CoreDoCommand(M64CMD_ROM_OPEN, (int)[romData length], (void *)[romData bytes]); + if (openStatus != M64ERR_SUCCESS) + { + NSLog(@"Error loading ROM at path: %@\n Error code was: %i", gameURL, openStatus); + return; + } + + + /* Prepare Audio */ + audio.aiDacrateChanged = MupenAudioSampleRateChanged; + audio.aiLenChanged = MupenAudioLenChanged; + audio.initiateAudio = MupenOpenAudio; + audio.setSpeedFactor = MupenSetAudioSpeed; + plugin_start(M64PLUGIN_AUDIO); + + /* Prepare Input */ + input.getKeys = MupenGetKeys; + input.initiateControllers = MupenInitiateControllers; + input.controllerCommand = MupenControllerCommand; + plugin_start(M64PLUGIN_INPUT); + + if (![self didLoadPlugins]) + { + /* Prepare Plugins */ + +#if STATIC_LIBRARY + // Ensure symbols are _not_ stripped by referencing them from log statements. + NSLog(@"Address of Video_PluginStartup: %p", Video_PluginStartup); + NSLog(@"Address of Video_PluginShutdown: %p", Video_PluginShutdown); + NSLog(@"Address of Video_PluginGetVersion: %p", Video_PluginGetVersion); + NSLog(@"Address of Video_RomOpen: %p", Video_RomOpen); + NSLog(@"Address of Video_RomClosed: %p", Video_RomClosed); + + NSLog(@"Address of RSP_PluginStartup: %p", RSP_PluginStartup); + NSLog(@"Address of RSP_PluginShutdown: %p", RSP_PluginShutdown); + NSLog(@"Address of RSP_PluginGetVersion: %p", RSP_PluginGetVersion); + NSLog(@"Address of RSP_RomClosed: %p", RSP_RomClosed); +#endif + + BOOL didLoadVideoPlugin = [self loadPlugin:@"mupen64plus_video_GLideN64" type:M64PLUGIN_GFX]; + NSAssert(didLoadVideoPlugin, @"Failed to load video plugin."); + + BOOL didLoadRSPPlugin = [self loadPlugin:@"mupen64plus_rsp_hle" type:M64PLUGIN_RSP]; + NSAssert(didLoadRSPPlugin, @"Failed to load RSP plugin."); + + self.didLoadPlugins = YES; + } + + self.running = YES; + + [NSThread detachNewThreadSelector:@selector(startEmulationLoop) toTarget:self withObject:nil]; + + dispatch_semaphore_wait(self.endFrameSemaphore, DISPATCH_TIME_FOREVER); +} + +- (void)startEmulationLoop +{ + @autoreleasepool + { + [self.videoRenderer prepare]; + + CoreDoCommand(M64CMD_EXECUTE, 0, NULL); + + dispatch_semaphore_signal(self.stopEmulationSemaphore); + } +} + +- (void)stop +{ + CoreDoCommand(M64CMD_STOP, 0, NULL); + + dispatch_semaphore_signal(self.beginFrameSemaphore); + dispatch_semaphore_wait(self.stopEmulationSemaphore, DISPATCH_TIME_FOREVER); + + CoreDoCommand(M64CMD_ROM_CLOSE, 0, NULL); + + [self.activeCheats removeAllObjects]; + + self.running = NO; +} + +- (void)pause +{ + self.running = NO; +} + +- (void)resume +{ + self.running = YES; +} + +#pragma mark - Game Loop - + +- (void)runFrameAndProcessVideo:(BOOL)processVideo +{ + dispatch_semaphore_signal(self.beginFrameSemaphore); + + dispatch_semaphore_wait(self.endFrameSemaphore, DISPATCH_TIME_FOREVER); +} + +#pragma mark - Inputs - + +- (void)activateInput:(NSInteger)input +{ + inputs[input] = 1; +} + +- (void)activateInput:(NSInteger)input value:(double)value +{ + inputs[input] = value; +} + +- (void)deactivateInput:(NSInteger)input +{ + inputs[input] = 0; +} + +- (void)resetInputs +{ + for (NSInteger input = 0; input < 18; input++) + { + [self deactivateInput:input]; + } +} + +#pragma mark - Save States - + +- (void)saveSaveStateToURL:(NSURL *)url +{ + dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); + + [self registerCallbackForType:M64CORE_STATE_SAVECOMPLETE callback:^{ + dispatch_semaphore_signal(semaphore); + }]; + + CoreDoCommand(M64CMD_STATE_SAVE, 1, (void *)[url fileSystemRepresentation]); + + if (![self isRunning]) + { + [self runFrameAndProcessVideo:YES]; + } + + dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); +} + +- (void)loadSaveStateFromURL:(NSURL *)url +{ + dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); + + [self registerCallbackForType:M64CORE_STATE_LOADCOMPLETE callback:^{ + dispatch_semaphore_signal(semaphore); + }]; + + CoreDoCommand(M64CMD_STATE_LOAD, 1, (void *)[url fileSystemRepresentation]); + + if (![self isRunning]) + { + [self runFrameAndProcessVideo:YES]; + } + + dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); +} + +#pragma mark - Game Saves - + +- (void)saveGameSaveToURL:(NSURL *)url +{ + struct file_storage *storage = NULL; + + if (g_dev.cart.use_flashram == -1) + { + storage = (struct file_storage *)g_dev.cart.sram.storage; + } + else if (g_dev.cart.use_flashram == 0) + { + storage = (struct file_storage *)g_dev.cart.eeprom.storage; + } + else if (g_dev.cart.use_flashram == 1) + { + storage = (struct file_storage *)g_dev.cart.flashram.storage; + } + + NSData *data = [NSData dataWithBytes:storage->data length:storage->size]; + [data writeToURL:url atomically:YES]; +} + +- (void)loadGameSaveFromURL:(NSURL *)url +{ + struct file_storage *storage = NULL; + + if (g_dev.cart.use_flashram == -1) + { + storage = (struct file_storage *)g_dev.cart.sram.storage; + } + else if (g_dev.cart.use_flashram == 0) + { + storage = (struct file_storage *)g_dev.cart.eeprom.storage; + } + else if (g_dev.cart.use_flashram == 1) + { + storage = (struct file_storage *)g_dev.cart.flashram.storage; + } + + NSData *saveData = [NSData dataWithContentsOfURL:url]; + if (saveData == nil) + { + memset(storage->data, 0xFF, storage->size); + } + else + { + memcpy(storage->data, saveData.bytes, storage->size); + } +} + +#pragma mark - Cheats - + +- (BOOL)addCheatCode:(NSString *)cheatCode type:(NSString *)type +{ + if ([self.activeCheats containsObject:cheatCode]) + { + CoreCheatEnabled([cheatCode UTF8String], 1); + return YES; + } + + NSArray *codes = [cheatCode componentsSeparatedByString:@"\n"]; + m64p_cheat_code *codeList = (m64p_cheat_code *)calloc(codes.count, sizeof(m64p_cheat_code)); + + for (int i = 0; i < codes.count; i++) + { + NSString *code = codes[i]; + code = [code stringByReplacingOccurrencesOfString:@" " withString:@""]; + + if (code.length != 12) + { + return NO; + } + + m64p_cheat_code *gsCode = codeList + i; + + NSString *address = [code substringWithRange:NSMakeRange(0, 8)]; + NSString *value = [code substringWithRange:NSMakeRange(8, 4)]; + + unsigned int outAddress = 0; + [[NSScanner scannerWithString:address] scanHexInt:&outAddress]; + + unsigned int outValue = 0; + [[NSScanner scannerWithString:value] scanHexInt:&outValue]; + + gsCode->address = outAddress; + gsCode->value = outValue; + } + + if (CoreAddCheat([cheatCode UTF8String], codeList, codes.count) != M64ERR_SUCCESS) + { + return NO; + } + + [self.activeCheats addObject:cheatCode]; + + return YES; +} + +- (void)resetCheats +{ + for (NSString *code in self.activeCheats) + { + CoreCheatEnabled([code UTF8String], 0); + } +} + +- (void)updateCheats +{ +} + +#pragma mark - Helper Methods - + +- (void)processFrame +{ + [self.videoRenderer processFrame]; +} + +- (void)videoInterrupt +{ + dispatch_semaphore_signal(self.endFrameSemaphore); + + dispatch_semaphore_wait(self.beginFrameSemaphore, DISPATCH_TIME_FOREVER); +} + +- (BOOL)loadPlugin:(NSString *)pluginName type:(m64p_plugin_type)type +{ + self.activePluginType = type; + + m64p_dynlib_handle mupen64PlusDeltaCoreHandle = dlopen_Mupen64PlusDeltaCore(); + +#if STATIC_LIBRARY + m64p_dynlib_handle pluginHandle = mupen64PlusDeltaCoreHandle; + ptr_PluginStartup pluginStart = (ptr_PluginStartup)osal_dynlib_getproc(pluginHandle, "PluginStartup"); +#else + NSString *frameworkPath = [NSString stringWithFormat:@"%@.framework/%@", pluginName, pluginName]; + NSString *pluginPath = [[[NSBundle mainBundle] privateFrameworksPath] stringByAppendingPathComponent:frameworkPath]; + + m64p_dynlib_handle pluginHandle = dlopen([pluginPath fileSystemRepresentation], RTLD_LAZY | RTLD_LOCAL); + ptr_PluginStartup pluginStart = dlsym(pluginHandle, "PluginStartup"); +#endif + + m64p_error error = pluginStart(mupen64PlusDeltaCoreHandle, (__bridge void *)self, MupenDebugCallback); + if (error != M64ERR_SUCCESS) + { + NSLog(@"Error code %@ loading plugin of type %@, name: %@", @(error), @(type), pluginName); + self.activePluginType = M64PLUGIN_NULL; + return NO; + } + + error = CoreAttachPlugin(type, pluginHandle); + self.activePluginType = M64PLUGIN_NULL; + + if (error != M64ERR_SUCCESS) + { + NSLog(@"Error code %@ attaching plugin of type %@, name: %@", @(error), @(type), pluginName); + return NO; + } + + return YES; +} + +- (void)registerCallbackForType:(m64p_core_param)callbackType callback:(void (^)(void))callback +{ + self.stateCallbacks[@(callbackType)] = callback; +} + +#pragma mark - Getters/Setters - + +- (NSTimeInterval)frameDuration +{ + return [self isNTSC] ? (1.0 / 60.0) : (1.0 / 50.0); +} + +- (NSURL *)gameSaveDirectoryURL +{ + NSURL *gameSaveDirectoryURL = [Mupen64PlusEmulatorBridge.coreDirectoryURL URLByAppendingPathComponent:@"Saves" isDirectory:YES]; + + NSError *error = nil; + if (![[NSFileManager defaultManager] createDirectoryAtURL:gameSaveDirectoryURL withIntermediateDirectories:YES attributes:nil error:nil]) + { + NSLog(@"Unable to create Game Save Directory. %@", error); + } + + return gameSaveDirectoryURL; +} + +- (NSURL *)configDirectoryURL +{ + NSURL *configDirectoryURL = [Mupen64PlusEmulatorBridge.coreDirectoryURL URLByAppendingPathComponent:@"Config" isDirectory:YES]; + + NSError *error = nil; + if (![[NSFileManager defaultManager] createDirectoryAtURL:configDirectoryURL withIntermediateDirectories:YES attributes:nil error:nil]) + { + NSLog(@"Unable to create Config Directory. %@", error); + } + + return configDirectoryURL; +} + +@end + +#pragma mark - Mupen64Plus Callbacks - + +EXPORT m64p_error CALL osal_dynlib_open(m64p_dynlib_handle *pLibHandle, const char *pccLibraryPath) +{ + if (pLibHandle == NULL || pccLibraryPath == NULL) + { + return M64ERR_INPUT_ASSERT; + } + + *pLibHandle = dlopen(pccLibraryPath, RTLD_NOW); + + if (*pLibHandle == NULL) + { + return M64ERR_INPUT_NOT_FOUND; + } + + return M64ERR_SUCCESS; +} + +EXPORT m64p_function CALL osal_dynlib_getproc(m64p_dynlib_handle LibHandle, const char *pccProcedureName) +{ + if (pccProcedureName == NULL) + { + return NULL; + } + +#if STATIC_LIBRARY + const char *getVersion = "PluginGetVersion"; + const char *romOpen = "RomOpen"; + const char *romClosed = "RomClosed"; + const char *pluginStartup = "PluginStartup"; + const char *pluginShutdown = "PluginShutdown"; + + if (strncmp(pccProcedureName, getVersion, strlen(getVersion)) == 0 || + strncmp(pccProcedureName, pluginStartup, strlen(pluginStartup)) == 0 || + strncmp(pccProcedureName, pluginShutdown, strlen(pluginShutdown)) == 0 || + strncmp(pccProcedureName, romOpen, strlen(romOpen)) == 0 || + strncmp(pccProcedureName, romClosed, strlen(romClosed)) == 0) + { + const char *prefix = ""; + + switch (Mupen64PlusEmulatorBridge.sharedBridge.activePluginType) + { + case M64PLUGIN_GFX: + prefix = "Video_"; + break; + + case M64PLUGIN_RSP: + prefix = "RSP_"; + break; + + default: + break; + } + + char prefixedName[64]; + prefixedName[0] = '\0'; + + strcat(prefixedName, prefix); + strcat(prefixedName, pccProcedureName); + + m64p_function address = (m64p_function)dlsym(LibHandle, prefixedName); + return address; + } +#endif + + m64p_function address = (m64p_function)dlsym(LibHandle, pccProcedureName); + return address; +} + +EXPORT m64p_error CALL osal_dynlib_close(m64p_dynlib_handle LibHandle) +{ + int result = dlclose(LibHandle); + if (result != 0) + { + return M64ERR_INTERNAL; + } + + return M64ERR_SUCCESS; +} + + +EXPORT m64p_error CALL VidExt_Init(void) +{ + return M64ERR_SUCCESS; +} + +EXPORT m64p_error CALL VidExt_Quit(void) +{ + return M64ERR_SUCCESS; +} + +EXPORT m64p_error CALL VidExt_ListFullscreenModes(m64p_2d_size *SizeArray, int *NumSizes) +{ + *NumSizes = 0; + return M64ERR_SUCCESS; +} + +EXPORT m64p_error CALL VidExt_SetVideoMode(int Width, int Height, int BitsPerPixel, m64p_video_mode ScreenMode, m64p_video_flags Flags) +{ + Mupen64PlusEmulatorBridge.sharedBridge.preferredVideoDimensions = CGSizeMake(Width, Height); + return M64ERR_SUCCESS; +} + +EXPORT m64p_error CALL VidExt_SetCaption(const char *Title) +{ + NSLog(@"Mupen caption: %s", Title); + return M64ERR_SUCCESS; +} + +EXPORT m64p_error CALL VidExt_ToggleFullScreen(void) +{ + return M64ERR_UNSUPPORTED; +} + +EXPORT m64p_function CALL VidExt_GL_GetProcAddress(const char* Proc) +{ + return (m64p_function)dlsym(RTLD_NEXT, Proc); +} + +EXPORT m64p_error CALL VidExt_GL_SetAttribute(m64p_GLattr Attr, int Value) +{ + return M64ERR_UNSUPPORTED; +} + +EXPORT m64p_error CALL VidExt_GL_GetAttribute(m64p_GLattr Attr, int *pValue) +{ + return M64ERR_UNSUPPORTED; +} + +EXPORT m64p_error CALL VidExt_GL_SwapBuffers(void) +{ + [Mupen64PlusEmulatorBridge.sharedBridge.videoRenderer processFrame]; + + return M64ERR_SUCCESS; +} + +EXPORT m64p_error OverrideVideoFunctions(m64p_video_extension_functions *VideoFunctionStruct) +{ + return M64ERR_SUCCESS; +} + +EXPORT m64p_error CALL VidExt_ResizeWindow(int width, int height) +{ + return M64ERR_SUCCESS; +} + +EXPORT int VidExt_InFullscreenMode(void) +{ + return 1; +} + +EXPORT int VidExt_VideoRunning(void) +{ + return Mupen64PlusEmulatorBridge.sharedBridge.isRunning; +} + +EXPORT void new_vi(void) +{ + struct r4300_core* r4300 = &g_dev.r4300; + + if (g_gs_vi_counter < 60) + { + if (g_gs_vi_counter == 0) + { + cheat_apply_cheats(&g_cheat_ctx, r4300, ENTRY_BOOT); + } + + g_gs_vi_counter = 60; + } + else + { + cheat_apply_cheats(&g_cheat_ctx, r4300, ENTRY_VI); + } + + [Mupen64PlusEmulatorBridge.sharedBridge videoInterrupt]; +} + +EXPORT void ScreenshotRomOpen(void) +{ +} + +EXPORT void TakeScreenshot(int iFrameNumber) +{ +} + +EXPORT osd_message_t * osd_message_valid(osd_message_t *m) +{ + return NULL; +} + +EXPORT int event_set_core_defaults(void) +{ + return 1; +} + +EXPORT void event_initialize(void) +{ +} + +EXPORT void event_sdl_keydown(int keysym, int keymod) +{ +} + +EXPORT void event_sdl_keyup(int keysym, int keymod) +{ +} + +EXPORT int event_gameshark_active(void) +{ + return 1; +} + +EXPORT void event_set_gameshark(int active) +{ +} diff --git a/Cores/Mupen64PlusDeltaCore/Sources/Mupen64Plus.swift b/Cores/Mupen64PlusDeltaCore/Sources/Mupen64Plus.swift new file mode 100644 index 000000000..f1538dd7f --- /dev/null +++ b/Cores/Mupen64PlusDeltaCore/Sources/Mupen64Plus.swift @@ -0,0 +1,106 @@ +// +// Mupen64Plus.swift +// Mupen64PlusDeltaCore +// +// Created by Riley Testut on 3/27/19. +// Copyright © 2019 Riley Testut. All rights reserved. +// + +import Foundation +import AVFoundation + +import DeltaCore + +#if !STATIC_LIBRARY +public extension GameType +{ + static let n64 = GameType("com.rileytestut.delta.game.n64") +} + +public extension CheatType +{ + static let gameShark = CheatType("GameShark") +} +#endif + +@objc public enum Mupen64PlusGameInput: Int, Input +{ + // D-Pad + case up = 0 + case down = 1 + case left = 2 + case right = 3 + + // Analog-Stick + case analogStickUp = 4 + case analogStickDown = 5 + case analogStickLeft = 6 + case analogStickRight = 7 + + // C-Buttons + case cUp = 8 + case cDown = 9 + case cLeft = 10 + case cRight = 11 + + // Other + case a = 12 + case b = 13 + case l = 14 + case r = 15 + case z = 16 + case start = 17 + + public var type: InputType { + return .game(.n64) + } + + public var isContinuous: Bool { + switch self + { + case .analogStickUp, .analogStickDown, .analogStickLeft, .analogStickRight: return true + default: return false + } + } +} + +public struct Mupen64Plus: DeltaCoreProtocol +{ + public static let core = Mupen64Plus() + + public var name: String { "Mupen64Plus" } + public var identifier: String { "com.rileytestut.N64DeltaCore" } + + public var gameType: GameType { GameType.n64 } + public var gameInputType: Input.Type { Mupen64PlusGameInput.self } + public var gameSaveFileExtension: String { "sav" } + + public var audioFormat: AVAudioFormat { Mupen64PlusEmulatorBridge.shared.preferredAudioFormat } + public var videoFormat: VideoFormat { VideoFormat(format: .openGLES, dimensions: Mupen64PlusEmulatorBridge.shared.preferredVideoDimensions) } + + public var supportedCheatFormats: Set { + let gameSharkFormat = CheatFormat(name: NSLocalizedString("GameShark", comment: ""), format: "XXXXXXXX YYYY", type: .gameShark) + return [gameSharkFormat] + } + + public var emulatorBridge: EmulatorBridging { Mupen64PlusEmulatorBridge.shared } + + private init() + { + } +} + +// Expose DeltaCore properties to Objective-C. +public extension Mupen64PlusEmulatorBridge +{ + @objc(n64Resources) class var __n64Resources: Bundle { + return Mupen64Plus.core.resourceBundle + } + + @objc(coreDirectoryURL) class var __coreDirectoryURL: URL { + return _coreDirectoryURL + } +} + +private let _coreDirectoryURL = Mupen64Plus.core.directoryURL + diff --git a/Cores/Mupen64PlusDeltaCore/Sources/Mupen64PlusDeltaCore.h b/Cores/Mupen64PlusDeltaCore/Sources/Mupen64PlusDeltaCore.h new file mode 100644 index 000000000..3c8133b09 --- /dev/null +++ b/Cores/Mupen64PlusDeltaCore/Sources/Mupen64PlusDeltaCore.h @@ -0,0 +1,21 @@ +// +// Mupen64PlusDeltaCore.h +// Mupen64PlusDeltaCore +// +// Created by Riley Testut on 3/27/19. +// Copyright © 2019 Riley Testut. All rights reserved. +// + +#import + +//! Project version number for N64DeltaCore. +FOUNDATION_EXPORT double Mupen64PlusDeltaCoreVersionNumber; + +//! Project version string for N64DeltaCore. +FOUNDATION_EXPORT const unsigned char Mupen64PlusDeltaCoreVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#if !STATIC_LIBRARY +#import +#endif diff --git a/Cores/Mupen64PlusDeltaCore/Sources/TxDbg_ios.mm b/Cores/Mupen64PlusDeltaCore/Sources/TxDbg_ios.mm new file mode 100644 index 000000000..9dc721002 --- /dev/null +++ b/Cores/Mupen64PlusDeltaCore/Sources/TxDbg_ios.mm @@ -0,0 +1,57 @@ +/* + * Texture Filtering + * Version: 1.0 + * + * Copyright (C) 2007 Hiroshi Morii All Rights Reserved. + * Email koolsmoky(at)users.sourceforge.net + * Web http://www.3dfxzone.it/koolsmoky + * + * this is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * this is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Make; see the file COPYING. If not, write to + * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#define DBG_LEVEL 80 + +#include "TxDbg.h" +#include +#include + +#include + +TxDbg::TxDbg() +{ + _level = DBG_LEVEL; +} + +TxDbg::~TxDbg() +{} + +void +TxDbg::output(const int level, const wchar_t *format, ...) +{ + if (level > _level) + return; + + va_list va; + + NSString *nsformat = [[NSString alloc] initWithBytes:format + length:wcslen(format)*sizeof(*format) + encoding:NSUTF32LittleEndianStringEncoding]; + + nsformat = [@"GLideN64: " stringByAppendingString:nsformat]; + + va_start(va, format); + NSLogv(nsformat, va); + va_end(va); +} diff --git a/Cores/Mupen64PlusDeltaCore/Sources/Types/Mupen64PlusTypes.h b/Cores/Mupen64PlusDeltaCore/Sources/Types/Mupen64PlusTypes.h new file mode 100644 index 000000000..460d974e0 --- /dev/null +++ b/Cores/Mupen64PlusDeltaCore/Sources/Types/Mupen64PlusTypes.h @@ -0,0 +1,14 @@ +// +// Mupen64PlusTypes.h +// Mupen64PlusDeltaCore +// +// Created by Riley Testut on 1/30/20. +// Copyright © 2020 Riley Testut. All rights reserved. +// + +#import + +// Extensible Enums +FOUNDATION_EXPORT GameType const GameTypeN64 NS_SWIFT_NAME(n64); + +FOUNDATION_EXPORT CheatType const CheatTypeGameShark; diff --git a/Cores/Mupen64PlusDeltaCore/Sources/mupen64plus-rsp-hle-plugin.c b/Cores/Mupen64PlusDeltaCore/Sources/mupen64plus-rsp-hle-plugin.c new file mode 100644 index 000000000..da404c5e3 --- /dev/null +++ b/Cores/Mupen64PlusDeltaCore/Sources/mupen64plus-rsp-hle-plugin.c @@ -0,0 +1,20 @@ +// +// mupen64plus-rsp-hle-plugin.c +// Mupen64PlusDeltaCore +// +// Created by Riley Testut on 2/1/20. +// Copyright © 2020 Riley Testut. All rights reserved. +// + +// Add RSP prefix to function names so they don't collide with Video plug-in functions. +#define PluginStartup(A, B, C) RSP_PluginStartup(A, B, C) +#define PluginShutdown(A) RSP_PluginShutdown(A) +#define PluginGetVersion(A, B, C, D, E) RSP_PluginGetVersion(A, B, C, D, E) +#define RomClosed(A) RSP_RomClosed(A) + +#include "../Mupen64Plus/mupen64plus-rsp-hle/src/plugin.c" + +#undef PluginStartup +#undef PluginShutdown +#undef PluginGetVersion +#undef RomClosed diff --git a/Cores/Mupen64PlusDeltaCore/Sources/mupen64plus-video-GLideN64-plugin.cpp b/Cores/Mupen64PlusDeltaCore/Sources/mupen64plus-video-GLideN64-plugin.cpp new file mode 100644 index 000000000..283c5a541 --- /dev/null +++ b/Cores/Mupen64PlusDeltaCore/Sources/mupen64plus-video-GLideN64-plugin.cpp @@ -0,0 +1,85 @@ +// +// plugin_delta.c +// N64DeltaCore-Video +// +// Created by Riley Testut on 2/1/20. +// Copyright © 2020 Riley Testut. All rights reserved. +// + +// Add Video prefix to function names so they don't collide with RSP plug-in functions. +#define PluginStartup(A, ...) Video_PluginStartup(A, ## __VA_ARGS__) +#define PluginShutdown(A) Video_PluginShutdown(A) +#define PluginGetVersion(A, B, C, D, E) Video_PluginGetVersion(A, B, C, D, E) +#define RomOpen(A) Video_RomOpen(A) +#define RomClosed(A) Video_RomClosed(A) + +// Explicitly include m64p_config.h _before_ renaming all Config functions so their header declarations remain the same. +#define M64P_CORE_PROTOTYPES +#include "../Mupen64Plus/mupen64plus-core/src/api/m64p_config.h" +#undef M64P_CORE_PROTOTYPES + +#define ConfigGetSharedDataFilepath Video_ConfigGetSharedDataFilepath +#define ConfigGetUserConfigPath Video_ConfigGetUserConfigPath +#define ConfigGetUserDataPath Video_ConfigGetUserDataPath +#define ConfigGetUserCachePath Video_ConfigGetUserCachePath +#define ConfigOpenSection Video_ConfigOpenSection +#define ConfigDeleteSection Video_ConfigDeleteSection +#define ConfigSaveSection Video_ConfigSaveSection +#define ConfigSaveFile Video_ConfigSaveFile +#define ConfigSetParameter Video_ConfigSetParameter +#define ConfigGetParameter Video_ConfigGetParameter +#define ConfigGetParameterHelp Video_ConfigGetParameterHelp +#define ConfigSetDefaultInt Video_ConfigSetDefaultInt +#define ConfigSetDefaultFloat Video_ConfigSetDefaultFloat +#define ConfigSetDefaultBool Video_ConfigSetDefaultBool +#define ConfigSetDefaultString Video_ConfigSetDefaultString +#define ConfigGetParamInt Video_ConfigGetParamInt +#define ConfigGetParamFloat Video_ConfigGetParamFloat +#define ConfigGetParamBool Video_ConfigGetParamBool +#define ConfigGetParamString Video_ConfigGetParamString +#define ConfigExternalGetParameter Video_ConfigExternalGetParameter +#define ConfigExternalOpen Video_ConfigExternalOpen +#define ConfigExternalClose Video_ConfigExternalClose + +#include "../Mupen64Plus/GLideN64/src/CommonPluginAPI.cpp" +#include "../Mupen64Plus/GLideN64/src/MupenPlusPluginAPI.cpp" +#include "../Mupen64Plus/GLideN64/src/common/CommonAPIImpl_common.cpp" + +extern "C" m64p_function CALL osal_dynlib_getproc(m64p_dynlib_handle LibHandle, const char *pccProcedureName); + +// Replace dlsym calls with our own osal_dynlib_getproc implementation. +#define dlsym(A, B) osal_dynlib_getproc(A, B) +#include "../Mupen64Plus/GLideN64/src/mupenplus/MupenPlusAPIImpl.cpp" +#undef dlsym + +#undef ConfigGetSharedDataFilepath +#undef ConfigGetUserConfigPath +#undef ConfigGetUserDataPath +#undef ConfigGetUserCachePath +#undef ConfigOpenSection +#undef ConfigDeleteSection +#undef ConfigSaveSection +#undef ConfigSaveFile +#undef ConfigSetParameter +#undef ConfigGetParameter +#undef ConfigGetParameterHelp +#undef ConfigSetDefaultInt +#undef ConfigSetDefaultFloat +#undef ConfigSetDefaultBool +#undef ConfigSetDefaultString +#undef ConfigGetParamInt +#undef ConfigGetParamFloat +#undef ConfigGetParamBool +#undef ConfigGetParamString +#undef ConfigExternalGetParameter +#undef ConfigExternalOpen +#undef ConfigExternalClose + +#undef PluginStartup +#undef PluginShutdown +#undef PluginGetVersion +#undef RomOpen +#undef RomClosed + +#include "../Mupen64Plus/GLideN64/src/mupenplus/Config_mupenplus.cpp" +#include "../Mupen64Plus/GLideN64/src/mupenplus/CommonAPIImpl_mupenplus.cpp" diff --git a/Cores/Mupen64PlusDeltaCore/libMupen64Plus/SDL/SDL.h b/Cores/Mupen64PlusDeltaCore/libMupen64Plus/SDL/SDL.h new file mode 100644 index 000000000..30c7f8584 --- /dev/null +++ b/Cores/Mupen64PlusDeltaCore/libMupen64Plus/SDL/SDL.h @@ -0,0 +1,54 @@ +/* + Copyright (c) 2010 OpenEmu Team + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the OpenEmu Team nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY OpenEmu Team ''AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL OpenEmu Team BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef SDL_H +#define SDL_H + +#include +#include +#include +#include +#include + +#include "SDL_thread.h" + +typedef uint32_t Uint32; + +__BEGIN_DECLS + +Uint32 SDL_GetTicks(void); + +void SDL_Quit(void); + +void SDL_Delay(Uint32 ms); + +void SDL_PumpEvents(void); + +void SDL_GL_SwapBuffers(void); + +__END_DECLS + +#endif \ No newline at end of file diff --git a/Cores/Mupen64PlusDeltaCore/libMupen64Plus/SDL/SDLStubs.m b/Cores/Mupen64PlusDeltaCore/libMupen64Plus/SDL/SDLStubs.m new file mode 100644 index 000000000..d023ca889 --- /dev/null +++ b/Cores/Mupen64PlusDeltaCore/libMupen64Plus/SDL/SDLStubs.m @@ -0,0 +1,196 @@ +/* + Copyright (c) 2010 OpenEmu Team + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the OpenEmu Team nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY OpenEmu Team ''AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL OpenEmu Team BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "SDL.h" +#include "SDL_thread.h" +#import +#include +#include +#include +#import + +static double mach_to_sec = 0; + +static void init_mach_time(void) +{ + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + if (mach_to_sec == 0.0) + { + struct mach_timebase_info base; + mach_timebase_info(&base); + mach_to_sec = 1e-9 * (base.numer / (double)base.denom); + } + }); +} + +NSTimeInterval MupenOEMonotonicTime(void) +{ + init_mach_time(); + + return mach_absolute_time() * mach_to_sec; +} + +SDL_mutex *SDL_CreateMutex(void) +{ + pthread_mutex_t *m = malloc(sizeof(pthread_mutex_t)); + pthread_mutex_init(m, NULL); + + return (SDL_mutex*)m; +} + +int SDL_LockMutex(SDL_mutex *m) +{ + return pthread_mutex_lock((pthread_mutex_t*)m); +} + +int SDL_UnlockMutex(SDL_mutex *m) +{ + return pthread_mutex_unlock((pthread_mutex_t*)m); +} + +void SDL_DestroyMutex(SDL_mutex *m) +{ + pthread_mutex_destroy((pthread_mutex_t*)m); + free(m); +} + +Uint32 SDL_GetTicks(void) +{ + return MupenOEMonotonicTime(); +} + +void SDL_Quit(void) +{ +} + +void SDL_Delay(Uint32 ms) +{ + usleep(ms * 1000); +} + +void SDL_PumpEvents(void) +{ +} + +void SDL_GL_SwapBuffers(void) +{ + NSLog(@"Mupen warning: Should not reach here"); +} + +SDL_cond *SDL_CreateCond(void) +{ + pthread_cond_t *cond = malloc(sizeof(pthread_cond_t)); + pthread_cond_init(cond, NULL); + + return (SDL_cond*)cond; +} + +int SDL_CondWait(SDL_cond *cond, SDL_mutex *mut) +{ + return pthread_cond_wait((pthread_cond_t*)cond, (pthread_mutex_t*)mut); +} + +int SDL_CondSignal(SDL_cond *cond) +{ + return pthread_cond_signal((pthread_cond_t*)cond); +} + +void SDL_DestroyCond(SDL_cond *cond) +{ + pthread_cond_destroy((pthread_cond_t*)cond); + free(cond); +} + +static struct { + const char *thread_name; + void *thread_context; +} sContext; + +void *Fake_SDL_New_Thread(void *p) +{ + pthread_setname_np(sContext.thread_name); + int (*fn)(void *) = p; + return (void*)fn(sContext.thread_context); +} + +SDL_Thread *SDL_CreateThread(int (*fn)(void *), const char *name, void *context) +{ + pthread_t *thread = malloc(sizeof(pthread_t)); + + sContext.thread_name = name; + sContext.thread_context = context; + pthread_create(thread, NULL, Fake_SDL_New_Thread, fn); + return (SDL_Thread*)thread; +} + +void SDL_WaitThread(SDL_Thread *thread, int *status) +{ + void *_status; + + pthread_join(*((pthread_t*)thread), &_status); + *status = (int)_status; + free(thread); +} + +SDL_sem *SDL_CreateSemaphore(int initial_value) +{ + sem_t *semaphore = (sem_t *)malloc(sizeof(sem_t)); + sem_init(semaphore, 0, initial_value); + + return (SDL_sem*)semaphore; +} + +int SDL_SemPost(SDL_sem *sem) +{ + int retval; + + if ( ! sem ) { + // Passed a NULL semaphore + return -1; + } + + retval = sem_post((sem_t *)sem); + + return retval; +} + +int SDL_SemTryWait(SDL_sem *sem) +{ + int retval; + + if ( ! sem ) { + // Passed a NULL semaphore + return -1; + } + + retval = 1; + + if ( sem_trywait((sem_t *)sem) == 0 ) { + retval = 0; + } + return retval; +} diff --git a/Cores/Mupen64PlusDeltaCore/libMupen64Plus/SDL/SDL_config.h b/Cores/Mupen64PlusDeltaCore/libMupen64Plus/SDL/SDL_config.h new file mode 100644 index 000000000..9f5bf01b5 --- /dev/null +++ b/Cores/Mupen64PlusDeltaCore/libMupen64Plus/SDL/SDL_config.h @@ -0,0 +1,30 @@ +/* + Copyright (c) 2015 OpenEmu Team + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the OpenEmu Team nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY OpenEmu Team ''AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL OpenEmu Team BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef SDL_CONFIG_H +#define SDL_CONFIG_H + +#endif diff --git a/Cores/Mupen64PlusDeltaCore/libMupen64Plus/SDL/SDL_opengl.h b/Cores/Mupen64PlusDeltaCore/libMupen64Plus/SDL/SDL_opengl.h new file mode 100644 index 000000000..3050b27bf --- /dev/null +++ b/Cores/Mupen64PlusDeltaCore/libMupen64Plus/SDL/SDL_opengl.h @@ -0,0 +1,42 @@ +/* + Copyright (c) 2010 OpenEmu Team + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the OpenEmu Team nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY OpenEmu Team ''AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL OpenEmu Team BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#import + +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif +#ifndef GLAPI +#define GLAPI extern +#endif + +// Stuff that doesn't exist + +#define GL_MIRRORED_REPEAT_IBM 0 diff --git a/Cores/Mupen64PlusDeltaCore/libMupen64Plus/SDL/SDL_opengles2.h b/Cores/Mupen64PlusDeltaCore/libMupen64Plus/SDL/SDL_opengles2.h new file mode 100644 index 000000000..d3630ad04 --- /dev/null +++ b/Cores/Mupen64PlusDeltaCore/libMupen64Plus/SDL/SDL_opengles2.h @@ -0,0 +1,50 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2016 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_opengles2.h + * + * This is a simple file to encapsulate the OpenGL ES 2.0 API headers. + */ +#ifndef _MSC_VER + +//#ifdef __IPHONEOS__ +#include +#include +//#else +//#include +//#include +//#include +//#endif + +#else /* _MSC_VER */ + +/* OpenGL ES2 headers for Visual Studio */ +#include "SDL_opengles2_khrplatform.h" +#include "SDL_opengles2_gl2platform.h" +#include "SDL_opengles2_gl2.h" +#include "SDL_opengles2_gl2ext.h" + +#endif /* _MSC_VER */ + +#ifndef APIENTRY +#define APIENTRY GL_APIENTRY +#endif diff --git a/Cores/Mupen64PlusDeltaCore/libMupen64Plus/SDL/SDL_thread.h b/Cores/Mupen64PlusDeltaCore/libMupen64Plus/SDL/SDL_thread.h new file mode 100644 index 000000000..53d8fd71a --- /dev/null +++ b/Cores/Mupen64PlusDeltaCore/libMupen64Plus/SDL/SDL_thread.h @@ -0,0 +1,58 @@ +/* + Copyright (c) 2010 OpenEmu Team + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the OpenEmu Team nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY OpenEmu Team ''AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL OpenEmu Team BE LIABLE FOR ANY + DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef SDL_THREAD_H +#define SDL_THREAD_H + +#define SDL_VERSION_ATLEAST(x,y,z) 1 + +typedef void SDL_mutex; +typedef void SDL_cond; +typedef void SDL_Thread; +typedef void SDL_sem; + +__BEGIN_DECLS + +SDL_mutex *SDL_CreateMutex(void); +int SDL_LockMutex(SDL_mutex *m); +int SDL_UnlockMutex(SDL_mutex *m); +void SDL_DestroyMutex(SDL_mutex *m); + +SDL_cond *SDL_CreateCond(void); +int SDL_CondWait(SDL_cond *cond, SDL_mutex *mut); +int SDL_CondSignal(SDL_cond *cond); +void SDL_DestroyCond(SDL_cond *cond); + +SDL_Thread *SDL_CreateThread(int (*fn)(void *), const char *name, void *context); +void SDL_WaitThread(SDL_Thread *thread, int *status); + +SDL_sem *SDL_CreateSemaphore(int initial_value); +int SDL_SemPost(SDL_sem *sem); +int SDL_SemTryWait(SDL_sem *sem); + +__END_DECLS + +#endif \ No newline at end of file diff --git a/Cores/N64DeltaCore b/Cores/N64DeltaCore deleted file mode 160000 index d92746745..000000000 --- a/Cores/N64DeltaCore +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d92746745d52ea255579c707e005cfd57c4c85b7 diff --git a/Delta.xcodeproj/project.pbxproj b/Delta.xcodeproj/project.pbxproj deleted file mode 100644 index 68c0cd783..000000000 --- a/Delta.xcodeproj/project.pbxproj +++ /dev/null @@ -1,1438 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXAggregateTarget section */ - BF14D8941DE7A512002CA1BE /* mogenerator */ = { - isa = PBXAggregateTarget; - buildConfigurationList = BF14D8971DE7A512002CA1BE /* Build configuration list for PBXAggregateTarget "mogenerator" */; - buildPhases = ( - BF14D8981DE7A519002CA1BE /* mogenerator */, - ); - dependencies = ( - ); - name = mogenerator; - productName = mogenerator; - }; -/* End PBXAggregateTarget section */ - -/* Begin PBXBuildFile section */ - 1FA4ABA79AB72914FE414A61 /* libPods-Delta.a in Frameworks */ = {isa = PBXBuildFile; fileRef = DC866E433B3BA9AE18ABA1EC /* libPods-Delta.a */; }; - BF02D5DA1DDEBB3000A5E131 /* openvgdb.sqlite in Resources */ = {isa = PBXBuildFile; fileRef = BF02D5D91DDEBB3000A5E131 /* openvgdb.sqlite */; }; - BF04E6FF1DB8625C000F35D3 /* ControllerSkinsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF04E6FE1DB8625C000F35D3 /* ControllerSkinsViewController.swift */; }; - BF1020E31F95B05B00313182 /* DeltaToDelta2.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = BF1020E21F95B05B00313182 /* DeltaToDelta2.xcmappingmodel */; }; - BF107EC41BF413F000E0C32C /* GamesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF107EC31BF413F000E0C32C /* GamesViewController.swift */; }; - BF1173501DA32CF600047DF8 /* ControllersSettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF11734F1DA32CF600047DF8 /* ControllersSettingsViewController.swift */; }; - BF13A7561D5D29B0000BB055 /* PreviewGameViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF13A7551D5D29B0000BB055 /* PreviewGameViewController.swift */; }; - BF13A7581D5D2FD9000BB055 /* EmulatorCore+Cheats.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF13A7571D5D2FD9000BB055 /* EmulatorCore+Cheats.swift */; }; - BF15AF841F54B43B009B6AAB /* ActionInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF15AF831F54B43B009B6AAB /* ActionInput.swift */; }; - BF18B61F1E2985F900F70067 /* UIAlertController+Importing.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF18B61E1E2985F900F70067 /* UIAlertController+Importing.swift */; }; - BF1DAD5D1D9F576000E752A7 /* PreferredControllerSkinsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF1DAD5C1D9F576000E752A7 /* PreferredControllerSkinsViewController.swift */; }; - BF1F45A421AF274D00EF9895 /* SyncResultViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF1F45A321AF274D00EF9895 /* SyncResultViewController.swift */; }; - BF1F45AB21AF4B5800EF9895 /* SyncResultsViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BF1F45AA21AF4B5800EF9895 /* SyncResultsViewController.storyboard */; }; - BF1F45AD21AF57BA00EF9895 /* HarmonyMetadataKey+Keys.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF1F45AC21AF57BA00EF9895 /* HarmonyMetadataKey+Keys.swift */; }; - BF1F45BF21AF676F00EF9895 /* Box.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF1F45BE21AF676F00EF9895 /* Box.swift */; }; - BF27CC8E1BC9FEA200A20D89 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = BF6BB2451BB73FE800CCF94A /* Assets.xcassets */; }; - BF2B98E61C97E32F00F6D57D /* SaveStatesCollectionHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF2B98E51C97E32F00F6D57D /* SaveStatesCollectionHeaderView.swift */; }; - BF31878B1D489AAA00BD020D /* CheatValidator.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF31878A1D489AAA00BD020D /* CheatValidator.swift */; }; - BF34FA071CF0F510006624C7 /* EditCheatViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF34FA061CF0F510006624C7 /* EditCheatViewController.swift */; }; - BF34FA111CF1899D006624C7 /* CheatTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF34FA101CF1899D006624C7 /* CheatTextView.swift */; }; - BF353FF21C5D7FB000C1184C /* PauseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF353FF11C5D7FB000C1184C /* PauseViewController.swift */; }; - BF353FF61C5D837600C1184C /* PauseMenu.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BF353FF41C5D837600C1184C /* PauseMenu.storyboard */; }; - BF353FF91C5D870B00C1184C /* MenuItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF353FF81C5D870B00C1184C /* MenuItem.swift */; }; - BF353FFF1C5DA3C500C1184C /* PausePresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF353FFD1C5DA3C500C1184C /* PausePresentationController.swift */; }; - BF3540001C5DA3C500C1184C /* PausePresentationControllerContentView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BF353FFE1C5DA3C500C1184C /* PausePresentationControllerContentView.xib */; }; - BF3540021C5DA3D500C1184C /* PauseStoryboardSegue.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF3540011C5DA3D500C1184C /* PauseStoryboardSegue.swift */; }; - BF3540081C5DAFAD00C1184C /* PauseTransitionCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF3540071C5DAFAD00C1184C /* PauseTransitionCoordinator.swift */; }; - BF3D6C512202865F0083E05A /* Delta2ToDelta3.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = BF3D6C502202865F0083E05A /* Delta2ToDelta3.xcmappingmodel */; }; - BF3D6C53220286750083E05A /* Delta3ToDelta4.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = BF3D6C52220286750083E05A /* Delta3ToDelta4.xcmappingmodel */; }; - BF4828841F9027B600028B97 /* Delta.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = BF4828811F9027B600028B97 /* Delta.xcdatamodeld */; }; - BF4828861F9028F500028B97 /* System.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF4828851F9028F500028B97 /* System.swift */; }; - BF4828881F90290F00028B97 /* Action.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF4828871F90290F00028B97 /* Action.swift */; }; - BF48F74E219A16DA00BC2FC1 /* SyncingServicesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF48F74D219A16DA00BC2FC1 /* SyncingServicesViewController.swift */; }; - BF525EE81FF5F370004AA849 /* DeepLinkController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF525EE71FF5F370004AA849 /* DeepLinkController.swift */; }; - BF525EEA1FF6CD12004AA849 /* DeepLink.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF525EE91FF6CD12004AA849 /* DeepLink.swift */; }; - BF56450D220239B800A8EA26 /* GameControllerInputMappingMigrationPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF56450C220239B800A8EA26 /* GameControllerInputMappingMigrationPolicy.swift */; }; - BF5942641E09BBB10051894B /* LoadControllerSkinImageOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF5942611E09BBB10051894B /* LoadControllerSkinImageOperation.swift */; }; - BF5942661E09BBB10051894B /* LoadImageURLOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF5942631E09BBB10051894B /* LoadImageURLOperation.swift */; }; - BF59426A1E09BBD00051894B /* GridCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF5942681E09BBD00051894B /* GridCollectionViewCell.swift */; }; - BF59426B1E09BBD00051894B /* GridCollectionViewLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF5942691E09BBD00051894B /* GridCollectionViewLayout.swift */; }; - BF59426F1E09BC5D0051894B /* DatabaseManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF59426D1E09BC5D0051894B /* DatabaseManager.swift */; }; - BF5942701E09BC5D0051894B /* GamesDatabase.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF59426E1E09BC5D0051894B /* GamesDatabase.swift */; }; - BF59427C1E09BC830051894B /* Cheat.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF5942771E09BC830051894B /* Cheat.swift */; }; - BF59427D1E09BC830051894B /* ControllerSkin.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF5942781E09BC830051894B /* ControllerSkin.swift */; }; - BF59427E1E09BC830051894B /* Game.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF5942791E09BC830051894B /* Game.swift */; }; - BF59427F1E09BC830051894B /* GameCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF59427A1E09BC830051894B /* GameCollection.swift */; }; - BF5942801E09BC830051894B /* SaveState.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF59427B1E09BC830051894B /* SaveState.swift */; }; - BF5942861E09BC8B0051894B /* _Cheat.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF5942811E09BC8B0051894B /* _Cheat.swift */; }; - BF5942871E09BC8B0051894B /* _ControllerSkin.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF5942821E09BC8B0051894B /* _ControllerSkin.swift */; }; - BF5942881E09BC8B0051894B /* _Game.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF5942831E09BC8B0051894B /* _Game.swift */; }; - BF5942891E09BC8B0051894B /* _GameCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF5942841E09BC8B0051894B /* _GameCollection.swift */; }; - BF59428A1E09BC8B0051894B /* _SaveState.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF5942851E09BC8B0051894B /* _SaveState.swift */; }; - BF59428E1E09BCFB0051894B /* ImportController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF59428D1E09BCFB0051894B /* ImportController.swift */; }; - BF5942931E09BD1A0051894B /* NSFetchedResultsController+Conveniences.m in Sources */ = {isa = PBXBuildFile; fileRef = BF5942901E09BD1A0051894B /* NSFetchedResultsController+Conveniences.m */; }; - BF5942941E09BD1A0051894B /* NSManagedObject+Conveniences.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF5942911E09BD1A0051894B /* NSManagedObject+Conveniences.swift */; }; - BF5942951E09BD1A0051894B /* NSManagedObjectContext+Conveniences.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF5942921E09BD1A0051894B /* NSManagedObjectContext+Conveniences.swift */; }; - BF5E7F441B9A650B00AE44F8 /* SettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF5E7F431B9A650B00AE44F8 /* SettingsViewController.swift */; }; - BF5E7F461B9A652600AE44F8 /* Settings.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BF5E7F451B9A652600AE44F8 /* Settings.storyboard */; }; - BF63A1A321A4AAAE00EE8F61 /* RecordSyncStatusViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF63A1A221A4AAAE00EE8F61 /* RecordSyncStatusViewController.swift */; }; - BF63A1B521A4B76E00EE8F61 /* RecordVersionsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF63A1B421A4B76E00EE8F61 /* RecordVersionsViewController.swift */; }; - BF6424831F5B8F3F00D6AB44 /* ListMenuViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF6424821F5B8F3F00D6AB44 /* ListMenuViewController.swift */; }; - BF6424851F5CBDC900D6AB44 /* UIView+ParentViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF6424841F5CBDC900D6AB44 /* UIView+ParentViewController.swift */; }; - BF647A6A22FB8FCE0061D76D /* Bundle+SwizzleBundleID.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF647A6922FB8FCE0061D76D /* Bundle+SwizzleBundleID.swift */; }; - BF6866171DCAC8B900BF2D06 /* ControllerSkin+Configuring.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF6866161DCAC8B900BF2D06 /* ControllerSkin+Configuring.swift */; }; - BF696B801D9B2B02009639E0 /* Theme.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF696B7F1D9B2B02009639E0 /* Theme.swift */; }; - BF69FBA223E375A20051BEEA /* libVBA-M.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BF69FBA123E375A20051BEEA /* libVBA-M.a */; }; - BF69FBA823E396860051BEEA /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = BF69FBA723E3967B0051BEEA /* libz.tbd */; }; - BF69FBAA23E399AA0051BEEA /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BF69FBA923E399AA0051BEEA /* CoreMotion.framework */; }; - BF69FBC923E3A8380051BEEA /* libNestopia.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BF69FBC823E3A8380051BEEA /* libNestopia.a */; }; - BF6BF3131EB7E47F008E83CD /* ImportOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF6BF3121EB7E47F008E83CD /* ImportOption.swift */; }; - BF6BF3181EB82111008E83CD /* iTunesImportOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF6BF3171EB82111008E83CD /* iTunesImportOption.swift */; }; - BF6BF31A1EB82146008E83CD /* ClipboardImportOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF6BF3191EB82146008E83CD /* ClipboardImportOption.swift */; }; - BF6BF31C1EB821A0008E83CD /* GamesDatabaseImportOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF6BF31B1EB821A0008E83CD /* GamesDatabaseImportOption.swift */; }; - BF6BF3211EB82362008E83CD /* GamesDatabase.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BF6BF31F1EB82362008E83CD /* GamesDatabase.storyboard */; }; - BF6BF3271EB87EB8008E83CD /* PhotoLibraryImportOption.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF6BF3261EB87EB8008E83CD /* PhotoLibraryImportOption.swift */; }; - BF6EE5E91F7C5F860051AD6C /* _GameControllerInputMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF6EE5E81F7C5F860051AD6C /* _GameControllerInputMapping.swift */; }; - BF6EE5EB1F7C5F8F0051AD6C /* GameControllerInputMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF6EE5EA1F7C5F8F0051AD6C /* GameControllerInputMapping.swift */; }; - BF713C0822499ED4004A1A2B /* PreviousHarmony.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = BF713C0622499ED3004A1A2B /* PreviousHarmony.xcdatamodeld */; }; - BF71CF871FE90006001F1613 /* AppIconShortcutsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF71CF861FE90006001F1613 /* AppIconShortcutsViewController.swift */; }; - BF71CF8A1FE904B1001F1613 /* GameTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BF71CF891FE904B1001F1613 /* GameTableViewCell.xib */; }; - BF797A2D1C2D339F00F1A000 /* UILabel+FontSize.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF797A2C1C2D339F00F1A000 /* UILabel+FontSize.swift */; }; - BF7AE8081C2E858400B1B5BC /* GridMenuViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF7AE8041C2E858400B1B5BC /* GridMenuViewController.swift */; }; - BF7AE80A1C2E8C7600B1B5BC /* UIColor+Delta.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF7AE8091C2E8C7600B1B5BC /* UIColor+Delta.swift */; }; - BF80E1D21F13117000847008 /* ControllerInputsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF616A121F08184A0077F8B2 /* ControllerInputsViewController.swift */; }; - BF8A333421A484A000A42FD4 /* BadgedTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF8A333321A484A000A42FD4 /* BadgedTableViewCell.swift */; }; - BF8A334621A4926F00A42FD4 /* GameSyncStatusViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF8A334521A4926F00A42FD4 /* GameSyncStatusViewController.swift */; }; - BF8CA9361F5F651900499FDD /* PopoverMenuController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF8CA9351F5F651900499FDD /* PopoverMenuController.swift */; }; - BF8DDD241F4F6C880088A21B /* InputCalloutView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF8DDD231F4F6C880088A21B /* InputCalloutView.swift */; }; - BF95E2771E4977BF0030E7AD /* GameMetadata.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF95E2761E4977BF0030E7AD /* GameMetadata.swift */; }; - BF95E2791E4982A10030E7AD /* GamesDatabaseBrowserViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF95E2781E4982A10030E7AD /* GamesDatabaseBrowserViewController.swift */; }; - BF99A5971DC2F9C400468E9E /* ControllerSkinTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF99A5961DC2F9C400468E9E /* ControllerSkinTableViewCell.swift */; }; - BFA0D1271D3AE1F600565894 /* GameViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF63BDE91D389EEB00FCB040 /* GameViewController.swift */; }; - BFAA1FED1B8AA4FA00495943 /* Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFAA1FEC1B8AA4FA00495943 /* Settings.swift */; }; - BFAB9F7D219A43380080EC7D /* SyncManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFAB9F7C219A43380080EC7D /* SyncManager.swift */; }; - BFAB9F88219A4B670080EC7D /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = BFAB9F87219A4B670080EC7D /* GoogleService-Info.plist */; }; - BFB3645823245A6000CD0EB1 /* LicensesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFB3645723245A6000CD0EB1 /* LicensesViewController.swift */; }; - BFBAB2E31EB685A2004E0B0E /* DeltaCoreProtocol+Delta.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFBAB2E21EB685A2004E0B0E /* DeltaCoreProtocol+Delta.swift */; }; - BFC1F2CC22F9515F00606A45 /* CopyDeepLinkActivity.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFC1F2CB22F9515F00606A45 /* CopyDeepLinkActivity.swift */; }; - BFC3628021ADE2BA00EF2BE6 /* UIAlertController+Error.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFC3627F21ADE2BA00EF2BE6 /* UIAlertController+Error.swift */; }; - BFC6F7B81F435BC500221B96 /* Input+Display.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFC6F7B71F435BC500221B96 /* Input+Display.swift */; }; - BFC9B7391CEFCD34008629BB /* CheatsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFC9B7381CEFCD34008629BB /* CheatsViewController.swift */; }; - BFCEA67E1D56FF640061A534 /* UIViewControllerContextTransitioning+Conveniences.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFCEA67D1D56FF640061A534 /* UIViewControllerContextTransitioning+Conveniences.swift */; }; - BFD097211D3A01B8005A44C2 /* SaveStatesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF3540041C5DA70400C1184C /* SaveStatesViewController.swift */; }; - BFD1EF402336BD8800D197CF /* UIDevice+Processor.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFD1EF3F2336BD8800D197CF /* UIDevice+Processor.swift */; }; - BFDB0FEC24464758001C727C /* DS.png in Resources */ = {isa = PBXBuildFile; fileRef = BFDB0FEB24464757001C727C /* DS.png */; }; - BFDB3418219E4B1700595A62 /* SyncStatusViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFDB3417219E4B1700595A62 /* SyncStatusViewController.swift */; }; - BFDCA1E6244EBAA900B8FBDB /* liblibDeSmuME.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BFDCA1E5244EBAA900B8FBDB /* liblibDeSmuME.a */; }; - BFDCA1E9244F7E1000B8FBDB /* Delta5ToDelta6.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = BFDCA1E8244F7E1000B8FBDB /* Delta5ToDelta6.xcmappingmodel */; }; - BFDD04F11D5E2C27002D450E /* GameCollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFDD04F01D5E2C27002D450E /* GameCollectionViewController.swift */; }; - BFE022A01F5B57FF0052D888 /* PopoverMenuButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFE0229F1F5B577D0052D888 /* PopoverMenuButton.swift */; }; - BFE4269E1D9C68E600DC913F /* SaveStatesStoryboardSegue.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFE4269D1D9C68E600DC913F /* SaveStatesStoryboardSegue.swift */; }; - BFE56E1923EB7BE00014FECD /* UIImage+SymbolFallback.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFE56E1823EB7BE00014FECD /* UIImage+SymbolFallback.swift */; }; - BFE593CA21F3F8B7003412A6 /* GameSave.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFE593C921F3F8B7003412A6 /* GameSave.swift */; }; - BFE593CC21F3F8C2003412A6 /* _GameSave.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFE593CB21F3F8C2003412A6 /* _GameSave.swift */; }; - BFE9908024451E15006409A7 /* MelonDSCoreSettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFE9907F24451E15006409A7 /* MelonDSCoreSettingsViewController.swift */; }; - BFEE943D23F2180200CDA07D /* Delta4ToDelta5.xcmappingmodel in Sources */ = {isa = PBXBuildFile; fileRef = BFEE943C23F2180200CDA07D /* Delta4ToDelta5.xcmappingmodel */; }; - BFEF24F31F7DD4FD00454C62 /* SaveStateMigrationPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFEF24F21F7DD4FB00454C62 /* SaveStateMigrationPolicy.swift */; }; - BFF6452E1F7CC5060056533E /* GameControllerInputMappingTransformer.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF6B82A41F7CC2A300042BFB /* GameControllerInputMappingTransformer.swift */; }; - BFFA4C091E8A24D600D87934 /* GameTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFFA4C081E8A24D600D87934 /* GameTableViewCell.swift */; }; - BFFA71DD1AAC406100EE9DD1 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFFA71DC1AAC406100EE9DD1 /* AppDelegate.swift */; }; - BFFA71E21AAC406100EE9DD1 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BFFA71E01AAC406100EE9DD1 /* Main.storyboard */; }; - BFFBD3D9224A0756002EFC79 /* URL+ExtendedAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFFBD3D8224A0756002EFC79 /* URL+ExtendedAttributes.swift */; }; - BFFC461E1D59823500AF2CC6 /* GamesPresentationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFFC461B1D59823500AF2CC6 /* GamesPresentationController.swift */; }; - BFFC461F1D59823500AF2CC6 /* GamesStoryboardSegue.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFFC461C1D59823500AF2CC6 /* GamesStoryboardSegue.swift */; }; - BFFC46201D59823500AF2CC6 /* InitialGamesStoryboardSegue.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFFC461D1D59823500AF2CC6 /* InitialGamesStoryboardSegue.swift */; }; - BFFC46231D5984A000AF2CC6 /* LaunchViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFFC46221D5984A000AF2CC6 /* LaunchViewController.swift */; }; - BFFC46461D59861000AF2CC6 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = BFFC46441D59861000AF2CC6 /* LaunchScreen.storyboard */; }; - BFFC464C1D5998D600AF2CC6 /* CheatTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFFC464B1D5998D600AF2CC6 /* CheatTableViewCell.swift */; }; - BFFDF03723E3BB2600931B96 /* libSnes9x.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BFFDF03623E3BB2600931B96 /* libSnes9x.a */; }; - BFFDF03F23E3C28A00931B96 /* libGambatte.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BFFDF03D23E3C0F000931B96 /* libGambatte.a */; }; - BFFDF04623E3D3A600931B96 /* libMupen64Plus.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BFFDF04523E3D3A600931B96 /* libMupen64Plus.a */; }; -/* End PBXBuildFile section */ - -/* Begin PBXFileReference section */ - 22506DA00971C4300AF90A35 /* Pods.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A19FF50F55441BC2B2248241 /* Pods-Delta.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Delta.release.xcconfig"; path = "Pods/Target Support Files/Pods-Delta/Pods-Delta.release.xcconfig"; sourceTree = ""; }; - BF02D5D91DDEBB3000A5E131 /* openvgdb.sqlite */ = {isa = PBXFileReference; lastKnownFileType = file; path = openvgdb.sqlite; sourceTree = ""; }; - BF0418131D01E93400E85BCF /* GBADeltaCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = GBADeltaCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BF04E6FE1DB8625C000F35D3 /* ControllerSkinsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControllerSkinsViewController.swift; sourceTree = ""; }; - BF07200E219A3A9500F05DA4 /* ZIPFoundation.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ZIPFoundation.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BF0758DE2202827C005110F2 /* Delta 4.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Delta 4.xcdatamodel"; sourceTree = ""; }; - BF090CF11B490D8300DCAB45 /* Delta-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Delta-Bridging-Header.h"; sourceTree = ""; }; - BF1020E21F95B05B00313182 /* DeltaToDelta2.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; path = DeltaToDelta2.xcmappingmodel; sourceTree = ""; }; - BF107EC31BF413F000E0C32C /* GamesViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GamesViewController.swift; sourceTree = ""; }; - BF11734F1DA32CF600047DF8 /* ControllersSettingsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControllersSettingsViewController.swift; sourceTree = ""; }; - BF13A7551D5D29B0000BB055 /* PreviewGameViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PreviewGameViewController.swift; sourceTree = ""; }; - BF13A7571D5D2FD9000BB055 /* EmulatorCore+Cheats.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "EmulatorCore+Cheats.swift"; sourceTree = ""; }; - BF15AF831F54B43B009B6AAB /* ActionInput.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ActionInput.swift; sourceTree = ""; }; - BF18B61E1E2985F900F70067 /* UIAlertController+Importing.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIAlertController+Importing.swift"; sourceTree = ""; }; - BF1DAD5C1D9F576000E752A7 /* PreferredControllerSkinsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PreferredControllerSkinsViewController.swift; sourceTree = ""; }; - BF1F45A321AF274D00EF9895 /* SyncResultViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncResultViewController.swift; sourceTree = ""; }; - BF1F45AA21AF4B5800EF9895 /* SyncResultsViewController.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = SyncResultsViewController.storyboard; sourceTree = ""; }; - BF1F45AC21AF57BA00EF9895 /* HarmonyMetadataKey+Keys.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "HarmonyMetadataKey+Keys.swift"; sourceTree = ""; }; - BF1F45BE21AF676F00EF9895 /* Box.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Box.swift; sourceTree = ""; }; - BF27CC861BC9E3C600A20D89 /* Delta.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = Delta.entitlements; sourceTree = ""; }; - BF27CC8A1BC9FE4D00A20D89 /* Pods.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Pods.framework; path = "Pods/../build/Debug-appletvos/Pods.framework"; sourceTree = ""; }; - BF27CC941BCB7B7A00A20D89 /* GameController.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameController.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS9.0.sdk/System/Library/Frameworks/GameController.framework; sourceTree = DEVELOPER_DIR; }; - BF2B98E51C97E32F00F6D57D /* SaveStatesCollectionHeaderView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SaveStatesCollectionHeaderView.swift; sourceTree = ""; }; - BF30AC25244E88BE00F0C744 /* libMelonDSDeltaCore.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libMelonDSDeltaCore.a; sourceTree = BUILT_PRODUCTS_DIR; }; - BF31878A1D489AAA00BD020D /* CheatValidator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CheatValidator.swift; sourceTree = ""; }; - BF34FA061CF0F510006624C7 /* EditCheatViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = EditCheatViewController.swift; sourceTree = ""; }; - BF34FA101CF1899D006624C7 /* CheatTextView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CheatTextView.swift; sourceTree = ""; }; - BF353FF11C5D7FB000C1184C /* PauseViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PauseViewController.swift; sourceTree = ""; }; - BF353FF51C5D837600C1184C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/PauseMenu.storyboard; sourceTree = ""; }; - BF353FF81C5D870B00C1184C /* MenuItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MenuItem.swift; sourceTree = ""; }; - BF353FFD1C5DA3C500C1184C /* PausePresentationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PausePresentationController.swift; sourceTree = ""; }; - BF353FFE1C5DA3C500C1184C /* PausePresentationControllerContentView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = PausePresentationControllerContentView.xib; path = Delta/Base.lproj/PausePresentationControllerContentView.xib; sourceTree = SOURCE_ROOT; }; - BF3540011C5DA3D500C1184C /* PauseStoryboardSegue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PauseStoryboardSegue.swift; sourceTree = ""; }; - BF3540041C5DA70400C1184C /* SaveStatesViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SaveStatesViewController.swift; sourceTree = ""; }; - BF3540071C5DAFAD00C1184C /* PauseTransitionCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PauseTransitionCoordinator.swift; sourceTree = ""; }; - BF3D6C502202865F0083E05A /* Delta2ToDelta3.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; path = Delta2ToDelta3.xcmappingmodel; sourceTree = ""; }; - BF3D6C52220286750083E05A /* Delta3ToDelta4.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; path = Delta3ToDelta4.xcmappingmodel; sourceTree = ""; }; - BF4828821F9027B600028B97 /* Delta 2.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Delta 2.xcdatamodel"; sourceTree = ""; }; - BF4828831F9027B600028B97 /* Delta.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = Delta.xcdatamodel; sourceTree = ""; }; - BF4828851F9028F500028B97 /* System.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = System.swift; sourceTree = ""; }; - BF4828871F90290F00028B97 /* Action.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Action.swift; sourceTree = ""; }; - BF48F74D219A16DA00BC2FC1 /* SyncingServicesViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SyncingServicesViewController.swift; sourceTree = ""; }; - BF48F754219A1EEB00BC2FC1 /* Harmony.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Harmony.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BF48F75A219A1F8300BC2FC1 /* Harmony_Drive.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Harmony_Drive.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BF525EE71FF5F370004AA849 /* DeepLinkController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeepLinkController.swift; sourceTree = ""; }; - BF525EE91FF6CD12004AA849 /* DeepLink.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeepLink.swift; sourceTree = ""; }; - BF5645092202381000A8EA26 /* Delta 3.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Delta 3.xcdatamodel"; sourceTree = ""; }; - BF56450C220239B800A8EA26 /* GameControllerInputMappingMigrationPolicy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameControllerInputMappingMigrationPolicy.swift; sourceTree = ""; }; - BF5942611E09BBB10051894B /* LoadControllerSkinImageOperation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoadControllerSkinImageOperation.swift; sourceTree = ""; }; - BF5942631E09BBB10051894B /* LoadImageURLOperation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoadImageURLOperation.swift; sourceTree = ""; }; - BF5942681E09BBD00051894B /* GridCollectionViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GridCollectionViewCell.swift; sourceTree = ""; }; - BF5942691E09BBD00051894B /* GridCollectionViewLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GridCollectionViewLayout.swift; sourceTree = ""; }; - BF59426D1E09BC5D0051894B /* DatabaseManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DatabaseManager.swift; sourceTree = ""; }; - BF59426E1E09BC5D0051894B /* GamesDatabase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GamesDatabase.swift; sourceTree = ""; }; - BF5942771E09BC830051894B /* Cheat.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Cheat.swift; sourceTree = ""; }; - BF5942781E09BC830051894B /* ControllerSkin.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControllerSkin.swift; sourceTree = ""; }; - BF5942791E09BC830051894B /* Game.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Game.swift; sourceTree = ""; }; - BF59427A1E09BC830051894B /* GameCollection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GameCollection.swift; sourceTree = ""; }; - BF59427B1E09BC830051894B /* SaveState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SaveState.swift; sourceTree = ""; }; - BF5942811E09BC8B0051894B /* _Cheat.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = _Cheat.swift; sourceTree = ""; }; - BF5942821E09BC8B0051894B /* _ControllerSkin.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = _ControllerSkin.swift; sourceTree = ""; }; - BF5942831E09BC8B0051894B /* _Game.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = _Game.swift; sourceTree = ""; }; - BF5942841E09BC8B0051894B /* _GameCollection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = _GameCollection.swift; sourceTree = ""; }; - BF5942851E09BC8B0051894B /* _SaveState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = _SaveState.swift; sourceTree = ""; }; - BF59428B1E09BC930051894B /* ControllerSkinConfigurations.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ControllerSkinConfigurations.h; sourceTree = ""; }; - BF59428D1E09BCFB0051894B /* ImportController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImportController.swift; sourceTree = ""; }; - BF59428F1E09BD1A0051894B /* NSFetchedResultsController+Conveniences.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSFetchedResultsController+Conveniences.h"; sourceTree = ""; }; - BF5942901E09BD1A0051894B /* NSFetchedResultsController+Conveniences.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSFetchedResultsController+Conveniences.m"; sourceTree = ""; }; - BF5942911E09BD1A0051894B /* NSManagedObject+Conveniences.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSManagedObject+Conveniences.swift"; sourceTree = ""; }; - BF5942921E09BD1A0051894B /* NSManagedObjectContext+Conveniences.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NSManagedObjectContext+Conveniences.swift"; sourceTree = ""; }; - BF5ACE3823E23D6500BD0F20 /* libVBA-M.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libVBA-M.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - BF5E7F431B9A650B00AE44F8 /* SettingsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsViewController.swift; sourceTree = ""; }; - BF5E7F451B9A652600AE44F8 /* Settings.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = Settings.storyboard; path = Delta/Base.lproj/Settings.storyboard; sourceTree = SOURCE_ROOT; }; - BF616A121F08184A0077F8B2 /* ControllerInputsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ControllerInputsViewController.swift; sourceTree = ""; }; - BF63A1A221A4AAAE00EE8F61 /* RecordSyncStatusViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordSyncStatusViewController.swift; sourceTree = ""; }; - BF63A1B421A4B76E00EE8F61 /* RecordVersionsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordVersionsViewController.swift; sourceTree = ""; }; - BF63BDE91D389EEB00FCB040 /* GameViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GameViewController.swift; sourceTree = ""; }; - BF6424821F5B8F3F00D6AB44 /* ListMenuViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListMenuViewController.swift; sourceTree = ""; }; - BF6424841F5CBDC900D6AB44 /* UIView+ParentViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIView+ParentViewController.swift"; sourceTree = ""; }; - BF647A6922FB8FCE0061D76D /* Bundle+SwizzleBundleID.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Bundle+SwizzleBundleID.swift"; sourceTree = ""; }; - BF6866161DCAC8B900BF2D06 /* ControllerSkin+Configuring.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ControllerSkin+Configuring.swift"; sourceTree = ""; }; - BF696B7F1D9B2B02009639E0 /* Theme.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Theme.swift; sourceTree = ""; }; - BF69FBA123E375A20051BEEA /* libVBA-M.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = "libVBA-M.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - BF69FBA723E3967B0051BEEA /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; }; - BF69FBA923E399AA0051BEEA /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; }; - BF69FBC823E3A8380051BEEA /* libNestopia.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libNestopia.a; sourceTree = BUILT_PRODUCTS_DIR; }; - BF6B82A41F7CC2A300042BFB /* GameControllerInputMappingTransformer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameControllerInputMappingTransformer.swift; sourceTree = ""; }; - BF6BB2451BB73FE800CCF94A /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - BF6BF3121EB7E47F008E83CD /* ImportOption.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImportOption.swift; sourceTree = ""; }; - BF6BF3171EB82111008E83CD /* iTunesImportOption.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = iTunesImportOption.swift; sourceTree = ""; }; - BF6BF3191EB82146008E83CD /* ClipboardImportOption.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ClipboardImportOption.swift; sourceTree = ""; }; - BF6BF31B1EB821A0008E83CD /* GamesDatabaseImportOption.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GamesDatabaseImportOption.swift; sourceTree = ""; }; - BF6BF3201EB82362008E83CD /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/GamesDatabase.storyboard; sourceTree = ""; }; - BF6BF3261EB87EB8008E83CD /* PhotoLibraryImportOption.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PhotoLibraryImportOption.swift; sourceTree = ""; }; - BF6EE5E81F7C5F860051AD6C /* _GameControllerInputMapping.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = _GameControllerInputMapping.swift; sourceTree = ""; }; - BF6EE5EA1F7C5F8F0051AD6C /* GameControllerInputMapping.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameControllerInputMapping.swift; sourceTree = ""; }; - BF70798B1B6B464B0019077C /* ZipZap.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = ZipZap.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BF713C0722499ED3004A1A2B /* Harmony.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = Harmony.xcdatamodel; sourceTree = ""; }; - BF71CF861FE90006001F1613 /* AppIconShortcutsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppIconShortcutsViewController.swift; sourceTree = ""; }; - BF71CF891FE904B1001F1613 /* GameTableViewCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = GameTableViewCell.xib; sourceTree = ""; }; - BF797A2C1C2D339F00F1A000 /* UILabel+FontSize.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UILabel+FontSize.swift"; sourceTree = ""; }; - BF79966C224C075A009B094F /* N64DeltaCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = N64DeltaCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BF7AE8041C2E858400B1B5BC /* GridMenuViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GridMenuViewController.swift; sourceTree = ""; }; - BF7AE8091C2E8C7600B1B5BC /* UIColor+Delta.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIColor+Delta.swift"; sourceTree = ""; }; - BF8A333321A484A000A42FD4 /* BadgedTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BadgedTableViewCell.swift; sourceTree = ""; }; - BF8A334521A4926F00A42FD4 /* GameSyncStatusViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameSyncStatusViewController.swift; sourceTree = ""; }; - BF8CA9351F5F651900499FDD /* PopoverMenuController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PopoverMenuController.swift; sourceTree = ""; }; - BF8DDD231F4F6C880088A21B /* InputCalloutView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InputCalloutView.swift; sourceTree = ""; }; - BF95E2761E4977BF0030E7AD /* GameMetadata.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GameMetadata.swift; sourceTree = ""; }; - BF95E2781E4982A10030E7AD /* GamesDatabaseBrowserViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GamesDatabaseBrowserViewController.swift; sourceTree = ""; }; - BF98C9812204D9A1006B95AC /* NESDeltaCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = NESDeltaCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BF99A5961DC2F9C400468E9E /* ControllerSkinTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ControllerSkinTableViewCell.swift; sourceTree = ""; }; - BF9F4FCE1AAD7B87004C9500 /* DeltaCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DeltaCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BFAA1FEC1B8AA4FA00495943 /* Settings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Settings.swift; sourceTree = ""; }; - BFAB9F7C219A43380080EC7D /* SyncManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncManager.swift; sourceTree = ""; }; - BFAB9F87219A4B670080EC7D /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; - BFB359412278FD6700CFD920 /* N64DeltaCore_Video.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = N64DeltaCore_Video.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BFB359422278FD6800CFD920 /* N64DeltaCore_RSP.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = N64DeltaCore_RSP.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BFB3645723245A6000CD0EB1 /* LicensesViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LicensesViewController.swift; sourceTree = ""; }; - BFBAB2E21EB685A2004E0B0E /* DeltaCoreProtocol+Delta.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "DeltaCoreProtocol+Delta.swift"; sourceTree = ""; }; - BFC134E01AAD82460087AD7B /* SNESDeltaCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SNESDeltaCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BFC1F2CB22F9515F00606A45 /* CopyDeepLinkActivity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CopyDeepLinkActivity.swift; sourceTree = ""; }; - BFC3627F21ADE2BA00EF2BE6 /* UIAlertController+Error.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIAlertController+Error.swift"; sourceTree = ""; }; - BFC6F7B71F435BC500221B96 /* Input+Display.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Input+Display.swift"; sourceTree = ""; }; - BFC9B7381CEFCD34008629BB /* CheatsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CheatsViewController.swift; sourceTree = ""; }; - BFCEA67D1D56FF640061A534 /* UIViewControllerContextTransitioning+Conveniences.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIViewControllerContextTransitioning+Conveniences.swift"; sourceTree = ""; }; - BFD1EF3F2336BD8800D197CF /* UIDevice+Processor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIDevice+Processor.swift"; sourceTree = ""; }; - BFDB0FEB24464757001C727C /* DS.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = DS.png; sourceTree = ""; }; - BFDB3417219E4B1700595A62 /* SyncStatusViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncStatusViewController.swift; sourceTree = ""; }; - BFDCA1E5244EBAA900B8FBDB /* liblibDeSmuME.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = liblibDeSmuME.a; sourceTree = BUILT_PRODUCTS_DIR; }; - BFDCA1E7244F7DB100B8FBDB /* Delta 6.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Delta 6.xcdatamodel"; sourceTree = ""; }; - BFDCA1E8244F7E1000B8FBDB /* Delta5ToDelta6.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; path = Delta5ToDelta6.xcmappingmodel; sourceTree = ""; }; - BFDD04F01D5E2C27002D450E /* GameCollectionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GameCollectionViewController.swift; sourceTree = ""; }; - BFDE2CC6222DF345008038E0 /* Harmony_Dropbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Harmony_Dropbox.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BFDE2CC7222DF345008038E0 /* Alamofire.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Alamofire.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BFDE2CC8222DF345008038E0 /* SwiftyDropbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = SwiftyDropbox.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BFDF71DA22F94CDF0074D92E /* DSDeltaCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = DSDeltaCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BFE0229F1F5B577D0052D888 /* PopoverMenuButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PopoverMenuButton.swift; sourceTree = ""; }; - BFE4269D1D9C68E600DC913F /* SaveStatesStoryboardSegue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SaveStatesStoryboardSegue.swift; sourceTree = ""; }; - BFE4275223EDF75300E6B417 /* Delta 5.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "Delta 5.xcdatamodel"; sourceTree = ""; }; - BFE56E1823EB7BE00014FECD /* UIImage+SymbolFallback.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIImage+SymbolFallback.swift"; sourceTree = ""; }; - BFE593C921F3F8B7003412A6 /* GameSave.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GameSave.swift; sourceTree = ""; }; - BFE593CB21F3F8C2003412A6 /* _GameSave.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = _GameSave.swift; sourceTree = ""; }; - BFE9907F24451E15006409A7 /* MelonDSCoreSettingsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MelonDSCoreSettingsViewController.swift; sourceTree = ""; }; - BFEC732C1AAECC4A00650035 /* Roxas.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Roxas.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BFEE943C23F2180200CDA07D /* Delta4ToDelta5.xcmappingmodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcmappingmodel; path = Delta4ToDelta5.xcmappingmodel; sourceTree = ""; }; - BFEF24F21F7DD4FB00454C62 /* SaveStateMigrationPolicy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SaveStateMigrationPolicy.swift; sourceTree = ""; }; - BFF0742B1E9DC17500ACDF4A /* GBCDeltaCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = GBCDeltaCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BFFA4C081E8A24D600D87934 /* GameTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GameTableViewCell.swift; sourceTree = ""; }; - BFFA71D71AAC406100EE9DD1 /* Delta.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Delta.app; sourceTree = BUILT_PRODUCTS_DIR; }; - BFFA71DB1AAC406100EE9DD1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - BFFA71DC1AAC406100EE9DD1 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - BFFA71E11AAC406100EE9DD1 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; - BFFBD3D8224A0756002EFC79 /* URL+ExtendedAttributes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "URL+ExtendedAttributes.swift"; sourceTree = ""; }; - BFFC461B1D59823500AF2CC6 /* GamesPresentationController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GamesPresentationController.swift; sourceTree = ""; }; - BFFC461C1D59823500AF2CC6 /* GamesStoryboardSegue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GamesStoryboardSegue.swift; sourceTree = ""; }; - BFFC461D1D59823500AF2CC6 /* InitialGamesStoryboardSegue.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InitialGamesStoryboardSegue.swift; sourceTree = ""; }; - BFFC46221D5984A000AF2CC6 /* LaunchViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LaunchViewController.swift; sourceTree = ""; }; - BFFC46451D59861000AF2CC6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; - BFFC464B1D5998D600AF2CC6 /* CheatTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CheatTableViewCell.swift; sourceTree = ""; }; - BFFDF03623E3BB2600931B96 /* libSnes9x.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libSnes9x.a; sourceTree = BUILT_PRODUCTS_DIR; }; - BFFDF03D23E3C0F000931B96 /* libGambatte.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libGambatte.a; sourceTree = BUILT_PRODUCTS_DIR; }; - BFFDF04523E3D3A600931B96 /* libMupen64Plus.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libMupen64Plus.a; sourceTree = BUILT_PRODUCTS_DIR; }; - C786AF1D2DDB6223BE2063CC /* Pods-Delta.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Delta.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Delta/Pods-Delta.debug.xcconfig"; sourceTree = ""; }; - DC866E433B3BA9AE18ABA1EC /* libPods-Delta.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Delta.a"; sourceTree = BUILT_PRODUCTS_DIR; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - BFFA71D41AAC406100EE9DD1 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - BF69FBA823E396860051BEEA /* libz.tbd in Frameworks */, - BF69FBAA23E399AA0051BEEA /* CoreMotion.framework in Frameworks */, - BF69FBA223E375A20051BEEA /* libVBA-M.a in Frameworks */, - BFFDF04623E3D3A600931B96 /* libMupen64Plus.a in Frameworks */, - BFDCA1E6244EBAA900B8FBDB /* liblibDeSmuME.a in Frameworks */, - BF69FBC923E3A8380051BEEA /* libNestopia.a in Frameworks */, - 1FA4ABA79AB72914FE414A61 /* libPods-Delta.a in Frameworks */, - BFFDF03F23E3C28A00931B96 /* libGambatte.a in Frameworks */, - BFFDF03723E3BB2600931B96 /* libSnes9x.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - BF090CEE1B490C1A00DCAB45 /* Extensions */ = { - isa = PBXGroup; - children = ( - BF797A2C1C2D339F00F1A000 /* UILabel+FontSize.swift */, - BF7AE8091C2E8C7600B1B5BC /* UIColor+Delta.swift */, - BFCEA67D1D56FF640061A534 /* UIViewControllerContextTransitioning+Conveniences.swift */, - BF13A7571D5D2FD9000BB055 /* EmulatorCore+Cheats.swift */, - BF6866161DCAC8B900BF2D06 /* ControllerSkin+Configuring.swift */, - BF59428F1E09BD1A0051894B /* NSFetchedResultsController+Conveniences.h */, - BF5942901E09BD1A0051894B /* NSFetchedResultsController+Conveniences.m */, - BF5942911E09BD1A0051894B /* NSManagedObject+Conveniences.swift */, - BF5942921E09BD1A0051894B /* NSManagedObjectContext+Conveniences.swift */, - BF18B61E1E2985F900F70067 /* UIAlertController+Importing.swift */, - BFC6F7B71F435BC500221B96 /* Input+Display.swift */, - BF6424841F5CBDC900D6AB44 /* UIView+ParentViewController.swift */, - BFC3627F21ADE2BA00EF2BE6 /* UIAlertController+Error.swift */, - BF1F45AC21AF57BA00EF9895 /* HarmonyMetadataKey+Keys.swift */, - BFFBD3D8224A0756002EFC79 /* URL+ExtendedAttributes.swift */, - BF647A6922FB8FCE0061D76D /* Bundle+SwizzleBundleID.swift */, - BFD1EF3F2336BD8800D197CF /* UIDevice+Processor.swift */, - BFE56E1823EB7BE00014FECD /* UIImage+SymbolFallback.swift */, - ); - path = Extensions; - sourceTree = ""; - }; - BF11734E1DA32CEC00047DF8 /* Controllers */ = { - isa = PBXGroup; - children = ( - BF11734F1DA32CF600047DF8 /* ControllersSettingsViewController.swift */, - BF616A121F08184A0077F8B2 /* ControllerInputsViewController.swift */, - BF8DDD231F4F6C880088A21B /* InputCalloutView.swift */, - ); - path = Controllers; - sourceTree = ""; - }; - BF1DAD5B1D9F574900E752A7 /* Controller Skins */ = { - isa = PBXGroup; - children = ( - BF1DAD5C1D9F576000E752A7 /* PreferredControllerSkinsViewController.swift */, - BF04E6FE1DB8625C000F35D3 /* ControllerSkinsViewController.swift */, - BF99A5961DC2F9C400468E9E /* ControllerSkinTableViewCell.swift */, - ); - path = "Controller Skins"; - sourceTree = ""; - }; - BF353FFB1C5DA2F600C1184C /* Presentation Controller */ = { - isa = PBXGroup; - children = ( - BF353FFD1C5DA3C500C1184C /* PausePresentationController.swift */, - BF353FFE1C5DA3C500C1184C /* PausePresentationControllerContentView.xib */, - ); - path = "Presentation Controller"; - sourceTree = ""; - }; - BF3540031C5DA6D800C1184C /* Save States */ = { - isa = PBXGroup; - children = ( - BF3540041C5DA70400C1184C /* SaveStatesViewController.swift */, - BF2B98E51C97E32F00F6D57D /* SaveStatesCollectionHeaderView.swift */, - ); - path = "Save States"; - sourceTree = ""; - }; - BF46894D1AAC469800A2586D /* Game Selection */ = { - isa = PBXGroup; - children = ( - BF107EC31BF413F000E0C32C /* GamesViewController.swift */, - BFDD04F01D5E2C27002D450E /* GameCollectionViewController.swift */, - BFFC461A1D59820F00AF2CC6 /* Segues */, - ); - path = "Game Selection"; - sourceTree = ""; - }; - BF48F74C219A16C100BC2FC1 /* Syncing */ = { - isa = PBXGroup; - children = ( - BF48F74D219A16DA00BC2FC1 /* SyncingServicesViewController.swift */, - BFDB3417219E4B1700595A62 /* SyncStatusViewController.swift */, - BF8A334521A4926F00A42FD4 /* GameSyncStatusViewController.swift */, - BF63A1A221A4AAAE00EE8F61 /* RecordSyncStatusViewController.swift */, - BF63A1B421A4B76E00EE8F61 /* RecordVersionsViewController.swift */, - ); - path = Syncing; - sourceTree = ""; - }; - BF525EE61FF5F355004AA849 /* Deep Linking */ = { - isa = PBXGroup; - children = ( - BF525EE91FF6CD12004AA849 /* DeepLink.swift */, - BF525EE71FF5F370004AA849 /* DeepLinkController.swift */, - BFC1F2CB22F9515F00606A45 /* CopyDeepLinkActivity.swift */, - ); - path = "Deep Linking"; - sourceTree = ""; - }; - BF5942571E09BB5D0051894B /* Components */ = { - isa = PBXGroup; - children = ( - BF4828871F90290F00028B97 /* Action.swift */, - BF1F45BE21AF676F00EF9895 /* Box.swift */, - BFE0229C1F5B56840052D888 /* Popover Menu */, - BF5942671E09BBB70051894B /* Collection View */, - BF71CF881FE90471001F1613 /* Table View */, - BF5942601E09BBA80051894B /* Loading */, - ); - path = Components; - sourceTree = ""; - }; - BF5942601E09BBA80051894B /* Loading */ = { - isa = PBXGroup; - children = ( - BF5942631E09BBB10051894B /* LoadImageURLOperation.swift */, - BF5942611E09BBB10051894B /* LoadControllerSkinImageOperation.swift */, - ); - path = Loading; - sourceTree = ""; - }; - BF5942671E09BBB70051894B /* Collection View */ = { - isa = PBXGroup; - children = ( - BF5942681E09BBD00051894B /* GridCollectionViewCell.swift */, - BF5942691E09BBD00051894B /* GridCollectionViewLayout.swift */, - ); - path = "Collection View"; - sourceTree = ""; - }; - BF59426C1E09BC450051894B /* Database */ = { - isa = PBXGroup; - children = ( - BF59426D1E09BC5D0051894B /* DatabaseManager.swift */, - BF5942711E09BC690051894B /* Model */, - BF95E2751E49763D0030E7AD /* OpenVGDB */, - ); - path = Database; - sourceTree = ""; - }; - BF5942711E09BC690051894B /* Model */ = { - isa = PBXGroup; - children = ( - BF713C0622499ED3004A1A2B /* PreviousHarmony.xcdatamodeld */, - BF4828811F9027B600028B97 /* Delta.xcdatamodeld */, - BF5942741E09BC740051894B /* Human */, - BF5942751E09BC780051894B /* Machine */, - BF6B82A31F7CC29A00042BFB /* Transformers */, - BFEF24F01F7DD4B600454C62 /* Migrations */, - BF5942761E09BC7C0051894B /* Misc */, - ); - path = Model; - sourceTree = ""; - }; - BF5942741E09BC740051894B /* Human */ = { - isa = PBXGroup; - children = ( - BF5942771E09BC830051894B /* Cheat.swift */, - BF5942781E09BC830051894B /* ControllerSkin.swift */, - BF5942791E09BC830051894B /* Game.swift */, - BF59427A1E09BC830051894B /* GameCollection.swift */, - BF6EE5EA1F7C5F8F0051AD6C /* GameControllerInputMapping.swift */, - BFE593C921F3F8B7003412A6 /* GameSave.swift */, - BF59427B1E09BC830051894B /* SaveState.swift */, - ); - path = Human; - sourceTree = ""; - }; - BF5942751E09BC780051894B /* Machine */ = { - isa = PBXGroup; - children = ( - BF5942811E09BC8B0051894B /* _Cheat.swift */, - BF5942821E09BC8B0051894B /* _ControllerSkin.swift */, - BF5942831E09BC8B0051894B /* _Game.swift */, - BF5942841E09BC8B0051894B /* _GameCollection.swift */, - BF6EE5E81F7C5F860051AD6C /* _GameControllerInputMapping.swift */, - BFE593CB21F3F8C2003412A6 /* _GameSave.swift */, - BF5942851E09BC8B0051894B /* _SaveState.swift */, - ); - path = Machine; - sourceTree = ""; - }; - BF5942761E09BC7C0051894B /* Misc */ = { - isa = PBXGroup; - children = ( - BF59428B1E09BC930051894B /* ControllerSkinConfigurations.h */, - ); - path = Misc; - sourceTree = ""; - }; - BF59428C1E09BCE50051894B /* Importing */ = { - isa = PBXGroup; - children = ( - BF59428D1E09BCFB0051894B /* ImportController.swift */, - BF6BF3121EB7E47F008E83CD /* ImportOption.swift */, - BF6BF3161EB820F4008E83CD /* Import Options */, - ); - path = Importing; - sourceTree = ""; - }; - BF696B7E1D9B2AE6009639E0 /* Theming */ = { - isa = PBXGroup; - children = ( - BF696B7F1D9B2B02009639E0 /* Theme.swift */, - ); - path = Theming; - sourceTree = ""; - }; - BF6B82A31F7CC29A00042BFB /* Transformers */ = { - isa = PBXGroup; - children = ( - BF6B82A41F7CC2A300042BFB /* GameControllerInputMappingTransformer.swift */, - ); - path = Transformers; - sourceTree = ""; - }; - BF6BF3161EB820F4008E83CD /* Import Options */ = { - isa = PBXGroup; - children = ( - BF6BF3171EB82111008E83CD /* iTunesImportOption.swift */, - BF6BF3191EB82146008E83CD /* ClipboardImportOption.swift */, - BF6BF3261EB87EB8008E83CD /* PhotoLibraryImportOption.swift */, - BF6BF31B1EB821A0008E83CD /* GamesDatabaseImportOption.swift */, - ); - path = "Import Options"; - sourceTree = ""; - }; - BF71CF851FE8FFF1001F1613 /* App Icon Shortcuts */ = { - isa = PBXGroup; - children = ( - BF71CF861FE90006001F1613 /* AppIconShortcutsViewController.swift */, - ); - path = "App Icon Shortcuts"; - sourceTree = ""; - }; - BF71CF881FE90471001F1613 /* Table View */ = { - isa = PBXGroup; - children = ( - BFFA4C081E8A24D600D87934 /* GameTableViewCell.swift */, - BF71CF891FE904B1001F1613 /* GameTableViewCell.xib */, - BF8A333321A484A000A42FD4 /* BadgedTableViewCell.swift */, - ); - path = "Table View"; - sourceTree = ""; - }; - BF7AE7FA1C2E851F00B1B5BC /* Pause Menu */ = { - isa = PBXGroup; - children = ( - BF353FF41C5D837600C1184C /* PauseMenu.storyboard */, - BF353FF11C5D7FB000C1184C /* PauseViewController.swift */, - BF7AE8041C2E858400B1B5BC /* GridMenuViewController.swift */, - BF353FF81C5D870B00C1184C /* MenuItem.swift */, - BF3540031C5DA6D800C1184C /* Save States */, - BFC9B7371CEFCD08008629BB /* Cheats */, - BF353FFB1C5DA2F600C1184C /* Presentation Controller */, - BF912E481C5CB5D50041527C /* Segues */, - ); - path = "Pause Menu"; - sourceTree = ""; - }; - BF912E481C5CB5D50041527C /* Segues */ = { - isa = PBXGroup; - children = ( - BF3540011C5DA3D500C1184C /* PauseStoryboardSegue.swift */, - BF3540071C5DAFAD00C1184C /* PauseTransitionCoordinator.swift */, - ); - path = Segues; - sourceTree = ""; - }; - BF930FFB1EB6D6EC00E8DBA0 /* Systems */ = { - isa = PBXGroup; - children = ( - BF4828851F9028F500028B97 /* System.swift */, - BFBAB2E21EB685A2004E0B0E /* DeltaCoreProtocol+Delta.swift */, - ); - path = Systems; - sourceTree = ""; - }; - BF95E2751E49763D0030E7AD /* OpenVGDB */ = { - isa = PBXGroup; - children = ( - BF6BF31F1EB82362008E83CD /* GamesDatabase.storyboard */, - BF59426E1E09BC5D0051894B /* GamesDatabase.swift */, - BF95E2761E4977BF0030E7AD /* GameMetadata.swift */, - BF95E2781E4982A10030E7AD /* GamesDatabaseBrowserViewController.swift */, - ); - path = OpenVGDB; - sourceTree = ""; - }; - BF9F4FCD1AAD7B25004C9500 /* Frameworks */ = { - isa = PBXGroup; - children = ( - BFDCA1E5244EBAA900B8FBDB /* liblibDeSmuME.a */, - BF30AC25244E88BE00F0C744 /* libMelonDSDeltaCore.a */, - BFFDF04523E3D3A600931B96 /* libMupen64Plus.a */, - BFFDF03D23E3C0F000931B96 /* libGambatte.a */, - BFFDF03623E3BB2600931B96 /* libSnes9x.a */, - BF69FBC823E3A8380051BEEA /* libNestopia.a */, - BF69FBA923E399AA0051BEEA /* CoreMotion.framework */, - BF69FBA723E3967B0051BEEA /* libz.tbd */, - BF69FBA123E375A20051BEEA /* libVBA-M.a */, - BF5ACE3823E23D6500BD0F20 /* libVBA-M.a */, - BFDF71DA22F94CDF0074D92E /* DSDeltaCore.framework */, - BFB359412278FD6700CFD920 /* N64DeltaCore_Video.framework */, - BFB359422278FD6800CFD920 /* N64DeltaCore_RSP.framework */, - BF79966C224C075A009B094F /* N64DeltaCore.framework */, - BFDE2CC6222DF345008038E0 /* Harmony_Dropbox.framework */, - BFDE2CC8222DF345008038E0 /* SwiftyDropbox.framework */, - BFDE2CC7222DF345008038E0 /* Alamofire.framework */, - BF98C9812204D9A1006B95AC /* NESDeltaCore.framework */, - BF07200E219A3A9500F05DA4 /* ZIPFoundation.framework */, - BF48F754219A1EEB00BC2FC1 /* Harmony.framework */, - BF48F75A219A1F8300BC2FC1 /* Harmony_Drive.framework */, - BFF0742B1E9DC17500ACDF4A /* GBCDeltaCore.framework */, - BF0418131D01E93400E85BCF /* GBADeltaCore.framework */, - BF27CC941BCB7B7A00A20D89 /* GameController.framework */, - BF27CC8A1BC9FE4D00A20D89 /* Pods.framework */, - BF70798B1B6B464B0019077C /* ZipZap.framework */, - BFEC732C1AAECC4A00650035 /* Roxas.framework */, - BF9F4FCE1AAD7B87004C9500 /* DeltaCore.framework */, - BFC134E01AAD82460087AD7B /* SNESDeltaCore.framework */, - 22506DA00971C4300AF90A35 /* Pods.framework */, - DC866E433B3BA9AE18ABA1EC /* libPods-Delta.a */, - ); - name = Frameworks; - sourceTree = ""; - }; - BFAA1FEB1B8AA4E800495943 /* Settings */ = { - isa = PBXGroup; - children = ( - BFAA1FEC1B8AA4FA00495943 /* Settings.swift */, - BF5E7F451B9A652600AE44F8 /* Settings.storyboard */, - BF5E7F431B9A650B00AE44F8 /* SettingsViewController.swift */, - BFB3645723245A6000CD0EB1 /* LicensesViewController.swift */, - BFE9907E24451DE6006409A7 /* Cores */, - BF71CF851FE8FFF1001F1613 /* App Icon Shortcuts */, - BF11734E1DA32CEC00047DF8 /* Controllers */, - BF1DAD5B1D9F574900E752A7 /* Controller Skins */, - BF48F74C219A16C100BC2FC1 /* Syncing */, - ); - path = Settings; - sourceTree = ""; - }; - BFAB9F7B219A43270080EC7D /* Syncing */ = { - isa = PBXGroup; - children = ( - BFAB9F7C219A43380080EC7D /* SyncManager.swift */, - BF1F45A321AF274D00EF9895 /* SyncResultViewController.swift */, - BF1F45AA21AF4B5800EF9895 /* SyncResultsViewController.storyboard */, - ); - path = Syncing; - sourceTree = ""; - }; - BFC9B7371CEFCD08008629BB /* Cheats */ = { - isa = PBXGroup; - children = ( - BFC9B7381CEFCD34008629BB /* CheatsViewController.swift */, - BFFC464B1D5998D600AF2CC6 /* CheatTableViewCell.swift */, - BF34FA061CF0F510006624C7 /* EditCheatViewController.swift */, - BF34FA101CF1899D006624C7 /* CheatTextView.swift */, - BF31878A1D489AAA00BD020D /* CheatValidator.swift */, - ); - path = Cheats; - sourceTree = ""; - }; - BFE0229C1F5B56840052D888 /* Popover Menu */ = { - isa = PBXGroup; - children = ( - BF8CA9351F5F651900499FDD /* PopoverMenuController.swift */, - BFE0229F1F5B577D0052D888 /* PopoverMenuButton.swift */, - BF6424821F5B8F3F00D6AB44 /* ListMenuViewController.swift */, - ); - path = "Popover Menu"; - sourceTree = ""; - }; - BFE9907E24451DE6006409A7 /* Cores */ = { - isa = PBXGroup; - children = ( - BFE9907F24451E15006409A7 /* MelonDSCoreSettingsViewController.swift */, - ); - path = Cores; - sourceTree = ""; - }; - BFEC732F1AAECCBD00650035 /* Resources */ = { - isa = PBXGroup; - children = ( - BF6BB2451BB73FE800CCF94A /* Assets.xcassets */, - BFDB0FEB24464757001C727C /* DS.png */, - BF02D5D91DDEBB3000A5E131 /* openvgdb.sqlite */, - ); - path = Resources; - sourceTree = ""; - }; - BFEF24F01F7DD4B600454C62 /* Migrations */ = { - isa = PBXGroup; - children = ( - BF1020E21F95B05B00313182 /* DeltaToDelta2.xcmappingmodel */, - BFEE943C23F2180200CDA07D /* Delta4ToDelta5.xcmappingmodel */, - BF3D6C502202865F0083E05A /* Delta2ToDelta3.xcmappingmodel */, - BF3D6C52220286750083E05A /* Delta3ToDelta4.xcmappingmodel */, - BFDCA1E8244F7E1000B8FBDB /* Delta5ToDelta6.xcmappingmodel */, - BFEF24F11F7DD4BE00454C62 /* Policies */, - ); - path = Migrations; - sourceTree = ""; - }; - BFEF24F11F7DD4BE00454C62 /* Policies */ = { - isa = PBXGroup; - children = ( - BFEF24F21F7DD4FB00454C62 /* SaveStateMigrationPolicy.swift */, - BF56450C220239B800A8EA26 /* GameControllerInputMappingMigrationPolicy.swift */, - ); - path = Policies; - sourceTree = ""; - }; - BFFA71CE1AAC406100EE9DD1 = { - isa = PBXGroup; - children = ( - BFFA71D91AAC406100EE9DD1 /* Delta */, - BF9F4FCD1AAD7B25004C9500 /* Frameworks */, - BFEC732F1AAECCBD00650035 /* Resources */, - BFFA71D81AAC406100EE9DD1 /* Products */, - FD1E8AE87FA2DB8793F7B937 /* Pods */, - ); - sourceTree = ""; - }; - BFFA71D81AAC406100EE9DD1 /* Products */ = { - isa = PBXGroup; - children = ( - BFFA71D71AAC406100EE9DD1 /* Delta.app */, - ); - name = Products; - sourceTree = ""; - }; - BFFA71D91AAC406100EE9DD1 /* Delta */ = { - isa = PBXGroup; - children = ( - BFFA71DC1AAC406100EE9DD1 /* AppDelegate.swift */, - BFFA71E01AAC406100EE9DD1 /* Main.storyboard */, - BFFC46211D59848000AF2CC6 /* Launch */, - BF46894D1AAC469800A2586D /* Game Selection */, - BFFB709D1AF99ACA00DE56FE /* Emulation */, - BF7AE7FA1C2E851F00B1B5BC /* Pause Menu */, - BFAA1FEB1B8AA4E800495943 /* Settings */, - BF59426C1E09BC450051894B /* Database */, - BFAB9F7B219A43270080EC7D /* Syncing */, - BF59428C1E09BCE50051894B /* Importing */, - BF930FFB1EB6D6EC00E8DBA0 /* Systems */, - BF525EE61FF5F355004AA849 /* Deep Linking */, - BF5942571E09BB5D0051894B /* Components */, - BF696B7E1D9B2AE6009639E0 /* Theming */, - BF090CEE1B490C1A00DCAB45 /* Extensions */, - BFFA71DA1AAC406100EE9DD1 /* Supporting Files */, - ); - path = Delta; - sourceTree = ""; - }; - BFFA71DA1AAC406100EE9DD1 /* Supporting Files */ = { - isa = PBXGroup; - children = ( - BF090CF11B490D8300DCAB45 /* Delta-Bridging-Header.h */, - BF27CC861BC9E3C600A20D89 /* Delta.entitlements */, - BFFA71DB1AAC406100EE9DD1 /* Info.plist */, - BFAB9F87219A4B670080EC7D /* GoogleService-Info.plist */, - ); - path = "Supporting Files"; - sourceTree = ""; - }; - BFFB709D1AF99ACA00DE56FE /* Emulation */ = { - isa = PBXGroup; - children = ( - BF63BDE91D389EEB00FCB040 /* GameViewController.swift */, - BF13A7551D5D29B0000BB055 /* PreviewGameViewController.swift */, - BF15AF831F54B43B009B6AAB /* ActionInput.swift */, - ); - path = Emulation; - sourceTree = ""; - }; - BFFC461A1D59820F00AF2CC6 /* Segues */ = { - isa = PBXGroup; - children = ( - BFFC461D1D59823500AF2CC6 /* InitialGamesStoryboardSegue.swift */, - BFFC461C1D59823500AF2CC6 /* GamesStoryboardSegue.swift */, - BFFC461B1D59823500AF2CC6 /* GamesPresentationController.swift */, - BFE4269D1D9C68E600DC913F /* SaveStatesStoryboardSegue.swift */, - ); - path = Segues; - sourceTree = ""; - }; - BFFC46211D59848000AF2CC6 /* Launch */ = { - isa = PBXGroup; - children = ( - BFFC46441D59861000AF2CC6 /* LaunchScreen.storyboard */, - BFFC46221D5984A000AF2CC6 /* LaunchViewController.swift */, - ); - path = Launch; - sourceTree = ""; - }; - FD1E8AE87FA2DB8793F7B937 /* Pods */ = { - isa = PBXGroup; - children = ( - C786AF1D2DDB6223BE2063CC /* Pods-Delta.debug.xcconfig */, - A19FF50F55441BC2B2248241 /* Pods-Delta.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - BFFA71D61AAC406100EE9DD1 /* Delta */ = { - isa = PBXNativeTarget; - buildConfigurationList = BFFA71F61AAC406100EE9DD1 /* Build configuration list for PBXNativeTarget "Delta" */; - buildPhases = ( - DBD91E7D7EC2729786B4C5B1 /* [CP] Check Pods Manifest.lock */, - BFFA71D31AAC406100EE9DD1 /* Sources */, - BFFA71D41AAC406100EE9DD1 /* Frameworks */, - BFFA71D51AAC406100EE9DD1 /* Resources */, - BF6BF3281EB897F6008E83CD /* Fabric */, - 0E0279E4F38215820BB0C9A0 /* [CP] Copy Pods Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Delta; - productName = Delta; - productReference = BFFA71D71AAC406100EE9DD1 /* Delta.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - BFFA71CF1AAC406100EE9DD1 /* Project object */ = { - isa = PBXProject; - attributes = { - DefaultBuildSystemTypeForWorkspace = Original; - LastSwiftUpdateCheck = 0700; - LastUpgradeCheck = 1010; - ORGANIZATIONNAME = "Riley Testut"; - TargetAttributes = { - BF14D8941DE7A512002CA1BE = { - CreatedOnToolsVersion = 8.2; - DevelopmentTeam = 6XVY5G3U44; - ProvisioningStyle = Automatic; - }; - BFFA71D61AAC406100EE9DD1 = { - CreatedOnToolsVersion = 6.3; - DevelopmentTeam = 6XVY5G3U44; - LastSwiftMigration = 1020; - ProvisioningStyle = Automatic; - SystemCapabilities = { - com.apple.iCloud = { - enabled = 0; - }; - }; - }; - }; - }; - buildConfigurationList = BFFA71D21AAC406100EE9DD1 /* Build configuration list for PBXProject "Delta" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - English, - en, - Base, - ); - mainGroup = BFFA71CE1AAC406100EE9DD1; - productRefGroup = BFFA71D81AAC406100EE9DD1 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - BFFA71D61AAC406100EE9DD1 /* Delta */, - BF14D8941DE7A512002CA1BE /* mogenerator */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - BFFA71D51AAC406100EE9DD1 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - BFFA71E21AAC406100EE9DD1 /* Main.storyboard in Resources */, - BF6BF3211EB82362008E83CD /* GamesDatabase.storyboard in Resources */, - BFAB9F88219A4B670080EC7D /* GoogleService-Info.plist in Resources */, - BF3540001C5DA3C500C1184C /* PausePresentationControllerContentView.xib in Resources */, - BFDB0FEC24464758001C727C /* DS.png in Resources */, - BF5E7F461B9A652600AE44F8 /* Settings.storyboard in Resources */, - BF02D5DA1DDEBB3000A5E131 /* openvgdb.sqlite in Resources */, - BF71CF8A1FE904B1001F1613 /* GameTableViewCell.xib in Resources */, - BFFC46461D59861000AF2CC6 /* LaunchScreen.storyboard in Resources */, - BF1F45AB21AF4B5800EF9895 /* SyncResultsViewController.storyboard in Resources */, - BF353FF61C5D837600C1184C /* PauseMenu.storyboard in Resources */, - BF27CC8E1BC9FEA200A20D89 /* Assets.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 0E0279E4F38215820BB0C9A0 /* [CP] Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Delta/Pods-Delta-resources.sh", - "${PODS_CONFIGURATION_BUILD_DIR}/DSDeltaCore/DSDeltaCore.bundle", - "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.bundle", - "${PODS_CONFIGURATION_BUILD_DIR}/GBADeltaCore/GBADeltaCore.bundle", - "${PODS_CONFIGURATION_BUILD_DIR}/GBCDeltaCore/GBCDeltaCore.bundle", - "${PODS_ROOT}/GoogleSignIn/Resources/GoogleSignIn.bundle", - "${PODS_ROOT}/../External/Harmony/Harmony/Model/Core Data/Harmony.xcdatamodeld", - "${PODS_ROOT}/../External/Harmony/Harmony/Model/Core Data/Migrations/HarmonyToHarmony2.xcmappingmodel", - "${PODS_CONFIGURATION_BUILD_DIR}/MelonDSDeltaCore/melonDS.bundle", - "${PODS_CONFIGURATION_BUILD_DIR}/N64DeltaCore/Mupen64Plus.bundle", - "${PODS_CONFIGURATION_BUILD_DIR}/NESDeltaCore/NESDeltaCore.bundle", - "${PODS_ROOT}/../External/Roxas/Roxas/RSTCollectionViewCell.xib", - "${PODS_ROOT}/../External/Roxas/Roxas/RSTPlaceholderView.xib", - "${PODS_CONFIGURATION_BUILD_DIR}/SNESDeltaCore/SNESDeltaCore.bundle", - ); - name = "[CP] Copy Pods Resources"; - outputPaths = ( - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/DSDeltaCore.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/DeltaCore.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GBADeltaCore.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GBCDeltaCore.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleSignIn.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Harmony.momd", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/HarmonyToHarmony2.cdm", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/melonDS.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Mupen64Plus.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/NESDeltaCore.bundle", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RSTCollectionViewCell.nib", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RSTPlaceholderView.nib", - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SNESDeltaCore.bundle", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Delta/Pods-Delta-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; - BF14D8981DE7A519002CA1BE /* mogenerator */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = mogenerator; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/usr/local/bin/mogenerator -m \"Delta/Database/Model/Delta.xcdatamodeld\" --human-dir \"Delta/Database/Model/Human\" --machine-dir \"Delta/Database/Model/Machine\" --swift --template-var scalarsWhenNonOptional=true --template-path \"Delta/Database/Model/mogenerator/templates\""; - }; - BF6BF3281EB897F6008E83CD /* Fabric */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = Fabric; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Fabric/run\" d542629b4f6625cfd5564d27318550321272076d 333118df9345dcec21e4ba0bb7fa8f6c67c4eb41734374e24f6c71a8dcd5c870"; - }; - DBD91E7D7EC2729786B4C5B1 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Delta-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - BFFA71D31AAC406100EE9DD1 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - BFB3645823245A6000CD0EB1 /* LicensesViewController.swift in Sources */, - BFC6F7B81F435BC500221B96 /* Input+Display.swift in Sources */, - BF59426A1E09BBD00051894B /* GridCollectionViewCell.swift in Sources */, - BF6BF3181EB82111008E83CD /* iTunesImportOption.swift in Sources */, - BF647A6A22FB8FCE0061D76D /* Bundle+SwizzleBundleID.swift in Sources */, - BFF6452E1F7CC5060056533E /* GameControllerInputMappingTransformer.swift in Sources */, - BF59427C1E09BC830051894B /* Cheat.swift in Sources */, - BFBAB2E31EB685A2004E0B0E /* DeltaCoreProtocol+Delta.swift in Sources */, - BF3540081C5DAFAD00C1184C /* PauseTransitionCoordinator.swift in Sources */, - BF525EEA1FF6CD12004AA849 /* DeepLink.swift in Sources */, - BF8A334621A4926F00A42FD4 /* GameSyncStatusViewController.swift in Sources */, - BF59427E1E09BC830051894B /* Game.swift in Sources */, - BFE593CC21F3F8C2003412A6 /* _GameSave.swift in Sources */, - BF63A1A321A4AAAE00EE8F61 /* RecordSyncStatusViewController.swift in Sources */, - BFAA1FED1B8AA4FA00495943 /* Settings.swift in Sources */, - BFA0D1271D3AE1F600565894 /* GameViewController.swift in Sources */, - BF59428A1E09BC8B0051894B /* _SaveState.swift in Sources */, - BFC1F2CC22F9515F00606A45 /* CopyDeepLinkActivity.swift in Sources */, - BF5942801E09BC830051894B /* SaveState.swift in Sources */, - BF59428E1E09BCFB0051894B /* ImportController.swift in Sources */, - BF13A7581D5D2FD9000BB055 /* EmulatorCore+Cheats.swift in Sources */, - BF48F74E219A16DA00BC2FC1 /* SyncingServicesViewController.swift in Sources */, - BFE593CA21F3F8B7003412A6 /* GameSave.swift in Sources */, - BF63A1B521A4B76E00EE8F61 /* RecordVersionsViewController.swift in Sources */, - BF6424831F5B8F3F00D6AB44 /* ListMenuViewController.swift in Sources */, - BF1020E31F95B05B00313182 /* DeltaToDelta2.xcmappingmodel in Sources */, - BF6BF3131EB7E47F008E83CD /* ImportOption.swift in Sources */, - BFEE943D23F2180200CDA07D /* Delta4ToDelta5.xcmappingmodel in Sources */, - BF31878B1D489AAA00BD020D /* CheatValidator.swift in Sources */, - BFFC46201D59823500AF2CC6 /* InitialGamesStoryboardSegue.swift in Sources */, - BF15AF841F54B43B009B6AAB /* ActionInput.swift in Sources */, - BF4828841F9027B600028B97 /* Delta.xcdatamodeld in Sources */, - BF5942951E09BD1A0051894B /* NSManagedObjectContext+Conveniences.swift in Sources */, - BFC3628021ADE2BA00EF2BE6 /* UIAlertController+Error.swift in Sources */, - BF353FF91C5D870B00C1184C /* MenuItem.swift in Sources */, - BFDB3418219E4B1700595A62 /* SyncStatusViewController.swift in Sources */, - BF18B61F1E2985F900F70067 /* UIAlertController+Importing.swift in Sources */, - BFDD04F11D5E2C27002D450E /* GameCollectionViewController.swift in Sources */, - BFE4269E1D9C68E600DC913F /* SaveStatesStoryboardSegue.swift in Sources */, - BFFA71DD1AAC406100EE9DD1 /* AppDelegate.swift in Sources */, - BF525EE81FF5F370004AA849 /* DeepLinkController.swift in Sources */, - BF59426B1E09BBD00051894B /* GridCollectionViewLayout.swift in Sources */, - BF6424851F5CBDC900D6AB44 /* UIView+ParentViewController.swift in Sources */, - BF04E6FF1DB8625C000F35D3 /* ControllerSkinsViewController.swift in Sources */, - BF5942891E09BC8B0051894B /* _GameCollection.swift in Sources */, - BF34FA111CF1899D006624C7 /* CheatTextView.swift in Sources */, - BF1F45AD21AF57BA00EF9895 /* HarmonyMetadataKey+Keys.swift in Sources */, - BFD1EF402336BD8800D197CF /* UIDevice+Processor.swift in Sources */, - BF71CF871FE90006001F1613 /* AppIconShortcutsViewController.swift in Sources */, - BF1DAD5D1D9F576000E752A7 /* PreferredControllerSkinsViewController.swift in Sources */, - BFE022A01F5B57FF0052D888 /* PopoverMenuButton.swift in Sources */, - BF6BF31C1EB821A0008E83CD /* GamesDatabaseImportOption.swift in Sources */, - BFFA4C091E8A24D600D87934 /* GameTableViewCell.swift in Sources */, - BFFC46231D5984A000AF2CC6 /* LaunchViewController.swift in Sources */, - BF8DDD241F4F6C880088A21B /* InputCalloutView.swift in Sources */, - BF5942701E09BC5D0051894B /* GamesDatabase.swift in Sources */, - BF34FA071CF0F510006624C7 /* EditCheatViewController.swift in Sources */, - BF1F45A421AF274D00EF9895 /* SyncResultViewController.swift in Sources */, - BF3D6C53220286750083E05A /* Delta3ToDelta4.xcmappingmodel in Sources */, - BF5942881E09BC8B0051894B /* _Game.swift in Sources */, - BF56450D220239B800A8EA26 /* GameControllerInputMappingMigrationPolicy.swift in Sources */, - BF95E2771E4977BF0030E7AD /* GameMetadata.swift in Sources */, - BFFC461F1D59823500AF2CC6 /* GamesStoryboardSegue.swift in Sources */, - BF2B98E61C97E32F00F6D57D /* SaveStatesCollectionHeaderView.swift in Sources */, - BFC9B7391CEFCD34008629BB /* CheatsViewController.swift in Sources */, - BF353FFF1C5DA3C500C1184C /* PausePresentationController.swift in Sources */, - BFFC464C1D5998D600AF2CC6 /* CheatTableViewCell.swift in Sources */, - BF5942941E09BD1A0051894B /* NSManagedObject+Conveniences.swift in Sources */, - BF1F45BF21AF676F00EF9895 /* Box.swift in Sources */, - BF7AE80A1C2E8C7600B1B5BC /* UIColor+Delta.swift in Sources */, - BF797A2D1C2D339F00F1A000 /* UILabel+FontSize.swift in Sources */, - BF80E1D21F13117000847008 /* ControllerInputsViewController.swift in Sources */, - BF5942641E09BBB10051894B /* LoadControllerSkinImageOperation.swift in Sources */, - BFE56E1923EB7BE00014FECD /* UIImage+SymbolFallback.swift in Sources */, - BF6EE5E91F7C5F860051AD6C /* _GameControllerInputMapping.swift in Sources */, - BF5942871E09BC8B0051894B /* _ControllerSkin.swift in Sources */, - BF95E2791E4982A10030E7AD /* GamesDatabaseBrowserViewController.swift in Sources */, - BFDCA1E9244F7E1000B8FBDB /* Delta5ToDelta6.xcmappingmodel in Sources */, - BFD097211D3A01B8005A44C2 /* SaveStatesViewController.swift in Sources */, - BF6EE5EB1F7C5F8F0051AD6C /* GameControllerInputMapping.swift in Sources */, - BF8A333421A484A000A42FD4 /* BadgedTableViewCell.swift in Sources */, - BF3540021C5DA3D500C1184C /* PauseStoryboardSegue.swift in Sources */, - BF107EC41BF413F000E0C32C /* GamesViewController.swift in Sources */, - BF3D6C512202865F0083E05A /* Delta2ToDelta3.xcmappingmodel in Sources */, - BF59426F1E09BC5D0051894B /* DatabaseManager.swift in Sources */, - BF4828861F9028F500028B97 /* System.swift in Sources */, - BF13A7561D5D29B0000BB055 /* PreviewGameViewController.swift in Sources */, - BF6866171DCAC8B900BF2D06 /* ControllerSkin+Configuring.swift in Sources */, - BFFBD3D9224A0756002EFC79 /* URL+ExtendedAttributes.swift in Sources */, - BF713C0822499ED4004A1A2B /* PreviousHarmony.xcdatamodeld in Sources */, - BF59427D1E09BC830051894B /* ControllerSkin.swift in Sources */, - BFAB9F7D219A43380080EC7D /* SyncManager.swift in Sources */, - BFCEA67E1D56FF640061A534 /* UIViewControllerContextTransitioning+Conveniences.swift in Sources */, - BF1173501DA32CF600047DF8 /* ControllersSettingsViewController.swift in Sources */, - BFFC461E1D59823500AF2CC6 /* GamesPresentationController.swift in Sources */, - BF99A5971DC2F9C400468E9E /* ControllerSkinTableViewCell.swift in Sources */, - BFE9908024451E15006409A7 /* MelonDSCoreSettingsViewController.swift in Sources */, - BF5942861E09BC8B0051894B /* _Cheat.swift in Sources */, - BF5E7F441B9A650B00AE44F8 /* SettingsViewController.swift in Sources */, - BF8CA9361F5F651900499FDD /* PopoverMenuController.swift in Sources */, - BFEF24F31F7DD4FD00454C62 /* SaveStateMigrationPolicy.swift in Sources */, - BF5942931E09BD1A0051894B /* NSFetchedResultsController+Conveniences.m in Sources */, - BF4828881F90290F00028B97 /* Action.swift in Sources */, - BF6BF3271EB87EB8008E83CD /* PhotoLibraryImportOption.swift in Sources */, - BF5942661E09BBB10051894B /* LoadImageURLOperation.swift in Sources */, - BF353FF21C5D7FB000C1184C /* PauseViewController.swift in Sources */, - BF696B801D9B2B02009639E0 /* Theme.swift in Sources */, - BF7AE8081C2E858400B1B5BC /* GridMenuViewController.swift in Sources */, - BF6BF31A1EB82146008E83CD /* ClipboardImportOption.swift in Sources */, - BF59427F1E09BC830051894B /* GameCollection.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXVariantGroup section */ - BF353FF41C5D837600C1184C /* PauseMenu.storyboard */ = { - isa = PBXVariantGroup; - children = ( - BF353FF51C5D837600C1184C /* Base */, - ); - name = PauseMenu.storyboard; - path = Delta; - sourceTree = SOURCE_ROOT; - }; - BF6BF31F1EB82362008E83CD /* GamesDatabase.storyboard */ = { - isa = PBXVariantGroup; - children = ( - BF6BF3201EB82362008E83CD /* Base */, - ); - name = GamesDatabase.storyboard; - path = Delta; - sourceTree = SOURCE_ROOT; - }; - BFFA71E01AAC406100EE9DD1 /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - BFFA71E11AAC406100EE9DD1 /* Base */, - ); - name = Main.storyboard; - path = Delta; - sourceTree = SOURCE_ROOT; - }; - BFFC46441D59861000AF2CC6 /* LaunchScreen.storyboard */ = { - isa = PBXVariantGroup; - children = ( - BFFC46451D59861000AF2CC6 /* Base */, - ); - name = LaunchScreen.storyboard; - path = Delta; - sourceTree = SOURCE_ROOT; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - BF14D8951DE7A512002CA1BE /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - DEVELOPMENT_TEAM = 6XVY5G3U44; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Debug; - }; - BF14D8961DE7A512002CA1BE /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - DEVELOPMENT_TEAM = 6XVY5G3U44; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Release; - }; - BFFA71F41AAC406100EE9DD1 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.2; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - OTHER_CFLAGS = "-DGLES_SILENCE_DEPRECATION"; - OTHER_SWIFT_FLAGS = "-Xfrontend -debug-time-function-bodies"; - PRODUCT_BUNDLE_IDENTIFIER = com.rileytestut.Delta; - PRODUCT_NAME = Delta; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - BFFA71F51AAC406100EE9DD1 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.2; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = "-DGLES_SILENCE_DEPRECATION"; - OTHER_SWIFT_FLAGS = "-Xfrontend -debug-time-function-bodies"; - PRODUCT_BUNDLE_IDENTIFIER = com.rileytestut.Delta; - PRODUCT_NAME = Delta; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - BFFA71F71AAC406100EE9DD1 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = C786AF1D2DDB6223BE2063CC /* Pods-Delta.debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CLANG_MODULES_AUTOLINK = NO; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 32; - DEVELOPMENT_TEAM = ""; - INFOPLIST_FILE = "Delta/Supporting Files/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MARKETING_VERSION = 1.3b2; - OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" -DDEBUG"; - PRODUCT_BUNDLE_IDENTIFIER = com.rileytestut.Delta; - PROVISIONING_PROFILE = ""; - PROVISIONING_PROFILE_SPECIFIER = ""; - STRIP_INSTALLED_PRODUCT = YES; - STRIP_STYLE = "non-global"; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = BETA; - SWIFT_OBJC_BRIDGING_HEADER = "Delta/Supporting Files/Delta-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - }; - name = Debug; - }; - BFFA71F81AAC406100EE9DD1 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A19FF50F55441BC2B2248241 /* Pods-Delta.release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ENABLE_MODULES = YES; - CLANG_MODULES_AUTOLINK = NO; - CODE_SIGN_IDENTITY = "iPhone Developer"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 32; - DEVELOPMENT_TEAM = ""; - INFOPLIST_FILE = "Delta/Supporting Files/Info.plist"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MARKETING_VERSION = 1.3b2; - OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" -DIMPACTOR"; - PRODUCT_BUNDLE_IDENTIFIER = com.rileytestut.Delta; - PROVISIONING_PROFILE = ""; - PROVISIONING_PROFILE_SPECIFIER = ""; - STRIP_INSTALLED_PRODUCT = YES; - STRIP_STYLE = "non-global"; - SWIFT_OBJC_BRIDGING_HEADER = "Delta/Supporting Files/Delta-Bridging-Header.h"; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 5.0; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - BF14D8971DE7A512002CA1BE /* Build configuration list for PBXAggregateTarget "mogenerator" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - BF14D8951DE7A512002CA1BE /* Debug */, - BF14D8961DE7A512002CA1BE /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - BFFA71D21AAC406100EE9DD1 /* Build configuration list for PBXProject "Delta" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - BFFA71F41AAC406100EE9DD1 /* Debug */, - BFFA71F51AAC406100EE9DD1 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - BFFA71F61AAC406100EE9DD1 /* Build configuration list for PBXNativeTarget "Delta" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - BFFA71F71AAC406100EE9DD1 /* Debug */, - BFFA71F81AAC406100EE9DD1 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - -/* Begin XCVersionGroup section */ - BF4828811F9027B600028B97 /* Delta.xcdatamodeld */ = { - isa = XCVersionGroup; - children = ( - BFDCA1E7244F7DB100B8FBDB /* Delta 6.xcdatamodel */, - BFE4275223EDF75300E6B417 /* Delta 5.xcdatamodel */, - BF0758DE2202827C005110F2 /* Delta 4.xcdatamodel */, - BF5645092202381000A8EA26 /* Delta 3.xcdatamodel */, - BF4828821F9027B600028B97 /* Delta 2.xcdatamodel */, - BF4828831F9027B600028B97 /* Delta.xcdatamodel */, - ); - currentVersion = BFDCA1E7244F7DB100B8FBDB /* Delta 6.xcdatamodel */; - path = Delta.xcdatamodeld; - sourceTree = ""; - versionGroupType = wrapper.xcdatamodel; - }; - BF713C0622499ED3004A1A2B /* PreviousHarmony.xcdatamodeld */ = { - isa = XCVersionGroup; - children = ( - BF713C0722499ED3004A1A2B /* Harmony.xcdatamodel */, - ); - currentVersion = BF713C0722499ED3004A1A2B /* Harmony.xcdatamodel */; - path = PreviousHarmony.xcdatamodeld; - sourceTree = ""; - versionGroupType = wrapper.xcdatamodel; - }; -/* End XCVersionGroup section */ - }; - rootObject = BFFA71CF1AAC406100EE9DD1 /* Project object */; -} diff --git a/Delta.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Delta.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index ae8afafb4..000000000 --- a/Delta.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/Delta.xcodeproj/xcshareddata/xcschemes/Delta.xcscheme b/Delta.xcodeproj/xcshareddata/xcschemes/Delta.xcscheme deleted file mode 100644 index 4c4537f35..000000000 --- a/Delta.xcodeproj/xcshareddata/xcschemes/Delta.xcscheme +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Delta.xcworkspace/contents.xcworkspacedata b/Delta.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 44ba28483..000000000 --- a/Delta.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Delta.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Delta.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d981003..000000000 --- a/Delta.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/Delta.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/Delta.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings deleted file mode 100644 index a3f43a8b3..000000000 --- a/Delta.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings +++ /dev/null @@ -1,10 +0,0 @@ - - - - - BuildSystemType - Original - IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded - - - diff --git a/Delta/Components/Popover Menu/ListMenuViewController.swift b/Delta/Components/Popover Menu/ListMenuViewController.swift deleted file mode 100644 index 6129d47e0..000000000 --- a/Delta/Components/Popover Menu/ListMenuViewController.swift +++ /dev/null @@ -1,64 +0,0 @@ -// -// PopoverMenuViewController.swift -// Delta -// -// Created by Riley Testut on 9/2/17. -// Copyright © 2017 Riley Testut. All rights reserved. -// - -import UIKit - -import Roxas - -class ListMenuViewController: UITableViewController -{ - var items: [MenuItem] { - get { return self.dataSource.items } - set { self.dataSource.items = newValue } - } - - private let dataSource = RSTArrayTableViewDataSource(items: []) - - override var preferredContentSize: CGSize { - get { - let navigationBarHeight = self.navigationController?.navigationBar.bounds.height ?? 0.0 - return CGSize(width: 0, height: (self.tableView.rowHeight * CGFloat(self.items.count)) + navigationBarHeight) - } - set {} - } - - init() - { - super.init(style: .plain) - - self.dataSource.cellConfigurationHandler = { (cell, item, indexPath) in - cell.textLabel?.text = item.text - cell.accessoryType = item.isSelected ? .checkmark : .none - } - } - - required init?(coder aDecoder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - override func viewDidLoad() - { - super.viewDidLoad() - - self.tableView.dataSource = self.dataSource - self.tableView.rowHeight = 44 - self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: RSTCellContentGenericCellIdentifier) - } -} - -extension ListMenuViewController -{ - override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) - { - let item = self.dataSource.item(at: indexPath) - item.isSelected = !item.isSelected - item.action(item) - - self.tableView.reloadData() - } -} diff --git a/Delta/Database/Model/Human/SaveState.swift b/Delta/Database/Model/Human/SaveState.swift deleted file mode 100644 index 459fa8c11..000000000 --- a/Delta/Database/Model/Human/SaveState.swift +++ /dev/null @@ -1,164 +0,0 @@ -// -// SaveState.swift -// Delta -// -// Created by Riley Testut on 1/31/16. -// Copyright © 2016 Riley Testut. All rights reserved. -// - -import Foundation - -import DeltaCore -import Harmony - -import struct DSDeltaCore.DS - -@objc public enum SaveStateType: Int16 -{ - case auto - case quick - case general - case locked -} - -@objc(SaveState) -public class SaveState: _SaveState, SaveStateProtocol -{ - public static let localizedDateFormatter: DateFormatter = { - let dateFormatter = DateFormatter() - dateFormatter.timeStyle = .short - dateFormatter.dateStyle = .short - return dateFormatter - }() - - public var fileURL: URL { - let fileURL = DatabaseManager.saveStatesDirectoryURL(for: self.game!).appendingPathComponent(self.filename) - return fileURL - } - - public var imageFileURL: URL { - let imageFilename = (self.filename as NSString).deletingPathExtension + ".png" - let imageFileURL = DatabaseManager.saveStatesDirectoryURL(for: self.game!).appendingPathComponent(imageFilename) - return imageFileURL - } - - public var gameType: GameType { - return self.game!.type - } - - public var localizedName: String { - let localizedName = self.name ?? SaveState.localizedDateFormatter.string(from: self.modifiedDate) - return localizedName - } - - @NSManaged private var primitiveFilename: String - @NSManaged private var primitiveIdentifier: String - @NSManaged private var primitiveCreationDate: Date - @NSManaged private var primitiveModifiedDate: Date - - public override func awakeFromInsert() - { - super.awakeFromInsert() - - let identifier = UUID().uuidString - let date = Date() - - self.primitiveIdentifier = identifier - self.primitiveFilename = identifier - self.primitiveCreationDate = date - self.primitiveModifiedDate = date - } - - public override func prepareForDeletion() - { - super.prepareForDeletion() - - // In rare cases, game may actually be nil if game is corrupted, so we ensure it is non-nil first - guard self.game != nil else { return } - - guard let managedObjectContext = self.managedObjectContext else { return } - - // If a save state with the same identifier is also currently being inserted, Core Data is more than likely resolving a conflict by deleting the previous instance - // In this case, we make sure we DON'T delete the save state file + misc other Core Data relationships, or else we'll just lose all that data - guard !managedObjectContext.insertedObjects.contains(where: { ($0 as? SaveState)?.identifier == self.identifier }) else { return } - - guard FileManager.default.fileExists(atPath: self.fileURL.path) else { return } - - do - { - try FileManager.default.removeItem(at: self.fileURL) - try FileManager.default.removeItem(at: self.imageFileURL) - } - catch - { - print(error) - } - } - - class func fetchRequest(for game: Game, type: SaveStateType) -> NSFetchRequest - { - let predicate = NSPredicate(format: "%K == %@ AND %K == %d", #keyPath(SaveState.game), game, #keyPath(SaveState.type), type.rawValue) - - let fetchRequest: NSFetchRequest = SaveState.fetchRequest() - fetchRequest.predicate = predicate - - return fetchRequest - } -} - -extension SaveState: Syncable -{ - public static var syncablePrimaryKey: AnyKeyPath { - return \SaveState.identifier - } - - public var syncableKeys: Set { - return [\SaveState.creationDate, \SaveState.filename, \SaveState.modifiedDate, \SaveState.name, \SaveState.type, \SaveState.coreIdentifier] - } - - public var syncableFiles: Set { - return [File(identifier: "saveState", fileURL: self.fileURL), File(identifier: "thumbnail", fileURL: self.imageFileURL)] - } - - public var syncableRelationships: Set { - return [\SaveState.game] - } - - public var isSyncingEnabled: Bool { - // self.game may be nil if being downloaded, so don't enforce it. - // guard let identifier = self.game?.identifier else { return false } - - let isSyncingEnabled = (self.type != .auto && self.type != .quick) && (self.game?.identifier != Game.melonDSBIOSIdentifier && self.game?.identifier != Game.melonDSDSiBIOSIdentifier) - return isSyncingEnabled - } - - public var syncableMetadata: [HarmonyMetadataKey : String] { - guard let game = self.game else { return [:] } - return [.gameID: game.identifier, .gameName: game.name, .coreID: self.coreIdentifier].compactMapValues { $0 } - } - - public var syncableLocalizedName: String? { - return self.localizedName - } - - public func awakeFromSync(_ record: AnyRecord) - { - guard self.coreIdentifier == nil else { return } - guard let game = self.game, let system = System(gameType: game.type) else { return } - - if let coreIdentifier = record.remoteMetadata?[.coreID] - { - // SaveState was synced to older version of Delta and lost its coreIdentifier, - // but it remains in the remote metadata so we can reassign it. - self.coreIdentifier = coreIdentifier - } - else - { - switch system - { - case .ds: self.coreIdentifier = DS.core.identifier // Assume DS save state with nil coreIdentifier is from DeSmuME core. - default: self.coreIdentifier = system.deltaCore.identifier - } - } - } -} diff --git a/Delta/Emulation/GameViewController.swift b/Delta/Emulation/GameViewController.swift deleted file mode 100644 index 5ee256038..000000000 --- a/Delta/Emulation/GameViewController.swift +++ /dev/null @@ -1,1232 +0,0 @@ -// -// GameViewController.swift -// Delta -// -// Created by Riley Testut on 5/5/15. -// Copyright © 2016 Riley Testut. All rights reserved. -// - -import UIKit - -import DeltaCore -import GBADeltaCore - -import struct DSDeltaCore.DS - -import Roxas - -private var kvoContext = 0 - -private extension DeltaCore.ControllerSkin -{ - func hasTouchScreen(for traits: DeltaCore.ControllerSkin.Traits) -> Bool - { - let hasTouchScreen = self.items(for: traits)?.contains(where: { $0.kind == .touchScreen }) ?? false - return hasTouchScreen - } -} - -private extension GameViewController -{ - struct PausedSaveState: SaveStateProtocol - { - var fileURL: URL - var gameType: GameType - - var isSaved = false - - init(fileURL: URL, gameType: GameType) - { - self.fileURL = fileURL - self.gameType = gameType - } - } - - struct DefaultInputMapping: GameControllerInputMappingProtocol - { - let gameController: GameController - - var gameControllerInputType: GameControllerInputType { - return self.gameController.inputType - } - - func input(forControllerInput controllerInput: Input) -> Input? - { - if let mappedInput = self.gameController.defaultInputMapping?.input(forControllerInput: controllerInput) - { - return mappedInput - } - - // Only intercept controller skin inputs. - guard controllerInput.type == .controller(.controllerSkin) else { return nil } - - let actionInput = ActionInput(stringValue: controllerInput.stringValue) - return actionInput - } - } - - struct SustainInputsMapping: GameControllerInputMappingProtocol - { - let gameController: GameController - - var gameControllerInputType: GameControllerInputType { - return self.gameController.inputType - } - - func input(forControllerInput controllerInput: Input) -> Input? - { - if let mappedInput = self.gameController.defaultInputMapping?.input(forControllerInput: controllerInput), mappedInput == StandardGameControllerInput.menu - { - return mappedInput - } - - return controllerInput - } - } -} - -class GameViewController: DeltaCore.GameViewController -{ - /// Assumed to be Delta.Game instance - override var game: GameProtocol? { - willSet { - self.emulatorCore?.removeObserver(self, forKeyPath: #keyPath(EmulatorCore.state), context: &kvoContext) - - let game = self.game as? Game - NotificationCenter.default.removeObserver(self, name: .NSManagedObjectContextDidSave, object: game?.managedObjectContext) - } - didSet { - self.emulatorCore?.addObserver(self, forKeyPath: #keyPath(EmulatorCore.state), options: [.old], context: &kvoContext) - - let game = self.game as? Game - NotificationCenter.default.addObserver(self, selector: #selector(GameViewController.managedObjectContextDidChange(with:)), name: .NSManagedObjectContextObjectsDidChange, object: game?.managedObjectContext) - - self.emulatorCore?.saveHandler = { [weak self] _ in self?.updateGameSave() } - - if oldValue?.fileURL != game?.fileURL - { - self.shouldResetSustainedInputs = true - } - - self.updateControllers() - - self.presentedGyroAlert = false - } - } - - //MARK: - Private Properties - - private var pauseViewController: PauseViewController? - private var pausingGameController: GameController? - - // Prevents the same save state from being saved multiple times - private var pausedSaveState: PausedSaveState? { - didSet - { - if let saveState = oldValue, self.pausedSaveState == nil - { - do - { - try FileManager.default.removeItem(at: saveState.fileURL) - } - catch - { - print(error) - } - } - } - } - - private var _deepLinkResumingSaveState: SaveStateProtocol? { - didSet { - guard let saveState = oldValue, _deepLinkResumingSaveState == nil else { return } - - do - { - try FileManager.default.removeItem(at: saveState.fileURL) - } - catch - { - print(error) - } - } - } - - private var _isLoadingSaveState = false - - // Sustain Buttons - private var isSelectingSustainedButtons = false - private var sustainInputsMapping: SustainInputsMapping? - private var shouldResetSustainedInputs = false - - private var sustainButtonsContentView: UIView! - private var sustainButtonsBlurView: UIVisualEffectView! - private var sustainButtonsBackgroundView: RSTPlaceholderView! - private var inputsToSustain = [AnyInput: Double]() - - private var isGyroActive = false - private var presentedGyroAlert = false - - override var shouldAutorotate: Bool { - return !self.isGyroActive - } - - override var preferredScreenEdgesDeferringSystemGestures: UIRectEdge { - return .all - } - - required init() - { - super.init() - - self.initialize() - } - - required init?(coder aDecoder: NSCoder) - { - super.init(coder: aDecoder) - - self.initialize() - } - - private func initialize() - { - self.delegate = self - - NotificationCenter.default.addObserver(self, selector: #selector(GameViewController.updateControllers), name: .externalGameControllerDidConnect, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(GameViewController.updateControllers), name: .externalGameControllerDidDisconnect, object: nil) - - NotificationCenter.default.addObserver(self, selector: #selector(GameViewController.didEnterBackground(with:)), name: UIApplication.didEnterBackgroundNotification, object: UIApplication.shared) - - NotificationCenter.default.addObserver(self, selector: #selector(GameViewController.settingsDidChange(with:)), name: .settingsDidChange, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(GameViewController.deepLinkControllerLaunchGame(with:)), name: .deepLinkControllerLaunchGame, object: nil) - - NotificationCenter.default.addObserver(self, selector: #selector(GameViewController.didActivateGyro(with:)), name: GBA.didActivateGyroNotification, object: nil) - NotificationCenter.default.addObserver(self, selector: #selector(GameViewController.didDeactivateGyro(with:)), name: GBA.didDeactivateGyroNotification, object: nil) - - NotificationCenter.default.addObserver(self, selector: #selector(GameViewController.emulationDidQuit(with:)), name: EmulatorCore.emulationDidQuitNotification, object: nil) - } - - deinit - { - self.emulatorCore?.removeObserver(self, forKeyPath: #keyPath(EmulatorCore.state), context: &kvoContext) - } - - // MARK: - GameControllerReceiver - - override func gameController(_ gameController: GameController, didActivate input: Input, value: Double) - { - super.gameController(gameController, didActivate: input, value: value) - - if self.isSelectingSustainedButtons - { - guard let pausingGameController = self.pausingGameController, gameController == pausingGameController else { return } - - if input != StandardGameControllerInput.menu - { - self.inputsToSustain[AnyInput(input)] = value - } - } - else if let emulatorCore = self.emulatorCore, emulatorCore.state == .running - { - guard let actionInput = ActionInput(input: input) else { return } - - switch actionInput - { - case .quickSave: self.performQuickSaveAction() - case .quickLoad: self.performQuickLoadAction() - case .fastForward: self.performFastForwardAction(activate: true) - case .toggleFastForward: - let isFastForwarding = (emulatorCore.rate != emulatorCore.deltaCore.supportedRates.lowerBound) - self.performFastForwardAction(activate: !isFastForwarding) - } - } - } - - override func gameController(_ gameController: GameController, didDeactivate input: Input) - { - super.gameController(gameController, didDeactivate: input) - - if self.isSelectingSustainedButtons - { - if input.isContinuous - { - self.inputsToSustain[AnyInput(input)] = nil - } - } - else - { - guard let actionInput = ActionInput(input: input) else { return } - - switch actionInput - { - case .quickSave: break - case .quickLoad: break - case .fastForward: self.performFastForwardAction(activate: false) - case .toggleFastForward: break - } - } - } -} - - -//MARK: - UIViewController - -/// UIViewController -extension GameViewController -{ - override func viewDidLoad() - { - super.viewDidLoad() - - // Lays out self.gameView, so we can pin self.sustainButtonsContentView to it without resulting in a temporary "cannot satisfy constraints". - self.view.layoutIfNeeded() - - self.controllerView.translucentControllerSkinOpacity = Settings.translucentControllerSkinOpacity - - self.sustainButtonsContentView = UIView(frame: CGRect(x: 0, y: 0, width: self.gameView.bounds.width, height: self.gameView.bounds.height)) - self.sustainButtonsContentView.translatesAutoresizingMaskIntoConstraints = false - self.sustainButtonsContentView.isHidden = true - self.view.insertSubview(self.sustainButtonsContentView, aboveSubview: self.gameView) - - let blurEffect = UIBlurEffect(style: .dark) - let vibrancyEffect = UIVibrancyEffect(blurEffect: blurEffect) - - self.sustainButtonsBlurView = UIVisualEffectView(effect: blurEffect) - self.sustainButtonsBlurView.frame = CGRect(x: 0, y: 0, width: self.sustainButtonsContentView.bounds.width, height: self.sustainButtonsContentView.bounds.height) - self.sustainButtonsBlurView.autoresizingMask = [.flexibleWidth, .flexibleHeight] - self.sustainButtonsContentView.addSubview(self.sustainButtonsBlurView) - - let vibrancyView = UIVisualEffectView(effect: vibrancyEffect) - vibrancyView.frame = CGRect(x: 0, y: 0, width: self.sustainButtonsBlurView.contentView.bounds.width, height: self.sustainButtonsBlurView.contentView.bounds.height) - vibrancyView.autoresizingMask = [.flexibleWidth, .flexibleHeight] - self.sustainButtonsBlurView.contentView.addSubview(vibrancyView) - - self.sustainButtonsBackgroundView = RSTPlaceholderView(frame: CGRect(x: 0, y: 0, width: vibrancyView.contentView.bounds.width, height: vibrancyView.contentView.bounds.height)) - self.sustainButtonsBackgroundView.autoresizingMask = [.flexibleWidth, .flexibleHeight] - self.sustainButtonsBackgroundView.textLabel.text = NSLocalizedString("Select Buttons to Hold Down", comment: "") - self.sustainButtonsBackgroundView.textLabel.numberOfLines = 1 - self.sustainButtonsBackgroundView.textLabel.minimumScaleFactor = 0.5 - self.sustainButtonsBackgroundView.textLabel.adjustsFontSizeToFitWidth = true - self.sustainButtonsBackgroundView.detailTextLabel.text = NSLocalizedString("Press the Menu button when finished.", comment: "") - self.sustainButtonsBackgroundView.alpha = 0.0 - vibrancyView.contentView.addSubview(self.sustainButtonsBackgroundView) - - // Auto Layout - self.sustainButtonsContentView.leadingAnchor.constraint(equalTo: self.gameView.leadingAnchor).isActive = true - self.sustainButtonsContentView.trailingAnchor.constraint(equalTo: self.gameView.trailingAnchor).isActive = true - self.sustainButtonsContentView.topAnchor.constraint(equalTo: self.gameView.topAnchor).isActive = true - self.sustainButtonsContentView.bottomAnchor.constraint(equalTo: self.gameView.bottomAnchor).isActive = true - - self.updateControllers() - } - - override func viewDidAppear(_ animated: Bool) - { - super.viewDidAppear(animated) - - if self.emulatorCore?.deltaCore == DS.core, UserDefaults.standard.desmumeDeprecatedAlertCount < 3 - { - let toastView = RSTToastView(text: NSLocalizedString("DeSmuME Core Deprecated", comment: ""), detailText: NSLocalizedString("Switch to the melonDS core in Settings for latest improvements.", comment: "")) - self.show(toastView, duration: 5.0) - - UserDefaults.standard.desmumeDeprecatedAlertCount += 1 - } - } - - override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) - { - super.viewWillTransition(to: size, with: coordinator) - - coordinator.animate(alongsideTransition: { (context) in - self.updateControllerSkin() - }, completion: nil) - } - - // MARK: - Segues - /// KVO - - override func prepare(for segue: UIStoryboardSegue, sender: Any?) - { - guard let identifier = segue.identifier else { return } - - switch identifier - { - case "showGamesViewController": - let gamesViewController = (segue.destination as! UINavigationController).topViewController as! GamesViewController - - if let emulatorCore = self.emulatorCore - { - gamesViewController.theme = .translucent - gamesViewController.activeEmulatorCore = emulatorCore - - self.updateAutoSaveState() - } - else - { - gamesViewController.theme = .opaque - } - - case "pause": - - if let game = self.game - { - let fileURL = FileManager.default.uniqueTemporaryURL() - self.pausedSaveState = PausedSaveState(fileURL: fileURL, gameType: game.type) - - self.emulatorCore?.saveSaveState(to: fileURL) - } - - guard let gameController = sender as? GameController else { - fatalError("sender for pauseSegue must be the game controller that pressed the Menu button") - } - - self.pausingGameController = gameController - - let pauseViewController = segue.destination as! PauseViewController - pauseViewController.pauseText = (self.game as? Game)?.name ?? NSLocalizedString("Delta", comment: "") - pauseViewController.emulatorCore = self.emulatorCore - pauseViewController.saveStatesViewControllerDelegate = self - pauseViewController.cheatsViewControllerDelegate = self - - pauseViewController.fastForwardItem?.isSelected = (self.emulatorCore?.rate != self.emulatorCore?.deltaCore.supportedRates.lowerBound) - pauseViewController.fastForwardItem?.action = { [unowned self] item in - self.performFastForwardAction(activate: item.isSelected) - } - - pauseViewController.sustainButtonsItem?.isSelected = gameController.sustainedInputs.count > 0 - pauseViewController.sustainButtonsItem?.action = { [unowned self, unowned pauseViewController] item in - - for input in gameController.sustainedInputs.keys - { - gameController.unsustain(input) - } - - if item.isSelected - { - self.showSustainButtonView() - pauseViewController.dismiss() - } - - // Re-set gameController as pausingGameController. - self.pausingGameController = gameController - } - - switch self.game?.type - { - case .n64? where !UIDevice.current.hasA9ProcessorOrBetter: - // A8 processors and earlier aren't powerful enough to run N64 games faster than 1x speed. - pauseViewController.fastForwardItem = nil - - case .ds? where self.emulatorCore?.deltaCore == DS.core: - // Cheats are not supported by DeSmuME core. - pauseViewController.cheatCodesItem = nil - - case .ds? where !UIDevice.current.hasA9ProcessorOrBetter: - // A8 processors and earlier aren't powerful enough to run DS games faster than 1x speed. - pauseViewController.fastForwardItem = nil - - default: break - } - - self.pauseViewController = pauseViewController - - default: break - } - } - - @IBAction private func unwindFromPauseViewController(_ segue: UIStoryboardSegue) - { - self.pauseViewController = nil - self.pausingGameController = nil - - guard let identifier = segue.identifier else { return } - - switch identifier - { - case "unwindFromPauseMenu": - - self.pausedSaveState = nil - - DispatchQueue.main.async { - - if self._isLoadingSaveState - { - // If loading save state, resume emulation immediately (since the game view needs to be updated ASAP) - - if self.resumeEmulation() - { - // Temporarily disable audioManager to prevent delayed audio bug when using 3D Touch Peek & Pop - self.emulatorCore?.audioManager.isEnabled = false - - // Re-enable after delay - - DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { - self.emulatorCore?.audioManager.isEnabled = true - } - } - } - else - { - // Otherwise, wait for the transition to complete before resuming emulation - self.transitionCoordinator?.animate(alongsideTransition: nil, completion: { (context) in - self.resumeEmulation() - }) - } - - self._isLoadingSaveState = false - } - - case "unwindToGames": - DispatchQueue.main.async { - self.transitionCoordinator?.animate(alongsideTransition: nil, completion: { (context) in - self.performSegue(withIdentifier: "showGamesViewController", sender: nil) - }) - } - - default: break - } - } - - @IBAction private func unwindFromGamesViewController(with segue: UIStoryboardSegue) - { - self.pausedSaveState = nil - - if let emulatorCore = self.emulatorCore, emulatorCore.state == .paused - { - emulatorCore.resume() - } - } - - // MARK: - KVO - /// KVO - override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) - { - guard context == &kvoContext else { return super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context) } - - guard let rawValue = change?[.oldKey] as? Int, let previousState = EmulatorCore.State(rawValue: rawValue) else { return } - - if let saveState = _deepLinkResumingSaveState, let emulatorCore = self.emulatorCore, emulatorCore.state == .running - { - emulatorCore.pause() - - do - { - try emulatorCore.load(saveState) - } - catch - { - print(error) - } - - _deepLinkResumingSaveState = nil - emulatorCore.resume() - } - - if previousState == .stopped - { - self.emulatorCore?.updateCheats() - } - - if self.emulatorCore?.state == .running - { - DatabaseManager.shared.performBackgroundTask { (context) in - guard let game = self.game as? Game else { return } - - let backgroundGame = context.object(with: game.objectID) as! Game - backgroundGame.playedDate = Date() - - context.saveWithErrorLogging() - } - } - } -} - -//MARK: - Controllers - -private extension GameViewController -{ - @objc func updateControllers() - { - let isExternalGameControllerConnected = ExternalGameControllerManager.shared.connectedControllers.contains(where: { $0.playerIndex != nil }) - if !isExternalGameControllerConnected && Settings.localControllerPlayerIndex == nil - { - Settings.localControllerPlayerIndex = 0 - } - - // If Settings.localControllerPlayerIndex is non-nil, and there isn't a connected controller with same playerIndex, show controller view. - if let index = Settings.localControllerPlayerIndex, !ExternalGameControllerManager.shared.connectedControllers.contains(where: { $0.playerIndex == index }) - { - self.controllerView.playerIndex = index - self.controllerView.isHidden = false - } - else - { - if let game = self.game, - let traits = self.controllerView.controllerSkinTraits, - let controllerSkin = DeltaCore.ControllerSkin.standardControllerSkin(for: game.type), - controllerSkin.hasTouchScreen(for: traits) - { - self.controllerView.isHidden = false - self.controllerView.playerIndex = 0 - } - else - { - self.controllerView.isHidden = true - self.controllerView.playerIndex = nil - } - - Settings.localControllerPlayerIndex = nil - } - - self.view.setNeedsLayout() - self.view.layoutIfNeeded() - - // Roundabout way of combining arrays to prevent rare runtime crash in + operator :( - var controllers = [GameController]() - controllers.append(self.controllerView) - controllers.append(contentsOf: ExternalGameControllerManager.shared.connectedControllers) - - if let emulatorCore = self.emulatorCore, let game = self.game - { - for gameController in controllers - { - if gameController.playerIndex != nil - { - let inputMapping: GameControllerInputMappingProtocol - - if let mapping = GameControllerInputMapping.inputMapping(for: gameController, gameType: game.type, in: DatabaseManager.shared.viewContext) - { - inputMapping = mapping - } - else - { - inputMapping = DefaultInputMapping(gameController: gameController) - } - - gameController.addReceiver(self, inputMapping: inputMapping) - gameController.addReceiver(emulatorCore, inputMapping: inputMapping) - } - else - { - gameController.removeReceiver(self) - gameController.removeReceiver(emulatorCore) - } - } - } - - if self.shouldResetSustainedInputs - { - for controller in controllers - { - for input in controller.sustainedInputs.keys - { - controller.unsustain(input) - } - } - - self.shouldResetSustainedInputs = false - } - - self.controllerView.isButtonHapticFeedbackEnabled = Settings.isButtonHapticFeedbackEnabled - self.controllerView.isThumbstickHapticFeedbackEnabled = Settings.isThumbstickHapticFeedbackEnabled - - self.updateControllerSkin() - } - - func updateControllerSkin() - { - guard let game = self.game as? Game, let window = self.view.window else { return } - - let traits = DeltaCore.ControllerSkin.Traits.defaults(for: window) - - if Settings.localControllerPlayerIndex != nil - { - let controllerSkin = Settings.preferredControllerSkin(for: game, traits: traits) - self.controllerView.controllerSkin = controllerSkin - } - else if let controllerSkin = DeltaCore.ControllerSkin.standardControllerSkin(for: game.type), controllerSkin.hasTouchScreen(for: traits) - { - var touchControllerSkin = TouchControllerSkin(controllerSkin: controllerSkin) - touchControllerSkin.layoutGuide = self.view.safeAreaLayoutGuide - - switch traits.orientation - { - case .portrait: touchControllerSkin.screenLayoutAxis = .vertical - case .landscape: touchControllerSkin.screenLayoutAxis = .horizontal - } - - self.controllerView.controllerSkin = touchControllerSkin - } - - self.view.setNeedsLayout() - } -} - -//MARK: - Game Saves - -/// Game Saves -private extension GameViewController -{ - func updateGameSave() - { - guard let game = self.game as? Game else { return } - - DatabaseManager.shared.performBackgroundTask { (context) in - do - { - let game = context.object(with: game.objectID) as! Game - - let hash = try RSTHasher.sha1HashOfFile(at: game.gameSaveURL) - let previousHash = game.gameSaveURL.extendedAttribute(name: "com.rileytestut.delta.sha1Hash") - - guard hash != previousHash else { return } - - if let gameSave = game.gameSave - { - gameSave.modifiedDate = Date() - } - else - { - let gameSave = GameSave(context: context) - gameSave.identifier = game.identifier - game.gameSave = gameSave - } - - try context.save() - try game.gameSaveURL.setExtendedAttribute(name: "com.rileytestut.delta.sha1Hash", value: hash) - } - catch CocoaError.fileNoSuchFile - { - // Ignore - } - catch - { - print("Error updating game save.", error) - } - } - } -} - -//MARK: - Save States - -/// Save States -extension GameViewController: SaveStatesViewControllerDelegate -{ - private func updateAutoSaveState() - { - // Ensures game is non-nil and also a Game subclass - guard let game = self.game as? Game else { return } - - guard let emulatorCore = self.emulatorCore, emulatorCore.state != .stopped else { return } - - // If pausedSaveState exists and has already been saved, don't update auto save state - // This prevents us from filling our auto save state slots with the same save state - let savedPausedSaveState = self.pausedSaveState?.isSaved ?? false - guard !savedPausedSaveState else { return } - - self.pausedSaveState?.isSaved = true - - // Must be done synchronously - let backgroundContext = DatabaseManager.shared.newBackgroundContext() - backgroundContext.performAndWait { - - let game = backgroundContext.object(with: game.objectID) as! Game - - let fetchRequest = SaveState.fetchRequest(for: game, type: .auto) - fetchRequest.sortDescriptors = [NSSortDescriptor(key: #keyPath(SaveState.creationDate), ascending: true)] - - do - { - let saveStates = try fetchRequest.execute() - - if let saveState = saveStates.first, saveStates.count >= 2 - { - // If there are two or more auto save states, update the oldest one - self.update(saveState, with: self.pausedSaveState) - - // Tiny hack: SaveStatesViewController sorts save states by creation date, so we update the creation date too - // Simpler than deleting old save states ¯\_(ツ)_/¯ - saveState.creationDate = saveState.modifiedDate - } - else - { - // Otherwise, create a new one - let saveState = SaveState.insertIntoManagedObjectContext(backgroundContext) - saveState.type = .auto - saveState.game = game - - self.update(saveState, with: self.pausedSaveState) - } - } - catch - { - print(error) - } - - backgroundContext.saveWithErrorLogging() - } - } - - private func update(_ saveState: SaveState, with replacementSaveState: SaveStateProtocol? = nil) - { - let isRunning = (self.emulatorCore?.state == .running) - - if isRunning - { - self.pauseEmulation() - } - - if let replacementSaveState = replacementSaveState - { - do - { - if FileManager.default.fileExists(atPath: saveState.fileURL.path) - { - // Don't use replaceItem(), since that removes the original file as well - try FileManager.default.removeItem(at: saveState.fileURL) - } - - try FileManager.default.copyItem(at: replacementSaveState.fileURL, to: saveState.fileURL) - } - catch - { - print(error) - } - } - else - { - self.emulatorCore?.saveSaveState(to: saveState.fileURL) - } - - if let snapshot = self.emulatorCore?.videoManager.snapshot(), let data = snapshot.pngData() - { - do - { - try data.write(to: saveState.imageFileURL, options: [.atomicWrite]) - } - catch - { - print(error) - } - } - - saveState.modifiedDate = Date() - saveState.coreIdentifier = self.emulatorCore?.deltaCore.identifier - - if isRunning - { - self.resumeEmulation() - } - } - - private func load(_ saveState: SaveStateProtocol) - { - let isRunning = (self.emulatorCore?.state == .running) - - if isRunning - { - self.pauseEmulation() - } - - // If we're loading the auto save state, we need to create a temporary copy of saveState. - // Then, we update the auto save state, but load our copy so everything works out. - var temporarySaveState: SaveStateProtocol? = nil - - if let autoSaveState = saveState as? SaveState, autoSaveState.type == .auto - { - let temporaryURL = FileManager.default.uniqueTemporaryURL() - - do - { - try FileManager.default.moveItem(at: saveState.fileURL, to: temporaryURL) - temporarySaveState = DeltaCore.SaveState(fileURL: temporaryURL, gameType: saveState.gameType) - } - catch - { - print(error) - } - } - - self.updateAutoSaveState() - - do - { - if let temporarySaveState = temporarySaveState - { - try self.emulatorCore?.load(temporarySaveState) - try FileManager.default.removeItem(at: temporarySaveState.fileURL) - } - else - { - try self.emulatorCore?.load(saveState) - } - } - catch EmulatorCore.SaveStateError.doesNotExist - { - print("Save State does not exist.") - } - catch let error as NSError - { - print(error) - } - - if isRunning - { - self.resumeEmulation() - } - } - - //MARK: - SaveStatesViewControllerDelegate - - func saveStatesViewController(_ saveStatesViewController: SaveStatesViewController, updateSaveState saveState: SaveState) - { - let updatingExistingSaveState = FileManager.default.fileExists(atPath: saveState.fileURL.path) - - self.update(saveState) - - // Dismiss if updating an existing save state. - // If creating a new one, don't dismiss. - if updatingExistingSaveState - { - self.pauseViewController?.dismiss() - } - } - - func saveStatesViewController(_ saveStatesViewController: SaveStatesViewController, loadSaveState saveState: SaveStateProtocol) - { - self._isLoadingSaveState = true - - self.load(saveState) - - self.pauseViewController?.dismiss() - } -} - -//MARK: - Cheats - -/// Cheats -extension GameViewController: CheatsViewControllerDelegate -{ - func cheatsViewController(_ cheatsViewController: CheatsViewController, activateCheat cheat: Cheat) - { - self.emulatorCore?.activateCheatWithErrorLogging(cheat) - } - - func cheatsViewController(_ cheatsViewController: CheatsViewController, deactivateCheat cheat: Cheat) - { - self.emulatorCore?.deactivate(cheat) - } -} - -//MARK: - Sustain Buttons - -private extension GameViewController -{ - func showSustainButtonView() - { - guard let gameController = self.pausingGameController else { return } - - self.isSelectingSustainedButtons = true - - let sustainInputsMapping = SustainInputsMapping(gameController: gameController) - gameController.addReceiver(self, inputMapping: sustainInputsMapping) - - let blurEffect = self.sustainButtonsBlurView.effect - self.sustainButtonsBlurView.effect = nil - - self.sustainButtonsContentView.isHidden = false - - UIView.animate(withDuration: 0.4) { - self.sustainButtonsBlurView.effect = blurEffect - self.sustainButtonsBackgroundView.alpha = 1.0 - } - } - - func hideSustainButtonView() - { - guard let gameController = self.pausingGameController else { return } - - self.isSelectingSustainedButtons = false - - self.updateControllers() - self.sustainInputsMapping = nil - - // Activate all sustained inputs, since they will now be mapped to game inputs. - for (input, value) in self.inputsToSustain - { - gameController.sustain(input, value: value) - } - - let blurEffect = self.sustainButtonsBlurView.effect - - UIView.animate(withDuration: 0.4, animations: { - self.sustainButtonsBlurView.effect = nil - self.sustainButtonsBackgroundView.alpha = 0.0 - }) { (finished) in - self.sustainButtonsContentView.isHidden = true - self.sustainButtonsBlurView.effect = blurEffect - } - - self.inputsToSustain = [:] - } -} - -//MARK: - Action Inputs - -/// Action Inputs -extension GameViewController -{ - func performQuickSaveAction() - { - guard let game = self.game as? Game else { return } - - let backgroundContext = DatabaseManager.shared.newBackgroundContext() - backgroundContext.performAndWait { - - let game = backgroundContext.object(with: game.objectID) as! Game - let fetchRequest = SaveState.fetchRequest(for: game, type: .quick) - - do - { - if let quickSaveState = try fetchRequest.execute().first - { - self.update(quickSaveState) - } - else - { - let saveState = SaveState(context: backgroundContext) - saveState.type = .quick - saveState.game = game - - self.update(saveState) - } - } - catch - { - print(error) - } - - backgroundContext.saveWithErrorLogging() - } - } - - func performQuickLoadAction() - { - guard let game = self.game as? Game else { return } - - let fetchRequest = SaveState.fetchRequest(for: game, type: .quick) - - do - { - if let quickSaveState = try DatabaseManager.shared.viewContext.fetch(fetchRequest).first - { - self.load(quickSaveState) - } - } - catch - { - print(error) - } - } - - func performFastForwardAction(activate: Bool) - { - guard let emulatorCore = self.emulatorCore else { return } - - if activate - { - emulatorCore.rate = emulatorCore.deltaCore.supportedRates.upperBound - } - else - { - emulatorCore.rate = emulatorCore.deltaCore.supportedRates.lowerBound - } - } -} - -//MARK: - GameViewControllerDelegate - -/// GameViewControllerDelegate -extension GameViewController: GameViewControllerDelegate -{ - func gameViewController(_ gameViewController: DeltaCore.GameViewController, handleMenuInputFrom gameController: GameController) - { - if let pausingGameController = self.pausingGameController - { - guard pausingGameController == gameController else { return } - } - - if self.isSelectingSustainedButtons - { - self.hideSustainButtonView() - } - - if let pauseViewController = self.pauseViewController, !self.isSelectingSustainedButtons - { - pauseViewController.dismiss() - } - else if self.presentedViewController == nil - { - self.pauseEmulation() - self.performSegue(withIdentifier: "pause", sender: gameController) - } - } - - func gameViewControllerShouldResumeEmulation(_ gameViewController: DeltaCore.GameViewController) -> Bool - { - var result = false - - rst_dispatch_sync_on_main_thread { - result = (self.presentedViewController == nil || self.presentedViewController?.isDisappearing == true) && !self.isSelectingSustainedButtons && self.view.window != nil - } - - return result - } -} - -private extension GameViewController -{ - func show(_ toastView: RSTToastView, duration: TimeInterval = 3.0) - { - toastView.textLabel.textAlignment = .center - toastView.presentationEdge = .top - toastView.show(in: self.view, duration: duration) - } -} - -//MARK: - Notifications - -private extension GameViewController -{ - @objc func didEnterBackground(with notification: Notification) - { - self.updateAutoSaveState() - } - - @objc func managedObjectContextDidChange(with notification: Notification) - { - guard let deletedObjects = notification.userInfo?[NSDeletedObjectsKey] as? Set else { return } - guard let game = self.game as? Game else { return } - - if deletedObjects.contains(game) - { - self.emulatorCore?.gameViews.forEach { $0.inputImage = nil } - self.game = nil - } - } - - @objc func settingsDidChange(with notification: Notification) - { - guard let settingsName = notification.userInfo?[Settings.NotificationUserInfoKey.name] as? Settings.Name else { return } - - switch settingsName - { - case .localControllerPlayerIndex, .isButtonHapticFeedbackEnabled, .isThumbstickHapticFeedbackEnabled: - self.updateControllers() - - case .preferredControllerSkin: - guard - let system = notification.userInfo?[Settings.NotificationUserInfoKey.system] as? System, - let traits = notification.userInfo?[Settings.NotificationUserInfoKey.traits] as? DeltaCore.ControllerSkin.Traits - else { return } - - if system.gameType == self.game?.type && traits.orientation == self.controllerView.controllerSkinTraits?.orientation - { - self.updateControllerSkin() - } - - case .translucentControllerSkinOpacity: self.controllerView.translucentControllerSkinOpacity = Settings.translucentControllerSkinOpacity - - case .syncingService: break - } - } - - @objc func deepLinkControllerLaunchGame(with notification: Notification) - { - guard let game = notification.userInfo?[DeepLink.Key.game] as? Game else { return } - - let previousGame = self.game - self.game = game - - if let pausedSaveState = self.pausedSaveState, game == (previousGame as? Game) - { - // Launching current game via deep link, so we store a copy of the paused save state to resume when emulator core is started. - - do - { - let temporaryURL = FileManager.default.uniqueTemporaryURL() - try FileManager.default.copyItem(at: pausedSaveState.fileURL, to: temporaryURL) - - _deepLinkResumingSaveState = DeltaCore.SaveState(fileURL: temporaryURL, gameType: game.type) - } - catch - { - print(error) - } - } - - if let pauseViewController = self.pauseViewController - { - let segue = UIStoryboardSegue(identifier: "unwindFromPauseMenu", source: pauseViewController, destination: self) - self.unwindFromPauseViewController(segue) - } - else if - let navigationController = self.presentedViewController as? UINavigationController, - let pageViewController = navigationController.topViewController?.children.first as? UIPageViewController, - let gameCollectionViewController = pageViewController.viewControllers?.first as? GameCollectionViewController - { - let segue = UIStoryboardSegue(identifier: "unwindFromGames", source: gameCollectionViewController, destination: self) - self.unwindFromGamesViewController(with: segue) - } - - self.dismiss(animated: true, completion: nil) - } - - @objc func didActivateGyro(with notification: Notification) - { - self.isGyroActive = true - - guard !self.presentedGyroAlert else { return } - - self.presentedGyroAlert = true - - func presentToastView() - { - let toastView = RSTToastView(text: NSLocalizedString("Autorotation Disabled", comment: ""), detailText: NSLocalizedString("Pause game to change orientation.", comment: "")) - self.show(toastView) - } - - DispatchQueue.main.async { - if let transitionCoordinator = self.transitionCoordinator - { - transitionCoordinator.animate(alongsideTransition: nil) { (context) in - presentToastView() - } - } - else - { - presentToastView() - } - } - } - - @objc func didDeactivateGyro(with notification: Notification) - { - self.isGyroActive = false - } - - @objc func emulationDidQuit(with notification: Notification) - { - DispatchQueue.main.async { - guard self.presentedViewController == nil else { return } - - // Wait for emulation to stop completely before performing segue. - var token: NSKeyValueObservation? - token = self.emulatorCore?.observe(\.state, options: [.initial]) { (emulatorCore, change) in - guard emulatorCore.state == .stopped else { return } - - DispatchQueue.main.async { - self.game = nil - self.performSegue(withIdentifier: "showGamesViewController", sender: nil) - } - - token?.invalidate() - } - } - } -} - -private extension UserDefaults -{ - @NSManaged var desmumeDeprecatedAlertCount: Int -} diff --git a/Delta/Supporting Files/Delta.entitlements b/Delta/Supporting Files/Delta.entitlements deleted file mode 100644 index 0c67376eb..000000000 --- a/Delta/Supporting Files/Delta.entitlements +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/Derived/Sources/Assets+Delta.swift b/Derived/Sources/Assets+Delta.swift new file mode 100644 index 000000000..6cc9a81ff --- /dev/null +++ b/Derived/Sources/Assets+Delta.swift @@ -0,0 +1,111 @@ +// swiftlint:disable all +// Generated using tuist — https://github.com/tuist/tuist + +#if os(macOS) + import AppKit +#elseif os(iOS) + import UIKit +#elseif os(tvOS) || os(watchOS) + import UIKit +#endif + +// swiftlint:disable superfluous_disable_command file_length implicit_return + +// MARK: - Asset Catalogs + +// swiftlint:disable identifier_name line_length nesting type_body_length type_name +public enum DeltaAsset { + public static let boxArt = DeltaImages(name: "BoxArt") + public static let darkGray = DeltaColors(name: "DarkGray") + public static let purple = DeltaColors(name: "Purple") + public static let delta = DeltaImages(name: "Delta") + public static let deltaPlaceholder = DeltaImages(name: "DeltaPlaceholder") + public static let link = DeltaImages(name: "Link") + public static let cheatCodes = DeltaImages(name: "CheatCodes") + public static let fastForward = DeltaImages(name: "FastForward") + public static let loadSaveState = DeltaImages(name: "LoadSaveState") + public static let pause = DeltaImages(name: "Pause") + public static let saveSaveState = DeltaImages(name: "SaveSaveState") + public static let sustainButtons = DeltaImages(name: "SustainButtons") + public static let settingsButton = DeltaImages(name: "SettingsButton") +} +// swiftlint:enable identifier_name line_length nesting type_body_length type_name + +// MARK: - Implementation Details + +public final class DeltaColors { + public fileprivate(set) var name: String + + #if os(macOS) + public typealias Color = NSColor + #elseif os(iOS) || os(tvOS) || os(watchOS) + public typealias Color = UIColor + #endif + + @available(iOS 11.0, tvOS 11.0, watchOS 4.0, macOS 10.13, *) + public private(set) lazy var color: Color = { + guard let color = Color(asset: self) else { + fatalError("Unable to load color asset named \(name).") + } + return color + }() + + fileprivate init(name: String) { + self.name = name + } +} + +public extension DeltaColors.Color { + @available(iOS 11.0, tvOS 11.0, watchOS 4.0, macOS 10.13, *) + convenience init?(asset: DeltaColors) { + let bundle = DeltaResources.bundle + #if os(iOS) || os(tvOS) + self.init(named: asset.name, in: bundle, compatibleWith: nil) + #elseif os(macOS) + self.init(named: NSColor.Name(asset.name), bundle: bundle) + #elseif os(watchOS) + self.init(named: asset.name) + #endif + } +} + +public struct DeltaImages { + public fileprivate(set) var name: String + + #if os(macOS) + public typealias Image = NSImage + #elseif os(iOS) || os(tvOS) || os(watchOS) + public typealias Image = UIImage + #endif + + public var image: Image { + let bundle = DeltaResources.bundle + #if os(iOS) || os(tvOS) + let image = Image(named: name, in: bundle, compatibleWith: nil) + #elseif os(macOS) + let image = bundle.image(forResource: NSImage.Name(name)) + #elseif os(watchOS) + let image = Image(named: name) + #endif + guard let result = image else { + fatalError("Unable to load image asset named \(name).") + } + return result + } +} + +public extension DeltaImages.Image { + @available(macOS, deprecated, + message: "This initializer is unsafe on macOS, please use the DeltaImages.image property") + convenience init?(asset: DeltaImages) { + #if os(iOS) || os(tvOS) + let bundle = DeltaResources.bundle + self.init(named: asset.name, in: bundle, compatibleWith: nil) + #elseif os(macOS) + self.init(named: NSImage.Name(asset.name)) + #elseif os(watchOS) + self.init(named: asset.name) + #endif + } +} + diff --git a/Derived/Sources/Bundle+Delta.swift b/Derived/Sources/Bundle+Delta.swift new file mode 100644 index 000000000..54c8ba484 --- /dev/null +++ b/Derived/Sources/Bundle+Delta.swift @@ -0,0 +1,23 @@ +// swiftlint:disable all +import Foundation + +// MARK: - Swift Bundle Accessor + +private class BundleFinder {} + +extension Foundation.Bundle { + /// Since Delta is a application, the bundle containing the resources is copied into the final product. + static var module: Bundle = { + return Bundle(for: BundleFinder.self) + }() +} + +// MARK: - Objective-C Bundle Accessor + +@objc +public class DeltaResources: NSObject { + @objc public class var bundle: Bundle { + return .module + } +} +// swiftlint:enable all \ No newline at end of file diff --git a/Derived/Sources/GoogleServiceInfo.swift b/Derived/Sources/GoogleServiceInfo.swift new file mode 100644 index 000000000..19c4313e5 --- /dev/null +++ b/Derived/Sources/GoogleServiceInfo.swift @@ -0,0 +1,18 @@ +// swiftlint:disable all +// Generated using tuist — https://github.com/tuist/tuist + +import Foundation + +// swiftlint:disable superfluous_disable_command +// swiftlint:disable file_length + +// MARK: - Plist Files + +// swiftlint:disable identifier_name line_length number_separator type_body_length +public enum GoogleServiceInfo { + public static let bundleId: String = "com.rileytestut.Delta" + public static let clientId: String = "457607414709-5puj6lcv779gpu3ql43e6k3smjj40dmu.apps.googleusercontent.com" + public static let plistVersion: String = "1" + public static let reversedClientId: String = "com.googleusercontent.apps.457607414709-5puj6lcv779gpu3ql43e6k3smjj40dmu" +} +// swiftlint:enable identifier_name line_length number_separator type_body_length diff --git a/External/Roxas b/External/Roxas index c15211088..84645e431 160000 --- a/External/Roxas +++ b/External/Roxas @@ -1 +1 @@ -Subproject commit c152110888bc420e39e68c4d97af168cbfe9cbb2 +Subproject commit 84645e43182eb2c8fd5904d9e7e379ad2a1b94cb diff --git a/Delta/Supporting Files/Info.plist b/Info.plist similarity index 100% rename from Delta/Supporting Files/Info.plist rename to Info.plist diff --git a/Phases/fabric.sh b/Phases/fabric.sh new file mode 100755 index 000000000..231603b47 --- /dev/null +++ b/Phases/fabric.sh @@ -0,0 +1 @@ +"${PODS_ROOT}/Fabric/run" d542629b4f6625cfd5564d27318550321272076d 333118df9345dcec21e4ba0bb7fa8f6c67c4eb41734374e24f6c71a8dcd5c870 diff --git a/Phases/mogenerator.sh b/Phases/mogenerator.sh new file mode 100755 index 000000000..e1232baac --- /dev/null +++ b/Phases/mogenerator.sh @@ -0,0 +1 @@ +/usr/local/bin/mogenerator -m "Sources/Database/Model/Delta.xcdatamodeld" --human-dir "Sources/Database/Model/Human" --machine-dir "Sources/Database/Model/Machine" --swift --template-var scalarsWhenNonOptional=true --template-path "Sources/Database/Model/mogenerator/templates" diff --git a/Podfile b/Podfile index 4bc2be162..e332381fb 100644 --- a/Podfile +++ b/Podfile @@ -11,14 +11,6 @@ target 'Delta' do pod 'Crashlytics', '~> 3.8.0' pod 'SMCalloutView', '~> 2.1.0' - pod 'DeltaCore', :path => 'Cores/DeltaCore' - pod 'NESDeltaCore', :path => 'Cores/NESDeltaCore' - pod 'SNESDeltaCore', :path => 'Cores/SNESDeltaCore' - pod 'N64DeltaCore', :path => 'Cores/N64DeltaCore' - pod 'GBCDeltaCore', :path => 'Cores/GBCDeltaCore' - pod 'GBADeltaCore', :path => 'Cores/GBADeltaCore' - pod 'DSDeltaCore', :path => 'Cores/DSDeltaCore' - pod 'MelonDSDeltaCore', :path => 'Cores/MelonDSDeltaCore' pod 'Roxas', :path => 'External/Roxas' pod 'Harmony', :path => 'External/Harmony' end \ No newline at end of file diff --git a/Podfile.lock b/Podfile.lock index d1aadc3d0..6a3818326 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -2,15 +2,7 @@ PODS: - Alamofire (4.7.3) - Crashlytics (3.8.6): - Fabric (~> 1.6.3) - - DeltaCore (0.1): - - ZIPFoundation - - DSDeltaCore (0.1): - - DeltaCore - Fabric (1.6.13) - - GBADeltaCore (0.1): - - DeltaCore - - GBCDeltaCore (0.1): - - DeltaCore - GoogleAPIClientForREST/Core (1.3.11): - GTMSessionFetcher (>= 1.1.7) - GoogleAPIClientForREST/Drive (1.3.11): @@ -44,47 +36,24 @@ PODS: - Harmony/Harmony-Dropbox (0.1): - Roxas - SwiftyDropbox (~> 5.0.0) - - MelonDSDeltaCore (0.1): - - DeltaCore - - N64DeltaCore (0.1): - - DeltaCore - - N64DeltaCore/RSP (= 0.1) - - N64DeltaCore/Video (= 0.1) - - N64DeltaCore/RSP (0.1): - - DeltaCore - - N64DeltaCore/Video (0.1): - - DeltaCore - - NESDeltaCore (0.1): - - DeltaCore - Roxas (0.1) - SDWebImage (3.8.3): - SDWebImage/Core (= 3.8.3) - SDWebImage/Core (3.8.3) - SMCalloutView (2.1.5) - - SNESDeltaCore (0.1): - - DeltaCore - SQLite.swift (0.12.2): - SQLite.swift/standard (= 0.12.2) - SQLite.swift/standard (0.12.2) - SwiftyDropbox (5.0.0): - Alamofire (~> 4.7.3) - - ZIPFoundation (0.9.11) DEPENDENCIES: - Crashlytics (~> 3.8.0) - - DeltaCore (from `Cores/DeltaCore`) - - DSDeltaCore (from `Cores/DSDeltaCore`) - Fabric (~> 1.6.0) - - GBADeltaCore (from `Cores/GBADeltaCore`) - - GBCDeltaCore (from `Cores/GBCDeltaCore`) - Harmony (from `External/Harmony`) - - MelonDSDeltaCore (from `Cores/MelonDSDeltaCore`) - - N64DeltaCore (from `Cores/N64DeltaCore`) - - NESDeltaCore (from `Cores/NESDeltaCore`) - Roxas (from `External/Roxas`) - SDWebImage (~> 3.8) - SMCalloutView (~> 2.1.0) - - SNESDeltaCore (from `Cores/SNESDeltaCore`) - SQLite.swift (~> 0.12.0) SPEC REPOS: @@ -100,54 +69,28 @@ SPEC REPOS: - SMCalloutView - SQLite.swift - SwiftyDropbox - - ZIPFoundation EXTERNAL SOURCES: - DeltaCore: - :path: Cores/DeltaCore - DSDeltaCore: - :path: Cores/DSDeltaCore - GBADeltaCore: - :path: Cores/GBADeltaCore - GBCDeltaCore: - :path: Cores/GBCDeltaCore Harmony: :path: External/Harmony - MelonDSDeltaCore: - :path: Cores/MelonDSDeltaCore - N64DeltaCore: - :path: Cores/N64DeltaCore - NESDeltaCore: - :path: Cores/NESDeltaCore Roxas: :path: External/Roxas - SNESDeltaCore: - :path: Cores/SNESDeltaCore SPEC CHECKSUMS: Alamofire: c7287b6e5d7da964a70935e5db17046b7fde6568 Crashlytics: e156f27e43abaa331f9b7afed091bda37e1052cc - DeltaCore: be1ed931bf8dba0bd1d9f85310dcc99eeae10517 - DSDeltaCore: 7dc6a18e25d8036a5022a34c1ffb4062af9eed3d Fabric: be0459577cee96fe21f68de24588be2dd71482b8 - GBADeltaCore: 10ff8fde89ed95c99888a9b7102b3d3e45d7458d - GBCDeltaCore: 7468dff742927139a14f6fc909e810f253b6293c GoogleAPIClientForREST: 0f19a8280dfe6471f76016645d26eb5dae305101 GoogleSignIn: 7ff245e1a7b26d379099d3243a562f5747e23d39 GoogleToolboxForMac: 1350d40e86a76f7863928d63bcb0b89c84c521c5 GTMSessionFetcher: b3503b20a988c4e20cc189aa798fd18220133f52 Harmony: cea514db17c41c22f78f54b17d2135935b5e9b96 - MelonDSDeltaCore: 3de2a2e2ebcd630a6dd756818b5a26dde7afa726 - N64DeltaCore: 7d176e01443fa138bdfc79ad908c78f271f3e0a7 - NESDeltaCore: 41ab438dd78d51d4636aacb7d9a7336ea3d4728c Roxas: 1990039f843f5dc284918dc82375feb80020ef62 SDWebImage: a72e880a8fe0f7fc31efe15aaed443c074d2a80c SMCalloutView: 5c0ee363dc8e7204b2fda17dfad38c93e9e23481 - SNESDeltaCore: eb7053f45204f9a6ceb426d53649e6ee35b97684 SQLite.swift: d2b4642190917051ce6bd1d49aab565fe794eea3 SwiftyDropbox: 378b4425a2e8d0cb24c7b0f2e3af72bfbaaf1e73 - ZIPFoundation: b1f0de4eed33e74a676f76e12559ab6b75990197 -PODFILE CHECKSUM: 287d91605195bb5ea894269c53b979ee2b07c9f8 +PODFILE CHECKSUM: 2487516050003c48dd3d8f00a6d1a81f69a27042 COCOAPODS: 1.10.0 diff --git a/Pods/Harmony/Harmony/Core Data/MergePolicy.swift b/Pods/Harmony/Harmony/Core Data/MergePolicy.swift new file mode 100644 index 000000000..7ce846fc5 --- /dev/null +++ b/Pods/Harmony/Harmony/Core Data/MergePolicy.swift @@ -0,0 +1,129 @@ +// +// MergePolicy.swift +// Harmony +// +// Created by Riley Testut on 10/2/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import CoreData +import Roxas + +extension MergePolicy +{ + public enum Error: LocalizedError + { + case contextLevelConflict + + public var errorDescription: String? { + switch self + { + case .contextLevelConflict: + return NSLocalizedString("MergePolicy is only intended to work with database-level conflicts.", comment: "") + } + } + } +} + +open class MergePolicy: RSTRelationshipPreservingMergePolicy +{ + open override func resolve(constraintConflicts conflicts: [NSConstraintConflict]) throws + { + for conflict in conflicts + { + guard conflict.databaseObject == nil else { continue } + guard let conflictingObject = conflict.conflictingObjects.first else { continue } + + let model = conflictingObject.entity.managedObjectModel + let harmonyEntities = model.entities(forConfigurationName: NSManagedObjectModel.Configuration.harmony.rawValue) ?? [] + + if harmonyEntities.contains(conflictingObject.entity) + { + try super.resolve(constraintConflicts: conflicts) + throw Error.contextLevelConflict + } + else + { + // Only Harmony managed objects cannot be context-level conflicts; + // the client's managed objects should _not_ cause us to throw an error. + } + } + + var remoteFilesByLocalRecord = [LocalRecord: Set]() + + for conflict in conflicts + { + switch conflict.databaseObject + { + case let databaseObject as LocalRecord: + guard + let temporaryObject = conflict.conflictingObjects.first as? LocalRecord, + temporaryObject.changedValues().keys.contains(#keyPath(LocalRecord.remoteFiles)) + else { continue } + + remoteFilesByLocalRecord[databaseObject] = temporaryObject.remoteFiles + + default: break + } + } + + try super.resolve(constraintConflicts: conflicts) + + for conflict in conflicts + { + switch conflict.databaseObject + { + case let databaseObject as RemoteRecord: + guard + let snapshot = conflict.snapshots.object(forKey: conflict.databaseObject), + let previousStatusValue = snapshot[#keyPath(RemoteRecord.status)] as? Int16, + let previousStatus = RecordStatus(rawValue: previousStatusValue), + let previousVersionIdentifier = snapshot[#keyPath(RemoteRecord.versionIdentifier)] as? String + else { continue } + + // If previous status was normal, and the previous version identifier matches current version identifier, then status should still be normal. + if previousStatus == .normal, previousVersionIdentifier == databaseObject.version.identifier + { + databaseObject.status = .normal + } + + case let databaseObject as LocalRecord: + guard let updatedRemoteFiles = remoteFilesByLocalRecord[databaseObject] else { continue } + let previousRemoteFiles = databaseObject.remoteFiles + + for remoteFile in previousRemoteFiles where !updatedRemoteFiles.contains(remoteFile) + { + // Set localRecord to nil for all databaseObject.remoteFiles that are not in remoteFiles so that they will be deleted. + remoteFile.localRecord = nil + databaseObject.remoteFiles.remove(remoteFile) + } + + for remoteFile in updatedRemoteFiles where !previousRemoteFiles.contains(remoteFile) + { + databaseObject.remoteFiles.insert(remoteFile) + } + + for remoteFile in updatedRemoteFiles.union(previousRemoteFiles) + { + // We _must_ refresh remoteFile, or else Core Data might insert it + // into the database a second time, causing unique constraint failures. + remoteFile.managedObjectContext?.refresh(remoteFile, mergeChanges: false) + } + + case let databaseObject as ManagedAccount: + guard + let snapshot = conflict.snapshots.object(forKey: conflict.databaseObject), + let previousChangeToken = snapshot[#keyPath(ManagedAccount.changeToken)] as? Data + else { continue } + + // If previous change token was non-nil, and the current change token is nil, then restore previous change token. + if databaseObject.changeToken == nil + { + databaseObject.changeToken = previousChangeToken + } + + default: break + } + } + } +} diff --git a/Pods/Harmony/Harmony/Core Data/RecordController.swift b/Pods/Harmony/Harmony/Core Data/RecordController.swift new file mode 100644 index 000000000..d6f041030 --- /dev/null +++ b/Pods/Harmony/Harmony/Core Data/RecordController.swift @@ -0,0 +1,686 @@ +// +// RecordController.swift +// Harmony +// +// Created by Riley Testut on 5/25/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +import Foundation +import CoreData + +import Roxas + +extension Notification.Name +{ + static let recordControllerDidProcessUpdates = Notification.Name("recordControllerDidProcessUpdates") +} + +extension RecordController +{ + public enum Error: Swift.Error + { + case noEntities + } +} + +public final class RecordController: RSTPersistentContainer +{ + public private(set) var isSeeded: Bool { + get { + guard let metadata = self.persistentStoreCoordinator.persistentStores.first?.metadata else { return false } + + let isSeeded = metadata["harmony_isSeeded"] as? Bool + return isSeeded ?? false + } + set { + guard let store = self.persistentStoreCoordinator.persistentStores.first else { return } + store.metadata["harmony_isSeeded"] = newValue + + // Must save a context for store metadata to update. + self.performBackgroundTask { (context) in + do + { + try context.save() + } + catch + { + print("Failed to update store metadata:", error) + } + } + } + } + + public private(set) var isStarted = false + + let persistentContainer: NSPersistentContainer + + var automaticallyRecordsManagedObjects = true + + private var processingContext: NSManagedObjectContext? + private let processingDispatchGroup = DispatchGroup() + + init(persistentContainer: NSPersistentContainer) + { + let configurations = persistentContainer.managedObjectModel.configurations.compactMap(NSManagedObjectModel.Configuration.init(rawValue:)) + precondition(configurations.contains(.harmony) && configurations.contains(.external), "NSPersistentContainer's model must be a merged Harmony model.") + + self.persistentContainer = persistentContainer + + super.init(name: "Harmony", managedObjectModel: persistentContainer.managedObjectModel) + + self.preferredMergePolicy = MergePolicy() + + for description in self.persistentStoreDescriptions + { + description.configuration = NSManagedObjectModel.Configuration.harmony.rawValue + } + + let externalPersistentStoreDescriptions = persistentContainer.persistentStoreDescriptions.map { $0.copy() as! NSPersistentStoreDescription } + for description in externalPersistentStoreDescriptions + { + description.configuration = NSManagedObjectModel.Configuration.external.rawValue + } + self.persistentStoreDescriptions.append(contentsOf: externalPersistentStoreDescriptions) + + self.shouldAddStoresAsynchronously = true + } + + public override class func defaultDirectoryURL() -> URL + { + let harmonyDirectory = FileManager.default.applicationSupportDirectory.appendingPathComponent("com.rileytestut.Harmony", isDirectory: true) + return harmonyDirectory + } + + deinit + { + do + { + try self.stop() + } + catch + { + print("Failed to stop RecordController.", error) + } + } +} + +internal extension RecordController +{ + func start(completionHandler: @escaping (Result) -> Void) + { + guard !self.isStarted else { return completionHandler(.success) } + + do + { + try FileManager.default.createDirectory(at: RecordController.defaultDirectoryURL(), withIntermediateDirectories: true, attributes: nil) + } + catch + { + print(error) + } + + var databaseError: Swift.Error? + + let dispatchGroup = DispatchGroup() + self.persistentStoreDescriptions.forEach { _ in dispatchGroup.enter() } + + self.loadPersistentStores { (description, error) in + if let error = error, databaseError == nil + { + databaseError = error + } + + dispatchGroup.leave() + } + + func finish() + { + do + { + if let error = databaseError + { + throw error + } + + self.processingContext = self.newBackgroundContext() + self.isStarted = true + + NotificationCenter.default.addObserver(self, selector: #selector(RecordController.managedObjectContextWillSave(_:)), name: .NSManagedObjectContextWillSave, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(RecordController.managedObjectContextObjectsDidChange(_:)), name: .NSManagedObjectContextObjectsDidChange, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(RecordController.managedObjectContextDidSave(_:)), name: .NSManagedObjectContextDidSave, object: nil) + + completionHandler(.success) + } + catch + { + completionHandler(.failure(DatabaseError.corrupted(error))) + } + } + + if self.shouldAddStoresAsynchronously + { + dispatchGroup.notify(queue: DispatchQueue.global(qos: .userInitiated)) { + finish() + } + } + else + { + dispatchGroup.wait() + finish() + } + } + + func stop() throws + { + guard self.isStarted else { return } + + try self.persistentStoreCoordinator.persistentStores.forEach(self.persistentStoreCoordinator.remove) + + NotificationCenter.default.removeObserver(self, name: .NSManagedObjectContextDidSave, object: nil) + + self.processingContext = nil + self.isStarted = false + } + + func reset() throws + { + try self.stop() + + do + { + try FileManager.default.removeItem(at: RecordController.defaultDirectoryURL()) + } + catch CocoaError.fileNoSuchFile + { + // Ignore + } + + self.isSeeded = false + } +} + +public extension RecordController +{ + @discardableResult func seedFromPersistentContainer(completionHandler: @escaping (Result) -> Void) -> Progress + { + let progress = Progress(totalUnitCount: 0) + + guard let entities = self.managedObjectModel.entities(forConfigurationName: NSManagedObjectModel.Configuration.external.rawValue) else { + completionHandler(.failure(Error.noEntities)) + return progress + } + + let syncableEntityNames = entities.lazy.filter { NSClassFromString($0.managedObjectClassName) is Syncable.Type }.compactMap { $0.name } + progress.totalUnitCount = Int64(syncableEntityNames.count) + + self.performBackgroundTask { (context) in + do + { + for name in syncableEntityNames + { + let fetchRequest = NSFetchRequest(entityName: name) + fetchRequest.fetchBatchSize = 50 + + let managedObjects = try context.fetch(fetchRequest) + let objectIDs = managedObjects.lazy.compactMap { $0 as? Syncable }.filter { $0.isSyncingEnabled }.map { $0.objectID } + + // Create new local records for any syncable managed objects, but ignore existing local records. + self.updateLocalRecords(for: objectIDs, status: .normal, in: context, ignoreExistingRecords: true) + + progress.completedUnitCount += 1 + } + + if UserDefaults.standard.isDebugModeEnabled + { + self.printRecords() + } + + self.isSeeded = true + + completionHandler(.success) + } + catch + { + completionHandler(.failure(error)) + } + } + + return progress + } + + func updateRecord(for managedObject: T) + { + guard let context = self.processingContext else { return } + + context.performAndWait { + self.updateLocalRecords(for: [managedObject.objectID], status: .updated, in: context) + } + } +} + +public extension RecordController +{ + func fetchConflictedRecords() throws -> Set> + { + let predicate = NSPredicate(format: "%K == YES", #keyPath(ManagedRecord.isConflicted)) + + let records = try self.fetchRecords(predicate: predicate, type: NSManagedObject.self) + return records + } + + func fetchRecords(for recordedObjects: U) throws -> Set> where U.Element == RecordType + { + let predicates = recordedObjects.compactMap { (recordedObject) -> NSPredicate? in + guard let syncableManagedObject = recordedObject as? Syncable, let identifier = syncableManagedObject.syncableIdentifier else { return nil } + + let predicate = NSPredicate(format: "%K == %@ AND %K == %@", + #keyPath(ManagedRecord.recordedObjectType), syncableManagedObject.syncableType, + #keyPath(ManagedRecord.recordedObjectIdentifier), identifier) + return predicate + } + + let predicate = NSCompoundPredicate(orPredicateWithSubpredicates: predicates) + + let records = try self.fetchRecords(predicate: predicate, type: RecordType.self) + return records + } + + private func fetchRecords(predicate: NSPredicate, type: RecordType.Type) throws -> Set> + { + let context = self.newBackgroundContext() + context.automaticallyMergesChangesFromParent = false + + let result = context.performAndWait { () -> Result>, Swift.Error> in + do + { + try context.setQueryGenerationFrom(.current) + + let fetchRequest = ManagedRecord.fetchRequest() as NSFetchRequest + fetchRequest.predicate = predicate + fetchRequest.returnsObjectsAsFaults = false + + let managedRecords = try context.fetch(fetchRequest) + + let records = Set(managedRecords.lazy.map(Record.init)) + return .success(records) + } + catch + { + return .failure(error) + } + } + + let records = try result.get() + return records + } +} + +extension RecordController +{ + func processPendingUpdates() + { + self.processingDispatchGroup.wait() + + if Thread.isMainThread + { + // Refresh objects (only necessary for testing). + self.viewContext.refreshAllObjects() + } + } + + public func printRecords() + { + let context = self.newBackgroundContext() + context.performAndWait { + let fetchRequest = ManagedRecord.fetchRequest() as NSFetchRequest + + let records = try! context.fetch(fetchRequest) + + for record in records + { + var string = "Record: \(record.recordID)" + + if let localRecord = record.localRecord + { + string += " LR: \(localRecord.status.rawValue)" + + if let version = localRecord.version + { + string += " (\(version.identifier))" + } + + string += " (\(localRecord.managedRecord?.objectID.uriRepresentation().lastPathComponent ?? "none"))" + } + else + { + string += " LR: nil" + } + + if let remoteRecord = record.remoteRecord + { + string += " RR: \(remoteRecord.status.rawValue) (\(remoteRecord.version.identifier)) (\(remoteRecord.managedRecord?.objectID.uriRepresentation().lastPathComponent ?? "none"))" + } + else + { + string += " RR: nil" + } + + print(string) + } + + let remoteFilesFetchRequest = RemoteFile.fetchRequest() as! NSFetchRequest + + let remoteFiles = try! context.fetch(remoteFilesFetchRequest) + print("Remote Files:", remoteFiles.count, remoteFiles.map { $0.localRecord?.objectID.uriRepresentation().lastPathComponent ?? "nil" }) + } + } +} + +private extension RecordController +{ + func updateManagedRecords(for recordIDs: T, keyPath: ReferenceWritableKeyPath, in context: NSManagedObjectContext) + where T.Element == NSManagedObjectID + { + func configure(_ managedRecord: ManagedRecord, with recordRepresentation: RecordType) + { + guard managedRecord[keyPath: keyPath] != recordRepresentation else { return } + + managedRecord[keyPath: keyPath] = recordRepresentation + } + + do + { + var recordRepresentationsByRecordID = [RecordID: RecordType]() + + + // Fetch record representations. + let recordRepresentationsFetchRequest = RecordType.fetchRequest() as! NSFetchRequest + recordRepresentationsFetchRequest.predicate = NSPredicate(format: "SELF in %@", recordIDs) + + let recordRepresentations = try context.fetch(recordRepresentationsFetchRequest) + for record in recordRepresentations + { + let recordID = RecordID(type: record.recordedObjectType, identifier: record.recordedObjectIdentifier) + recordRepresentationsByRecordID[recordID] = record + } + + // Fetch managed records for record representations. + let managedRecords = try context.fetchRecords(for: Set(recordRepresentationsByRecordID.keys)) as [ManagedRecord] + + // Update existing managed records. + for record in managedRecords + { + let recordID = RecordID(type: record.recordedObjectType, identifier: record.recordedObjectIdentifier) + guard let recordRepresentation = recordRepresentationsByRecordID[recordID] else { + continue + } + + configure(record, with: recordRepresentation) + + if record.localRecord?.status == .deleted && record.remoteRecord?.status == .deleted + { + // Delete managed records that have been deleted both locally and remotely. + context.delete(record) + } + + // Remove from recordRepresentationsByRecordedObjectID so we know which records we still need to create. + recordRepresentationsByRecordID[recordID] = nil + } + + + // Create missing managed records. + for (recordID, recordRepresentation) in recordRepresentationsByRecordID + { + let managedRecord = ManagedRecord(context: context) + managedRecord.recordedObjectType = recordID.type + managedRecord.recordedObjectIdentifier = recordID.identifier + + configure(managedRecord, with: recordRepresentation) + } + + if context.hasChanges + { + try context.save() + } + } + catch + { + print(error) + } + } + + func updateLocalRecords(for recordedObjectIDs: T, status: RecordStatus, in context: NSManagedObjectContext, ignoreExistingRecords: Bool = false) where T.Element == NSManagedObjectID + { + func configure(_ localRecord: LocalRecord, with status: RecordStatus) + { + guard localRecord.status != status else { return } + + localRecord.status = status + localRecord.modificationDate = Date() + } + + do + { + // Map all recordedObjectIDs to URI representations suitable for use with provided context. + var recordedObjectURIs = Set(recordedObjectIDs.lazy.compactMap { (recordedObjectID) -> URL? in + guard let objectID = context.persistentStoreCoordinator?.managedObjectID(forURIRepresentation: recordedObjectID.uriRepresentation()) else { return nil } + return objectID.uriRepresentation() + }) + + + // Fetch local records for syncable managed objects + let predicates = recordedObjectURIs.map { NSPredicate(format: "%K == %@", #keyPath(LocalRecord.recordedObjectURI), $0 as NSURL) } + + let fetchRequest = LocalRecord.fetchRequest() as NSFetchRequest + fetchRequest.predicate = NSCompoundPredicate(orPredicateWithSubpredicates: predicates) + + let localRecords = try context.fetch(fetchRequest) + + // Update existing local records. + for localRecord in localRecords + { + if !ignoreExistingRecords + { + configure(localRecord, with: status) + } + + // Remove from recordedObjectURIs so we know which local records we still need to create. + recordedObjectURIs.remove(localRecord.recordedObjectURI) + } + + if status != .deleted + { + // Create missing local records, but only if we're not marking them as deleted. + // This is because deleted objects might not have valid data necessary to create a local record, + // and there is no actual need to create a local record just to mark it as deleted immediately. + + for objectURI in recordedObjectURIs + { + do + { + guard + let objectID = self.persistentStoreCoordinator.managedObjectID(forURIRepresentation: objectURI), + let syncableManagedObject = try context.existingObject(with: objectID) as? Syncable + else { continue } + + let record = try LocalRecord(recordedObject: syncableManagedObject, context: context) + configure(record, with: status) + } + catch + { + print(error) + } + } + } + + if context.hasChanges + { + try context.save() + } + } + catch + { + print(error) + } + } +} + +private extension RecordController +{ + @objc func managedObjectContextWillSave(_ notification: Notification) + { + guard + let managedObjectContext = notification.object as? NSManagedObjectContext, + managedObjectContext.parent == nil, + managedObjectContext.persistentStoreCoordinator != self.persistentStoreCoordinator, + !self.persistentStoreCoordinator.persistentStores.isEmpty + else { return } + + let cache = ContextCache() + + for case let updatedObject as Syncable in managedObjectContext.registeredObjects where updatedObject.hasChanges && updatedObject.isSyncingEnabled + { + cache.setChangedKeys(Set(updatedObject.changedValues().keys), for: updatedObject) + } + + managedObjectContext.savingCache = cache + } + + @objc func managedObjectContextObjectsDidChange(_ notification: Notification) + { + guard + let managedObjectContext = notification.object as? NSManagedObjectContext, + managedObjectContext.parent == nil, + managedObjectContext.persistentStoreCoordinator != self.persistentStoreCoordinator, + !self.persistentStoreCoordinator.persistentStores.isEmpty + else { return } + + guard let cache = managedObjectContext.savingCache else { return } + + // Must use registeredObjects, because an inserted object may become an updated object after saving due to merging. + for case let updatedObject as Syncable in managedObjectContext.registeredObjects where updatedObject.hasChanges && updatedObject.isSyncingEnabled + { + cache.setChangedKeys(Set(updatedObject.changedValues().keys), for: updatedObject) + } + } + + @objc func managedObjectContextDidSave(_ notification: Notification) + { + guard let processingContext = self.processingContext else { return } + + guard self.automaticallyRecordsManagedObjects else { return } + + guard + let managedObjectContext = notification.object as? NSManagedObjectContext, + managedObjectContext.parent == nil, + !self.persistentStoreCoordinator.persistentStores.isEmpty + else { return } + + guard let userInfo = notification.userInfo else { return } + + var insertedObjects = userInfo[NSInsertedObjectsKey] as? Set ?? [] + var updatedObjects = userInfo[NSUpdatedObjectsKey] as? Set ?? [] + var deletedObjects = userInfo[NSDeletedObjectsKey] as? Set ?? [] + + let cache = managedObjectContext.savingCache ?? ContextCache() + managedObjectContext.savingCache = nil + + if managedObjectContext.persistentStoreCoordinator != self.persistentStoreCoordinator + { + // Filter out non-syncable managed objects. + insertedObjects = insertedObjects.filter { ($0 as? Syncable)?.isSyncingEnabled == true } + deletedObjects = deletedObjects.filter { ($0 as? Syncable)?.isSyncingEnabled == true } + + var validatedUpdatedObjects = Set() + + // Only include updated objects whose syncable keys have been updated. + for case let syncableManagedObject as Syncable in updatedObjects where syncableManagedObject.isSyncingEnabled + { + if let changedKeys = cache.changedKeys(for: syncableManagedObject) + { + let syncableKeys = Set(syncableManagedObject.syncableKeys.lazy.compactMap { $0.stringValue }) + + if !syncableKeys.isDisjoint(with: changedKeys) + { + validatedUpdatedObjects.insert(syncableManagedObject) + } + } + else + { + // Fall back to marking object as updated if we don't have the changed keys for some reason. + validatedUpdatedObjects.insert(syncableManagedObject) + } + } + + updatedObjects = validatedUpdatedObjects + } + + let changes = [NSInsertedObjectsKey: insertedObjects.map { $0.objectID }, + NSUpdatedObjectsKey: updatedObjects.map { $0.objectID}, + NSDeletedObjectsKey: deletedObjects.map { $0.objectID}] + + self.processingDispatchGroup.enter() + + processingContext.perform { + if managedObjectContext.persistentStoreCoordinator != self.persistentStoreCoordinator + { + self.processExternalChanges(changes, in: processingContext) + } + else + { + self.processHarmonyChanges(changes, in: processingContext) + } + } + } + + func processExternalChanges(_ changes: [String: [NSManagedObjectID]], in context: NSManagedObjectContext) + { + let updatedObjectIDs = (changes[NSInsertedObjectsKey] ?? []) + (changes[NSUpdatedObjectsKey] ?? []) + let deletedObjectIDs = changes[NSDeletedObjectsKey] ?? [] + + if !updatedObjectIDs.isEmpty + { + self.updateLocalRecords(for: updatedObjectIDs, status: .updated, in: context) + } + + if !deletedObjectIDs.isEmpty + { + self.updateLocalRecords(for: deletedObjectIDs, status: .deleted, in: context) + } + + NSManagedObjectContext.mergeChanges(fromRemoteContextSave: changes, into: [context]) + + // Dispatch async to allow tests to continue without blocking. + DispatchQueue.main.async { + NSManagedObjectContext.mergeChanges(fromRemoteContextSave: changes, into: [self.viewContext]) + } + + NotificationCenter.default.post(name: .recordControllerDidProcessUpdates, object: self) + + self.processingDispatchGroup.leave() + } + + func processHarmonyChanges(_ changes: [String: [NSManagedObjectID]], in context: NSManagedObjectContext) + { + let objectIDs = changes.values.flatMap { $0 } + let localRecordIDs = objectIDs.filter { $0.entity == LocalRecord.entity() } + let remoteRecordIDs = objectIDs.filter { $0.entity == RemoteRecord.entity() } + + if !localRecordIDs.isEmpty + { + self.updateManagedRecords(for: localRecordIDs, keyPath: \ManagedRecord.localRecord, in: context) + } + + if !remoteRecordIDs.isEmpty + { + self.updateManagedRecords(for: remoteRecordIDs, keyPath: \ManagedRecord.remoteRecord, in: context) + } + + DispatchQueue.main.async { + NSManagedObjectContext.mergeChanges(fromRemoteContextSave: changes, into: [self.persistentContainer.viewContext]) + } + + self.processingDispatchGroup.leave() + } +} diff --git a/Pods/Harmony/Harmony/Extensions/AnyKeyPath+StringValue.swift b/Pods/Harmony/Harmony/Extensions/AnyKeyPath+StringValue.swift new file mode 100644 index 000000000..53dc7c26f --- /dev/null +++ b/Pods/Harmony/Harmony/Extensions/AnyKeyPath+StringValue.swift @@ -0,0 +1,16 @@ +// +// AnyKeyPath+StringValue.swift +// Harmony +// +// Created by Riley Testut on 12/8/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +import Foundation + +extension AnyKeyPath +{ + var stringValue: String? { + return self._kvcKeyPathString + } +} diff --git a/Pods/Harmony/Harmony/Extensions/Dictionary+Sequence.swift b/Pods/Harmony/Harmony/Extensions/Dictionary+Sequence.swift new file mode 100644 index 000000000..9bd2b6474 --- /dev/null +++ b/Pods/Harmony/Harmony/Extensions/Dictionary+Sequence.swift @@ -0,0 +1,24 @@ +// +// Dictionary+Sequence.swift +// Harmony +// +// Created by Riley Testut on 11/8/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import Foundation + +extension Dictionary +{ + init(_ sequence: S, keyedBy keyPath: KeyPath) where S.Element == Value + { + let dictionary = Dictionary(sequence.lazy.map { ($0[keyPath: keyPath], $0) }, uniquingKeysWith: { (first, last) in last }) + self = dictionary + } + + init(_ sequence: S, keyedBy closure: @escaping (Value) -> Key) where S.Element == Value + { + let dictionary = Dictionary(sequence.lazy.map { (closure($0), $0) }, uniquingKeysWith: { (first, last) in last }) + self = dictionary + } +} diff --git a/Pods/Harmony/Harmony/Extensions/HarmonyMetadataKey+Keys.swift b/Pods/Harmony/Harmony/Extensions/HarmonyMetadataKey+Keys.swift new file mode 100644 index 000000000..61ee191e9 --- /dev/null +++ b/Pods/Harmony/Harmony/Extensions/HarmonyMetadataKey+Keys.swift @@ -0,0 +1,33 @@ +// +// HarmonyMetadataKey+Keys.swift +// Harmony +// +// Created by Riley Testut on 11/5/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import Foundation + +extension HarmonyMetadataKey +{ + static let recordedObjectType = HarmonyMetadataKey("harmony_recordedObjectType") + static let recordedObjectIdentifier = HarmonyMetadataKey("harmony_recordedObjectIdentifier") + + static let relationshipIdentifier = HarmonyMetadataKey("harmony_relationshipIdentifier") + + static let isLocked = HarmonyMetadataKey("harmony_locked") + + static let previousVersionIdentifier = HarmonyMetadataKey("harmony_previousVersionIdentifier") + static let previousVersionDate = HarmonyMetadataKey("harmony_previousVersionDate") + + static let sha1Hash = HarmonyMetadataKey("harmony_sha1Hash") + + static let author = HarmonyMetadataKey("harmony_author") + static let localizedName = HarmonyMetadataKey("harmony_localizedName") + + public static var allHarmonyKeys: Set { + return [.recordedObjectType, .recordedObjectIdentifier, .relationshipIdentifier, + .isLocked, .previousVersionIdentifier, .previousVersionDate, + .sha1Hash, .author, .localizedName] + } +} diff --git a/Pods/Harmony/Harmony/Extensions/JSONDecoder+ManagedObjectContext.swift b/Pods/Harmony/Harmony/Extensions/JSONDecoder+ManagedObjectContext.swift new file mode 100644 index 000000000..b79240d70 --- /dev/null +++ b/Pods/Harmony/Harmony/Extensions/JSONDecoder+ManagedObjectContext.swift @@ -0,0 +1,36 @@ +// +// JSONDecoder+ManagedObjectContext.swift +// Harmony +// +// Created by Riley Testut on 10/3/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import Foundation +import CoreData + +private extension CodingUserInfoKey +{ + static let managedObjectContext = CodingUserInfoKey(rawValue: "managedObjectContext")! +} + +public extension JSONDecoder +{ + var managedObjectContext: NSManagedObjectContext? { + get { + let managedObjectContext = self.userInfo[.managedObjectContext] as? NSManagedObjectContext + return managedObjectContext + } + set { + self.userInfo[.managedObjectContext] = newValue + } + } +} + +public extension Decoder +{ + var managedObjectContext: NSManagedObjectContext? { + let managedObjectContext = self.userInfo[.managedObjectContext] as? NSManagedObjectContext + return managedObjectContext + } +} diff --git a/Pods/Harmony/Harmony/Extensions/KeyedContainers+ManagedValues.swift b/Pods/Harmony/Harmony/Extensions/KeyedContainers+ManagedValues.swift new file mode 100644 index 000000000..67ba30897 --- /dev/null +++ b/Pods/Harmony/Harmony/Extensions/KeyedContainers+ManagedValues.swift @@ -0,0 +1,166 @@ +// +// KeyedContainers+ManagedValues.swift +// Harmony +// +// Created by Riley Testut on 10/25/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import Foundation +import CoreData + +private struct AnyNSCodable: Codable +{ + var value: NSCoding + + init(value: NSCoding) + { + self.value = value + } + + init(from decoder: Decoder) throws + { + let container = try decoder.singleValueContainer() + + let data = try container.decode(Data.self) + + if let value = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as? NSCoding + { + self.value = value + } + else + { + throw DecodingError.typeMismatch(NSCoding.self, DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Value does not conform to NSCoding.")) + } + } + + func encode(to encoder: Encoder) throws + { + var container = encoder.singleValueContainer() + + let data = try NSKeyedArchiver.archivedData(withRootObject: self.value, requiringSecureCoding: false) + try container.encode(data) + } +} + +extension KeyedDecodingContainer +{ + func decodeManagedValue(forKey key: Key, entity: NSEntityDescription) throws -> Any? + { + guard let attribute = entity.attributesByName[key.stringValue] else { + throw DecodingError.dataCorruptedError(forKey: key, in: self, debugDescription: "Managed object's property \(key.stringValue) could not be found.") + } + + func decode(_ type: T.Type, forKey key: Key) throws -> T? + { + let value = attribute.isOptional ? try self.decodeIfPresent(type, forKey: key) : try self.decode(type, forKey: key) + return value + } + + let value: Any? + + switch attribute.attributeType + { + case .integer16AttributeType: value = try decode(Int16.self, forKey: key) + case .integer32AttributeType: value = try decode(Int32.self, forKey: key) + case .integer64AttributeType: value = try decode(Int64.self, forKey: key) + case .decimalAttributeType: value = try decode(Decimal.self, forKey: key) + case .doubleAttributeType: value = try decode(Double.self, forKey: key) + case .floatAttributeType: value = try decode(Float.self, forKey: key) + case .stringAttributeType: value = try decode(String.self, forKey: key) + case .booleanAttributeType: value = try decode(Bool.self, forKey: key) + case .dateAttributeType: value = try decode(Date.self, forKey: key) + case .binaryDataAttributeType: value = try decode(Data.self, forKey: key) + case .UUIDAttributeType: value = try decode(UUID.self, forKey: key) + case .URIAttributeType: value = try decode(URL.self, forKey: key) + + case .transformableAttributeType where attribute.valueTransformerName == nil || attribute.valueTransformerName == NSValueTransformerName.secureUnarchiveFromDataTransformerName.rawValue: + let anyNSCodable = try decode(AnyNSCodable.self, forKey: key) + value = anyNSCodable?.value + + case .transformableAttributeType: + guard let data = try decode(Data.self, forKey: key) else { + value = nil + break + } + + guard + let transformerName = attribute.valueTransformerName, + let transformer = ValueTransformer(forName: NSValueTransformerName(transformerName)) + else { throw DecodingError.dataCorruptedError(forKey: key, in: self, debugDescription: "The ValueTransformer for this value is invalid.") } + + value = transformer.reverseTransformedValue(data) + + case .undefinedAttributeType: fatalError("KeyedDecodingContainer.decodeManagedValue() does not yet support undefined attribute types.") + case .objectIDAttributeType: fatalError("KeyedDecodingContainer.decodeManagedValue() does not yet support objectID attributes.") + @unknown default: fatalError("KeyedDecodingContainer.decodeManagedValue() encountered unknown attribute type.") + } + + return value + } +} + +extension KeyedEncodingContainer +{ + mutating func encodeManagedValue(_ managedValue: Any?, forKey key: Key, entity: NSEntityDescription) throws + { + let context = EncodingError.Context(codingPath: self.codingPath + [key], debugDescription: "Managed object's property \(key.stringValue) could not be encoded.") + + guard let attribute = entity.attributesByName[key.stringValue] else { + throw EncodingError.invalidValue(managedValue as Any, context) + } + + if let value = managedValue + { + switch (attribute.attributeType, value) + { + case (.integer16AttributeType, let value as Int16): try self.encode(value, forKey: key) + case (.integer32AttributeType, let value as Int32): try self.encode(value, forKey: key) + case (.integer64AttributeType, let value as Int64): try self.encode(value, forKey: key) + case (.decimalAttributeType, let value as Decimal): try self.encode(value, forKey: key) + case (.doubleAttributeType, let value as Double): try self.encode(value, forKey: key) + case (.floatAttributeType, let value as Float): try self.encode(value, forKey: key) + case (.stringAttributeType, let value as String): try self.encode(value, forKey: key) + case (.booleanAttributeType, let value as Bool): try self.encode(value, forKey: key) + case (.dateAttributeType, let value as Date): try self.encode(value, forKey: key) + case (.binaryDataAttributeType, let value as Data): try self.encode(value, forKey: key) + case (.UUIDAttributeType, let value as UUID): try self.encode(value, forKey: key) + case (.URIAttributeType, let value as URL): try self.encode(value, forKey: key) + + case (.transformableAttributeType, let value as NSCoding): + let anyNSCodable = AnyNSCodable(value: value) + try self.encode(anyNSCodable, forKey: key) + + case (.transformableAttributeType, let value): + guard + let transformerName = attribute.valueTransformerName, + let transformer = ValueTransformer(forName: NSValueTransformerName(transformerName)), + let data = transformer.transformedValue(value) as? Data + else { throw EncodingError.invalidValue(managedValue as Any, context) } + + try self.encode(data, forKey: key) + + case (.integer16AttributeType, _): throw EncodingError.invalidValue(managedValue as Any, context) + case (.integer32AttributeType, _): throw EncodingError.invalidValue(managedValue as Any, context) + case (.integer64AttributeType, _): throw EncodingError.invalidValue(managedValue as Any, context) + case (.decimalAttributeType,_): throw EncodingError.invalidValue(managedValue as Any, context) + case (.doubleAttributeType, _): throw EncodingError.invalidValue(managedValue as Any, context) + case (.floatAttributeType, _): throw EncodingError.invalidValue(managedValue as Any, context) + case (.stringAttributeType, _): throw EncodingError.invalidValue(managedValue as Any, context) + case (.booleanAttributeType, _): throw EncodingError.invalidValue(managedValue as Any, context) + case (.dateAttributeType, _): throw EncodingError.invalidValue(managedValue as Any, context) + case (.binaryDataAttributeType, _): throw EncodingError.invalidValue(managedValue as Any, context) + case (.UUIDAttributeType, _): throw EncodingError.invalidValue(managedValue as Any, context) + case (.URIAttributeType, _): throw EncodingError.invalidValue(managedValue as Any, context) + + case (.undefinedAttributeType, _): fatalError("KeyedEncodingContainer.encodeManagedValue() does not yet support undefined attribute types.") + case (.objectIDAttributeType, _): fatalError("KeyedEncodingContainer.encodeManagedValue() does not yet support objectID attributes.") + @unknown default: fatalError("KeyedEncodingContainer.encodeManagedValue() encountered unknown attribute type.") + } + } + else + { + try self.encodeNil(forKey: key) + } + } +} diff --git a/Pods/Harmony/Harmony/Extensions/ManagedRecord+Predicates.swift b/Pods/Harmony/Harmony/Extensions/ManagedRecord+Predicates.swift new file mode 100644 index 000000000..1d3edb473 --- /dev/null +++ b/Pods/Harmony/Harmony/Extensions/ManagedRecord+Predicates.swift @@ -0,0 +1,160 @@ +// +// ManagedRecord+Predicates.swift +// Harmony +// +// Created by Riley Testut on 10/3/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import CoreData + +extension ManagedRecord +{ + fileprivate enum SyncAction + { + case none + case upload + case download + case delete + case conflict + + init(localStatus: RecordStatus?, remoteStatus: RecordStatus?) + { + switch (localStatus, remoteStatus) + { + case (.normal?, .normal?): self = .none + case (.normal?, .updated?): self = .download + case (.normal?, .deleted?): self = .delete + case (.normal?, nil): self = .upload + + case (.updated?, .normal?): self = .upload + case (.updated?, .updated?): self = .conflict + case (.updated?, .deleted?): self = .upload + case (.updated?, nil): self = .upload + + case (.deleted?, .normal?): self = .delete + case (.deleted?, .updated?): self = .download + case (.deleted?, .deleted?): self = .delete + case (.deleted?, nil): self = .delete + + case (nil, .normal?): self = .download + case (nil, .updated?): self = .download + case (nil, .deleted?): self = .delete + case (nil, nil): self = .delete + } + } + } +} + +extension ManagedRecord +{ + class var conflictedRecordsPredicate: NSPredicate { + let predicate = NSPredicate(format: "%K == YES", #keyPath(ManagedRecord.isConflicted)) + return predicate + } + + class var syncableRecordsPredicate: NSPredicate { + let predicate = NSPredicate(format: "%K == NO AND %K == YES", #keyPath(ManagedRecord.isConflicted), #keyPath(ManagedRecord.isSyncingEnabled)) + return predicate + } + + class var uploadRecordsPredicate: NSPredicate { + let predicate = self.predicate(for: .upload) + + let compoundPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: [predicate, self.syncableRecordsPredicate]) + return compoundPredicate + } + + class var downloadRecordsPredicate: NSPredicate { + let predicate = self.predicate(for: .download) + + let compoundPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: [predicate, self.syncableRecordsPredicate]) + return compoundPredicate + } + + class var deleteRecordsPredicate: NSPredicate { + let predicate = self.predicate(for: .delete) + + let compoundPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: [predicate, self.syncableRecordsPredicate]) + return compoundPredicate + } + + class var conflictRecordsPredicate: NSPredicate { + let predicate = self.predicate(for: .conflict) + let allConflictsPredicate = NSCompoundPredicate(orPredicateWithSubpredicates: [predicate, self.conflictedUploadsPredicate]) + + let compoundPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: [allConflictsPredicate, self.syncableRecordsPredicate]) + return compoundPredicate + } + + private class var mismatchedVersionsPredicate: NSPredicate { + let predicate = NSPredicate(format: "%K != %K", #keyPath(ManagedRecord.localRecord.versionIdentifier), #keyPath(ManagedRecord.remoteRecord.versionIdentifier)) + return predicate + } + + private class var mismatchedHashesPredicate: NSPredicate { + let predicate = NSPredicate(format: "%K != %K", #keyPath(ManagedRecord.localRecord.sha1Hash), #keyPath(ManagedRecord.remoteRecord.sha1Hash)) + return predicate + } + + private class var conflictedUploadsPredicate: NSPredicate { + let mismatchedVersionsPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: [self.predicate(for: .upload), self.mismatchedVersionsPredicate]) + let mismatchedHashesPredicate = NSCompoundPredicate(andPredicateWithSubpredicates: [self.predicate(for: .none), self.mismatchedHashesPredicate]) + + let predicate = NSCompoundPredicate(orPredicateWithSubpredicates: [mismatchedVersionsPredicate, mismatchedHashesPredicate]) + return predicate + } +} + +private extension ManagedRecord +{ + class func predicate(for action: SyncAction) -> NSPredicate + { + let statuses = self.statuses(for: action) + + let predicate = self.predicate(statuses: statuses) + return predicate + } + + class func statuses(for syncAction: SyncAction) -> [(RecordStatus?, RecordStatus?)] + { + // "Hack" to allow compiler to tell us if we miss any potential cases. + // We make an array of all possible combinations of statues, then filter out all combinations that don't result in the sync action we want. + let allCases: [RecordStatus?] = RecordStatus.allCases + [nil] + let statuses = allCases.flatMap { (localStatus) in allCases.map { (localStatus, $0) } } + + let filteredStatuses = statuses.filter { (localStatus, remoteStatus) in + let action = SyncAction(localStatus: localStatus, remoteStatus: remoteStatus) + return action == syncAction + } + + return filteredStatuses + } + + class func predicate(statuses: [(localStatus: RecordStatus?, remoteStatus: RecordStatus?)]) -> NSPredicate + { + let predicates = statuses.map { (localStatus, remoteStatus) -> NSPredicate in + let predicate: NSPredicate + + switch (localStatus, remoteStatus) + { + case let (localStatus?, remoteStatus?): + predicate = NSPredicate(format: "(%K == %d) AND (%K == %d)", #keyPath(ManagedRecord.localRecord.status), localStatus.rawValue, #keyPath(ManagedRecord.remoteRecord.status), remoteStatus.rawValue) + + case let (localStatus?, nil): + predicate = NSPredicate(format: "(%K == %d) AND (%K == nil)", #keyPath(ManagedRecord.localRecord.status), localStatus.rawValue, #keyPath(ManagedRecord.remoteRecord)) + + case let (nil, remoteStatus?): + predicate = NSPredicate(format: "(%K == nil) AND (%K == %d)", #keyPath(ManagedRecord.localRecord), #keyPath(ManagedRecord.remoteRecord.status), remoteStatus.rawValue) + + case (nil, nil): + predicate = NSPredicate(format: "(%K == nil) AND (%K == nil)", #keyPath(ManagedRecord.localRecord), #keyPath(ManagedRecord.remoteRecord)) + } + + return predicate + } + + let predicate = NSCompoundPredicate(orPredicateWithSubpredicates: predicates) + return predicate + } +} diff --git a/Pods/Harmony/Harmony/Extensions/ManagedRecord+Uploading.swift b/Pods/Harmony/Harmony/Extensions/ManagedRecord+Uploading.swift new file mode 100644 index 000000000..7cf3c9475 --- /dev/null +++ b/Pods/Harmony/Harmony/Extensions/ManagedRecord+Uploading.swift @@ -0,0 +1,71 @@ +// +// Record+Uploading.swift +// Harmony +// +// Created by Riley Testut on 11/26/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import Foundation +import CoreData + +extension Record +{ + func missingRelationships(in recordIDs: Set) -> [String: RecordID] + { + var missingRelationships = [String: RecordID]() + + self.perform { (managedRecord) in + guard let localRecord = managedRecord.localRecord, let recordedObject = localRecord.recordedObject else { return } + + for (key, relationshipObject) in recordedObject.syncableRelationshipObjects + { + guard let identifier = relationshipObject.syncableIdentifier else { continue } + + let recordID = RecordID(type: relationshipObject.syncableType, identifier: identifier) + + if !recordIDs.contains(recordID) + { + missingRelationships[key] = recordID + } + } + } + + return missingRelationships + } + + class func remoteRelationshipRecordIDs(for records: [Record], in context: NSManagedObjectContext) throws -> Set + { + let predicates = records.flatMap { (record) -> [NSPredicate] in + record.perform { (managedRecord) in + guard let localRecord = managedRecord.localRecord, let recordedObject = localRecord.recordedObject else { return [] } + + let predicates = recordedObject.syncableRelationshipObjects.values.compactMap { (relationshipObject) -> NSPredicate? in + guard let identifier = relationshipObject.syncableIdentifier else { return nil } + + return NSPredicate(format: "%K == %@ AND %K == %@", + #keyPath(RemoteRecord.recordedObjectType), relationshipObject.syncableType, + #keyPath(RemoteRecord.recordedObjectIdentifier), identifier) + } + + return predicates + } + } + + let fetchRequest = RemoteRecord.fetchRequest() as NSFetchRequest + fetchRequest.predicate = NSCompoundPredicate(orPredicateWithSubpredicates: predicates) + fetchRequest.propertiesToFetch = [#keyPath(RemoteRecord.recordedObjectType), #keyPath(RemoteRecord.recordedObjectIdentifier)] + + do + { + let remoteRecords = try context.fetch(fetchRequest) + + let recordIDs = Set(remoteRecords.lazy.map { RecordID(type: $0.recordedObjectType, identifier: $0.recordedObjectIdentifier) }) + return recordIDs + } + catch + { + throw error + } + } +} diff --git a/Pods/Harmony/Harmony/Extensions/NSError+LocalizedFailureDescription.swift b/Pods/Harmony/Harmony/Extensions/NSError+LocalizedFailureDescription.swift new file mode 100644 index 000000000..ee9a640fe --- /dev/null +++ b/Pods/Harmony/Harmony/Extensions/NSError+LocalizedFailureDescription.swift @@ -0,0 +1,17 @@ +// +// NSError+LocalizedFailureDescription.swift +// Harmony +// +// Created by Riley Testut on 1/29/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import Foundation + +extension NSError +{ + var localizedFailureDescription: String? { + let description = self.userInfo[NSLocalizedFailureErrorKey] as? String + return description + } +} diff --git a/Pods/Harmony/Harmony/Extensions/NSManagedObject+Conveniences.swift b/Pods/Harmony/Harmony/Extensions/NSManagedObject+Conveniences.swift new file mode 100644 index 000000000..656e40f76 --- /dev/null +++ b/Pods/Harmony/Harmony/Extensions/NSManagedObject+Conveniences.swift @@ -0,0 +1,18 @@ +// +// NSManagedObject+Conveniences.swift +// Harmony +// +// Created by Riley Testut on 10/25/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import CoreData + +extension NSManagedObject +{ + func `in`(_ context: NSManagedObjectContext) -> Self + { + let managedObject = context.object(with: self.objectID) + return unsafeDowncast(managedObject, to: type(of: self)) + } +} diff --git a/Pods/Harmony/Harmony/Extensions/NSManagedObject+Harmony.swift b/Pods/Harmony/Harmony/Extensions/NSManagedObject+Harmony.swift new file mode 100644 index 000000000..ee954fd33 --- /dev/null +++ b/Pods/Harmony/Harmony/Extensions/NSManagedObject+Harmony.swift @@ -0,0 +1,36 @@ +// +// NSManagedObject+Harmony.swift +// Harmony +// +// Created by Riley Testut on 10/22/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +import CoreData + +public extension NSManagedObjectModel +{ + class func harmonyModel(byMergingWith managedObjectModels: [NSManagedObjectModel]) -> NSManagedObjectModel? + { + guard + let modelURL = Bundle(for: RecordController.self).url(forResource: "Harmony", withExtension: "momd"), + let harmonyModel = NSManagedObjectModel(contentsOf: modelURL) + else + { + fatalError("Harmony Core Data model cannot be found. Aborting.") + } + + let models = managedObjectModels + [harmonyModel] + + guard let mergedModel = NSManagedObjectModel(byMerging: models) else { return nil } + + // Retrieve entity names from provided managed object models, and then retrieve matching entities from merged model. + let externalEntityNames = Set(managedObjectModels.flatMap { $0.entities.compactMap { $0.name } }) + let externalEntities = mergedModel.entities.filter { externalEntityNames.contains($0.name!) } + + mergedModel.setEntities(externalEntities, forConfigurationName: Configuration.external.rawValue) + + return mergedModel + } +} + diff --git a/Pods/Harmony/Harmony/Extensions/NSManagedObjectContext+Harmony.swift b/Pods/Harmony/Harmony/Extensions/NSManagedObjectContext+Harmony.swift new file mode 100644 index 000000000..22d5a3ba2 --- /dev/null +++ b/Pods/Harmony/Harmony/Extensions/NSManagedObjectContext+Harmony.swift @@ -0,0 +1,87 @@ +// +// NSManagedObjectContext+Harmony.swift +// Harmony +// +// Created by Riley Testut on 3/4/19. +// Copyright © 2019 Riley Testut. All rights reserved. +// + +import CoreData +import ObjectiveC + +private var contextCacheKey = 0 + +class ContextCache +{ + private let changedKeys = NSMapTable.weakToStrongObjects() + + func changedKeys(for object: NSManagedObject) -> Set? + { + let changedKeys = self.changedKeys.object(forKey: object) as? Set + return changedKeys + } + + func setChangedKeys(_ changedKeys: Set, for object: NSManagedObject) + { + self.changedKeys.setObject(changedKeys as NSSet, forKey: object) + } +} + +extension NSManagedObjectContext +{ + var savingCache: ContextCache? { + get { return objc_getAssociatedObject(self, &contextCacheKey) as? ContextCache } + set { objc_setAssociatedObject(self, &contextCacheKey, newValue, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) } + } +} + +extension NSManagedObjectContext +{ + func performAndWait(_ block: @escaping () -> T) -> T + { + var result: T! = nil + + self.performAndWait { + result = block() + } + + return result + } + + func performAndWait(_ block: @escaping () throws -> T) throws -> T + { + var result: Result! = nil + + self.performAndWait { + result = Result { try block() } + } + + let value = try result.get() + return value + } +} + +extension NSManagedObjectContext +{ + func fetchRecords(for recordIDs: Set) throws -> [T] + { + // To prevent exceeding SQLite query limits by combining several predicates into a compound predicate, + // we instead use a %K IN %@ predicate which doesn't have the same limitations. + // However, there is a chance two or more recorded objects exist with the same identifier but different types, + // so we filter the returned results to ensure all returned records are correct. + let predicate = NSPredicate(format: "%K IN %@", #keyPath(ManagedRecord.recordedObjectIdentifier), recordIDs.map { $0.identifier }) + + let fetchRequest = T.fetchRequest() as! NSFetchRequest + fetchRequest.predicate = predicate + fetchRequest.fetchBatchSize = 100 + fetchRequest.propertiesToFetch = [#keyPath(ManagedRecord.recordedObjectType), #keyPath(ManagedRecord.recordedObjectIdentifier)] + + // For some reason, not explicitly calling performAndWait may cause Core Data threading assertion failures + // ...even if we already called this method from a context's perform(AndWait) closure. + return try self.performAndWait { + // Filter out any records that happen to have a matching recordedObjectIdentifier, but not matching recordedObjectType. + let records = try self.fetch(fetchRequest).filter { recordIDs.contains($0.recordID) } + return records + } + } +} diff --git a/Pods/Harmony/Harmony/Extensions/NSPersistentStore+Configuration.swift b/Pods/Harmony/Harmony/Extensions/NSPersistentStore+Configuration.swift new file mode 100644 index 000000000..c17bc665b --- /dev/null +++ b/Pods/Harmony/Harmony/Extensions/NSPersistentStore+Configuration.swift @@ -0,0 +1,26 @@ +// +// NSPersistentStore+Configuration.swift +// Harmony +// +// Created by Riley Testut on 10/22/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +import CoreData + +extension NSManagedObjectModel +{ + public enum Configuration: String + { + case harmony = "Harmony" + case external = "External" + } +} + +extension NSPersistentStore +{ + public var configuration: NSManagedObjectModel.Configuration? { + let configuration = NSManagedObjectModel.Configuration(rawValue: self.configurationName) + return configuration + } +} diff --git a/Pods/Harmony/Harmony/Extensions/Result+Success.swift b/Pods/Harmony/Harmony/Extensions/Result+Success.swift new file mode 100644 index 000000000..168488a26 --- /dev/null +++ b/Pods/Harmony/Harmony/Extensions/Result+Success.swift @@ -0,0 +1,16 @@ +// +// Result+Success.swift +// Harmony +// +// Created by Riley Testut on 1/16/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import Foundation + +public extension Result where Success == Void +{ + static var success: Result { + return .success(()) + } +} diff --git a/Pods/Harmony/Harmony/Extensions/UserDefaults+Harmony.swift b/Pods/Harmony/Harmony/Extensions/UserDefaults+Harmony.swift new file mode 100644 index 000000000..11d18b05f --- /dev/null +++ b/Pods/Harmony/Harmony/Extensions/UserDefaults+Harmony.swift @@ -0,0 +1,17 @@ +// +// UserDefaults+Harmony.swift +// Harmony +// +// Created by Riley Testut on 11/8/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import Foundation +import Roxas + +extension UserDefaults +{ + var isDebugModeEnabled: Bool { + return UserDefaults.standard.bool(forKey: "com.rileytestut.Harmony.Debug") + } +} diff --git a/Pods/Harmony/Harmony/Harmony.h b/Pods/Harmony/Harmony/Harmony.h new file mode 100644 index 000000000..4fe296077 --- /dev/null +++ b/Pods/Harmony/Harmony/Harmony.h @@ -0,0 +1,19 @@ +// +// Harmony.h +// Harmony +// +// Created by Riley Testut on 5/17/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +#import + +//! Project version number for Harmony. +FOUNDATION_EXPORT double HarmonyVersionNumber; + +//! Project version string for Harmony. +FOUNDATION_EXPORT const unsigned char HarmonyVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +typedef NSString *HarmonyMetadataKey NS_TYPED_EXTENSIBLE_ENUM; + diff --git a/Pods/Harmony/Harmony/Model/Account.swift b/Pods/Harmony/Harmony/Model/Account.swift new file mode 100644 index 000000000..0dbe65976 --- /dev/null +++ b/Pods/Harmony/Harmony/Model/Account.swift @@ -0,0 +1,27 @@ +// +// Account.swift +// Harmony +// +// Created by Riley Testut on 1/19/19. +// Copyright © 2019 Riley Testut. All rights reserved. +// + +import Foundation + +public struct Account +{ + public var name: String + public var emailAddress: String? + + public init(name: String, emailAddress: String?) + { + self.name = name + self.emailAddress = emailAddress + } + + init(account: ManagedAccount) + { + self.name = account.name + self.emailAddress = account.emailAddress + } +} diff --git a/Pods/Harmony/Harmony/Model/Core Data/Harmony.xcdatamodeld/.xccurrentversion b/Pods/Harmony/Harmony/Model/Core Data/Harmony.xcdatamodeld/.xccurrentversion new file mode 100644 index 000000000..0b03c5e6f --- /dev/null +++ b/Pods/Harmony/Harmony/Model/Core Data/Harmony.xcdatamodeld/.xccurrentversion @@ -0,0 +1,8 @@ + + + + + _XCCurrentVersionName + Harmony 2.xcdatamodel + + diff --git a/Pods/Harmony/Harmony/Model/Core Data/Harmony.xcdatamodeld/Harmony 2.xcdatamodel/contents b/Pods/Harmony/Harmony/Model/Core Data/Harmony.xcdatamodeld/Harmony 2.xcdatamodel/contents new file mode 100644 index 000000000..8ccfa8142 --- /dev/null +++ b/Pods/Harmony/Harmony/Model/Core Data/Harmony.xcdatamodeld/Harmony 2.xcdatamodel/contents @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Pods/Harmony/Harmony/Model/Core Data/Harmony.xcdatamodeld/Harmony.xcdatamodel/contents b/Pods/Harmony/Harmony/Model/Core Data/Harmony.xcdatamodeld/Harmony.xcdatamodel/contents new file mode 100644 index 000000000..4124733b0 --- /dev/null +++ b/Pods/Harmony/Harmony/Model/Core Data/Harmony.xcdatamodeld/Harmony.xcdatamodel/contents @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Pods/Harmony/Harmony/Model/Core Data/LocalRecord.swift b/Pods/Harmony/Harmony/Model/Core Data/LocalRecord.swift new file mode 100644 index 000000000..51b57a373 --- /dev/null +++ b/Pods/Harmony/Harmony/Model/Core Data/LocalRecord.swift @@ -0,0 +1,416 @@ +// +// LocalRecord.swift +// Harmony +// +// Created by Riley Testut on 5/23/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +import Foundation +import CoreData +import Roxas + +fileprivate extension CodingUserInfoKey +{ + static let isEncodingForHashing = CodingUserInfoKey(rawValue: "isEncodingForHashing")! +} + +extension LocalRecord +{ + private enum CodingKeys: String, CodingKey, Codable + { + case type + case identifier + case record + case files + case relationships + case sha1Hash + } + + private struct AnyKey: CodingKey + { + var stringValue: String + var intValue: Int? + + init(stringValue: String) + { + self.stringValue = stringValue + } + + init?(intValue: Int) + { + return nil + } + } +} + +@objc(LocalRecord) +public class LocalRecord: RecordRepresentation, Codable +{ + /* Properties */ + @NSManaged var recordedObjectURI: URL + @NSManaged var modificationDate: Date + + @NSManaged var versionIdentifier: String? + @NSManaged var versionDate: Date? + + @NSManaged var additionalProperties: [String: Any]? + + /* Relationships */ + @NSManaged var remoteFiles: Set + + var version: Version? { + get { + guard let identifier = self.versionIdentifier, let date = self.versionDate else { return nil } + + let version = Version(identifier: identifier, date: date) + return version + } + set { + self.versionIdentifier = newValue?.identifier + self.versionDate = newValue?.date + } + } + + var recordedObject: Syncable? { + return self.resolveRecordedObject() + } + + var recordedObjectID: NSManagedObjectID? { + return self.resolveRecordedObjectID() + } + + var downloadedFiles: Set? + var remoteRelationships: [String: RecordID]? + + private override init(entity: NSEntityDescription, insertInto context: NSManagedObjectContext?) + { + super.init(entity: entity, insertInto: context) + } + + init(recordedObject: Syncable, context: NSManagedObjectContext) throws + { + super.init(entity: LocalRecord.entity(), insertInto: context) + + do + { + // Must be after super.init() or else Swift compiler will crash (as of Swift 4.0) + try self.configure(with: recordedObject) + } + catch + { + // Initialization failed, so remove self from managed object context. + context.delete(self) + } + } + + public required init(from decoder: Decoder) throws + { + guard let context = decoder.managedObjectContext else { throw ValidationError.nilManagedObjectContext } + + super.init(entity: LocalRecord.entity(), insertInto: context) + + // Keep reference in case an error occurs between inserting recorded object and assigning it to self.recordedObject. + // This way, we can pass it to removeFromContext() to ensure it is properly removed. + var tempRecordedObject: NSManagedObject? + + do + { + let container = try decoder.container(keyedBy: CodingKeys.self) + + let recordType = try container.decode(String.self, forKey: .type) + + guard + let entity = NSEntityDescription.entity(forEntityName: recordType, in: context), + let managedObjectClass = NSClassFromString(entity.managedObjectClassName) as? Syncable.Type, + let primaryKeyPath = managedObjectClass.syncablePrimaryKey.stringValue + else { throw ValidationError.unknownRecordType(recordType) } + + let identifier = try container.decode(String.self, forKey: .identifier) + + let fetchRequest = NSFetchRequest(entityName: recordType) + fetchRequest.predicate = NSPredicate(format: "%K == %@", primaryKeyPath, identifier) + + let recordedObject: Syncable + + if let managedObject = try context.fetch(fetchRequest).first as? Syncable + { + tempRecordedObject = managedObject + recordedObject = managedObject + } + else + { + let managedObject = NSManagedObject(entity: entity, insertInto: context) + + // Assign to tempRecordedObject immediately before checking if it is a SyncableManagedObject so we can remove it if not. + tempRecordedObject = managedObject + + guard let syncableManagedObject = managedObject as? Syncable else { throw ValidationError.nonSyncableRecordType(recordType) } + recordedObject = syncableManagedObject + } + + recordedObject.syncableIdentifier = identifier + + var additionalProperties = [String: Any]() + + let allValues = try container.decode([String: AnyCodable].self, forKey: .record) + let supportedKeys = Set(recordedObject.syncableKeys.compactMap { $0.stringValue }) + + let recordContainer = try container.nestedContainer(keyedBy: AnyKey.self, forKey: .record) + for (key, value) in allValues + { + if supportedKeys.contains(key) + { + let value = try recordContainer.decodeManagedValue(forKey: AnyKey(stringValue: key), entity: entity) + recordedObject.setValue(value, forKey: key) + } + else + { + additionalProperties[key] = value.value + } + } + + if !additionalProperties.isEmpty + { + self.additionalProperties = additionalProperties + } + else + { + // Explicitly set to nil so it replaces cached value when merging. + self.additionalProperties = nil + } + + let sha1Hash = try container.decodeIfPresent(String.self, forKey: .sha1Hash) + + // Pass in non-nil string to prevent calculating hashes, + // which would potentially rely on not-yet-connected relationships. + try self.configure(with: recordedObject, sha1Hash: sha1Hash ?? "") + + let remoteFiles = try container.decodeIfPresent(Set.self, forKey: .files) ?? [] + let filteredRemoteFiles = remoteFiles.filter { !$0.identifier.isEmpty && !$0.remoteIdentifier.isEmpty } + + self.remoteFiles = Set(filteredRemoteFiles) + self.remoteRelationships = try container.decodeIfPresent([String: RecordID].self, forKey: .relationships) + } + catch + { + self.removeFromContext(recordedObject: tempRecordedObject) + + throw error + } + } + + public func encode(to encoder: Encoder) throws + { + var container = encoder.container(keyedBy: CodingKeys.self) + + func sanitized(_ type: String) -> String + { + // For some _bizarre_ reason, occasionally Core Data entity names encode themselves as gibberish. + // To prevent this, we perform a deep copy of the syncableType, which we then encode 🤷‍♂️. + let syncableType = String(type.lazy.map { $0 }) + return syncableType + } + + try container.encode(sanitized(self.recordedObjectType), forKey: .type) + try container.encode(self.recordedObjectIdentifier, forKey: .identifier) + + guard let recordedObject = self.recordedObject else { throw ValidationError.nilRecordedObject } + + var recordContainer = container.nestedContainer(keyedBy: AnyKey.self, forKey: .record) + + let syncableKeys = Set(recordedObject.syncableKeys.compactMap { $0.stringValue }) + for key in syncableKeys + { + guard let value = recordedObject.value(forKeyPath: key) else { continue } + + // Because `value` is statically typed as Any, there is no bridging conversion from Objective-C types such as NSString to their Swift equivalent. + // Since these Objective-C types don't conform to Codable, the below check always fails: + // guard let codableValue = value as? Codable else { continue } + + // As a workaround, we attempt to encode all syncableKey values, and just ignore the ones that fail. + do + { + try recordContainer.encodeManagedValue(value, forKey: AnyKey(stringValue: key), entity: recordedObject.entity) + } + catch EncodingError.invalidValue + { + // Ignore, this value doesn't conform to Codable. + } + catch + { + throw error + } + } + + for (key, value) in self.additionalProperties ?? [:] + { + // Only include additional properties that don't conflict with existing ones. + guard !syncableKeys.contains(key) else { continue } + try recordContainer.encode(AnyCodable(value), forKey: AnyKey(stringValue: key)) + } + + let relationships = recordedObject.syncableRelationshipObjects.mapValues { (relationshipObject) -> RecordID? in + guard let identifier = relationshipObject.syncableIdentifier else { return nil } + + let relationship = RecordID(type: sanitized(relationshipObject.syncableType), identifier: identifier) + return relationship + } + + try container.encode(relationships, forKey: .relationships) + + if let isEncodingForHashing = encoder.userInfo[.isEncodingForHashing] as? Bool, isEncodingForHashing + { + // If encoding for hashing, we need to hash the _local_ files, not the remote files. + + var hashes = [String: String]() + + for file in recordedObject.syncableFiles + { + do + { + let hash = try RSTHasher.sha1HashOfFile(at: file.fileURL) + hashes[file.identifier] = hash + } + catch CocoaError.fileNoSuchFile + { + // File doesn't exist (which is valid), so just continue along. + } + } + + try container.encode(hashes, forKey: .files) + } + else + { + // If encoding for upload, encode self.remoteFiles, as well as our sha1Hash. + + try container.encode(self.remoteFiles, forKey: .files) + try container.encodeIfPresent(self.sha1Hash, forKey: .sha1Hash) + } + } + + public override func awakeFromInsert() + { + super.awakeFromInsert() + + self.modificationDate = Date() + } +} + +extension LocalRecord +{ + @nonobjc class func fetchRequest() -> NSFetchRequest + { + return NSFetchRequest(entityName: "LocalRecord") + } + + func configure(with recordedObject: Syncable, sha1Hash: String? = nil) throws + { + guard recordedObject.isSyncingEnabled else { throw ValidationError.nonSyncableRecordedObject(recordedObject) } + + guard let recordedObjectIdentifier = recordedObject.syncableIdentifier else { throw ValidationError.invalidSyncableIdentifier } + + if recordedObject.objectID.isTemporaryID + { + guard let context = recordedObject.managedObjectContext else { throw ValidationError.nilManagedObjectContext } + try context.obtainPermanentIDs(for: [recordedObject]) + } + + self.recordedObjectType = recordedObject.syncableType + self.recordedObjectIdentifier = recordedObjectIdentifier + self.recordedObjectURI = recordedObject.objectID.uriRepresentation() + + if let sha1Hash = sha1Hash + { + self.sha1Hash = sha1Hash + } + else + { + try self.updateSHA1Hash() + } + } + + func updateSHA1Hash() throws + { + let encoder = JSONEncoder() + encoder.outputFormatting = [.sortedKeys] // Ensures consistent ordering of keys (and thus consistent hashing). + encoder.userInfo = [.isEncodingForHashing: true] + + let data = try encoder.encode(self) + + let sha1Hash = RSTHasher.sha1Hash(of: data) + self.sha1Hash = sha1Hash + } +} + +private extension LocalRecord +{ + @NSManaged private var primitiveRecordedObjectURI: URL? + + func resolveRecordedObjectID() -> NSManagedObjectID? + { + guard let persistentStoreCoordinator = self.managedObjectContext?.persistentStoreCoordinator else { + fatalError("LocalRecord's associated NSPersistentStoreCoordinator must not be nil to retrieve external NSManagedObjectID.") + } + + // Technically, recordedObjectURI may be nil if this is called from inside LocalRecord.init. + // To prevent edge-case crashes, we manually check if it is nil first. + // (We don't just turn it into optional via Optional(self.recordedObjectURI) because + // that crashes when bridging from ObjC). + guard self.primitiveRecordedObjectURI != nil else { return nil } + + // Nil objectID = persistent store does not exist. + let objectID = persistentStoreCoordinator.managedObjectID(forURIRepresentation: self.recordedObjectURI) + return objectID + } + + func resolveRecordedObject() -> Syncable? + { + guard let managedObjectContext = self.managedObjectContext else { + fatalError("LocalRecord's managedObjectContext must not be nil to retrieve external NSManagedObject.") + } + + guard let objectID = self.recordedObjectID else { return nil } + + do + { + let managedObject = try managedObjectContext.existingObject(with: objectID) as? Syncable + return managedObject + } + catch CocoaError.managedObjectReferentialIntegrity + { + // Recorded object has been deleted. Ignore error. + return nil + } + catch + { + print(error) + return nil + } + } +} + +extension LocalRecord +{ + // Removes a LocalRecord that failed to completely download/parse from its managed object context. + func removeFromContext(recordedObject: NSManagedObject? = nil) + { + guard let context = self.managedObjectContext else { return } + + context.delete(self) + + if let recordedObject = recordedObject ?? self.recordedObject + { + if recordedObject.isInserted + { + // This is a new recorded object, so we can just delete it. + context.delete(recordedObject) + } + else + { + // We're updating an existing recorded object, so we simply discard our changes. + context.refresh(recordedObject, mergeChanges: false) + } + } + } +} diff --git a/Pods/Harmony/Harmony/Model/Core Data/ManagedAccount.swift b/Pods/Harmony/Harmony/Model/Core Data/ManagedAccount.swift new file mode 100644 index 000000000..d9b6660c8 --- /dev/null +++ b/Pods/Harmony/Harmony/Model/Core Data/ManagedAccount.swift @@ -0,0 +1,54 @@ +// +// ManagedAccount.swift +// Harmony +// +// Created by Riley Testut on 3/25/19. +// Copyright © 2019 Riley Testut. All rights reserved. +// + +import Foundation +import CoreData + +@objc(ManagedAccount) +class ManagedAccount: NSManagedObject +{ + /* Properties */ + @NSManaged var name: String + @NSManaged var emailAddress: String? + + @NSManaged var serviceIdentifier: String + + @NSManaged var changeToken: Data? + + private override init(entity: NSEntityDescription, insertInto context: NSManagedObjectContext?) + { + super.init(entity: entity, insertInto: context) + } + + init(account: Account, service: Service, context: NSManagedObjectContext) + { + super.init(entity: ManagedAccount.entity(), insertInto: context) + + self.name = account.name + self.emailAddress = account.emailAddress + self.serviceIdentifier = service.identifier + } +} + +extension ManagedAccount +{ + @nonobjc class func fetchRequest() -> NSFetchRequest + { + return NSFetchRequest(entityName: "ManagedAccount") + } + + @nonobjc class func currentAccountFetchRequest() -> NSFetchRequest + { + let fetchRequest = self.fetchRequest() as NSFetchRequest + fetchRequest.fetchLimit = 1 + fetchRequest.returnsObjectsAsFaults = false + + return fetchRequest + } +} + diff --git a/Pods/Harmony/Harmony/Model/Core Data/ManagedRecord.swift b/Pods/Harmony/Harmony/Model/Core Data/ManagedRecord.swift new file mode 100644 index 000000000..d0d71b0d0 --- /dev/null +++ b/Pods/Harmony/Harmony/Model/Core Data/ManagedRecord.swift @@ -0,0 +1,39 @@ +// +// ManagedRecord.swift +// Harmony +// +// Created by Riley Testut on 1/8/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import Foundation +import CoreData + +@objc(ManagedRecord) +public class ManagedRecord: NSManagedObject, RecordEntry +{ + /* Properties */ + @NSManaged var isConflicted: Bool + + @NSManaged var isSyncingEnabled: Bool + + @NSManaged public internal(set) var recordedObjectType: String + @NSManaged public internal(set) var recordedObjectIdentifier: String + + /* Relationships */ + @NSManaged public var localRecord: LocalRecord? + @NSManaged public var remoteRecord: RemoteRecord? + + private override init(entity: NSEntityDescription, insertInto context: NSManagedObjectContext?) + { + super.init(entity: entity, insertInto: context) + } +} + +extension ManagedRecord +{ + @nonobjc class func fetchRequest() -> NSFetchRequest + { + return NSFetchRequest(entityName: "ManagedRecord") + } +} diff --git a/Pods/Harmony/Harmony/Model/Core Data/Migrations/HarmonyToHarmony2.xcmappingmodel/xcmapping.xml b/Pods/Harmony/Harmony/Model/Core Data/Migrations/HarmonyToHarmony2.xcmappingmodel/xcmapping.xml new file mode 100644 index 000000000..559f49a24 --- /dev/null +++ b/Pods/Harmony/Harmony/Model/Core Data/Migrations/HarmonyToHarmony2.xcmappingmodel/xcmapping.xml @@ -0,0 +1,282 @@ + + + + + + 134481920 + 652E6692-DF5A-4244-88BB-77A2F1F8A684 + 148 + + + + NSPersistenceFrameworkVersion + 977 + NSStoreModelVersionHashes + + XDDevAttributeMapping + + 0plcXXRN7XHKl5CcF+fwriFmUpON3ZtcI/AfK748aWc= + + XDDevEntityMapping + + qeN1Ym3TkWN1G6dU9RfX6Kd2ccEvcDVWHpd3LpLgboI= + + XDDevMappingModel + + EqtMzvRnVZWkXwBHu4VeVGy8UyoOe+bi67KC79kphlQ= + + XDDevPropertyMapping + + XN33V44TTGY4JETlMoOB5yyTKxB+u4slvDIinv0rtGA= + + XDDevRelationshipMapping + + akYY9LhehVA/mCb4ATLWuI9XGLcjpm14wWL1oEBtIcs= + + + NSStoreModelVersionHashesDigest + +Hmc2uYZK6og+Pvx5GUJ7oW75UG4V/ksQanTjfTKUnxyGWJRMtB5tIRgVwGsrd7lz/QR57++wbvWsr6nxwyS0A== + NSStoreModelVersionHashesVersion + 3 + NSStoreModelVersionIdentifiers + + + + + + + + + isSyncingEnabled + + + + versionIdentifier + + + + ManagedRecord + Undefined + 5 + ManagedRecord + 1 + + + + + + 1 + managedRecord + + + + remoteIdentifier + + + + recordedObjectIdentifier + + + + isConflicted + + + + 1 + localRecord + + + + 1 + remoteRecord + + + + size + + + + recordedObjectType + + + + previousVersionDate + + + + 1 + localRecord + + + + sha1Hash + + + + versionDate + + + + recordedObjectURI + + + + ManagedAccount + Undefined + 3 + ManagedAccount + 1 + + + + + + recordedObjectType + + + + changeToken + + + + metadata + + + + modificationDate + + + + status + + + + author + + + + sha1Hash + + + + versionIdentifier + + + + recordedObjectIdentifier + + + + name + + + + identifier + + + + versionIdentifier + + + + 1 + managedRecord + + + + isLocked + + + + emailAddress + + + + 1 + remoteFiles + + + + + LocalRecordToLocalRecord + LocalRecord + Undefined + 1 + LocalRecord + 1 + + + + + + serviceIdentifier + + + + identifier + + + + RemoteRecord + Undefined + 4 + RemoteRecord + 1 + + + + + + recordedObjectIdentifier + + + + RemoteFile + Undefined + 2 + RemoteFile + 1 + + + + + + previousVersionIdentifier + + + + additionalProperties + + + + recordedObjectType + + + + sha1Hash + + + + Harmony/Model/Core Data/Harmony.xcdatamodeld/Harmony.xcdatamodel + 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kZWxfEB1YREJ1Y2tldEZvclBhY2thZ2Vzd2FzRW5jb2RlZFZfb3duZXJfEBtYREJ1Y2tldEZvckRhdGFUeXBlc3N0b3JhZ2VbX3Zpc2liaWxpdHlfEBlYREJ1Y2tldEZvckNsYXNzZXNzdG9yYWdlVV9uYW1lXxAfWERCdWNrZXRGb3JJbnRlcmZhY2Vzd2FzRW5jb2RlZF8QHlhEQnVja2V0Rm9yRGF0YVR5cGVzd2FzRW5jb2RlZF8QEF91bmlxdWVFbGVtZW50SUSABIEEfIEEeoABgASAAIEEe4EEfRAAgAWAA4AEgASAAFBTWUVT0wA6ADsADgA8AEIASFdOUy5rZXlzWk5TLm9iamVjdHOlAD0APgA/AEAAQYAGgAeACIAJgAqlAEMARABFAEYAR4ALgLuAZIEEAoECf4AsXU1hbmFnZWRSZWNvcmRaUmVtb3RlRmlsZVtMb2NhbFJlY29yZF5NYW5hZ2VkQWNjb3VudFxSZW1vdGVSZWNvcmTfEBAATwBQAFEAUgAhAFMAVAAjAFUAVgAOACUAVwBYACgAWQBaAFsAKQApABQAXwBgADEAKQBaAGMAPQBaAGYAZwBoXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlW19pc0Fic3RyYWN0gA2ANIAEgASAAoAOgQFggASADYEBYoAGgA2BBAGADAgS4vpf91dvcmRlcmVk0wA6ADsADgBsAG4ASKEAbYAPoQBvgBCALF5YRF9QU3RlcmVvdHlwZdkAIQAlAHMADgAoAHQAIwBZAHUAQwBtAFoAeQAXACkAMQBoAH1fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WAC4APgA2AM4AAgAQIgBHTADoAOwAOAH8AiQBIqQCAAIEAggCDAIQAhQCGAIcAiIASgBOAFIAVgBaAF4AYgBmAGqkAigCLAIwAjQCOAI8AkACRAJKAG4AfgCCAJYAmgCiAKoAtgDGALF8QE1hEUE1Db21wb3VuZEluZGV4ZXNfEBBYRF9QU0tfZWxlbWVudElEXxAZWERQTVVuaXF1ZW5lc3NDb25zdHJhaW50c18QGlhEX1BTS192ZXJzaW9uSGFzaE1vZGlmaWVyXxAZWERfUFNLX2ZldGNoUmVxdWVzdHNBcnJheV8QEVhEX1BTS19pc0Fic3RyYWN0XxAPWERfUFNLX3VzZXJJbmZvXxATWERfUFNLX2NsYXNzTWFwcGluZ18QFlhEX1BTS19lbnRpdHlDbGFzc05hbWXfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwCpABcAbwBoAGgAaAAxAGgAsACAAGgAaAAXAGhVX3R5cGVYX2RlZmF1bHRcX2Fzc29jaWF0aW9uW19pc1JlYWRPbmx5WV9pc1N0YXRpY1lfaXNVbmlxdWVaX2lzRGVyaXZlZFpfaXNPcmRlcmVkXF9pc0NvbXBvc2l0ZVdfaXNMZWFmgACAHIAAgBAICAgIgB6AEggIgAAI0gA7AA4AtwC4oIAd0gC6ALsAvAC9WiRjbGFzc25hbWVYJGNsYXNzZXNeTlNNdXRhYmxlQXJyYXmjALwAvgC/V05TQXJyYXlYTlNPYmplY3TSALoAuwDBAMJfEBBYRFVNTFByb3BlcnR5SW1wpADDAMQAxQC/XxAQWERVTUxQcm9wZXJ0eUltcF8QFFhEVU1MTmFtZWRFbGVtZW50SW1wXxAPWERVTUxFbGVtZW50SW1w3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXAG8AaABoAGgAMQBoALAAgQBoAGgAFwBogACAAIAAgBAICAgIgB6AEwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcA1wAXAG8AaABoAGgAMQBoALAAggBoAGgAFwBogACAIYAAgBAICAgIgB6AFAgIgAAI0gA7AA4A5QC4oQDmgCKAHdIAOwAOAOkAuKIA6gDrgCOAJIAdXxAScmVjb3JkZWRPYmplY3RUeXBlXxAYcmVjb3JkZWRPYmplY3RJZGVudGlmaWVy3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXAG8AaABoAGgAMQBoALAAgwBoAGgAFwBogACAAIAAgBAICAgIgB6AFQgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBAAAXAG8AaABoAGgAMQBoALAAhABoAGgAFwBogACAJ4AAgBAICAgIgB6AFggIgAAI0gA7AA4BDgC4oIAd3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXAG8AaABoAGgAMQBoALAAhQBoAGgAFwBogACAKYAAgBAICAgIgB6AFwgIgAAICN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXASIAFwBvAGgAaABoADEAaACwAIYAaABoABcAaIAAgCuAAIAQCAgICIAegBgICIAACNMAOgA7AA4BMAExAEigoIAs0gC6ALsBNAE1XxATTlNNdXRhYmxlRGljdGlvbmFyeaMBNAE2AL9cTlNEaWN0aW9uYXJ53xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBOQAXAG8AaABoAGgAMQBoALAAhwBoAGgAFwBogACALoAAgBAICAgIgB6AGQgIgAAI1gAlAA4AKABZACEAIwFHAUgAFwBoABcAMYAvgDCAAAiAAF8QFFhER2VuZXJpY1JlY29yZENsYXNz0gC6ALsBTgFPXVhEVU1MQ2xhc3NJbXCmAVABUQFSAVMBVAC/XVhEVU1MQ2xhc3NJbXBfEBJYRFVNTENsYXNzaWZpZXJJbXBfEBFYRFVNTE5hbWVzcGFjZUltcF8QFFhEVU1MTmFtZWRFbGVtZW50SW1wXxAPWERVTUxFbGVtZW50SW1w3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBVwAXAG8AaABoAGgAMQBoALAAiABoAGgAFwBogACAMoAAgBAICAgIgB6AGggIgAAIXU1hbmFnZWRSZWNvcmTSALoAuwFmAWdfEBJYRFVNTFN0ZXJlb3R5cGVJbXCnAWgBaQFqAWsBbAFtAL9fEBJYRFVNTFN0ZXJlb3R5cGVJbXBdWERVTUxDbGFzc0ltcF8QElhEVU1MQ2xhc3NpZmllckltcF8QEVhEVU1MTmFtZXNwYWNlSW1wXxAUWERVTUxOYW1lZEVsZW1lbnRJbXBfEA9YRFVNTEVsZW1lbnRJbXDTADoAOwAOAW8BdgBIpgFwAXEBcgFzAXQBdYA1gDaAN4A4gDmAOqYBdwF4AXkBegF7AXyAO4ECJIECO4ECVIECa4ED6YAsW2xvY2FsUmVjb3JkXxAYcmVjb3JkZWRPYmplY3RJZGVudGlmaWVyXGlzQ29uZmxpY3RlZF8QEnJlY29yZGVkT2JqZWN0VHlwZVxyZW1vdGVSZWNvcmRfEBBpc1N5bmNpbmdFbmFibGVk3xASAJ4AnwCgAYUAIQCiAKMBhgAjAKEBhwCkAA4AJQClAKYAKACnABcAFwAXACkAQwBoAGgBjwAxAGgAWgBoAZMBcABoAGgBlwBoXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASACwgIgD0IgA0IgQExgDUICIA8CBLPkcij0wA6ADsADgGbAZ4ASKIBnAGdgD6AP6IBnwGggECAVIAsXxASWERfUFByb3BTdGVyZW90eXBlXxAQWERfUFJfU3RlcmVvdHlwZdkAIQAlAaUADgAoAaYAIwBZAacBdwGcAFoAeQAXACkAMQBoAa9fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WAO4A+gA2AM4AAgAQIgEHTADoAOwAOAbEBugBIqAGyAbMBtAG1AbYBtwG4AbmAQoBDgESARYBGgEeASIBJqAG7AbwBvQG+Ab8BwAHBAcKASoBLgEyAToBPgFGAUoBTgCxfEBtYRF9QUFNLX2lzU3RvcmVkSW5UcnV0aEZpbGVfEBtYRF9QUFNLX3ZlcnNpb25IYXNoTW9kaWZpZXJfEBBYRF9QUFNLX3VzZXJJbmZvXxARWERfUFBTS19pc0luZGV4ZWRfEBJYRF9QUFNLX2lzT3B0aW9uYWxfEBpYRF9QUFNLX2lzU3BvdGxpZ2h0SW5kZXhlZF8QEVhEX1BQU0tfZWxlbWVudElEXxATWERfUFBTS19pc1RyYW5zaWVudN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFwGfAGgAaABoADEAaACwAbIAaABoABcAaIAAgCmAAIBACAgICIAegEIICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFwGfAGgAaABoADEAaACwAbMAaABoABcAaIAAgACAAIBACAgICIAegEMICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXAewAFwGfAGgAaABoADEAaACwAbQAaABoABcAaIAAgE2AAIBACAgICIAegEQICIAACNMAOgA7AA4B+gH7AEigoIAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXAZ8AaABoAGgAMQBoALABtQBoAGgAFwBogACAKYAAgEAICAgIgB6ARQgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcCDgAXAZ8AaABoAGgAMQBoALABtgBoAGgAFwBogACAUIAAgEAICAgIgB6ARggIgAAICd8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFwGfAGgAaABoADEAaACwAbcAaABoABcAaIAAgCmAAIBACAgICIAegEcICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFwGfAGgAaABoADEAaACwAbgAaABoABcAaIAAgACAAIBACAgICIAegEgICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFwGfAGgAaABoADEAaACwAbkAaABoABcAaIAAgCm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3bmVkQXR0cmlidXRlc3N0b3JhZ2WA64A+gA2AM4AAgAQIgO/TADoAOwAOCG4IdwBIqAGyAbMBtAG1AbYBtwG4AbmAQoBDgESARYBGgEeASIBJqAh4CHkIegh7CHwIfQh+CH+A8IDxgPKA9ID1gPaA94D4gCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcIXgBoAGgAaAAxAGgAsAGyAGgAaAAXAGiAAIApgACA7ggICAiAHoBCCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcIXgBoAGgAaAAxAGgAsAGzAGgAaAAXAGiAAIAAgACA7ggICAiAHoBDCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwihABcIXgBoAGgAaAAxAGgAsAG0AGgAaAAXAGiAAIDzgACA7ggICAiAHoBECAiAAAjTADoAOwAOCK8IsABIoKCALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFwheAGgAaABoADEAaACwAbUAaABoABcAaIAAgCmAAIDuCAgICIAegEUICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFwheAGgAaABoADEAaACwAbYAaABoABcAaIAAgCmAAIDuCAgICIAegEYICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFwheAGgAaABoADEAaACwAbcAaABoABcAaIAAgCmAAIDuCAgICIAegEcICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFwheAGgAaABoADEAaACwAbgAaABoABcAaIAAgACAAIDuCAgICIAegEgICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFwheAGgAaABoADEAaACwAbkAaABoABcAaIAAgCmAAIDuCAgICIAegEkICIAACNkAIQAlCP4ADgAoCP8AIwBZCQAG9wPHAFoAeQAXACkAMQBoCQhfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR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MRQxGDEcMSAxJDEoMS4EBN4EBOIEBOYEBO4EBPIEBPYEBPoEBP4As3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXDCoAaABoAGgAMQBoALABsgBoAGgAFwBogACAKYAAgQE1CAgICIAegEIICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFwwqAGgAaABoADEAaACwAbMAaABoABcAaIAAgACAAIEBNQgICAiAHoBDCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwxtABcMKgBoAGgAaAAxAGgAsAG0AGgAaAAXAGiAAIEBOoAAgQE1CAgICIAegEQICIAACNMAOgA7AA4Mewx8AEigoIAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXDCoAaABoAGgAMQBoALABtQBoAGgAFwBogACAKYAAgQE1CAgICIAegEUICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFwwqAGgAaABoADEAaACwAbYAaABoABcAaIAAgCmAAIEBNQgICAiAHoBGCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcMKgBoAGgAaAAxAGgAsAG3AGgAaAAXAGiAAIApgACBATUICAgIgB6ARwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXDCoAaABoAGgAMQBoALABuABoAGgAFwBogACAAIAAgQE1CAgICIAegEgICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFwwqAGgAaABoADEAaACwAbkAaABoABcAaIAAgCmAAIEBNQgICAiAHoBJCAiAAAjZACEAJQzKAA4AKAzLACMAWQzMBvoDxwBaAHkAFwApADEAaAzUXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQEygIiADYAzgACABAiBAUHTADoAOwAODNYM3gBIpwR3BHgEeQR6BHsEfAR9gJaAl4CYgJmAmoCbgJynDN8M4AzhDOIM4wzkDOWBAUKBAUOBAUSBAUWBAUaBAUeBAUiALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFwwrAGgAaABoADEAaACwBHcAaABoABcAaIAAgACAAIEBQAgICAiAHoCWCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcMKwBoAGgAaAAxAGgAsAR4AGgAaAAXAGiAAIApgACBAUAICAgIgB6AlwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXDCsAaABoAGgAMQBoALAEeQBoAGgAFwBogACAAIAAgQFACAgICIAegJgICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXCAgAFwwrAGgAaABoADEAaACwBHoAaABoABcAaIAAgOeAAIEBQAgICAiAHoCZCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcMKwBoAGgAaAAxAGgAsAR7AGgAaAAXAGiAAIAAgACBAUAICAgIgB6AmggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXDCsAaABoAGgAMQBoALAEfABoAGgAFwBogACAAIAAgQFACAgICIAegJsICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFwwrAGgAaABoADEAaACwBH0AaABoABcAaIAAgACAAIEBQAgICAiAHoCcCAiAAAjfEBIAngCfAKANUQAhAKIAow1SACMAoQ1TAKQADgAlAKUApgAoAKcAFwAXABcAKQBEAGgAaA1bADEAaABaAGgDvQb0AGgAaA1jAGhfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIC7CAiBAUsIgA0IgKaA0ggIgQFKCBL02bqg0wA6ADsADg1nDWoASKIBnAPHgD6AiKINaw1sgQFMgQFXgCzZACEAJQ1vAA4AKA1wACMAWQ1xBvsBnABaAHkAFwApADEAaA15XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQFJgD6ADYAzgACABAiBAU3TADoAOwAODXsNhABIqAGyAbMBtAG1AbYBtwG4AbmAQoBDgESARYBGgEeASIBJqA2FDYYNhw2IDYkNig2LDYyBAU6BAU+BAVCBAVKBAVOBAVSBAVWBAVaALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFw1rAGgAaABoADEAaACwAbIAaABoABcAaIAAgCmAAIEBTAgICAiAHoBCCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcNawBoAGgAaAAxAGgAsAGzAGgAaAAXAGiAAIAAgACBAUwICAgIgB6AQwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcNrgAXDWsAaABoAGgAMQBoALABtABoAGgAFwBogACBAVGAAIEBTAgICAiAHoBECAiAAAjTADoAOwAODbwNvQBIoKCALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFw1rAGgAaABoADEAaACwAbUAaABoABcAaIAAgCmAAIEBTAgICAiAHoBFCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcNawBoAGgAaAAxAGgAsAG2AGgAaAAXAGiAAIApgACBAUwICAgIgB6ARggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXDWsAaABoAGgAMQBoALABtwBoAGgAFwBogACAKYAAgQFMCAgICIAegEcICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFw1rAGgAaABoADEAaACwAbgAaABoABcAaIAAgACAAIEBTAgICAiAHoBICAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcNawBoAGgAaAAxAGgAsAG5AGgAaAAXAGiAAIApgACBAUwICAgIgB6ASQgIgAAI2QAhACUOCwAOACgODAAjAFkODQb7A8cAWgB5ABcAKQAxAGgOFV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEBSYCIgA2AM4AAgAQIgQFY0wA6ADsADg4XDh8ASKcEdwR4BHkEegR7BHwEfYCWgJeAmICZgJqAm4Ccpw4gDiEOIg4jDiQOJQ4mgQFZgQFagQFbgQFcgQFdgQFegQFfgCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcNbABoAGgAaAAxAGgAsAR3AGgAaAAXAGiAAIAAgACBAVcICAgIgB6AlggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXDWwAaABoAGgAMQBoALAEeABoAGgAFwBogACAKYAAgQFXCAgICIAegJcICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFw1sAGgAaABoADEAaACwBHkAaABoABcAaIAAgACAAIEBVwgICAiAHoCYCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwgIABcNbABoAGgAaAAxAGgAsAR6AGgAaAAXAGiAAIDngACBAVcICAgIgB6AmQgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXDWwAaABoAGgAMQBoALAEewBoAGgAFwBogACAAIAAgQFXCAgICIAegJoICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFw1sAGgAaABoADEAaACwBHwAaABoABcAaIAAgACAAIEBVwgICAiAHoCbCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcNbABoAGgAaAAxAGgAsAR9AGgAaAAXAGiAAIAAgACBAVcICAgIgB6AnAgIgAAIWmR1cGxpY2F0ZXPSADsADg6TALiggB3SALoAuw6WDpdaWERQTUVudGl0eacOmA6ZDpoOmw6cDp0Av1pYRFBNRW50aXR5XVhEVU1MQ2xhc3NJbXBfEBJYRFVNTENsYXNzaWZpZXJJbXBfEBFYRFVNTE5hbWVzcGFjZUltcF8QFFhEVU1MTmFtZWRFbGVtZW50SW1wXxAPWERVTUxFbGVtZW50SW1w3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcCDgAXBR0AaABoAGgAMQBoALACWwBoAGgAFwBogACAUIAAgLUICAgIgB6AWggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXBR0AaABoAGgAMQBoALACXABoAGgAFwBogACAKYAAgLUICAgIgB6AWwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcG+QAXBR0AaABoAGgAMQBoALACXQBoAGgAFwBogACBARqAAIC1CAgICIAegFwICIAACN8QEgCeAJ8AoA7MACEAogCjDs0AIwChDs4ApAAOACUApQCmACgApwAXABcAFwApAEUAaABoDtYAMQBoAFoAaAO9A5AAaABoDt4AaF8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgGQICIEBaAiADQiApoB9CAiBAWcIEkm7c/vTADoAOwAODuIO5QBIogGcA8eAPoCIog7mDueBAWmBAXSALNkAIQAlDuoADgAoDusAIwBZDuwDmwGcAFoAeQAXACkAMQBoDvRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAWaAPoANgDOAAIAECIEBatMAOgA7AA4O9g7/AEioAbIBswG0AbUBtgG3AbgBuYBCgEOARIBFgEaAR4BIgEmoDwAPAQ8CDwMPBA8FDwYPB4EBa4EBbIEBbYEBb4EBcIEBcYEBcoEBc4As3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXDuYAaABoAGgAMQBoALABsgBoAGgAFwBogACAKYAAgQFpCAgICIAegEIICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFw7mAGgAaABoADEAaACwAbMAaABoABcAaIAAgACAAIEBaQgICAiAHoBDCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFw8pABcO5gBoAGgAaAAxAGgAsAG0AGgAaAAXAGiAAIEBboAAgQFpCAgICIAegEQICIAACNMAOgA7AA4PNw84AEigoIAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXDuYAaABoAGgAMQBoALABtQBoAGgAFwBogACAKYAAgQFpCAgICIAegEUICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXAg4AFw7mAGgAaABoADEAaACwAbYAaABoABcAaIAAgFCAAIEBaQgICAiAHoBGCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcO5gBoAGgAaAAxAGgAsAG3AGgAaAAXAGiAAIApgACBAWkICAgIgB6ARwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXDuYAaABoAGgAMQBoALABuABoAGgAFwBogACAAIAAgQFpCAgICIAegEgICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFw7mAGgAaABoADEAaACwAbkAaABoABcAaIAAgCmAAIEBaQgICAiAHoBJCAiAAAjZACEAJQ+GAA4AKA+HACMAWQ+IA5sDxwBaAHkAFwApADEAaA+QXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQFmgIiADYAzgACABAiBAXXTADoAOwAOD5IPmgBIpwR3BHgEeQR6BHsEfAR9gJaAl4CYgJmAmoCbgJynD5sPnA+dD54Pnw+gD6GBAXaBAXeBAXiBAXmBAXqBAXuBAXyALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFw7nAGgAaABoADEAaACwBHcAaABoABcAaIAAgACAAIEBdAgICAiAHoCWCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcO5wBoAGgAaAAxAGgAsAR4AGgAaAAXAGiAAIApgACBAXQICAgIgB6AlwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXDucAaABoAGgAMQBoALAEeQBoAGgAFwBogACAAIAAgQF0CAgICIAegJgICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXCAgAFw7nAGgAaABoADEAaACwBHoAaABoABcAaIAAgOeAAIEBdAgICAiAHoCZCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcO5wBoAGgAaAAxAGgAsAR7AGgAaAAXAGiAAIAAgACBAXQICAgIgB6AmggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXDucAaABoAGgAMQBoALAEfABoAGgAFwBogACAAIAAgQF0CAgICIAegJsICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFw7nAGgAaABoADEAaACwBH0AaABoABcAaIAAgACAAIEBdAgICAiAHoCcCAiAAAjfEBIAngCfAKAQDQAhAKIAoxAOACMAoRAPAKQADgAlAKUApgAoAKcAFwAXABcAKQBFAGgAaBAXADEAaABaAGgDvQORAGgAaBAfAGhfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIBkCAiBAX8IgA0IgKaAfggIgQF+CBLIQrqw0wA6ADsADhAjECYASKIBnAPHgD6AiKIQJxAogQGAgQGLgCzZACEAJRArAA4AKBAsACMAWRAtA5wBnABaAHkAFwApADEAaBA1XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQF9gD6ADYAzgACABAiBAYHTADoAOwAOEDcQQABIqAGyAbMBtAG1AbYBtwG4AbmAQoBDgESARYBGgEeASIBJqBBBEEIQQxBEEEUQRhBHEEiBAYKBAYOBAYSBAYaBAYeBAYiBAYmBAYqALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxAnAGgAaABoADEAaACwAbIAaABoABcAaIAAgCmAAIEBgAgICAiAHoBCCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcQJwBoAGgAaAAxAGgAsAGzAGgAaAAXAGiAAIAAgACBAYAICAgIgB6AQwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcQagAXECcAaABoAGgAMQBoALABtABoAGgAFwBogACBAYWAAIEBgAgICAiAHoBECAiAAAjTADoAOwAOEHgQeQBIoKCALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxAnAGgAaABoADEAaACwAbUAaABoABcAaIAAgCmAAIEBgAgICAiAHoBFCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcQJwBoAGgAaAAxAGgAsAG2AGgAaAAXAGiAAIApgACBAYAICAgIgB6ARggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXECcAaABoAGgAMQBoALABtwBoAGgAFwBogACAKYAAgQGACAgICIAegEcICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFxAnAGgAaABoADEAaACwAbgAaABoABcAaIAAgACAAIEBgAgICAiAHoBICAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgA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pAGgAaABoADEAaACwAbYAaABoABcAaIAAgCmAAIEBmAgICAiAHoBGCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcRaQBoAGgAaAAxAGgAsAG3AGgAaAAXAGiAAIApgACBAZgICAgIgB6ARwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXEWkAaABoAGgAMQBoALABuABoAGgAFwBogACAAIAAgQGYCAgICIAegEgICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxFpAGgAaABoADEAaACwAbkAaABoABcAaIAAgCmAAIEBmAgICAiAHoBJCAiAAAjZACEAJRIJAA4AKBIKACMAWRILA50DxwBaAHkAFwApADEAaBITXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQGVgIiADYAzgACABAiBAaTTADoAOwAOEhUSHQBIpwR3BHgEeQR6BHsEfAR9gJaAl4CYgJmAmoCbgJynEh4SHxIgEiESIhIjEiSBAaWBAaaBAaeBAaiBAaqBAauBAayALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFxFqAGgAaABoADEAaACwBHcAaABoABcAaIAAgACAAIEBowgICAiAHoCWCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcRagBoAGgAaAAxAGgAsAR4AGgAaAAXAGiAAIApgACBAaMICAgIgB6AlwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXEWoAaABoAGgAMQBoALAEeQBoAGgAFwBogACAAIAAgQGjCAgICIAegJgICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXElUAFxFqAGgAaABoADEAaACwBHoAaABoABcAaIAAgQGpgACBAaMICAgIgB6AmQgIgAAIEQSw3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXEWoAaABoAGgAMQBoALAEewBoAGgAFwBogACAAIAAgQGjCAgICIAegJoICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFxFqAGgAaABoADEAaACwBHwAaABoABcAaIAAgACAAIEBowgICAiAHoCbCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcRagBoAGgAaAAxAGgAsAR9AGgAaAAXAGiAAIAAgACBAaMICAgIgB6AnAgIgAAI3xASAJ4AnwCgEpEAIQCiAKMSkgAjAKESkwCkAA4AJQClAKYAKACnABcAFwAXACkARQBoAGgSmwAxAGgAWgBoA70DkwBoAGgSowBoXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASAZAgIgQGvCIANCICmgIAICIEBrggS4NEbI9MAOgA7AA4SpxKqAEiiAZwDx4A+gIiiEqsSrIEBsIEBu4As2QAhACUSrwAOACgSsAAjAFkSsQOeAZwAWgB5ABcAKQAxAGgSuV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEBrYA+gA2AM4AAgAQIgQGx0wA6ADsADhK7EsQASKgBsgGzAbQBtQG2AbcBuAG5gEKAQ4BEgEWARoBHgEiASagSxRLGEscSyBLJEsoSyxLMgQGygQGzgQG0gQG2gQG3gQG4gQG5gQG6gCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcSqwBoAGgAaAAxAGgAsAGyAGgAaAAXAGiAAIApgACBAbAICAgIgB6AQggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXEqsAaABoAGgAMQBoALABswBoAGgAFwBogACAAIAAgQGwCAgICIAegEMICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXEu4AFxKrAGgAaABoADEAaACwAbQAaABoABcAaIAAgQG1gACBAbAICAgIgB6ARAgIgAAI0wA6ADsADhL8Ev0ASKCggCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcSqwBoAGgAaAAxAGgAsAG1AGgAaAAXAGiAAIApgACBAbAICAgIgB6ARQgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcCDgAXEqsAaABoAGgAMQBoALABtgBoAGgAFwBogACAUIAAgQGwCAgICIAegEYICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxKrAGgAaABoADEAaACwAbcAaABoABcAaIAAgCmAAIEBsAgICAiAHoBHCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcSqwBoAGgAaAAxAGgAsAG4AGgAaAAXAGiAAIAAgACBAbAICAgIgB6ASAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXEqsAaABoAGgAMQBoALABuQBoAGgAFwBogACAKYAAgQGwCAgICIAegEkICIAACNkAIQAlE0sADgAoE0wAIwBZE00DngPHAFoAeQAXACkAMQBoE1VfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAa2AiIANgDOAAIAECIEBvNMAOgA7AA4TVxNfAEinBHcEeAR5BHoEewR8BH2AloCXgJiAmYCagJuAnKcTYBNhE2ITYxNkE2UTZoEBvYEBvoEBv4EBwIEBwYEBwoEBw4As3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXEqwAaABoAGgAMQBoALAEdwBoAGgAFwBogACAAIAAgQG7CAgICIAegJYICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxKsAGgAaABoADEAaACwBHgAaABoABcAaIAAgCmAAIEBuwgICAiAHoCXCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcSrABoAGgAaAAxAGgAsAR5AGgAaAAXAGiAAIAAgACBAbsICAgIgB6AmAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcREwAXEqwAaABoAGgAMQBoALAEegBoAGgAFwBogACBAZGAAIEBuwgICAiAHoCZCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcSrABoAGgAaAAxAGgAsAR7AGgAaAAXAGiAAIAAgACBAbsICAgIgB6AmggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXEqwAaABoAGgAMQBoALAEfABoAGgAFwBogACAAIAAgQG7CAgICIAegJsICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFxKsAGgAaABoADEAaACwBH0AaABoABcAaIAAgACAAIEBuwgICAiAHoCcCAiAAAjfEBIAngCfAKAT0gAhAKIAoxPTACMAoRPUAKQADgAlAKUApgAoAKcAFwAXABcAKQBFAGgAaBPcADEAaABaAGgBkwOUAGgAaBPkAGhfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIBkCAiBAcYIgA0IgQExgIEICIEBxQgSVnOU6NMAOgA7AA4T6BPrAEiiAZwBnYA+gD+iE+wT7YEBx4EB0oAs2QAhACUT8AAOACgT8QAjAFkT8gOfAZwAWgB5ABcAKQAxAGgT+l8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEBxIA+gA2AM4AAgAQIgQHI0wA6ADsADhP8FAUASKgBsgGzAbQBtQG2AbcBuAG5gEKAQ4BEgEWARoBHgEiASagUBhQHFAgUCRQKFAsUDBQNgQHJgQHKgQHLgQHNgQHOgQHPgQHQgQHRgCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcT7ABoAGgAaAAxAGgAsAGyAGgAaAAXAGiAAIApgACBAccICAgIgB6AQggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXE+wAaABoAGgAMQBoALABswBoAGgAFwBogACAAIAAgQHHCAgICIAegEMICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXFC8AFxPsAGgAaABoADEAaACwAbQAaABoABcAaIAAgQHMgACBAccICAgIgB6ARAgIgAAI0wA6ADsADhQ9FD4ASKCggCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcT7ABoAGgAaAAxAGgAsAG1AGgAaAAXAGiAAIApgACBAccICAgIgB6ARQgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcCDgAXE+wAaABoAGgAMQBoALABtgBoAGgAFwBogACAUIAAgQHHCAgICIAegEYICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxPsAGgAaABoADEAaACwAbcAaABoABcAaIAAgCmAAIEBxwgICAiAHoBHCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcT7ABoAGgAaAAxAGgAsAG4AGgAaAAXAGiAAIAAgACBAccICAgIgB6ASAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXE+wAaABoAGgAMQBoALABuQBoAGgAFwBogACAKYAAgQHHCAgICIAegEkICIAACNkAIQAlFIwADgAoFI0AIwBZFI4DnwGdAFoAeQAXACkAMQBoFJZfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAcSAP4ANgDOAAIAECIEB09MAOgA7AA4UmBSgAEinAlcCWAJZAloCWwJcAl2AVoBXgFiAWYBagFuAXKcUoRSiFKMUpBSlFKYUp4EB1IEB1YEB1oEB14EB2IEB2YEB2oAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcCcAAXE+0AaABoAGgAMQBoALACVwBoAGgAFwBogACAXoAAgQHSCAgICIAegFYICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXAo8AFxPtAGgAaABoADEAaACwAlgAaABoABcAaIAAgGKAAIEB0ggICAiAHoBXCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwKPABcT7QBoAGgAaAAxAGgAsAJZAGgAaAAXAGiAAIBigACBAdIICAgIgB6AWAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAQwAXE+0AaABoAGgAMQBoALACWgBoAGgAFwBogACAC4AAgQHSCAgICIAegFkICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxPtAGgAaABoADEAaACwAlsAaABoABcAaIAAgCmAAIEB0ggICAiAHoBaCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcT7QBoAGgAaAAxAGgAsAJcAGgAaAAXAGiAAIApgACBAdIICAgIgB6AWwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBdwAXE+0AaABoAGgAMQBoALACXQBoAGgAFwBogACAO4AAgQHSCAgICIAegFwICIAACN8QEgCeAJ8AoBUTACEAogCjFRQAIwChFRUApAAOACUApQCmACgApwAXABcAFwApAEUAaABoFR0AMQBoAFoAaAO9A5UAaABoFSUAaF8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgGQICIEB3QiADQiApoCCCAiBAdwIEvN3ovfTADoAOwAOFSkVLABIogGcA8eAPoCIohUtFS6BAd6BAemALNkAIQAlFTEADgAoFTIAIwBZFTMDoAGcAFoAeQAXACkAMQBoFTtfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAduAPoANgDOAAIAECIEB39MAOgA7AA4VPRVGAEioAbIBswG0AbUBtgG3AbgBuYBCgEOARIBFgEaAR4BIgEmoFUcVSBVJFUoVSxVMFU0VToEB4IEB4YEB4oEB5IEB5YEB5oEB54EB6IAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXFS0AaABoAGgAMQBoALABsgBoAGgAFwBogACAKYAAgQHeCAgICIAegEIICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFxUtAGgAaABoADEAaACwAbMAaABoABcAaIAAgACAAIEB3ggICAiAHoBDCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFxVwABcVLQBoAGgAaAAxAGgAsAG0AGgAaAAXAGiAAIEB44AAgQHeCAgICIAegEQICIAACNMAOgA7AA4VfhV/AEigoIAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXFS0AaABoAGgAMQBoALABtQBoAGgAFwBogACAKYAAgQHeCAgICIAegEUICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxUtAGgAaABoADEAaACwAbYAaABoABcAaIAAgCmAAIEB3ggICAiAHoBGCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcVLQBoAGgAaAAxAGgAsAG3AGgAaAAXAGiAAIApgACBAd4ICAgIgB6ARwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXFS0AaABoAGgAMQBoALABuABoAGg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nABcAFwAXF68AaABoAGgAMQBoALABswBoAGgAFwBogACAAIAAgQIMCAgICIAegEMICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXF/IAFxevAGgAaABoADEAaACwAbQAaABoABcAaIAAgQIRgACBAgwICAgIgB6ARAgIgAAI0wA6ADsADhgAGAEASKCggCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwIOABcXrwBoAGgAaAAxAGgAsAG1AGgAaAAXAGiAAIBQgACBAgwICAgIgB6ARQgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXF68AaABoAGgAMQBoALABtgBoAGgAFwBogACAKYAAgQIMCAgICIAegEYICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxevAGgAaABoADEAaACwAbcAaABoABcAaIAAgCmAAIECDAgICAiAHoBHCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcXrwBoAGgAaAAxAGgAsAG4AGgAaAAXAGiAAIAAgACBAgwICAgIgB6ASAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXF68AaABoAGgAMQBoALABuQBoAGgAFwBogACAKYAAgQIMCAgICIAegEkICIAACNkAIQAlGE8ADgAoGFAAIwBZGFEDogPHAFoAeQAXACkAMQBoGFlfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAgmAiIANgDOAAIAECIECGNMAOgA7AA4YWxhjAEinBHcEeAR5BHoEewR8BH2AloCXgJiAmYCagJuAnKcYZBhlGGYYZxhoGGkYaoECGYECGoECG4ECHIECHYECHoECH4As3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXF7AAaABoAGgAMQBoALAEdwBoAGgAFwBogACAAIAAgQIXCAgICIAegJYICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxewAGgAaABoADEAaACwBHgAaABoABcAaIAAgCmAAIECFwgICAiAHoCXCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcXsABoAGgAaAAxAGgAsAR5AGgAaAAXAGiAAIAAgACBAhcICAgIgB6AmAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcICAAXF7AAaABoAGgAMQBoALAEegBoAGgAFwBogACA54AAgQIXCAgICIAegJkICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFxewAGgAaABoADEAaACwBHsAaABoABcAaIAAgACAAIECFwgICAiAHoCaCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcXsABoAGgAaAAxAGgAsAR8AGgAaAAXAGiAAIAAgACBAhcICAgIgB6AmwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXF7AAaABoAGgAMQBoALAEfQBoAGgAFwBogACAAIAAgQIXCAgICIAegJwICIAACNIAOwAOGNYAuKCAHd8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFwGgAGgAaABoADEAaACwAlsAaABoABcAaIAAgCmAAIBUCAgICIAegFoICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFwGgAGgAaABoADEAaACwAlwAaABoABcAaIAAgCmAAIBUCAgICIAegFsICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXA58AFwGgAGgAaABoADEAaACwAl0AaABoABcAaIAAgQHEgACAVAgICAiAHoBcCAiAAAjfEBIAngCfAKAZBgAhAKIAoxkHACMAoRkIAKQADgAlAKUApgAoAKcAFwAXABcAKQBDAGgAaBkQADEAaABaAGgDvQFxAGgAaBkYAGhfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVh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AIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcaYQBoAGgAaAAxAGgAsAG1AGgAaAAXAGiAAIApgACBAj4ICAgIgB6ARQgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXGmEAaABoAGgAMQBoALABtgBoAGgAFwBogACAKYAAgQI+CAgICIAegEYICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxphAGgAaABoADEAaACwAbcAaABoABcAaIAAgCmAAIECPggICAiAHoBHCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcaYQBoAGgAaAAxAGgAsAG4AGgAaAAXAGiAAIAAgACBAj4ICAgIgB6ASAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXGmEAaABoAGgAMQBoALABuQBoAGgAFwBogACAKYAAgQI+CAgICIAegEkICIAACNkAIQAlGwEADgAoGwIAIwBZGwMBeQPHAFoAeQAXACkAMQBoGwtfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAjuAiIANgDOAAIAECIECStMAOgA7AA4bDRsVAEinBHcEeAR5BHoEewR8BH2AloCXgJiAmYCagJuAnKcbFhsXGxgbGRsaGxsbHIECS4ECTYECToECT4ECUYECUoECU4As3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcbIAAXGmIAaABoAGgAMQBoALAEdwBoAGgAFwBogACBAkyAAIECSQgICAiAHoCWCAiAAAhSTk/fEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcaYgBoAGgAaAAxAGgAsAR4AGgAaAAXAGiAAIApgACBAkkICAgIgB6AlwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXGmIAaABoAGgAMQBoALAEeQBoAGgAFwBogACAAIAAgQJJCAgICIAegJgICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXG04AFxpiAGgAaABoADEAaACwBHoAaABoABcAaIAAgQJQgACBAkkICAgIgB6AmQgIgAAIEQMg3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXGmIAaABoAGgAMQBoALAEewBoAGgAFwBogACAAIAAgQJJCAgICIAegJoICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFxpiAGgAaABoADEAaACwBHwAaABoABcAaIAAgACAAIECSQgICAiAHoCbCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcaYgBoAGgAaAAxAGgAsAR9AGgAaAAXAGiAAIAAgACBAkkICAgIgB6AnAgIgAAI3xASAJ4AnwCgG4oAIQCiAKMbiwAjAKEbjACkAA4AJQClAKYAKACnABcAFwAXACkAQwBoAGgblAAxAGgAWgBoA70BcwBoAGgbnABoXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASACwgIgQJWCIANCICmgDgICIECVQgS7oy8bdMAOgA7AA4boBujAEiiAZwDx4A+gIiiG6QbpYECV4ECYoAs2QAhACUbqAAOACgbqQAjAFkbqgF6AZwAWgB5ABcAKQAxAGgbsl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYECVIA+gA2AM4AAgAQIgQJY0wA6ADsADhu0G70ASKgBsgGzAbQBtQG2AbcBuAG5gEKAQ4BEgEWARoBHgEiASagbvhu/G8AbwRvCG8MbxBvFgQJZgQJagQJbgQJdgQJegQJfgQJggQJhgCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcbpABoAGgAaAAxAGgAsAGyAGgAaAAXAGiAAIApgACBAlcICAgIgB6AQggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXG6QAaABoAGgAMQBoALABswBoAGgAFwBogACAAIAAgQJXCAgICIAegEMICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXG+cAFxukAGgAaABoADEAaACwAbQAaABoABcAaIAAgQJcgACBAlcICAgIgB6ARAgIgAAI0wA6ADsADhv1G/YASKCggCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcbpABoAGgAaAAxAGgAsAG1AGgAaAAXAGiAAIApgACBAlcICAgIgB6ARQgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXG6QAaABoAGgAMQBoALABtgBoAGgAFwBogACAKYAAgQJXCAgICIAegEYICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxukAGgAaABoADEAaACwAbcAaABoABcAaIAAgCmAAIECVwgICAiAHoBHCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcbpABoAGgAaAAxAGgAsAG4AGgAaAAXAGiAAIAAgACBAlcICAgIgB6ASAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXG6QAaABoAGgAMQBoALABuQBoAGgAFwBogACAKYAAgQJXCAgICIAegEkICIAACNkAIQAlHEQADgAoHEUAIwBZHEYBegPHAFoAeQAXACkAMQBoHE5fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAlSAiIANgDOAAIAECIECY9MAOgA7AA4cUBxYAEinBHcEeAR5BHoEewR8BH2AloCXgJiAmYCagJuAnKccWRxaHFscXBxdHF4cX4ECZIECZYECZoECZ4ECaIECaYE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ICAiAHoBHCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcfBABoAGgAaAAxAGgAsAG4AGgAaAAXAGiAAIAAgACBAqQICAgIgB6ASAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXHwQAaABoAGgAMQBoALABuQBoAGgAFwBogACAKYAAgQKkCAgICIAegEkICIAACNkAIQAlH6QADgAoH6UAIwBZH6YezwPHAFoAeQAXACkAMQBoH65fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAqGAiIANgDOAAIAECIECsNMAOgA7AA4fsB+4AEinBHcEeAR5BHoEewR8BH2AloCXgJiAmYCagJuAnKcfuR+6H7sfvB+9H74fv4ECsYECsoECs4ECtIECtYECtoECt4As3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXHwUAaABoAGgAMQBoALAEdwBoAGgAFwBogACAAIAAgQKvCAgICIAegJYICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFx8FAGgAaABoADEAaACwBHgAaABoABcAaIAAgCmAAIECrwgICAiAHoCXCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcfBQBoAGgAaAAxAGgAsAR5AGgAaAAXAGiAAIAAgACBAq8ICAgIgB6AmAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcICAAXHwUAaABoAGgAMQBoALAEegBoAGgAFwBogACA54AAgQKvCAgICIAegJkICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFx8FAGgAaABoADEAaACwBHsAaABoABcAaIAAgACAAIECrwgICAiAHoCaCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcfBQBoAGgAaAA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pYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQLmgD6ADYAzgACABAiBAurTADoAOwAOItci4ABIqAGyAbMBtAG1AbYBtwG4AbmAQoBDgESARYBGgEeASIBJqCLhIuIi4yLkIuUi5iLnIuiBAuuBAuyBAu2BAu+BAvCBAvGBAvKBAvOALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFyLHAGgAaABoADEAaACwAbIAaABoABcAaIAAgCmAAIEC6QgICAiAHoBCCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcixwBoAGgAaAAxAGgAsAGzAGgAaAAXAGiAAIAAgACBAukICAgIgB6AQwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcjCgAXIscAaABoAGgAMQBoALABtABoAGgAFwBogACBAu6AAIEC6QgICAiAHoBECAiAAAjTADoAOwAOIxgjGQBIoKCALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFyLHAGgAaABoADEAaACwAbUAaABoABcAaIAAgCmAAIEC6QgICAiAHoBFCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcixwBoAGgAaAAxAGgAsAG2AGgAaAAXAGiAAIApgACBAukICAgIgB6ARggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXIscAaABoAGgAMQBoALABtwBoAGgAFwBogACAKYAAgQLpCAgICIAegEcICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFyLHAGgAaABoADEAaACwAbgAaABoABcAaIAAgACAAIEC6QgICAiAHoBICAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcixwBoAGgAaAAxAGgAsAG5AGgAaAAXAGiAAIApgACBAukICAgIgB6ASQgIgAAI2QAhACUjZwAOACgjaAAjAFkjaR7SA8cAWgB5ABcAKQAxAGgjcV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEC5oCIgA2AM4AAgAQIgQL10wA6ADsADiNzI3sASKcEdwR4BHkEegR7BHwEfYCWgJeAmICZgJqAm4CcpyN8I30jfiN/I4AjgSOCgQL2gQL3gQL4gQL5gQL6gQL7gQL8gCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABciyABoAGgAaAAxAGgAsAR3AGgAaAAXAGiAAIAAgACBAvQICAgIgB6AlggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXIsgAaABoAGgAMQBoALAEeABoAGgAFwBogACAKYAAgQL0CAgICIAegJcICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFyLIAGgAaABoADEAaACwBHkAaABoABcAaIAAgACAAIEC9AgICAiAHoCYCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwgIABciyABoAGgAaAAxAGgAsAR6AGgAaAAXAGiAAIDngACBAvQICAgIgB6AmQgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXIsgAaABoAGgAMQBoALAEewBoAGgAFwBogACAAIAAgQL0CAgICIAegJoICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFyLIAGgAaABoADEAaACwBHwAaABoABcAaIAAgACAAIEC9AgICAiAHoCbCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABciyABoAGgAaAAxAGgAsAR9AGgAaAAXAGiAAIAAgACBAvQICAgIgB6AnAgIgAAI3xASAJ4AnwCgI+4AIQCiAKMj7wAjAKEj8ACkAA4AJQClAKYAKACnABcAFwAXACkARwBoAGgj+AAxAGgAWgBoA70exABoAGgkAABoXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBAn8ICIEC/wiADQiApoECmQgIgQL+CBJ4z1oc0wA6ADsADiQEJAcASKIBnAPHgD6AiKIkCCQJgQMAgQMLgCzZACEAJSQMAA4AKCQNACMAWSQOHtMBnABaAHkAFwApADEAaCQWXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQL9gD6ADYAzgACABAiBAwHTADoAOwAOJBgkIQBIqAGyAbMBtAG1AbYBtwG4AbmAQoBDgESARYBGgEeASIBJqCQiJCMkJCQlJCYkJyQoJCmBAwKBAwOBAwSBAwaBAweBAwiBAwmBAwqALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFyQIAGgAaABoADEAaACwAbIAaABoABcAaIAAgCmAAIEDAAgICAiAHoBCCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABckCABoAGgAaAAxAGgAsAGzAGgAaAAXAGiAAIAAgACBAwAICAgIgB6AQwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABckSwAXJAgAaABoAGgAMQBoALABtABoAGgAFwBogACBAwWAAIEDAAgICAiAHoBECAiAAAjTADoAOwAOJFkkWgBIoKCALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFyQIAGgAaABoADEAaACwAbUAaABoABcAaIAAgCmAAIEDAAgICAiAHoBFCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwIOABckCABoAGgAaAAxAGgAsAG2AGgAaAAXAGiAAIBQgACBAwAICAgIgB6ARggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXJAgAaABoAGgAMQBoALABtwBoAGgAFwBogACAKYAAgQMACAgICIAegEcICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFyQIAGgAaABoADEAaACwAbgAaABoABcAaIAAgACAAIEDAAgICAiAHoBICAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABckCABoAGgAaAAxAGgAsAG5AGgAaAAXAGiAAIApgACBAwAICAgIgB6ASQgIgAAI2QAhACUkqAAOACgkqQAjAFkkqh7TA8cAWgB5ABcAKQAxAGgksl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEC/YCIgA2AM4AAgAQIgQMM0wA6ADsADiS0JLwASKcEdwR4BHkEegR7BHwEfYCWgJeAmICZgJqAm4CcpyS9JL4kvyTAJMEkwiTDgQMNgQMOgQMPgQMQgQMRgQMSgQMTgCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABckCQBoAGgAaAAxAGgAsAR3AGgAaAAXAGiAAIAAgACBAwsICAgIgB6AlggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXJAkAaABoAGgAMQBoALAEeABoAGgAFwBogACAKYAAgQMLCAgICIAegJcICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFyQJAGgAaABoADEAaACwBHkAaABoABcAaIAAgACAAIEDCwgICAiAHoCYCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwgIABckCQBoAGgAaAAxAGgAsAR6AGgAaAAXAGiAAIDngACBAwsICAgIgB6AmQgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXJAkAaABoAGgAMQBoALAEewBoAGgAFwBogACAAIAAgQMLCAgICIAegJoICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFyQJAGgAaABoADEAaACwBHwAaABoABcAaIAAgACAAIEDCwgICAiAHoCbCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABckCQBoAGgAaAAxAGgAsAR9AGgAaAAXAGiAAIAAgACBAwsICAgIgB6AnAgIgAAI3xASAJ4AnwCgJS8AIQCiAKMlMAAjAKElMQCkAA4AJQClAKYAKACnABcAFwAXACkARwBoAGglOQAxAGgAWgBoA70exQBoAGglQQBoXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBAn8ICIEDFgiADQiApoECmggIgQMVCBJ/qbwP0wA6ADsADiVFJUgASKIBnAPHgD6AiKIlSSVKgQMXgQMigCzZACEAJSVNAA4AKCVOACMAWSVPHtQBnABaAHkAFwApADEAaCVXXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQMUgD6ADYAzgACABAiBAxjTADoAOwAOJVklYgBIqAGyAbMBtAG1AbYBtwG4AbmAQoBDgESARYBGgEeASIBJqCVjJWQlZSVmJWclaCVpJWqBAxmBAxqBAxuBAx2BAx6BAx+BAyCBAyGALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFyVJAGgAaABoADEAaACwAbIAaABoABcAaIAAgCmAAIEDFwgICAiAHoBCCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABclSQBoAGgAaAAxAGgAsAGzAGgAaAAXAGiAAIAAgACBAxcICAgIgB6AQwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcljAAXJUkAaABoAGgAMQBoALABtABoAGgAFwBogACBAxyAAIEDFwgICAiAHoBECAiAAAjTADoAOwAOJZolmwBIoKCALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFyVJAGgAaABoADEAaACwAbUAaABoABcAaIAAgCmAAIEDFwgICAiAHoBFCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwIOABclSQBoAGgAaAAxAGgAsAG2AGgAaAAXAGiAAIBQgACBAxcICAgIgB6ARggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXJUkAaABoAGgAMQBoALABtwBoAGgAFwBogACAKYAAgQMXCAgICIAegEcICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFyVJAGgAaABoADEAaACwAbgAaABoABcAaIAAgACAAIEDFwgICAiAHoBICAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABclSQBoAGgAaAAxAGgAsAG5AGgAaAAXAGiAAIApgACBAxcICAgIgB6ASQgIgAAI2QAhACUl6QAOACgl6gAjAFkl6x7UA8cAWgB5ABcAKQAxAGgl818QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEDFICIgA2AM4AAgAQIgQMj0wA6ADsADiX1Jf0ASKcEdwR4BHkEegR7BHwEfYCWgJeAmICZgJqAm4CcpyX+Jf8mACYBJgImAyYEgQMkgQMlgQMmgQMngQMogQMpgQMqgCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABclSgBoAGgAaAAxAGgAsAR3AGgAaAAXAGiAAIAAgACBAyIICAgIgB6AlggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXJUoAaABoAGgAMQBoALAEeABoAGgAFwBogACAKYAAgQMiCAgICIAegJcICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFyVKAGgAaABoADEAaACwBHkAaABoABcAaIAAgACAAIEDIggICAiAHoCYCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwgIABclSgBoAGgAaAAxAGgAsAR6AGgAaAAXAGiAAIDngACBAyIICAgIgB6AmQgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXJUoAaABoAGgAMQBoALAEewBoAGgAFwBogACAAIAAgQMiCAgICIAegJoICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFyVKAGgAaABoADEAaACwBHwAaABoABcAaIAAgACAAIEDIggICAiAHoCbCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABclSgBoAGgAaAAxAGgAsAR9AGgAaAAXAGiAAIAAgACBAyIICAgIgB6AnAgIgAAI3xASAJ4AnwCgJnAAIQCiAKMmcQAjAKEmcgCkAA4AJQClAKYAKACnABcAFwAXACkARwBoAGgmegAxAGgAWgBoA70exgBoAGgmggBoXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBAn8ICIEDLQiADQiApoECmwgIgQMsCBMAAAABEe3/vdMAOgA7AA4mhiaJAEiiAZwDx4A+gIiiJoomi4EDLoEDOYAs2QAhACUmjgAOACgmjwAjAFkmkB7VAZwAWgB5ABcAKQAxAGgmmF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEDK4A+gA2AM4AAgAQIgQMv0wA6ADsADiaaJqMASKgBsgGzAbQBtQG2AbcBuAG5gEKAQ4BEgEWARoBHgEiASagmpCalJqYmpyaoJqkmqiargQMwgQMxgQMygQM0gQM1gQM2gQM3gQM4gCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcmigBoAGgAaAAxAGgAsAGyAGgAaAAXAGiAAIApgACBAy4ICAgIgB6AQggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXJooAaABoAGgAMQBoALABswBoAGgAFwBogACAAIAAgQMuCAgICIAegEMICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXJs0AFyaKAGgAaABoADEAaACwAbQAaABoABcAaIAAgQMzgACBAy4ICAgIgB6ARAgIgAAI0wA6ADsADibbJtwASKCggCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcmigBoAGgAaAAxAGgAsAG1AGgAaAAXAGiAAIApgACBAy4ICAgIgB6ARQgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcCDgAXJooAaABoAGgAMQBoALABtgBoAGgAFwBogACAUIAAgQMuCAgICIAegEYICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFyaKAGgAaABoADEAaACwAbcAaABoABcAaIAAgCmAAIEDLggICAiAHoBHCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcmigBoAGgAaAAxAGgAsAG4AGgAaAAXAGiAAIAAgACBAy4ICAgIgB6ASAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXJooAaABoAGgAMQBoALABuQBoAGgAFwBogACAKYAAgQMuCAgICIAegEkICIAACNkAIQAlJyoADgAoJysAIwBZJywe1QPHAFoAeQAXACkAMQBoJzRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAyuAiIANgDOAAIAECIEDOtMAOgA7AA4nNic+AEinBHcEeAR5BHoEewR8BH2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AaABoAGgAMQBoALABuQBoAGgAFwBogACAKYAAgQNFCAgICIAegEkICIAACNkAIQAlKGsADgAoKGwAIwBZKG0e1gPHAFoAeQAXACkAMQBoKHVfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBA0KAiIANgDOAAIAECIEDUdMAOgA7AA4odyh/AEinBHcEeAR5BHoEewR8BH2AloCXgJiAmYCagJuAnKcogCiBKIIogyiEKIUohoEDUoEDU4EDVIEDVYEDVoEDV4EDWIAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXJ8wAaABoAGgAMQBoALAEdwBoAGgAFwBogACAAIAAgQNQCAgICIAegJYICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFyfMAGgAaABoADEAaACwBHgAaABoABcAaIAAgCmAAIEDUAgICAiAHoCXCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcnzABoAGgAaAAxAGgAsAR5AGgAaAAXAGiAAIAAgACBA1AICAgIgB6AmAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcREwAXJ8wAaABoAGgAMQBoALAEegBoAGgAFwBogACBAZGAAIEDUAgICAiAHoCZCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcnzABoAGgAaAAxAGgAsAR7AGgAaAAXAGiAAIAAgACBA1AICAgIgB6AmggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXJ8wAaABoAGgAMQBoALAEfABoAGgAFwBogACAAIAAgQNQCAgICIAegJsICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFyfMAGgAaABoADEAaACwBH0AaABoABcAaIAAgACAAIEDUAgICAiAHoCcCAiAAAjfEBIAngCfAKAo8gAhAKI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ogACAAIAAgQN1CAgICIAegEMICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXKpIAFypPAGgAaABoADEAaACwAbQAaABoABcAaIAAgQN6gACBA3UICAgIgB6ARAgIgAAI0wA6ADsADiqgKqEASKCggCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwIOABcqTwBoAGgAaAAxAGgAsAG1AGgAaAAXAGiAAIBQgACBA3UICAgIgB6ARQgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXKk8AaABoAGgAMQBoALABtgBoAGgAFwBogACAKYAAgQN1CAgICIAegEYICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFypPAGgAaABoADEAaACwAbcAaABoABcAaIAAgCmAAIEDdQgICAiAHoBHCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcqTwBoAGgAaAAxAGgAsAG4AGgAaAAXAGiAAIAAgACBA3UICAgIgB6ASAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXKk8AaABoAGgAMQBoALABuQBoAGgAFwBogACAKYAAgQN1CAgICIAegEkICIAACNkAIQAlKu8ADgAoKvAAIwBZKvEe2APHAFoAeQAXACkAMQBoKvlfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBA3KAiIANgDOAAIAECIEDgdMAOgA7AA4q+ysDAEinBHcEeAR5BHoEewR8BH2AloCXgJiAmYCagJuAnKcrBCsFKwYrBysIKwkrCoEDgoEDg4EDhIEDhYEDhoEDh4EDiIAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXKlAAaABoAGgAMQBoALAEdwBoAGgAFwBogACAAIAAgQOACAgICIAegJYICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFypQAGgAaABoADEAaACwBHgAaABoABcAaIAAgCmAAIEDgAgICAiAHoCXCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcqUABoAGgAaAAxAGgAsAR5AGgAaAAXAGiAAIAAgACBA4AICAgIgB6AmAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcICAAXKlAAaABoAGgAMQBoALAEegBoAGgAFwBogACA54AAgQOACAgICIAegJkICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFypQAGgAaABoADEAaACwBHsAaABoABcAaIAAgACAAIEDgAgICAiAHoCaCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcqUABoAGgAaAAxAGgAsAR8AGgAaAAXAGiAAIAAgACBA4AICAgIgB6AmwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXKlAAaABoAGgAMQBoALAEfQBoAGgAFwBogACAAIAAgQOACAgICIAegJwICIAACN8QEgCeAJ8AoCt2ACEAogCjK3cAIwChK3gApAAOACUApQCmACgApwAXABcAFwApAEcAaABoK4AAMQBoAFoAaAO9HsoAaABoK4gAaF8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgQJ/CAiBA4sIgA0IgKaBAp4ICIEDiggSfjpYjdMAOgA7AA4rjCuPAEiiAZwDx4A+gIiiK5ArkYEDjIEDl4As2QAhACUrlAAOACgrlQAjAFkrlh7ZAZwAWgB5ABcAKQAxAGgrnl8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEDiYA+gA2AM4AAgAQIgQON0wA6ADsADiugK6kASKgBsgGzAbQBtQG2AbcBuAG5gEKAQ4BEgEWARoBHgEiASagrqiurK6wrrSuuK68rsCuxgQOOgQOPgQOQgQOSgQOTgQOUgQOVgQOWgCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcrkABoAGgAaAAxAGgAsAGyAGgAaAAXAGiAAIApgACBA4wICAgIgB6AQggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXK5AAaABoAGgAMQBoALABswBoAGgAFwBogACAAIAAgQOMCAgICIAegEMICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXK9MAFyuQAGgAaABoADEAaACwAbQAaABoABcAaIAAgQORgACBA4wICAgIgB6ARAgIgAAI0wA6ADsADivhK+IASKCggCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcrkABoAGgAaAAxAGgAsAG1AGgAaAAXAGiAAIApgACBA4wICAgIgB6ARQgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcCDgAXK5AAaABoAGgAMQBoALABtgBoAGgAFwBogACAUIAAgQOMCAgICIAegEYICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFyuQAGgAaABoADEAaACwAbcAaABoABcAaIAAgCmAAIEDjAgICAiAHoBHCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcrkABoAGgAaAAxAGgAsAG4AGgAaAAXAGiAAIAAgACBA4wICAgIgB6ASAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXK5AAaABoAGgAMQBoALABuQBoAGgAFwBogACAKYAAgQOMCAgICIAegEkICIAACNkAIQAlLDAADgAoLDEAIwBZLDIe2QPHAFoAeQAXACkAMQBoLDpfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWR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xAGgAsAR3AGgAaAAXAGiAAICegACBA9wICAgIgB6AlggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXL1QAaABoAGgAMQBoALAEeABoAGgAFwBogACAKYAAgQPcCAgICIAegJcICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFy9UAGgAaABoADEAaACwBHkAaABoABcAaIAAgACAAIED3AgICAiAHoCYCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwS+ABcvVABoAGgAaAAxAGgAsAR6AGgAaAAXAGiAAICigACBA9wICAgIgB6AmQgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXL1QAaABoAGgAMQBoALAEewBoAGgAFwBogACAAIAAgQPcCAgICIAegJoICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFy9UAGgAaABoADEAaACwBHwAaABoABcAaIAAgACAAIED3AgICAiAHoCbCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcvVABoAGgAaAAxAGgAsAR9AGgAaAAXAGiAAIAAgACBA9wICAgIgB6AnAgIgAAI0gA7AA4wegC4oIAd3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXHOYAaABoAGgAMQBoALACWwBoAGgAFwBogACAKYAAgQJ5CAgICIAegFoICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxzmAGgAaABoADEAaACwAlwAaABoABcAaIAAgCmAAIECeQgICAiAHoBbCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFx7bABcc5gBoAGgAaAAxAGgAsAJdAGgAaAAXAGiAAIEDt4AAgQJ5CAgICIAegFwICIAACN8QEgCeAJ8AoDCqACEAogCjMKsAIwChMKwApAAOACUApQCmACgApwAXABcAFwApAEMAaABoMLQAMQBoAFoAaAO9AXUAaABoMLwAaF8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgAsICIED6wiADQiApoA6CAiBA+oIEoltdnzTADoAOwAOMMAwwwBIogGcA8eAPoCIojDEMMWBA+yBA/eALNkAIQAlMMgADgAoMMkAIwBZMMoBfAGcAFoAeQAXACkAMQBoMNJfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBA+mAPoANgDOAAIAECIED7dMAOgA7AA4w1DDdAEioAbIBswG0AbUBtgG3AbgBuYBCgEOARIBFgEaAR4BIgEmoMN4w3zDgMOEw4jDjMOQw5YED7oED74ED8IED8oED84ED9IED9YED9oAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXMMQAaABoAGgAMQBoALABsgBoAGgAFwBogACAKYAAgQPsCAgICIAegEIICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFzDEAGgAaABoADEAaACwAbMAaABoABcAaIAAgACAAIED7AgICAiAHoBDCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFzEHABcwxABoAGgAaAAxAGgAsAG0AGgAaAAXAGiAAIED8YAAgQPsCAgICIAegEQICIAACNMAOgA7AA4xFTEWAEigoIAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXMMQAaABoAGgAMQBoALABtQBoAGgAFwBogACAKYAAgQPsCAgICIAegEUICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFzDEAGgAaABoADEAaACwAbYAaABoABcAaIAAgCmAAIED7AgICAiAHoBGCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcwxABoAGg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JgQQKgQQOgQQPgQQRgQQSgQQUgQQVgCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFzIzABcyDQBoAGgAaAAxAGgAsACAAGgAaAAXAGiAAIEECIAAgQQFCAgICIAegBIICIAACNIAOwAOMkEAuKCAHd8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFzINAGgAaABoADEAaACwAIEAaABoABcAaIAAgACAAIEEBQgICAiAHoATCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFzJUABcyDQBoAGgAaAAxAGgAsACCAGgAaAAXAGiAAIEEC4AAgQQFCAgICIAegBQICIAACNIAOwAOMmIAuKEyY4EEDIAd0gA7AA4yZgC4oTJngQQNgB1fEBFzZXJ2aWNlSWRlbnRpZmllct8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFzINAGgAaABoADEAaACwAIMAaABoABcAaIAAgACAAIEEBQgICAiAHoAVCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFzJ7ABcyDQBoAGgAaAAxAGgAsACEAGgAaAAXAGiAAIEEEIAAgQQFCAgICIAegBYICIAACNIAOwAOMokAuKCAHd8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFzINAGgAaABoADEAaACwAIUAaABoABcAaIAAgCmAAIEEBQgICAiAHoAXCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFzKcABcyDQBoAGgAaAAxAGgAsACGAGgAaAAXAGiAAIEEE4AAgQQFCAgICIAegBgICIAACNMAOgA7AA4yqjKrAEigoIAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBOQAXMg0AaABoAGgAMQBoALAAhwBoAGgAFwBogACALoAAgQQFCAgICIAegBkICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXMr4AFzINAGgAaABoADEAaACwAIgAaABoABcAaIAAgQQWgACBBAUICAgIgB6AGggIgAAIXk1hbmFnZWRBY2N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vcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQRLgD6ADYAzgACABAiBBE/TADoAOwAONYo1kwBIqAGyAbMBtAG1AbYBtwG4AbmAQoBDgESARYBGgEeASIBJqDWUNZU1ljWXNZg1mTWaNZuBBFCBBFGBBFKBBFSBBFWBBFaBBFeBBFiALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFzV6AGgAaABoADEAaACwAbIAaABoABcAaIAAgCmAAIEETggICAiAHoBCCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABc1egBoAGgAaAAxAGgAsAGzAGgAaAAXAGiAAIAAgACBBE4ICAgIgB6AQwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABc1vQAXNXoAaABoAGgAMQBoALABtABoAGgAFwBogACBBFOAAIEETggICAiAHoBECAiAAAjTADoAOwAONcs1zABIoKCALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFzV6AGgAaABoADEAaACwAbUAaABoABcAaIAAgCmAAIEETggICAiAHoBFCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABc1egBoAGgAaAAxAGgAsAG2AGgAaAAXAGiAAIApgACBBE4ICAgIgB6ARggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXNXoAaABoAGgAMQBoALABtwBoAGgAFwBogACAKYAAgQROCAgICIAegEcICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFzV6AGgAaABoADEAaACwAbgAaABoABcAaIAAgACAAIEETggICAiAHoBICAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABc1egBoAGgAaAAxAGgAsAG5AGgAaAAXAGiAAIApgACBBE4ICAgIgB6ASQgIgAAI2QAhACU2GgAOACg2GwA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AC/UAAAv3AAAL+QAAC/sAAAv+AAAMAQAADAMAAAwRAAAMHAAADCgAAAw3AAAMRAAADIcAAAyrAAAMzwAADPIAAA0ZAAANOQAADWAAAA2HAAANpwAADcsAAA3vAAAN+wAADf0AAA3/AAAOAQAADgMAAA4FAAAOBwAADgoAAA4MAAAODgAADhEAAA4TAAAOFQAADhgAAA4aAAAOGwAADiAAAA4oAAAONQAADjgAAA46AAAOPQAADj8AAA5BAAAOUAAADnUAAA6ZAAAOwAAADuQAAA7mAAAO6AAADuoAAA7sAAAO7gAADvAAAA7xAAAO8wAADwAAAA8TAAAPFQAADxcAAA8ZAAAPGwAADx0AAA8fAAAPIQAADyMAAA8lAAAPOAAADzoAAA88AAAPPgAAD0AAAA9CAAAPRAAAD0YAAA9IAAAPSgAAD0wAAA9iAAAPdQAAD5EAAA+uAAAPygAAD94AAA/wAAAQBgAAEB8AABBeAAAQZAAAEG0AABB6AAAQhgAAEJAAABCaAAAQpQAAELAAABC9AAAQxQAAEMcAABDJAAAQywAAEM0AABDOAAAQzwAAENAAABDRAAAQ0wAAENUAABDWAAAQ1wAAENkAABDaAAAQ4wAAEOQAABDmAAAQ7wAAEPoAABEDAAAREgAAERkAABEhAAARKgAAETMAABFGAAARTwAAEWIAABF5AAARiwAAEcoAABHMAAARzgAAEdAAABHSAAAR0wAAEdQAABHVAAAR1gAAEdgAABHaAAAR2wAAEdwAABHeAAAR3wAAEh4AABIgAAASIgAAEiQAABImAAASJwAAEigAABIpAAASKgAAEiwAABIuAAASLwAAEjAAABIyAAASMwAAEjwAABI/AAASQQAAEkMAABJMAAASUQAAElMAABJVAAASVwAAEmwAABKHAAASxgAAEsgAABLKAAASzAAAEs4AABLPAAAS0AAAEtEAABLSAAAS1AAAEtYAABLXAAAS2AAAEtoAABLbAAATGgAAExwAABMeAAATIAAAEyIAABMjAAATJAAAEyUAABMmAAATKAAAEyoAABMrAAATLAAAEy4AABMvAAATOAAAEzkAABM7AAATegAAE3wAABN+AAATgAAAE4IAABODAAAThAAAE4UAABOGAAATiAAAE4oAABOLAAATjAAAE44AABOPAAATkAAAE88AABPRAAAT0wAAE9UAABPXAAAT2AAAE9kAABPaAAAT2wAAE90AABPfAAAT4AAAE+EAABPjAAAT5AAAE/EAABPyAAAT8wAAE/UAABP+AAAUFAAAFBsAABQoAAAUZwAAFGkAABRrAAAUbQAAFG8AABRwAAAUcQAAFHIAABRzAAAUdQAAFHcAABR4AAAUeQAAFHsAABR8AAAUlQAAFJcAABSZAAAUmwAAFJwAABSeAAAUtQAAFL4AABTMAAAU2QAAFOcAABT8AAAVEAAAFScAABU5AAAVeAAAFXoAABV8AAAVfgAAFYAAABWBAAAVggAAFYMAABWEAAAVhgAAFYgAABWJAAAVigAAFYwAABWNAAAVmwAAFaQAABW5AAAVyAAAFd0AABXrAAAWAAAAFhQAABYrAAAWPQAAFkoAABZXAAAWWQAAFlsAABZdAAAWXwAAFmEAABZjAAAWcAAAFnIAABZ1AAAWeAAAFnsAABZ+AAAWgQAAFoMAABaPAAAWqgAAFrcAABbMAAAW2QAAFuwAABc3AAAXWgAAF3oAABeaAAAXnAAAF54AABegAAAXogAAF6QAABelAAAXpgAAF6gAABepAAAXqwAAF6wAABevAAAXsQAAF7IAABezAAAXtQAAF7YAABe7AAAXyAAAF80AABfPAAAX0QAAF9YAABfYAAAX2gAAF9wAABfxAAAYBAAAGCkAABhNAAAYdAAAGJgAABiaAAAYnAAAGJ4AABigAAAYogAAGKQAABilAAAYpwAAGLQAABjFAAAYxwAAGMkAABjLAAAYzQAAGM8AABjRAAAY0wAAGNUAABjmAAAY6AAAGOoAABjsAAAY7gAAGPAAABjyAAAY9AAAGPYAABj4AAAZFgAAGTQAABlHAAAZWwAAGXAAABmNAAAZoQAAGbcAABn2AAAZ+AAAGfoAABn8AAAZ/gAAGf8AABoAAAAaAQAAGgIAABoEAAAaBgAAGgcAABoIAAAaCgAAGgsAABpKAAAaTAAAGk4AABpQAAAaUgAAGlMAABpUAAAaVQAAGlYAABpYAAAaWgAAGlsAABpcAAAaXgAAGl8AABqeAAAaoAAAGqIAABqkAAAapgAAGqcAABqoAAAaqQAAGqoAABqsAAAargAAGq8AABqwAAAasgAAGrMAABrAAAAawQAAGsIAABrEAAAbAwAAGwUAABsHAAAbCQAAGwsAABsMAAAbDQAAGw4AABsPAAAbEQAAGxMAABsUAAAbFQAAGxcAABsYAAAbVwAAG1kAABtbAAAbXQAAG18AABtgAAAbYQAAG2IAABtjAAAbZQAAG2cAABtoAAAbaQAAG2sAABtsAAAbbQAAG6wAABuuAAAbsAAAG7IAABu0AAAbtQAAG7YAABu3AAAbuAAAG7oAABu8AAAbvQAAG74AABvAAAAbwQAAHAAAABwCAAAcBAAAHAYAABwIAAAcCQAAHAoAABwLAAAcDAAAHA4AABwQAAAcEQAAHBIAABwUAAAcFQAAHFQAABxWAAAcWAAAHFoAABxcAAAcXQAAHF4AABxfAAAcYAAAHGIAABxkAAAcZQAAHGYAABxoAAAcaQAAHI4AAByyAAAc2QAAHP0AABz/AAAdAQAAHQMAAB0FAAAdBwAAHQkAAB0KAAAdDAAAHRkAAB0oAAAdKgAAHSwAAB0uAAAdMAAAHTIAAB00AAAdNgAAHUUAAB1HAAAdSQAAHUsAAB1NAAAdUAAAHVMAAB1WAAAdWAAAHWoAAB1+AAAdkAAAHaUAAB23AAAdxgAAHeMAAB4iAAAeJAAAHiYAAB4oAAAeKgAAHisAAB4sAAAeLQAAHi4AAB4wAAAeMgAAHjMAAB40AAAeNgAAHjcAAB52AAAeeAAAHnoAAB58AAAefgAAHn8AAB6AAAAegQAAHoIAAB6EAAAehgAAHocAAB6IAAAeigAAHosAAB6NAAAezAAAHs4AAB7QAAAe0gAAHtQAAB7VAAAe1gAAHtcAAB7YAAAe2gAAHtwAAB7dAAAe3gAAHuAAAB7hAAAe4wAAHyIAAB8kAAAfJgAAHygAAB8qAAAfKwAAHywAAB8tAAAfLgAAHzAAAB8yAAAfMwAAHzQAAB82AAAfNwAAH3oAAB+eAAAfwgAAH+UAACAMAAAgLAAAIFMAACB6AAAgmgAAIL4AACDiAAAg5AAAIOYAACDoAAAg6gAAIOwAACDuAAAg8QAAIPMAACD1AAAg+AAAIPoAACD8AAAg/wAAIQEAACECAAAhBwAAIRQAACEXAAAhGQAAIRwAACEeAAAhIAAAIUUAACFpAAAhkAAAIbQAACG2AAAhuAAAIboAACG8AAAhvgAAIcAAACHBAAAhwwAAIdAAACHjAAAh5QAAIecAACHpAAAh6wAAIe0AACHvAAAh8QAAIfMAACH1AAAiCAAAIgoAACIMAAAiDgAAIhAAACISAAAiFAAAIhYAACIYAAAiGgAAIhwAACJbAAAiXQAAIl8AACJhAAAiYwAAImQAACJlAAAiZgAAImcAACJpAAAiawAAImwAACJtAAAibwAAInAAACJ5AAAiegAAInwAACK7AAAivQAAIr8AACLBAAAiwwAAIsQAACLFAAAixgAAIscAACLJAAAiywAAIswAACLNAAAizwAAItAAACMPAAAjEQAAIxMAACMVAAAjFwAAIxgAACMZAAAjGgAAIxsAACMdAAAjHwAAIyAAACMhAAAjIwAAIyQAACMtAAAjMAAAIzIAACM0AAAjPQAAI0IAACNEAAAjRgAAI0gAACNdAAAjeAAAI7cAACO5AAAjuwAAI70AACO/AAAjwAAAI8EAACPCAAAjwwAAI8UAACPHAAAjyAAAI8kAACPLAAAjzAAAJAsAACQNAAAkDwAAJBEAACQTAAAkFAAAJBUAACQWAAAkFwAAJBkAACQbAAAkHAAAJB0AACQfAAAkIAAAJCkAACQqAAAkLAAAJGsAACRtAAAkbwAAJHEAACRzAAAkdAAAJHUAACR2AAAkdwAAJHkAACR7AAAkfAAAJH0AACR/AAAkgAAAJL8AACTBAAAkwwAAJMUAACTHAAAkyAAAJMkAACTKAAAkywAAJM0AACTPAAAk0AAAJNEAACTTAAAk1AAAJOEAACTiAAAk4wAAJOUAACUkAAAlJgAAJSgAACUqAAAlLAAAJS0AACUuAAAlLwAAJTAAACUyAAAlNAAAJTUAACU2AAAlOAAAJTkAACV4AAAlegAAJXwAACV+AAAlgAAAJYEAACWCAAAlgwAAJYQAACWGAAAliAAAJYkAACWKAAAljAAAJY0AACWZAAAlpgAAJbsAACW9AAAlvwAAJcEAACXDAAAlxQAAJccAACXJAAAlywAAJc0AACXPAAAl5AAAJeYAACXoAAAl6wAAJe4AACXxAAAl9AAAJfcAACX6AAAl/QAAJgAAACYCAAAmCQAAJhUAACYpAAAmPAAAJlAAACZcAAAmagAAJn8AACaIAAAmowAAJu4AACcRAAAnMQAAJ1EAACdTAAAnVQAAJ1cAACdZAAAnWwAAJ1wAACddAAAnXwAAJ2AAACdiAAAnYwAAJ2UAACdnAAAnaAAAJ2kAACdrAAAnbAAAJ3UAACeCAAAnhwAAJ4kAACeLAAAnkAAAJ5IAACeUAAAnlgAAJ6sAACfQAAAn9AAAKBsAACg/AAAoQQAAKEMAAChFAAAoRwAAKEkAAChLAAAoTAAAKE4AAChbAAAobAAAKG4AAChwAAAocgAAKHQAACh2AAAoeAAAKHoAACh8AAAojQAAKI8AACiRAAAokwAAKJUAACiXAAAomQAAKJsAACidAAAonwAAKN4AACjgAAAo4gAAKOQAACjmAAAo5wAAKOgAACjpAAAo6gAAKOwAACjuAAAo7wAAKPAAACjyAAAo8wAAKTIAACk0AAApNgAAKTgAACk6AAApOwAAKTwAACk9AAApPgAAKUAAAClCAAApQwAAKUQAAClGAAApRwAAKYYAACmIAAApigAAKYwAACmOAAApjwAAKZAAACmRAAApkgAAKZQAACmWAAAplwAAKZgAACmaAAApmwAAKagAACmpAAApqgAAKawAACnrAAAp7QAAKe8AACnxAAAp8wAAKfQAACn1AAAp9gAAKfcAACn5AAAp+wAAKfwAACn9AAAp/wAAKgAAACo/AAAqQQAAKkMAACpFAAAqRwAAKkgAACpJAAAqSgAAKksAACpNAAAqTwAAKlAAACpRAAAqUwAAKlQAACqTAAAqlQAAKpcAACqZAAAqmwAAKpwAACqdAAAqngAAKp8AACqhAAAqowAAKqQAACqlAAAqpwAAKqgAACrnAAAq6QAAKusAACrtAAAq7wAAKvAAACrxAAAq8gAAKvMAACr1AAAq9wAAKvgAACr5AAAq+wAAKvwAACs7AAArPQAAKz8AACtBAAArQwAAK0QAACtFAAArRgAAK0cAACtJAAArSwAAK0wAACtNAAArTwAAK1AAACt1AAArmQAAK8AAACvkAAAr5gAAK+gAACvqAAAr7AAAK+4AACvwAAAr8QAAK/MAACwAAAAsDwAALBEAACwTAAAsFQAALBcAACwZAAAsGwAALB0AACwsAAAsLgAALDAAACwyAAAsNAAALDYAACw4AAAsOgAALDwAACxcAAAshwAALKEAACy6AAAs1AAALPQAAC0XAAAtVgAALVgAAC1aAAAtXAAALV4AAC1fAAAtYAAALWEAAC1iAAAtZAAALWYAAC1nAAAtaAAALWoAAC1rAAAtbQAALawAAC2uAAAtsAAALbIAAC20AAAttQAALbYAAC23AAAtuAAALboAAC28AAAtvQAALb4AAC3AAAAtwQAALgAAAC4CAAAuBAAALgYAAC4IAAAuCQAALgoAAC4LAAAuDAAALg4AAC4QAAAuEQAALhIAAC4UAAAuFQAALlQAAC5WAAAuWAAALloAAC5cAAAuXQAALl4AAC5fAAAuYAAALmIAAC5kAAAuZQAALmYAAC5oAAAuaQAALmsAAC6qAAAurAAALq4AAC6wAAAusgAALrMAAC60AAAutQAALrYAAC64AAAuugAALrsAAC68AAAuvgAALr8AAC7+AAAvAAAALwIAAC8EAAAvBgAALwcAAC8IAAAvCQAALwoAAC8MAAAvDgAALw8AAC8QAAAvEgAALxMAAC9SAAAvVAAAL1YAAC9YAAAvWgAAL1sAAC9cAAAvXQAAL14AAC9gAAAvYgAAL2MAAC9kAAAvZgAAL2cAAC9wAAAvfgAAL4sAAC+ZAAAvpgAAL7kAAC/QAAAv4gAAMC0AADBQAAAwcAAAMJAAADCSAAAwlAAAMJYAADCYAAAwmgAAMJsAADCcAAAwngAAMJ8AADChAAAwogAAMKUAADCnAAAwqAAAMKkAADCrAAAwrAAAMLEAADC+AAAwwwAAMMUAADDHAAAwzAAAMM4AADDQAAAw0gAAMPcAADEbAAAxQgAAMWYAADFoAAAxagAAMWwAADFuAAAxcAAAMXIAADFzAAAxdQAAMYIAADGTAAAxlQAAMZcAADGZAAAxmwAAMZ0AADGfAAAxoQAAMaMAADG0AAAxtgAAMbgAADG6AAAxvAAAMb4AADHAAAAxwgAAMcQAADHGAAAyBQAAMgcAADIJAAAyCwAAMg0AADIOAAAyDwAAMhAAADIRAAAyEwAAMhUAADIWAAAyFwAAMhkAADIaAAAyWQAAMlsAADJdAAAyXwAAMmEAADJiAAAyYwAAMmQAADJlAAAyZwAAMmkAADJqAAAyawAAMm0AADJuAAAyrQAAMq8AADKxAAAyswAAMrUAADK2AAAytwAAMrgAADK5AAAyuwAAMr0AADK+AAAyvwAAMsEAADLCAAAyzwAAMtAAADLRAAAy0wAAMxIAADMUAAAzFgAAMxgAADMaAAAzGwAAMxwAADMdAAAzHgAAMyAAADMiAAAzIwAAMyQAADMmAAAzJwAAM2YAADNoAAAzagAAM2wAADNuAAAzbwAAM3AAADNxAAAzcgAAM3QAADN2AAAzdwAAM3gAADN6AAAzewAAM7oAADO8AAAzvgAAM8AAADPCAAAzwwAAM8QAADPFAAAzxgAAM8gAADPKAAAzywAAM8wAADPOAAAzzwAANA4AADQQAAA0EgAANBQAADQWAAA0FwAANBgAADQZAAA0GgAANBwAADQeAAA0HwAANCAAADQiAAA0IwAANGIAADRkAAA0ZgAANGgAADRqAAA0awAANGwAADRtAAA0bgAANHAAADRyAAA0cwAANHQAADR2AAA0dwAANJwAADTAAAA05wAANQsAADUNAAA1DwAANREAADUTAAA1FQAANRcAADUYAAA1GgAANScAADU2AAA1OAAANToAADU8AAA1PgAANUAAADVCAAA1RAAANVMAADVVAAA1VwAANVkAADVbAAA1XgAANWEAADVkAAA1ZgAANaUAADWnAAA1qQAANasAADWtAAA1rgAANa8AADWwAAA1sQAANbMAADW1AAA1tgAANbcAADW5AAA1ugAANfkAADX7AAA1/QAANf8AADYBAAA2AgAANgMAADYEAAA2BQAANgcAADYJAAA2CgAANgsAADYNAAA2DgAANk0AADZPAAA2UQAANlMAADZVAAA2VgAANlcAADZYAAA2WQAANlsAADZdAAA2XgAANl8AADZhAAA2YgAANqEAADajAAA2pQAANqcAADapAAA2qgAANqsAADasAAA2rQAANq8AADaxAAA2sgAANrMAADa1AAA2tgAANvkAADcdAAA3QQAAN2QAADeLAAA3qwAAN9IAADf5AAA4GQAAOD0AADhhAAA4YwAAOGUAADhnAAA4aQAAOGsAADhtAAA4cAAAOHIAADh0AAA4dwAAOHkAADh7AAA4fgAAOIAAADiBAAA4hgAAOJMAADiWAAA4mAAAOJsAADidAAA4nwAAOMQAADjoAAA5DwAAOTMAADk1AAA5NwAAOTkAADk7AAA5PQAAOT8AADlAAAA5QgAAOU8AADliAAA5ZAAAOWYAADloAAA5agAAOWwAADluAAA5cAAAOXIAADl0AAA5hwAAOYkAADmLAAA5jQAAOY8AADmRAAA5kwAAOZUAADmXAAA5mQAAOZsAADnaAAA53AAAOd4AADngAAA54gAAOeMAADnkAAA55QAAOeYAADnoAAA56gAAOesAADnsAAA57gAAOe8AADn4AAA5+QA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ARLsAAES8AABEvQAARL8AAETBAABEwgAARMMAAETFAABExgAARQUAAEUHAABFCQAARQsAAEUNAABFDgAARQ8AAEUQAABFEQAARRMAAEUVAABFFgAARRcAAEUZAABFGgAARWUAAEWIAABFqAAARcgAAEXKAABFzAAARc4AAEXQAABF0gAARdMAAEXUAABF1gAARdcAAEXZAABF2gAARdwAAEXeAABF3wAAReAAAEXiAABF4wAARegAAEX1AABF+gAARfwAAEX+AABGAwAARgUAAEYHAABGCQAARi4AAEZSAABGeQAARp0AAEafAABGoQAARqMAAEalAABGpwAARqkAAEaqAABGrAAARrkAAEbKAABGzAAARs4AAEbQAABG0gAARtQAAEbWAABG2AAARtoAAEbrAABG7QAARu8AAEbxAABG8wAARvUAAEb3AABG+QAARvsAAEb9AABHPAAARz4AAEdAAABHQgAAR0QAAEdFAABHRgAAR0cAAEdIAABHSgAAR0wAAEdNAABHTgAAR1AAAEdRAABHkAAAR5IAAEeUAABHlgAAR5gAAEeZAABHmgAAR5sAAEecAABHngAAR6AAAEehAABHogAAR6QAAEelAABH5AAAR+YAAEfoAABH6gAAR+wAAEftAABH7gAAR+8AAEfwAABH8gAAR/QAAEf1AABH9gAAR/gAAEf5AABIBgAASAcAAEgIAABICgAASEkAAEhLAABITQAASE8AAEhRAABIUgAASFMAAEhUAABIVQAASFcAAEhZAABIWgAASFsAAEhdAABIXgAASJ0AAEifAABIoQAASKMAAEilAABIpgAASKcAAEioAABIqQAASKsAAEitAABIrgAASK8AAEixAABIsgAASPEAAEjzAABI9QAASPcAAEj5AABI+gAASPsAAEj8AABI/QAASP8AAEkBAABJAgAASQMAAEkFAABJBgAASUUAAElHAABJSQAASUsAAElNAABJTgAASU8AAElQAABJUQAASVMAAElVAABJVgAASVcAAElZAABJWgAASZkAAEmbAABJnQAASZ8AAEmhAABJogAASaMAAEmkAABJpQAASacAAEmpAABJqgAASasAAEmtAABJrgAASdMAAEn3AABKHgAASkIAAEpEAABKRgAASkgAAEpKAABKTAAASk4AAEpPAABKUQAASl4AAEptAABKbwAASnEAAEpzAABKdQAASncAAEp5AABKewAASooAAEqMAABKjgAASpAAAEqSAABKlAAASpcAAEqaAABKnAAAStsAAErdAABK3wAASuEAAErjAABK5AAASuUAAErmAABK5wAASukAAErrAABK7AAASu0AAErvAABK8AAASy8AAEsxAABLMwAASzUAAEs3AABLOAAASzkAAEs6AABLOwAASz0AAEs/AABLQAAAS0EAAEtDAABLRAAAS4MAAEuFAABLhwAAS4kAAEuLAABLjAAAS40AAEuOAABLjwAAS5EAAEuTAABLlAAAS5UAAEuXAABLmAAAS9cAAEvZAABL2wAAS90AAEvfAABL4AAAS+EAAEviAABL4wAAS+UAAEvnAABL6AAAS+kAAEvrAABL7AAATCsAAEwtAABMLwAATDEAAEwzAABMNAAATDUAAEw2AABMNwAATDkAAEw7AABMPAAATD0AAEw/AABMQAAATH8AAEyBAABMgwAATIUAAEyHAABMiAAATIkAAEyKAABMiwAATI0AAEyPAABMkAAATJEAAEyTAABMlAAATNMAAEzVAABM1wAATNkAAEzbAABM3AAATN0AAEzeAABM3wAATOEAAEzjAABM5AAATOUAAEznAABM6AAATTMAAE1WAABNdgAATZYAAE2YAABNmgAATZwAAE2eAABNoAAATaEAAE2iAABNpQAATaYAAE2oAABNqQAATasAAE2tAABNrgAATa8AAE2yAABNswAATbwAAE3JAABNzgAATdAAAE3SAABN1wAATdoAAE3dAABN3wAATgQAAE4oAABOTwAATnMAAE52AABOeAAATnoAAE58AABOfgAAToAAAE6BAABOhAAATpEAAE6iAABOpAAATqYAAE6oAABOqgAATqwAAE6uAABOsAAATrIAAE7DAABOxgAATskAAE7MAABOzwAATtIAAE7VAABO2AAATtsAAE7dAABPHAAATx4AAE8gAABPIgAATyUAAE8mAABPJwAATygAAE8pAABPKwAATy0AAE8uAABPLwAATzEAAE8yAABPcQAAT3MAAE91AABPdwAAT3oAAE97AABPfAAAT30AAE9+AABPgAAAT4IAAE+DAABPhAAAT4YAAE+HAABPxgAAT8gAAE/LAABPzQAAT9AAAE/RAABP0gAAT9MAAE/UAABP1gAAT9gAAE/ZAABP2gAAT9wAAE/dAABP6gAAT+sAAE/sAABP7gAAUC0AAFAvAABQMQAAUDMAAFA2AABQNwAAUDgAAFA5AABQOgAAUDwAAFA+AABQPwAAUEAAAFBCAABQQwAAUIIAAFCEAABQhgAAUIgAAFCLAABQjAAAUI0AAFCOAABQjwAAUJEAAFCTAABQlAAAUJUAAFCXAABQmAAAUNcAAFDZAABQ2wAAUN0AAFDgAABQ4QAAUOIAAFDjAABQ5AAAUOYAAFDoAABQ6QAAUOoAAFDsAABQ7QAAUSwAAFEuAABRMAAAUTIAAFE1AABRNgAAUTcAAFE4AABROQAAUTsAAFE9AABRPgAAUT8AAFFBAABRQgAAUYEAAFGDAABRhQAAUYcAAFGKAABRiwAAUYwAAFGNAABRjgAAUZAAAFGSAABRkwAAUZQAAFGWAABRlwAAUbwAAFHgAABSBwAAUisAAFIuAABSMAAAUjIAAFI0AABSNgAAUjgAAFI5AABSPAAAUkkAAFJYAABSWgAAUlwAAFJeAABSYAAAUmIAAFJkAABSZgAAUnUAAFJ4AABSewAAUn4AAFKBAABShAAAUocAAFKKAABSjAAAUssAAFLNAABSzwAAUtEAAFLUAABS1QAAUtYAAFLXAABS2AAAUtoAAFLcAABS3QAAUt4AAFLgAABS4QAAUyAAAFMiAABTJAAAUyYAAFMpAABTKgAAUysAAFMsAABTLQAAUy8AAFMxAABTMgAAUzMAAFM1AABTNgAAU3UAAFN3AABTeQAAU3sAAFN+AABTfwAAU4AAAFOBAABTggAAU4QAAFOGAABThwAAU4gAAFOKAABTiwAAU8oAAFPMAABTzwAAU9EAAFPUAABT1QAAU9YAAFPXAABT2AAAU9oAAFPcAABT3QAAU94AAFPgAABT4QAAU+MAAFQiAABUJAAAVCYAAFQoAABUKwAAVCwAAFQtAABULgAAVC8AAFQxAABUMwAAVDQAAFQ1AABUNwAAVDgAAFR3AABUeQAAVHsAAFR9AABUgAAAVIEAAFSCAABUgwAAVIQAAFSGAABUiAAAVIkAAFSKAABUjAAAVI0AAFTMAABUzgAAVNAAAFTSAABU1QAAVNYAAFTXAABU2AAAVNkAAFTbAABU3QAAVN4AAFTfAABU4QAAVOIAAFUtAABVUAAAVXAAAFWQAABVkgAAVZQAAFWWAABVmAAAVZoAAFWbAABVnAAAVZ8AAFWgAABVogAAVaMAAFWmAABVqAAAVakAAFWqAABVrQAAVa4AAFWzAABVwAAAVcUAAFXHAABVyQAAVc4AAFXRAABV1AAAVdYAAFX7AABWHwAAVkYAAFZqAABWbQAAVm8AAFZxAABWcwAAVnUAAFZ3AABWeAAAVnsAAFaIAABWmQAAVpsAAFadAABWnwAAVqEAAFajAABWpQAAVqcAAFapAABWugAAVr0AAFbAAABWwwAAVsYAAFbJAABWzAAAVs8AAFbSAABW1AAAVxMAAFcVAABXFwAAVxkAAFccAABXHQAAVx4AAFcfAABXIAAAVyIAAFckAABXJQAAVyYAAFcoAABXKQAAV2gAAFdqAABXbAAAV24AAFdxAABXcgAAV3MAAFd0AABXdQAAV3cAAFd5AABXegAAV3sAAFd9AABXfgAAV70AAFe/AABXwgAAV8QAAFfHAABXyAAAV8kAAFfKAABXywAAV80AAFfPAABX0AAAV9EAAFfTAABX1AAAV+EAAFfiAABX4wAAV+UAAFgkAABYJgAAWCgAAFgqAABYLQAAWC4AAFgvAABYMAAAWDEAAFgzAABYNQAAWDYAAFg3AABYOQAAWDoAAFh5AABYewAAWH0AAFh/AABYggAAWIMAAFiEAABYhQAAWIYAAFiIAABYigAAWIsAAFiMAABYjgAAWI8AAFjOAABY0AAAWNIAAFjUAABY1wAAWNgAAFjZAABY2gAAWNsAAFjdAABY3wAAWOAAAFjhAABY4wAAWOQAAFkjAABZJQAAWScAAFkpAABZLAAAWS0AAFkuAABZLwAAWTAAAFkyAABZNAAAWTUAAFk2AABZOAAAWTkAAFl4AABZegAAWXwAAFl+AABZgQAAWYIAAFmDAABZhAAAWYUAAFmHAABZiQAAWYoAAFmLAABZjQAAWY4AAFmzAABZ1wAAWf4AAFoiAABaJQAAWicAAFopAABaKwAAWi0AAFovAABaMAAAWjMAAFpAAABaTwAAWlEAAFpTAABaVQAAWlcAAFpZAABaWwAAWl0AAFpsAABabwAAWnIAAFp1AABaeAAAWnsAAFp+AABagQAAWoMAAFrCAABaxAAAWsYAAFrIAABaywAAWswAAFrNAABazgAAWs8AAFrRAABa0wAAWtQAAFrVAABa1wAAWtgAAFsXAABbGQAAWxsAAFsdAABbIAAAWyEAAFsiAABbIwAAWyQAAFsmAABbKAAAWykAAFsqAABbLAAAWy0AAFtsAABbbgAAW3AAAFtyAABbdQAAW3YAAFt3AABbeAAAW3kAAFt7AABbfQAAW34AAFt/AABbgQAAW4IAAFvBAABbwwAAW8UAAFvHAABbygAAW8sAAFvMAABbzQAAW84AAFvQAABb0gAAW9MAAFvUAABb1gAAW9cAAFwWAABcGAAAXBoAAFwcAABcHwAAXCAAAFwhAABcIgAAXCMAAFwlAABcJwAAXCgAAFwpAABcKwAAXCwAAFxrAABcbQAAXG8AAFxxAABcdAAAXHUAAFx2AABcdwAAXHgAAFx6AABcfAAAXH0AAFx+AABcgAAAXIEAAFzAAABcwgAAXMQAAFzGAABcyQAAXMoAAFzLAABczAAAXM0AAFzPAABc0QAAXNIAAFzTAABc1QAAXNYAAFzfAABc8gAAXP8AAF0SAABdHwAAXTIAAF1JAABdWwAAXaYAAF3JAABd6QAAXgkAAF4LAABeDQAAXg8AAF4RAABeEwAAXhQAAF4VAABeGAAAXhkAAF4bAABeHAAAXh4AAF4gAABeIQAAXiIAAF4lAABeJgAAXisAAF44AABePQAAXj8AAF5BAABeRgAAXkkAAF5MAABeTgAAXnMAAF6XAABevgAAXuIAAF7lAABe5wAAXukAAF7rAABe7QAAXu8AAF7wAABe8wAAXwAAAF8RAABfEwAAXxUAAF8XAABfGQAAXxsAAF8dAABfHwAAXyEAAF8yAABfNQAAXzgAAF87AABfPgAAX0EAAF9EAABfRwAAX0oAAF9MAABfiwAAX40AAF+PAABfkQAAX5QAAF+VAABflgAAX5cAAF+YAABfmgAAX5wAAF+dAABfngAAX6AAAF+hAABf4AAAX+IAAF/kAABf5gAAX+kAAF/qAABf6wAAX+wAAF/tAABf7wAAX/EAAF/yAABf8wAAX/UAAF/2AABgNQAAYDcAAGA6AABgPAAAYD8AAGBAAABgQQAAYEIAAGBDAABgRQAAYEcAAGBIAABgSQAAYEsAAGBMAABgWQAAYFoAAGBbAABgXQAAYJwAAGCeAABgoAAAYKIAAGClAABgpgAAYKcAAGCoAABgqQAAYKsAAGCtAABgrgAAYK8AAGCxAABgsgAAYPEAAGDzAABg9QAAYPcAAGD6AABg+wAAYPwAAGD9AABg/gAAYQAAAGECAABhAwAAYQQAAGEGAABhBwAAYUYAAGFIAABhSgAAYUwAAGFPAABhUAAAYVEAAGFSAABhUwAAYVUAAGFXAABhWAAAYVkAAGFbAABhXAAAYZsAAGGdAABhnwAAYaEAAGGkAABhpQAAYaYAAGGnAABhqAAAYaoAAGGsAABhrQAAYa4AAGGwAABhsQAAYfAAAGHyAABh9AAAYfYAAGH5AABh+gAAYfsAAGH8AABh/QAAYf8AAGIBAABiAgAAYgMAAGIFAABiBgAAYisAAGJPAABidgAAYpoAAGKdAABinwAAYqEAAGKjAABipQAAYqcAAGKoAABiqwAAYrgAAGLHAABiyQAAYssAAGLNAABizwAAYtEAAGLTAABi1QAAYuQAAGLnAABi6gAAYu0AAGLwAABi8wAAYvYAAGL5AABi+wAAYzoAAGM8AABjPgAAY0AAAGNDAABjRAAAY0UAAGNGAABjRwAAY0kAAGNLAABjTAAAY00AAGNPAABjUAAAY48AAGORAABjkwAAY5UAAGOYAABjmQAAY5oAAGObAABjnAAAY54AAGOgAABjoQAAY6IAAGOkAABjpQAAY+QAAGPmAABj6AAAY+oAAGPtAABj7gAAY+8AAGPwAABj8QAAY/MAAGP1AABj9gAAY/cAAGP5AABj+gAAZDkAAGQ7AABkPQAAZD8AAGRCAABkQwAAZEQAAGRFAABkRgAAZEgAAGRKAABkSwAAZEwAAGROAABkTwAAZI4AAGSQAABkkgAAZJQAAGSXAABkmAAAZJkAAGSaAABkmwAAZJ0AAGSfAABkoAAAZKEAAGSjAABkpAAAZOMAAGTlAABk5wAAZOkAAGTsAABk7QAAZO4AAGTvAABk8AAAZPIAAGT0AABk9QAAZPYAAGT4AABk+QAAZTgAAGU6AABlPAAAZT4AAGVBAABlQgAAZUMAAGVEAABlRQAAZUcAAGVJAABlSgAAZUsAAGVNAABlTgAAZZkAAGW8AABl3AAAZfwAAGX+AABmAAAAZgIAAGYEAABmBgAAZgcAAGYIAABmCwAAZgwAAGYOAABmDwAAZhEAAGYTAABmFAAAZhUAAGYYAABmGQAAZh4AAGYrAABmMAAAZjIAAGY0AABmOQAAZjwAAGY/AABmQQAAZmYAAGaKAABmsQAAZtUAAGbYAABm2gAAZtwAAGbeAABm4AAAZuIAAGbjAABm5gAAZvMAAGcEAABnBgAAZwgAAGcKAABnDAAAZw4AAGcQAABnEgAAZxQAAGclAABnKAAAZysAAGcuAABnMQAAZzQAAGc3AABnOgAAZz0AAGc/AABnfgAAZ4AAAGeCAABnhAAAZ4cAAGeIAABniQAAZ4oAAGeLAABnjQAAZ48AAGeQAABnkQAAZ5MAAGeUAABn0wAAZ9UAAGfXAABn2QAAZ9wAAGfdAABn3gAAZ98AAGfgAABn4gAAZ+QAAGflAABn5gAAZ+gAAGfpAABoKAAAaCoAAGgtAABoLwAAaDIAAGgzAABoNAAAaDUAAGg2AABoOAAAaDoAAGg7AABoPAAAaD4AAGg/AABoTAAAaE0AAGhOAABoUAAAaI8AAGiRAABokwAAaJUAAGiYAABomQAAaJoAAGibAABonAAAaJ4AAGigAABooQAAaKIAAGikAABopQAAaOQAAGjmAABo6AAAaOoAAGjtAABo7gAAaO8AAGjwAABo8QAAaPMAAGj1AABo9gAAaPcAAGj5AABo+gAAaTkAAGk7AABpPQAAaT8AAGlCAABpQwAAaUQAAGlFAABpRgAAaUgAAGlKAABpSwAAaUwAAGlOAABpTwAAaY4AAGmQAABpkgAAaZQAAGmXAABpmAAAaZkAAGmaAABpmwAAaZ0AAGmfAABpoAAAaaEAAGmjAABppAAAaeMAAGnlAABp5wAAaekAAGnsAABp7QAAae4AAGnvAABp8AAAafIAAGn0AABp9QAAafYAAGn4AABp+QAAah4AAGpCAABqaQAAao0AAGqQAABqkgAAapQAAGqWAABqmAAAapoAAGqbAABqngAAaqsAAGq6AABqvAAAar4AAGrAAABqwgAAasQAAGrGAABqyAAAatcAAGraAABq3QAAauAAAGrjAABq5gAAaukAAGrsAABq7gAAay0AAGsvAABrMQAAazMAAGs2AABrNwAAazgAAGs5AABrOgAAazwAAGs+AABrPwAAa0AAAGtCAABrQwAAa4IAAGuEAABrhgAAa4gAAGuLAABrjAAAa40AAGuOAABrjwAAa5EAAGuTAABrlAAAa5UAAGuXAABrmAAAa9cAAGvZAABr2wAAa90AAGvgAABr4QAAa+IAAGvjAABr5AAAa+YAAGvoAABr6QAAa+oAAGvsAABr7QAAbCwAAGwuAABsMAAAbDIAAGw1AABsNgAAbDcAAGw4AABsOQAAbDsAAGw9AABsPgAAbD8AAGxBAABsQgAAbIEAAGyDAABshQAAbIcAAGyKAABsiwAAbIwAAGyNAABsjgAAbJAAAGySAABskwAAbJQAAGyWAABslwAAbNYAAGzYAABs2gAAbNwAAGzfAABs4AAAbOEAAGziAABs4wAAbOUAAGznAABs6AAAbOkAAGzrAABs7AAAbSsAAG0tAABtLwAAbTEAAG00AABtNQAAbTYAAG03AABtOAAAbToAAG08AABtPQAAbT4AAG1AAABtQQAAbUwAAG1VAABtVgAAbVgAAG1hAABtbAAAbXsAAG2GAABtlAAAbakAAG29AABt1AAAbeYAAG4lAABuJwAAbikAAG4rAABuLQAAbi4AAG4vAABuMAAAbjEAAG4zAABuNQAAbjYAAG43AABuOQAAbjoAAG55AABuewAAbn0AAG5/AABugQAAboIAAG6DAABuhAAAboUAAG6HAABuiQAAbooAAG6LAABujQAAbo4AAG7NAABuzwAAbtIAAG7UAABu1gAAbtcAAG7YAABu2QAAbtoAAG7cAABu3gAAbt8AAG7gAABu4gAAbuMAAG8uAABvUQAAb3EAAG+RAABvkwAAb5UAAG+XAABvmQAAb5sAAG+cAABvnQAAb6AAAG+hAABvowAAb6QAAG+mAABvqAAAb6kAAG+qAABvrQAAb64AAG+zAABvwAAAb8UAAG/HAABvyQAAb84AAG/RAABv1AAAb9YAAG/7AABwHwAAcEYAAHBqAABwbQAAcG8AAHBxAABwcwAAcHUAAHB3AABweAAAcHsAAHCIAABwmQAAcJsAAHCdAABwnwAAcKEAAHCjAABwpQAAcKcAAHCpAABwugAAcL0AAHDAAABwwwAAcMYAAHDJAABwzAAAcM8AAHDSAABw1AAAcRMAAHEVAABxFwAAcRkAAHEcAABxHQAAcR4AAHEfAABxIAAAcSIAAHEkAABxJQAAcSYAAHEoAABxKQAAcWgAAHFqAABxbAAAcW4AAHFxAABxcgAAcXMAAHF0AABxdQAAcXcAAHF5AABxegAAcXsAAHF9AABxfgAAcb0AAHG/AABxwgAAccQAAHHHAABxyAAAcckAAHHKAABxywAAcc0AAHHPAABx0AA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AiFgAAIhZAACIXAAAiGkAAIh6AACIfAAAiH4AAIiAAACIggAAiIQAAIiGAACIiAAAiIoAAIibAACIngAAiKEAAIikAACIpwAAiKoAAIitAACIsAAAiLMAAIi1AACI9AAAiPYAAIj4AACI+gAAiP0AAIj+AACI/wAAiQAAAIkBAACJAwAAiQUAAIkGAACJBwAAiQkAAIkKAACJSQAAiUsAAIlNAACJTwAAiVIAAIlTAACJVAAAiVUAAIlWAACJWAAAiVoAAIlbAACJXAAAiV4AAIlfAACJngAAiaAAAImjAACJpQAAiagAAImpAACJqgAAiasAAImsAACJrgAAibAAAImxAACJsgAAibQAAIm1AACJwgAAicMAAInEAACJxgAAigUAAIoHAACKCQAAigsAAIoOAACKDwAAihAAAIoRAACKEgAAihQAAIoWAACKFwAAihgAAIoaAACKGwAAiloAAIpcAACKXgAAimAAAIpjAACKZAAAimUAAIpmAACKZwAAimkAAIprAACKbAAAim0AAIpvAACKcAAAiq8AAIqxAACKswAAirUAAIq4AACKuQAAiroAAIq7AACKvAAAir4AAIrAAACKwQAAisIAAIrEAACKxQAAiwQAAIsGAACLCAAAiwoAAIsNAACLDgAAiw8AAIsQAACLEQAAixMAAIsVAACLFgAAixcAAIsZAACLGgAAi1kAAItbAACLXQAAi18AAItiAACLYwAAi2QAAItlAACLZgAAi2gAAItqAACLawAAi2wAAItuAACLbwAAi5QAAIu4AACL3wAAjAMAAIwGAACMCAAAjAoAAIwMAACMDgAAjBAAAIwRAACMFAAAjCEAAIwwAACMMgAAjDQAAIw2AACMOAAAjDoAAIw8AACMPgAAjE0AAIxQAACMUwAAjFYAAIxZAACMXAAAjF8AAIxiAACMZAAAjKMAAIylAACMpwAAjKkAAIysAACMrQAAjK4AAIyvAACMsAAAjLIAAIy0AACMtQAAjLYAAIy4AACMuQAAjPgAAIz6AACM/AAAjP4AAI0BAACNAgAAjQMAAI0EAACNBQAAjQcAAI0JAACNCgAAjQsAAI0NAACNDgAAjU0AAI1PAACNUQAAjVMAAI1WAACNVwAAjVgAAI1ZAACNWgAAjVwAAI1eAACNXwAAjWAAAI1iAACNYwAAjaIAAI2kAACNpwAAjakAAI2sAACNrQAAja4AAI2vAACNsAAAjbIAAI20AACNtQAAjbYAAI24AACNuQAAjfgAAI36AACN/AAAjf4AAI4BAACOAgAAjgMAAI4EAACOBQAAjgcAAI4JAACOCgAAjgsAAI4NAACODgAAjk0AAI5PAACOUQAAjlMAAI5WAACOVwAAjlgAAI5ZAACOWgAAjlwAAI5eAACOXwAAjmAAAI5iAACOYwAAjqIAAI6kAACOpgAAjqgAAI6rAACOrAAAjq0AAI6uAACOrwAAjrEAAI6zAACOtAAAjrUAAI63AACOuAAAjwMAAI8mAACPRgAAj2YAAI9oAACPagAAj2wAAI9uAACPcAAAj3EAAI9yAACPdQAAj3YAAI94AACPeQAAj3wAAI9+AACPfwAAj4AAAI+DAACPhAAAj4kAAI+WAACPmwAAj50AAI+fAACPpAAAj6cAAI+qAACPrAAAj9EAAI/1AACQHAAAkEAAAJBDAACQRQAAkEcAAJBJAACQSwAAkE0AAJBOAACQUQAAkF4AAJBvAACQcQAAkHMAAJB1AACQdwAAkHkAAJB7AACQfQAAkH8AAJCQAACQkwAAkJYAAJCZAACQnAAAkJ8AAJCiAACQpQAAkKgAAJCqAACQ6QAAkOsAAJDtAACQ7wAAkPIAAJDzAACQ9AAAkPUAAJD2AACQ+AAAkPoAAJD7AACQ/AAAkP4AAJD/AACRPgAAkUAAAJFCAACRRAAAkUcAAJFIAACRSQAAkUoAAJFLAACRTQAAkU8AAJFQAACRUQAAkVMAAJFUAACRkwAAkZUAAJGYAACRmgAAkZ0AAJGeAACRnwAAkaAAAJGhAACRowAAkaUAAJGmAACRpwAAkakAAJGqAACRtwAAkbgAAJG5AACRuwAAkfoAAJH8AACR/gAAkgAAAJIDAACSBAAAkgUAAJIGAACSBwAAkgkAAJILAACSDAAAkg0AAJIPAACSEAAAkk8AAJJRAACSUwAAklUAAJJYAACSWQAAkloAAJJbAACSXAAAkl4AAJJgAACSYQAAkmIAAJJkAACSZQAAkqQAAJKmAACSqAAAkqoAAJKtAACSrgAAkq8AAJKwAACSsQAAkrMAAJK1AACStgAAkrcAAJK5AACSugAAkvkAAJL7AACS/QAAkv8AAJMCAACTAwAAkwQAAJMFAACTBgAAkwgAAJMKAACTCwAAkwwAAJMOAACTDwAAk04AAJNQAACTUgAAk1QAAJNXAACTWAAAk1kAAJNaAACTWwAAk10AAJNfAACTYAAAk2EAAJNjAACTZAAAk4kAAJOtAACT1AAAk/gAAJP7AACT/QAAk/8AAJQBAACUAwAAlAUAAJQGAACUCQAAlBYAAJQlAACUJwAAlCkAAJQrAACULQAAlC8AAJQxAACUMwAAlEIAAJRFAACUSAAAlEsAAJROAACUUQAAlFQAAJRXAACUWQAAlJgAAJSaAACUnAAAlJ4AAJShAACUogAAlKMAAJSkAACUpQAAlKcAAJSpAACUqgAAlKsAAJStAACUrgAAlO0AAJTvAACU8QAAlPMAAJT2AACU9wAAlPgAAJT5AACU+gAAlPwAAJT+AACU/wAAlQAAAJUCAACVAwAAlUIAAJVEAACVRgAAlUgAAJVLAACVTAAAlU0AAJVOAACVTwAAlVEAAJVTAACVVAAAlVUAAJVXAACVWAAAlZcAAJWZAACVmwAAlZ0AAJWgAACVoQAAlaIAAJWjAACVpAAAlaYAAJWoAACVqQAAlaoAAJWsAACVrQAAlewAAJXuAACV8AAAlfIAAJX1AACV9gAAlfcAAJX4AACV+QAAlfsAAJX9AACV/gAAlf8AAJYBAACWAgAAlkEAAJZDAACWRQAAlkcAAJZKAACWSwAAlkwAAJZNAACWTgAAllAAAJZSAACWUwAAllQAAJZWAACWVwAAlpYAAJaYAACWmgAAlpwAAJafAACWoAAAlqEAAJaiAACWowAAlqUAAJanAACWqAAAlqkAAJarAACWrAAAlvcAAJcaAACXOgAAl1oAAJdcAACXXgAAl2AAAJdiAACXZAAAl2UAAJdmAACXaQAAl2oAAJdsAACXbQAAl28AAJdxAACXcgAAl3MAAJd2AACXdwAAl3wAAJeJAACXjgAAl5AAAJeSAACXlwAAl5oAAJedAACXnwAAl8QAAJfoAACYDwAAmDMAAJg2AACYOAAAmDoAAJg8AACYPgAAmEAAAJhBAACYRAAAmFEAAJhiAACYZAAAmGYAAJhoAACYagAAmGwAAJhuAACYcAAAmHIAAJiDAACYhgAAmIkAAJiMAACYjwAAmJIAAJiVAACYmAAAmJsAAJidAACY3AAAmN4AAJjgAACY4gAAmOUAAJjmAACY5wAAmOgAAJjpAACY6wAAmO0AAJjuAACY7wAAmPEAAJjyAACZMQAAmTMAAJk1AACZNwAAmToAAJk7AACZPAAAmT0AAJk+AACZQAAAmUIAAJlDAACZRAAAmUYAAJlHAACZhgAAmYgAAJmLAACZjQAAmZAAAJmRAACZkgAAmZMAAJmUAACZlgAAmZgAAJmZAACZmgAAmZwAAJmdAACZqgAAmasAAJmsAACZrgAAme0AAJnvAACZ8QAAmfMAAJn2AACZ9wAAmfgAAJn5AACZ+gAAmfwAAJn+AACZ/wAAmgAAAJoCAACaAwAAmkIAAJpEAACaRgAAmkgAAJpLAACaTAAAmk0AAJpOAACaTwAAmlEAAJpTAACaVAAAmlUAAJpXAACaWAAAmpcAAJqZAACamwAAmp0AAJqgAACaoQAAmqIAAJqjAACapAAAmqYAAJqoAACaqQAAmqoAAJqsAACarQAAmuwAAJruAACa8AAAmvIAAJr1AACa9gAAmvcAAJr4AACa+QAAmvsAAJr9AACa/gAAmv8AAJsBAACbAgAAm0EAAJtDAACbRQAAm0cAAJtKAACbSwAAm0wAAJtNAACbTgAAm1AAAJtSAACbUwAAm1QAAJtWAACbVwAAm3wAAJugAACbxwAAm+sAAJvuAACb8AAAm/IAAJv0AACb9gAAm/gAAJv5AACb/AAAnAkAAJwYAACcGgAAnBwAAJweAACcIAAAnCIAAJwkAACcJgAAnDUAAJw4AACcOwAAnD4AAJxBAACcRAAAnEcAAJxKAACcTAAAnIsAAJyNAACcjwAAnJEAAJyUAACclQAAnJYAAJyXAACcmAAAnJoAAJycAACcnQAAnJ4AAJygAACcoQAAnOAAAJziAACc5AAAnOYAAJzpAACc6gAAnOsAAJzsAACc7QAAnO8AAJzxAACc8gAAnPMAAJz1AACc9gAAnTUAAJ03AACdOQAAnTsAAJ0+AACdPwAAnUAAAJ1BAACdQgAAnUQAAJ1GAACdRwAAnUgAAJ1KAACdSwAAnYoAAJ2MAACdjgAAnZAAAJ2TAACdlAAAnZUAAJ2WAACdlwAAnZkAAJ2bAACdnAAAnZ0AAJ2fAACdoAAAnd8AAJ3hAACd4wAAneUAAJ3oAACd6QAAneoAAJ3rAACd7AAAne4AAJ3wAACd8QAAnfIAAJ30AACd9QAAnjQAAJ42AACeOAAAnjoAAJ49AACePgAAnj8AAJ5AAACeQQAAnkMAAJ5FAACeRgAAnkcAAJ5JAACeSgAAnokAAJ6LAACejQAAno8AAJ6SAACekwAAnpQAAJ6VAACelgAAnpgAAJ6aAACemwAAnpwAAJ6eAACenwAAnuoAAJ8NAACfLQAAn00AAJ9PAACfUQAAn1MAAJ9VAACfVwAAn1gAAJ9ZAACfXAAAn10AAJ9fAACfYAAAn2IAAJ9kAACfZQAAn2YAAJ9pAACfagAAn28AAJ98AACfgQAAn4MAAJ+FAACfigAAn40AAJ+QAACfkgAAn7cAAJ/bAACgAgAAoCYAAKApAACgKwAAoC0AAKAvAACgMQAAoDMAAKA0AACgNwAAoEQAAKBVAACgVwAAoFkAAKBbAACgXQAAoF8AAKBhAACgYwAAoGUAAKB2AACgeQAAoHwAAKB/AACgggAAoIUAAKCIAACgiwAAoI4AAKCQAACgzwAAoNEAAKDTAACg1QAAoNgAAKDZAACg2gAAoNsAAKDcAACg3gAAoOAAAKDhAACg4gAAoOQAAKDlAAChJAAAoSYAAKEoAAChKgAAoS0AAKEuAAChLwAAoTAAAKExAAChMwAAoTUAAKE2AAChNwAAoTkAAKE6AACheQAAoXsAAKF+AAChgAAAoYMAAKGEAAChhQAAoYYAAKGHAAChiQAAoYsAAKGMAAChjQAAoY8AAKGQAAChnQAAoZ4AAKGfAAChoQAAoeAAAKHiAACh5AAAoeYAAKHpAACh6gAAoesAAKHsAACh7QAAoe8AAKHxAACh8gAAofMAAKH1AACh9gAAojUAAKI3AACiOQAAojsAAKI+AACiPwAAokAAAKJBAACiQgAAokQAAKJGAACiRwAAokgAAKJKAACiSwAAoooAAKKMAACijgAAopAAAKKTAACilAAAopUAAKKWAACilwAAopkAAKKbAACinAAAop0AAKKfAACioAAAot8AAKLhAACi4wAAouUAAKLoAACi6QAAouoAAKLrAACi7AAAou4AAKLwAACi8QAAovIAAKL0AACi9QAAozQAAKM2AACjOAAAozoAAKM9AACjPgAAoz8AAKNAAACjQQAAo0MAAKNFAACjRgAAo0cAAKNJAACjSgAAo28AAKOTAACjugAAo94AAKPhAACj4wAAo+UAAKPnAACj6QAAo+sAAKPsAACj7wAAo/wAAKQLAACkDQAApA8AAKQRAACkEwAApBUAAKQXAACkGQAApCgAAKQrAACkLgAApDEAAKQ0AACkNwAApDoAAKQ9AACkPwAApH4AAKSAAACkggAApIQAAKSHAACkiAAApIkAAKSKAACkiwAApI0AAKSPAACkkAAApJEAAKSTAACklAAApNMAAKTVAACk1wAApNkAAKTcAACk3QAApN4AAKTfAACk4AAApOIAAKTkAACk5QAApOYAAKToAACk6QAApSgAAKUqAAClLAAApS4AAKUxAAClMgAApTMAAKU0AAClNQAApTcAAKU5AAClOgAApTsAAKU9AAClPgAApX0AAKV/AAClgQAApYMAAKWGAAClhwAApYgAAKWJAACligAApYwAAKWOAACljwAApZAAAKWSAAClkwAApdIAAKXUAACl1gAApdgAAKXbAACl3AAApd0AAKXeAACl3wAApeEAAKXjAACl5AAApeUAAKXnAACl6AAApicAAKYpAACmKwAApi0AAKYwAACmMQAApjIAAKYzAACmNAAApjYAAKY4AACmOQAApjoAAKY8AACmPQAApnwAAKZ+AACmgAAApoIAAKaFAACmhgAApocAAKaIAACmiQAAposAAKaNAACmjgAApo8AAKaRAACmkgAApt0AAKcAAACnIAAAp0AAAKdCAACnRAAAp0YAAKdIAACnSgAAp0sAAKdMAACnTwAAp1AAAKdSAACnUwAAp1UAAKdXAACnWAAAp1kAAKdcAACnXQAAp2IAAKdvAACndAAAp3YAAKd4AACnfQAAp4AAAKeDAACnhQAAp6oAAKfOAACn9QAAqBkAAKgcAACoHgAAqCAAAKgiAACoJAAAqCYAAKgnAACoKgAAqDcAAKhIAACoSgAAqEwAAKhOAACoUAAAqFIAAKhUAACoVgAAqFgAAKhpAACobAAAqG8AAKhyAACodQAAqHgAAKh7AACofgAAqIEAAKiDAACowgAAqMQAAKjGAACoyAAAqMsAAKjMAACozQAAqM4AAKjPAACo0QAAqNMAAKjUAACo1QAAqNcAAKjYAACpFwAAqRkAAKkbAACpHQAAqSAAAKkhAACpIgAAqSMAAKkkAACpJgAAqSgAAKkpAACpKgAAqSwAAKktAACpbAAAqW4AAKlxAACpcwAAqXYAAKl3AACpeAAAqXkAAKl6AACpfAAAqX4AAKl/AACpgAAAqYIAAKmDAACpkAAAqZEAAKmSAACplAAAqdMAAKnVAACp1wAAqdkAAKncAACp3QAAqd4AAKnfAACp4AAAqeIAAKnkAACp5QAAqeYAAKnoAACp6QAAqigAAKoqAACqLAAAqi4AAKoxAACqMgAAqjMAAKo0AACqNQAAqjcAAKo5AACqOgAAqjsAAKo9AACqPgAAqn0AAKp/AACqgQAAqoMAAKqGAACqhwAAqogAAKqJAACqigAAqowAAKqOAACqjwAAqpAAAKqSAACqkwAAqtIAAKrUAACq1gAAqtgAAKrbAACq3AAAqt0AAKreAACq3wAAquEAAKrjAACq5AAAquUAAKrnAACq6AAAqycAAKspAACrKwAAqy0AAKswAACrMQAAqzIAAKszAACrNAAAqzYAAKs4AACrOQAAqzoAAKs8AACrPQAAq2IAAKuGAACrrQAAq9EAAKvUAACr1gAAq9gAAKvaAACr3AAAq94AAKvfAACr4gAAq+8AAKv+AACsAAAArAIAAKwEAACsBgAArAgAAKwKAACsDAAArBsAAKweAACsIQAArCQAAKwnAACsKgAArC0AAKwwAACsMgAArHEAAKxzAACsdQAArHcAAKx6AACsewAArHwAAKx9AACsfgAArIAAAKyCAACsgwAArIQAAKyGAACshwAArMYAAKzIAACsygAArMwAAKzPAACs0AAArNEAAKzSAACs0wAArNUAAKzXAACs2AAArNkAAKzbAACs3AAArRsAAK0dAACtHwAArSEAAK0kAACtJQAArSYAAK0nAACtKAAArSoAAK0sAACtLQAArS4AAK0wAACtMQAArXAAAK1yAACtdAAArXYAAK15AACtegAArXsAAK18AACtfQAArX8AAK2BAACtggAArYMAAK2FAACthgAArcUAAK3HAACtyQAArcsAAK3OAACtzwAArdAAAK3RAACt0gAArdQAAK3WAACt1wAArdgAAK3aAACt2wAArhoAAK4cAACuHgAAriAAAK4jAACuJAAAriUAAK4mAACuJwAArikAAK4rAACuLAAAri0AAK4vAACuMAAArm8AAK5xAACucwAArnUAAK54AACueQAArnoAAK57AACufAAArn4AAK6AAACugQAAroIAAK6EAACuhQAAro4AAK6PAACukQAArtAAAK7SAACu1AAArtYAAK7YAACu2QAArtoAAK7bAACu3AAArt4AAK7gAACu4QAAruIAAK7kAACu5QAAryQAAK8mAACvKAAAryoAAK8sAACvLQAAry4AAK8vAACvMAAArzIAAK80AACvNQAArzYAAK84AACvOQAAr3gAAK96AACvfQAAr38AAK+BAACvggAAr4MAAK+EAACvhQAAr4cAAK+JAACvigAAr4sAAK+NAACvjgAAr9kAAK/8AACwHAAAsDwAALA+AACwQAAAsEIAALBEAACwRgAAsEcAALBIAACwSwAAsEwAALBOAACwTwAAsFEAALBTAACwVAAAsFUAALBYAACwWQAAsF4AALBrAACwcAAAsHIAALB0AACweQAAsHwAALB/AACwgQAAsKYAALDKAACw8QAAsRUAALEYAACxGgAAsRwAALEeAACxIAAAsSIAALEjAACxJgAAsTMAALFEAACxRgAAsUgAALFKAACxTAAAsU4AALFQAACxUgAAsVQAALFlAACxaAAAsWsAALFuAACxcQAAsXQAALF3AACxegAAsX0AALF/AACxvgAAscAAALHCAACxxAAAsccAALHIAACxyQAAscoAALHLAACxzQAAsc8AALHQAACx0QAAsdMAALHUAACyEwAAshUAALIXAACyGQAAshwAALIdAACyHgAAsh8AALIgAACyIgAAsiQAALIlAACyJgAAsigAALIpAACyaAAAsmoAALJtAACybwAAsnIAALJzAACydAAAsnUAALJ2AACyeAAAsnoAALJ7AACyfAAAsn4AALJ/AACyjAAAso0AALKOAACykAAAss8AALLRAACy0wAAstUAALLYAACy2QAAstoAALLbAACy3AAAst4AALLgAACy4QAAsuIAALLkAACy5QAAsyQAALMmAACzKAAAsyoAALMtAACzLgAAsy8AALMwAACzMQAAszMAALM1AACzNgAAszcAALM5AACzOgAAs3kAALN7AACzfQAAs38AALOCAACzgwAAs4QAALOFAACzhgAAs4gAALOKAACziwAAs4wAALOOAACzjwAAs84AALPQAACz0gAAs9QAALPXAACz2AAAs9kAALPaAACz2wAAs90AALPfAACz4AAAs+EAALPjAACz5AAAtCMAALQlAAC0JwAAtCkAALQsAAC0LQAAtC4AALQvAAC0MAAAtDIAALQ0AAC0NQAAtDYAALQ4AAC0OQA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A0Z8AANGiAADRowAA0aQAANGlAADRpgAA0agAANGqAADRqwAA0awAANGuAADRrwAA0bgAANG5AADRuwAA0foAANH8AADR/gAA0gAAANIDAADSBAAA0gUAANIGAADSBwAA0gkAANILAADSDAAA0g0AANIPAADSEAAA0k8AANJRAADSVAAA0lYAANJZAADSWgAA0lsAANJcAADSXQAA0l8AANJhAADSYgAA0mMAANJlAADSZgAA0m8AANJyAADSdQAA0ncAANKAAADShQAA0ogAANKLAADSjQAA0qIAANK9AADS/AAA0v4AANMAAADTAgAA0wUAANMGAADTBwAA0wgAANMJAADTCwAA0w0AANMOAADTDwAA0xEAANMSAADTUQAA01MAANNWAADTWAAA01sAANNcAADTXQAA014AANNfAADTYQAA02MAANNkAADTZQAA02cAANNoAADTcQAA03IAANN0AADTswAA07UAANO3AADTuQAA07wAANO9AADTvgAA078AANPAAADTwgAA08QAANPFAADTxgAA08gAANPJAADUCAAA1AoAANQNAADUDwAA1BIAANQTAADUFAAA1BUAANQWAADUGAAA1BoAANQbAADUHAAA1B4AANQfAADULAAA1C0AANQuAADUMAAA1G8AANRxAADUcwAA1HUAANR4AADUeQAA1HoAANR7AADUfAAA1H4AANSAAADUgQAA1IIAANSEAADUhQAA1MQAANTGAADUyQAA1MsAANTOAADUzwAA1NAAANTRAADU0gAA1NQAANTWAADU1wAA1NgAANTaAADU2wAA1OgAANT1AADVEgAA1RUAANUXAADVGgAA1R0AANUgAADVIwAA1SYAANUpAADVLAAA1S4AANUxAADVNAAA1TcAANU5AADVVgAA1VkAANVcAADVXwAA1WIAANVlAADVaAAA1WsAANVuAADVcQAA1XQAANV3AADVegAA1X0AANWAAADVggAA1Z0AANWxAADVxgAA1eIAANXpAADV9wAA1gMAANYMAADWIgAA1isAANY5AADWhAAA1qcAANbHAADW5wAA1ukAANbrAADW7QAA1u8AANbyAADW8wAA1vQAANb3AADW+AAA1voAANb7AADW/QAA1wAAANcBAADXAgAA1wUAANcGAADXCwAA1xgAANcdAADXHwAA1yEAANcmAADXKQAA1ywAANcuAADXUwAA13cAANeeAADXwgAA18UAANfHAADXyQAA18sAANfNAADXzwAA19AAANfTAADX4AAA1/EAANfzAADX9QAA1/cAANf5AADX+wAA1/0AANf/AADYAQAA2BIAANgVAADYGAAA2BsAANgeAADYIQAA2CQAANgnAADYKgAA2CwAANhrAADYbQAA2G8AANhxAADYdAAA2HUAANh2AADYdwAA2HgAANh6AADYfAAA2H0AANh+AADYgAAA2IEAANjAAADYwgAA2MQAANjGAADYyQAA2MoAANjLAADYzAAA2M0AANjPAADY0QAA2NIAANjTAADY1QAA2NYAANkVAADZFwAA2RoAANkcAADZHwAA2SAAANkhAADZIgAA2SMAANklAADZJwAA2SgAANkpAADZKwAA2SwAANk5AADZOgAA2TsAANk9AADZfAAA2X4AANmAAADZggAA2YUAANmGAADZhwAA2YgAANmJAADZiwAA2Y0AANmOAADZjwAA2ZEAANmSAADZ0QAA2dMAANnVAADZ1wAA2doAANnbAADZ3AAA2d0AANneAADZ4AAA2eIAANnjAADZ5AAA2eYAANnnAADaJgAA2igAANoqAADaLAAA2i8AANowAADaMQAA2jIAANozAADaNQAA2jcAANo4AADaOQAA2jsAANo8AADaewAA2n0AANp/AADagQAA2oQAANqFAADahgAA2ocAANqIAADaigAA2owAANqNAADajgAA2pAAANqRAADa0AAA2tIAANrUAADa1gAA2tkAANraAADa2wAA2twAANrdAADa3wAA2uEAANriAADa4wAA2uUAANrmAADbCwAA2y8AANtWAADbegAA230AANt/AADbgQAA24MAANuFAADbhwAA24gAANuLAADbmAAA26cAANupAADbqwAA260AANuvAADbsQAA27MAANu1AADbxAAA28cAANvKAADbzQAA29AAANvTAADb1gAA29kAANvbAADcGgAA3BwAANweAADcIAAA3CMAANwkAADcJQAA3CYAANwnAADcKQAA3CsAANwsAADcLQAA3C8AANwwAADcbwAA3HEAANxzAADcdQAA3HgAANx5AADcegAA3HsAANx8AADcfgAA3IAAANyBAADcggAA3IQAANyFAADcxAAA3MYAANzIAADcygAA3M0AANzOAADczwAA3NAAANzRAADc0wAA3NUAANzWAADc1wAA3NkAANzaAADdGQAA3RsAAN0dAADdHwAA3SIAAN0jAADdJAAA3SUAAN0mAADdKAAA3SoAAN0rAADdLAAA3S4AAN0vAADdbgAA3XAAAN1yAADddAAA3XcAAN14AADdeQAA3XoAAN17AADdfQAA3X8AAN2AAADdgQAA3YMAAN2EAADdwwAA3cUAAN3HAADdyQAA3cwAAN3NAADdzgAA3c8AAN3QAADd0gAA3dQAAN3VAADd1gAA3dgAAN3ZAADeGAAA3hoAAN4cAADeHgAA3iEAAN4iAADeIwAA3iQAAN4lAADeJwAA3ikAAN4qAADeKwAA3i0AAN4uAADeeQAA3pwAAN68AADe3AAA3t4AAN7gAADe4gAA3uQAAN7nAADe6AAA3ukAAN7sAADe7QAA3u8AAN7wAADe8gAA3vQAAN71AADe9gAA3vkAAN76AADe/wAA3wwAAN8RAADfEwAA3xUAAN8aAADfHQAA3yAAAN8iAADfRwAA32sAAN+SAADftgAA37kAAN+7AADfvQAA378AAN/BAADfwwAA38QAAN/HAADf1AAA3+UAAN/nAADf6QAA3+sAAN/tAADf7wAA3/EAAN/zAADf9QAA4AYAAOAJAADgDAAA4A8AAOASAADgFQAA4BgAAOAbAADgHgAA4CAAAOBfAADgYQAA4GMAAOBlAADgaAAA4GkAAOBqAADgawAA4GwAAOBuAADgcAAA4HEAAOByAADgdAAA4HUAAOC0AADgtgAA4LgAAOC6AADgvQAA4L4AAOC/AADgwAAA4MEAAODDAADgxQAA4MYAAODHAADgyQAA4MoAAOEJAADhCwAA4Q4AAOEQAADhEwAA4RQAAOEVAADhFgAA4RcAAOEZAADhGwAA4RwAAOEdAADhHwAA4SAAAOEtAADhLgAA4S8AAOExAADhcAAA4XIAAOF0AADhdgAA4XkAAOF6AADhewAA4XwAAOF9AADhfwAA4YEAAOGCAADhgwAA4YUAAOGGAADhxQAA4ccAAOHJAADhywAA4c4AAOHPAADh0AAA4dEAAOHSAADh1AAA4dYAAOHXAADh2AAA4doAAOHbAADiGgAA4hwAAOIeAADiIAAA4iMAAOIkAADiJQAA4iYAAOInAADiKQAA4isAAOIsAADiLQAA4i8AAOIwAADibwAA4nEAAOJzAADidQAA4ngAAOJ5AADiegAA4nsAAOJ8AADifgAA4oAAAOKBAADiggAA4oQAAOKFAADixAAA4sYAAOLIAADiygAA4s0AAOLOAADizwAA4tAAAOLRAADi0wAA4tUAAOLWAADi1wAA4tkAAOLaAADi/wAA4yMAAONKAADjbgAA43EAAONzAADjdQAA43cAAON5AADjewAA43wAAON/AADjjAAA45sAAOOdAADjnwAA46EAAOOjAADjpQAA46cAAOOpAADjuAAA47sAAOO+AADjwQAA48QAAOPHAADjygAA480AAOPPAADkDgAA5BAAAOQSAADkFAAA5BcAAOQYAADkGQAA5BoAAOQbAADkHQAA5B8AAOQgAADkIQAA5CMAAOQkAADkYwAA5GUAAORnAADkaQAA5GwAAORtAADkbgAA5G8AAORwAADkcgAA5HQAAOR1AADkdgAA5HgAAOR5AADkuAAA5LoAAOS8AADkvgAA5MEAAOTCAADkwwAA5MQAAOTFAADkxwAA5MkAAOTKAADkywAA5M0AAOTOAADlDQAA5Q8AAOURAADlEwAA5RYAAOUXAADlGAAA5RkAAOUaAADlHAAA5R4AAOUfAADlIAAA5SIAAOUjAADlYgAA5WQAAOVmAADlaAAA5WsAAOVsAADlbQAA5W4AAOVvAADlcQAA5XMAAOV0AADldQAA5XcAAOV4AADltwAA5bkAAOW7AADlvQAA5cAAAOXBAADlwgAA5cMAAOXEAADlxgAA5cgAAOXJAADlygAA5cwAAOXNAADmDAAA5g4AAOYQAADmEgAA5hUAAOYWAADmFwAA5hgAAOYZAADmGwAA5h0AAOYeAADmHwAA5iEAAOYiAADmbQAA5pAAAOawAADm0AAA5tIAAObUAADm1gAA5tgAAObbAADm3AAA5t0AAObgAADm4QAA5uMAAObkAADm5gAA5ukAAObqAADm6wAA5u4AAObvAADm9AAA5wEAAOcGAADnCAAA5woAAOcPAADnEgAA5xUAAOcXAADnPAAA52AAAOeHAADnqwAA564AAOewAADnsgAA57QAAOe2AADnuAAA57kAAOe8AADnyQAA59oAAOfcAADn3gAA5+AAAOfiAADn5AAA5+YAAOfoAADn6gAA5/sAAOf+AADoAQAA6AQAAOgHAADoCgAA6A0AAOgQAADoEwAA6BUAAOhUAADoVgAA6FgAAOhaAADoXQAA6F4AAOhfAADoYAAA6GEAAOhjAADoZQAA6GYAAOhnAADoaQAA6GoAAOipAADoqwAA6K0AAOivAADosgAA6LMAAOi0AADotQAA6LYAAOi4AADougAA6LsAAOi8AADovgAA6L8AAOj+AADpAAAA6QMAAOkFAADpCAAA6QkAAOkKAADpCwAA6QwAAOkOAADpEAAA6REAAOkSAADpFAAA6RUAAOkiAADpIwAA6SQAAOkmAADpZQAA6WcAAOlpAADpawAA6W4AAOlvAADpcAAA6XEAAOlyAADpdAAA6XYAAOl3AADpeAAA6XoAAOl7AADpugAA6bwAAOm+AADpwAAA6cMAAOnEAADpxQAA6cYAAOnHAADpyQAA6csAAOnMAADpzQAA6c8AAOnQAADqDwAA6hEAAOoTAADqFQAA6hgAAOoZAADqGgAA6hsAAOocAADqHgAA6iAAAOohAADqIgAA6iQAAOolAADqZAAA6mYAAOpoAADqagAA6m0AAOpuAADqbwAA6nAAAOpxAADqcwAA6nUAAOp2AADqdwAA6nkAAOp6AADquQAA6rsAAOq9AADqvwAA6sIAAOrDAADqxAAA6sUAAOrGAADqyAAA6soAAOrLAADqzAAA6s4AAOrPAADq9AAA6xgAAOs/AADrYwAA62YAAOtoAADragAA62wAAOtuAADrcAAA63EAAOt0AADrgQAA65AAAOuSAADrlAAA65YAAOuYAADrmgAA65wAAOueAADrrQAA67AAAOuzAADrtgAA67kAAOu8AADrvwAA68IAAOvEAADsAwAA7AUAAOwHAADsCQAA7AwAAOwNAADsDgAA7A8AAOwQAADsEgAA7BQAAOwVAADsFgAA7BgAAOwZAADsWAAA7FoAAOxcAADsXgAA7GEAAOxiAADsYwAA7GQAAOxlAADsZwAA7GkAAOxqAADsawAA7G0AAOxuAADsrQAA7K8AAOyxAADsswAA7LYAAOy3AADsuAAA7LkAAOy6AADsvAAA7L4AAOy/AADswAAA7MIAAOzDAADtAgAA7QQAAO0GAADtCAAA7QsAAO0MAADtDQAA7Q4AAO0PAADtEQAA7RMAAO0UAADtFQAA7RcAAO0YAADtVwAA7VkAAO1bAADtXQAA7WAAAO1hAADtYgAA7WMAAO1kAADtZgAA7WgAAO1pAADtagAA7WwAAO1tAADtrAAA7a4AAO2wAADtsgAA7bUAAO22AADttwAA7bgAAO25AADtuwAA7b0AAO2+AADtvwAA7cEAAO3CAADuAQAA7gMAAO4FAADuBwAA7goAAO4LAADuDAAA7g0AAO4OAADuEAAA7hIAAO4TAADuFAAA7hYAAO4XAADuYgAA7oUAAO6lAADuxQAA7scAAO7JAADuywAA7s0AAO7QAADu0QAA7tIAAO7VAADu1gAA7tgAAO7ZAADu2wAA7t4AAO7fAADu4AAA7uMAAO7kAADu6QAA7vYAAO77AADu/QAA7v8AAO8EAADvBwAA7woAAO8MAADvMQAA71UAAO98AADvoAAA76MAAO+lAADvpwAA76kAAO+rAADvrQAA764AAO+xAADvvgAA788AAO/RAADv0wAA79UAAO/XAADv2QAA79sAAO/dAADv3wAA7/AAAO/zAADv9gAA7/kAAO/8AADv/wAA8AIAAPAFAADwCAAA8AoAAPBJAADwSwAA8E0AAPBPAADwUgAA8FMAAPBUAADwVQAA8FYAAPBYAADwWgAA8FsAAPBcAADwXgAA8F8AAPCeAADwoAAA8KIAAPCkAADwpwAA8KgAAPCpAADwqgAA8KsAAPCtAADwrwAA8LAAAPCxAADwswAA8LQAAPDzAADw9QAA8PgAAPD6AADw/QAA8P4AAPD/AADxAAAA8QEAAPEDAADxBQAA8QYAAPEHAADxCQAA8QoAAPEXAADxGAAA8RkAAPEbAADxWgAA8VwAAPFeAADxYAAA8WMAAPFkAADxZQAA8WYAAPFnAADxaQAA8WsAAPFsAADxbQAA8W8AAPFwAADxrwAA8bEAAPGzAADxtQAA8bgAAPG5AADxugAA8bsAAPG8AADxvgAA8cAAAPHBAADxwgAA8cQAAPHFAADyBAAA8gYAAPIIAADyCgAA8g0AAPIOAADyDwAA8hAAAPIRAADyEwAA8hUAAPIWAADyFwAA8hkAAPIaAADyWQAA8lsAAPJdAADyXwAA8mIAAPJjAADyZAAA8mUAAPJmAADyaAAA8moAAPJrAADybAAA8m4AAPJvAADyrgAA8rAAAPKyAADytAAA8rcAAPK4AADyuQAA8roAAPK7AADyvQAA8r8AAPLAAADywQAA8sMAAPLEAADy6QAA8w0AAPM0AADzWAA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BDy0AAQ9UAAEPeAABD3sAAQ99AAEPfwABD4EAAQ+DAAEPhQABD4YAAQ+JAAEPlgABD6cAAQ+pAAEPqwABD60AAQ+vAAEPsQABD7MAAQ+1AAEPtwABD8gAAQ/LAAEPzgABD9EAAQ/UAAEP1wABD9oAAQ/dAAEP4AABD+IAARAhAAEQIwABECUAARAnAAEQKgABECsAARAsAAEQLQABEC4AARAwAAEQMgABEDMAARA0AAEQNgABEDcAARB2AAEQeAABEHoAARB8AAEQfwABEIAAARCBAAEQggABEIMAARCFAAEQhwABEIgAARCJAAEQiwABEIwAARDLAAEQzQABENAAARDSAAEQ1QABENYAARDXAAEQ2AABENkAARDbAAEQ3QABEN4AARDfAAEQ4QABEOIAARDvAAEQ8AABEPEAARDzAAERMgABETQAARE2AAEROAABETsAARE8AAERPQABET4AARE/AAERQQABEUMAARFEAAERRQABEUcAARFIAAERhwABEYkAARGLAAERjQABEZAAARGRAAERkgABEZMAARGUAAERlgABEZgAARGZAAERmgABEZwAARGdAAER3AABEd4AARHgAAER4gABEeUAARHmAAER5wABEegAARHpAAER6wABEe0AARHuAAER7wABEfEAARHyAAESMQABEjMAARI1AAESNwABEjoAARI7AAESPAABEj0AARI+AAESQAABEkIAARJDAAESRAABEkYAARJHAAEShgABEogAARKKAAESjAABEo8AARKQAAESkQABEpIAARKTAAESlQABEpcAARKYAAESmQABEpsAARKcAAESwQABEuUAARMMAAETMAABEzMAARM1AAETNwABEzkAARM7AAETPQABEz4AARNBAAETTgABE10AARNfAAETYQABE2MAARNlAAETZwABE2kAARNrAAETegABE30AAROAAAETgwABE4YAAROJAAETjAABE48AARORAAET0AABE9IAARPUAAET1gABE9kAARPaAAET2wABE9wAARPdAAET3wABE+EAARPiAAET4wABE+UAARPmAAEUJQABFCcAARQpAAEUKwABFC4AARQvAAEUMAABFDEAARQyAAEUNAABFDYAARQ3AAEUOAABFDoAARQ7AAEUegABFHwAARR+AAEUgAABFIMAARSEAAEUhQABFIYAARSHAAEUiQABFIsAARSMAAEUjQABFI8AARSQAAEUzwABFNEAARTUAAEU1gABFNkAARTaAAEU2wABFNwAARTdAAEU3wABFOEAARTiAAEU4wABFOUAARTmAAEVJQABFScAARUpAAEVKwABFS4AARUvAAEVMAABFTEAARUyAAEVNAABFTYAARU3AAEVOAABFToAARU7AAEVegABFXwAARV+AAEVgAABFYMAARWEAAEVhQABFYYAARWHAAEViQABFYsAARWMAAEVjQABFY8AARWQAAEVzwABFdEAARXTAAEV1QABFdgAARXZAAEV2gABFdsAARXcAAEV3gABFeAAARXhAAEV4gABFeQAARXlAAEWMAABFlMAARZzAAEWkwABFpUAARaXAAEWmQABFpsAARaeAAEWnwABFqAAARajAAEWpAABFqYAARanAAEWqQABFqwAARatAAEWrgABFrEAARayAAEWtwABFsQAARbJAAEWywABFs0AARbSAAEW1QABFtgAARbaAAEW/wABFyMAARdKAAEXbgABF3EAARdzAAEXdQABF3cAARd5AAEXewABF3wAARd/AAEXjAABF50AARefAAEXoQABF6MAARelAAEXpwABF6kAARerAAEXrQABF74AARfBAAEXxAABF8cAARfKAAEXzQABF9AAARfTAAEX1gABF9gAARgXAAEYGQABGBsAARgdAAEYIAABGCEAARgiAAEYIwABGCQAARgmAAEYKAABGCkAARgqAAEYLAABGC0AARhsAAEYbgABGHAAARhyAAEYdQABGHYAARh3AAEYeAABGHkAARh7AAEYfQABGH4AARh/AAEYgQABGIIAARjBAAEYwwABGMYAARjIAAEYywABGMwAARjNAAEYzgABGM8AARjRAAEY0wABGNQAARjVAAEY1wABGNgAARjlAAEY5gABGOcAARjpAAEZKAABGSoAARksAAEZLgABGTEAARkyAAEZMwABGTQAARk1AAEZNwABGTkAARk6AAEZOwABGT0AARk+AAEZfQABGX8AARmBAAEZgwABGYYAARmHAAEZiAABGYkAARmKAAEZjAABGY4AARmPAAEZkAABGZIAARmTAAEZ0gABGdQAARnWAAEZ2AABGdsAARncAAEZ3QABGd4AARnfAAEZ4QABGeMAARnkAAEZ5QABGecAARnoAAEaJwABGikAARorAAEaLQABGjAAARoxAAEaMgABGjMAARo0AAEaNgABGjgAARo5AAEaOgABGjwAARo9AAEafAABGn4AARqAAAEaggABGoUAARqGAAEahwABGogAARqJAAEaiwABGo0AARqOAAEajwABGpEAARqSAAEatwABGtsAARsCAAEbJgABGykAARsrAAEbLQABGy8AARsxAAEbMwABGzQAARs3AAEbRAABG1MAARtVAAEbVwABG1kAARtbAAEbXQABG18AARthAAEbcAABG3MAARt2AAEbeQABG3wAARt/AAEbggABG4UAARuHAAEbxgABG8gAARvKAAEbzAABG88AARvQAAEb0QABG9IAARvTAAEb1QABG9cAARvYAAEb2QABG9sAARvcAAEcGwABHB0AARwfAAEcIQABHCQAARwlAAEcJgABHCcAARwoAAEcKgABHCwAARwtAAEcLgABHDAAARwxAAEccAABHHIAARx0AAEcdgABHHkAARx6AAEcewABHHwAARx9AAEcfwABHIEAARyCAAEcgwABHIUAARyGAAEcxQABHMcAARzKAAEczAABHM8AARzQAAEc0QABHNIAARzTAAEc1QABHNcAARzYAAEc2QABHNsAARzcAAEc3wABHR4AAR0gAAEdIgABHSQAAR0nAAEdKAABHSkAAR0qAAEdKwABHS0AAR0vAAEdMAABHTEAAR0zAAEdNAABHXMAAR11AAEdeAABHXoAAR19AAEdfgABHX8AAR2AAAEdgQABHYMAAR2FAAEdhgABHYcAAR2JAAEdigABHaYAAR3lAAEd5wABHekAAR3rAAEd7gABHe8AAR3wAAEd8QABHfIAAR30AAEd9gABHfcAAR34AAEd+gABHfsAAR5GAAEeaQABHokAAR6pAAEeqwABHq0AAR6vAAEesQABHrQAAR61AAEetgABHrkAAR66AAEevAABHr0AAR6/AAEewQABHsIAAR7DAAEexgABHscAAR7MAAEe2QABHt4AAR7gAAEe4gABHucAAR7qAAEe7QABHu8AAR8UAAEfOAABH18AAR+DAAEfhgABH4gAAR+KAAEfjAABH44AAR+QAAEfkQABH5QAAR+hAAEfsgABH7QAAR+2AAEfuAABH7oAAR+8AAEfvgABH8AAAR/CAAEf0wABH9YAAR/ZAAEf3AABH98AAR/iAAEf5QABH+gAAR/rAAEf7QABICwAASAuAAEgMAABIDIAASA1AAEgNgABIDcAASA4AAEgOQABIDsAASA9AAEgPgABID8AASBBAAEgQgABIIEAASCDAAEghQABIIcAASCKAAEgiwABIIwAASCNAAEgjgABIJAAASCSAAEgkwABIJQAASCWAAEglwABINYAASDYAAEg2wABIN0AASDgAAEg4QABIOIAASDjAAEg5AABIOYAASDoAAEg6QABIOoAASDsAAEg7QABIPoAASD7AAEg/AABIP4AASE9AAEhPwABIUEAASFDAAEhRgABIUcAASFIAAEhSQABIUoAASFMAAEhTgABIU8AASFQAAEhUgABIVMAASGSAAEhlAABIZYAASGYAAEhmwABIZwAASGdAAEhngABIZ8AASGhAAEhowABIaQAASGlAAEhpwABIagAASHnAAEh6QABIesAASHtAAEh8AABIfEAASHyAAEh8wABIfQAASH2AAEh+AABIfkAASH6AAEh/AABIf0AASI8AAEiPgABIkAAASJCAAEiRQABIkYAASJHAAEiSAABIkkAASJLAAEiTQABIk4AASJPAAEiUQABIlIAASKRAAEikwABIpUAASKXAAEimgABIpsAASKcAAEinQABIp4AASKgAAEiogABIqMAASKkAAEipgABIqcAASLMAAEi8AABIxcAASM7AAEjPgABI0AAASNCAAEjRAABI0YAASNIAAEjSQABI0wAASNZAAEjaAABI2oAASNsAAEjbgABI3AAASNyAAEjdAABI3YAASOFAAEjiAABI4sAASOOAAEjkQABI5QAASOXAAEjmgABI5wAASPbAAEj3QABI98AASPhAAEj5AABI+UAASPmAAEj5wABI+gAASPqAAEj7AABI+0AASPuAAEj8AABI/EAASQwAAEkMgABJDQAASQ2AAEkOQABJDoAASQ7AAEkPAABJD0AASQ/AAEkQQABJEIAASRDAAEkRQABJEYAASSFAAEkhwABJIkAASSLAAEkjgABJI8AASSQAAEkkQABJJIAASSUAAEklgABJJcAASSYAAEkmgABJJsAASTaAAEk3AABJN4AASTgAAEk4wABJOQAASTlAAEk5gABJOcAASTpAAEk6wABJOwAASTtAAEk7wABJPAAASUvAAElMQABJTMAASU1AAElOAABJTkAASU6AAElOwABJTwAASU+AAElQAABJUEAASVCAAElRAABJUUAASWEAAElhgABJYgAASWKAAEljQABJY4AASWPAAElkAABJZEAASWTAAEllQABJZYAASWXAAElmQABJZoAASXZAAEl2wABJd0AASXfAAEl4gABJeMAASXkAAEl5QABJeYAASXoAAEl6gABJesAASXsAAEl7gABJe8AASY6AAEmXQABJn0AASadAAEmnwABJqEAASajAAEmpQABJqgAASapAAEmqgABJq0AASauAAEmsAABJrEAASazAAEmtgABJrcAASa4AAEmuwABJrwAASbBAAEmzgABJtMAASbVAAEm1wABJtwAASbfAAEm4gABJuQAAScJAAEnLQABJ1QAASd4AAEnewABJ30AASd/AAEngQABJ4MAASeFAAEnhgABJ4kAASeWAAEnpwABJ6kAASerAAEnrQABJ68AASexAAEnswABJ7UAASe3AAEnyAABJ8sAASfOAAEn0QABJ9QAASfXAAEn2gABJ90AASfgAAEn4gABKCEAASgjAAEoJQABKCcAASgqAAEoKwABKCwAASgtAAEoLgABKDAAASgyAAEoMwABKDQAASg2AAEoNwABKHYAASh4AAEoegABKHwAASh/AAEogAABKIEAASiCAAEogwABKIUAASiHAAEoiAABKIkAASiLAAEojAABKMsAASjNAAEo0AABKNIAASjVAAEo1gABKNcAASjYAAEo2QABKNsAASjdAAEo3gABKN8AASjhAAEo4gABKO8AASjwAAEo8QABKPMAASkyAAEpNAABKTYAASk4AAEpOwABKTwAASk9AAEpPgABKT8AASlBAAEpQwABKUQAASlFAAEpRwABKUgAASmHAAEpiQABKYsAASmNAAEpkAABKZEAASmSAAEpkwABKZQAASmWAAEpmAABKZkAASmaAAEpnAABKZ0AASncAAEp3gABKeAAASniAAEp5QABKeYAASnnAAEp6AABKekAASnrAAEp7QABKe4AASnvAAEp8QABKfIAASoxAAEqMwABKjUAASo3AAEqOgABKjsAASo8AAEqPQABKj4AASpAAAEqQgABKkMAASpEAAEqRgABKkcAASqGAAEqiAABKooAASqMAAEqjwABKpAAASqRAAEqkgABKpMAASqVAAEqlwABKpgAASqZAAEqmwABKpwAASrBAAEq5QABKwwAASswAAErMwABKzUAASs3AAErOQABKzsAASs9AAErPgABK0EAAStOAAErXQABK18AASthAAErYwABK2UAAStnAAEraQABK2sAASt6AAErfQABK4AAASuDAAErhgABK4kAASuMAAErjwABK5EAASvQAAEr0gABK9QAASvWAAEr2QABK9oAASvbAAEr3AABK90AASvfAAEr4QABK+IAASvjAAEr5QABK+YAASwlAAEsJwABLCkAASwrAAEsLgABLC8AASwwAAEsMQABLDIAASw0AAEsNgABLDcAASw4AAEsOgABLDsAASx6AAEsfAABLH4AASyAAAEsgwABLIQAASyFAAEshgABLIcAASyJAAEsiwABLIwAASyNAAEsjwABLJAAASzPAAEs0QABLNQAASzWAAEs2QABLNoAASzbAAEs3AABLN0AASzfAAEs4QABLOIAASzjAAEs5QABLOYAAS0lAAEtJwABLSkAAS0rAAEtLgABLS8AAS0wAAEtMQABLTIAAS00AAEtNgABLTcAAS04AAEtOgABLTsAAS16AAEtfAABLX4AAS2AAAEtgwABLYQAAS2FAAEthgABLYcAAS2JAAEtiwABLYwAAS2NAAEtjwABLZAAAS3PAAEt0QABLdMAAS3VAAEt2AABLdkAAS3aAAEt2wABLdwAAS3eAAEt4AABLeEAAS3iAAEt5AABLeUAAS4wAAEuUwABLnMAAS6TAAEulQABLpcAAS6ZAAEumwABLp4AAS6fAAEuoAABLqMAAS6kAAEupgABLqcAAS6pAAEurAABLq0AAS6uAAEusQABLrIAAS67AAEuyAABLs0AAS7PAAEu0QABLtYAAS7ZAAEu3AABLt4AAS8DAAEvJwABL04AAS9yAAEvdQABL3cAAS95AAEvewABL30AAS9/AAEvgAABL4MAAS+QAAEvoQABL6MAAS+lAAEvpwABL6kAAS+rAAEvrQABL68AAS+xAAEvwgABL8UAAS/IAAEvywABL84AAS/RAAEv1AABL9cAAS/aAAEv3AABMBsAATAdAAEwHwABMCEAATAkAAEwJQABMCYAATAnAAEwKAABMCoAATAsAAEwLQABMC4AATAwAAEwMQABMHAAATByAAEwdAABMHYAATB5AAEwegABMHsAATB8AAEwfQABMH8AATCBAAEwggABMIMAATCFAAEwhgABMMUAATDHAAEwygABMMwAATDPAAEw0AABMNEAATDSAAEw0wABMNUAATDXAAEw2AABMNkAATDbAAEw3AABMOkAATDqAAEw6wABMO0AATEsAAExLgABMTAAATEyAAExNQABMTYAATE3AAExOAABMTkAATE7AAExPQABMT4AATE/AAExQQABMUIAATGBAAExgwABMYUAATGHAAExigABMYsAATGMAAExjQABMY4AATGQAAExkgABMZMAATGUAAExlgABMZcAATHWAAEx2AABMdoAATHcAAEx3wABMeAAATHhAAEx4gABMeMAATHlAAEx5wABMegAATHpAAEx6wABMewAATIrAAEyLQABMi8AATIxAAEyNAABMjUAATI2AAEyNwABMjgAATI6AAEyPAABMj0AATI+AAEyQAABMkEAATKAAAEyggABMoQAATKGAAEyiQABMooAATKLAAEyjAABMo0AATKPAAEykQABMpIAATKTAAEylQABMpYAATK7AAEy3wABMwYAATMqAAEzLQABMy8AATMxAAEzMwABMzUAATM3AAEzOAABMzsAATNIAAEzVwABM1kAATNbAAEzXQABM18AATNhAAEzYwABM2UAATN0AAEzdwABM3oAATN9AAEzgAABM4MAATOGAAEziQABM4sAATPKAAEzzAABM88AATPRAAEz1AABM9UAATPWAAEz1wABM9gAATPaAAEz3AABM90AATPeAAEz4AABM+EAATQgAAE0IgABNCQAATQmAAE0KQABNCoAATQrAAE0LAABNC0AATQvAAE0MQABNDIAATQzAAE0NQABNDYAATR1AAE0dwABNHkAATR7AAE0fgABNH8AATSAAAE0gQABNIIAATSEAAE0hgABNIcAATSIAAE0igABNIsAATTKAAE0zAABNM8AATTRAAE01AABNNUAATTWAAE01wABNNgAATTaAAE03AABNN0AATTeAAE04AABNOEAATUgAAE1IgABNSQAATUmAAE1KQABNSoAATUrAAE1LAABNS0AATUvAAE1MQABNTIAATUzAAE1NQABNTYAATV1AAE1dwABNXkAATV7AAE1fgABNX8AATWAAAE1gQABNYIAATWEAAE1hgABNYcAATWIAAE1igABNYsAATXKAAE1zAABNc4AATXQAAE10wABNdQAATXVAAE11gABNdcAATXZAAE12wABNdwAATXdAAE13wABNeAAATYrAAE2TgABNm4AATaOAAE2kAABNpIAATaUAAE2lgABNpkAATaaAAE2mwABNp4AATafAAE2oQABNqIAATalAAE2qAABNqkAATaqAAE2rQABNq4AATazAAE2wAABNsUAATbHAAE2yQABNs4AATbRAAE21AABNtYAATb7AAE3HwABN0YAATdqAAE3bQABN28AATdxAAE3cwABN3UAATd3AAE3eAABN3sAATeIAAE3mQABN5sAATedAAE3nwABN6EAATejAAE3pQABN6cAATepAAE3ugABN70AATfAAAE3wwABN8YAATfJAAE3zAABN88AATfSAAE31AABOBMAATgVAAE4FwABOBkAATgcAAE4HQABOB4AATgfAAE4IAABOCIAATgkAAE4JQABOCYAATgoAAE4KQABOGgAAThqAAE4bAABOG4AAThxAAE4cgABOHMAATh0AAE4dQABOHcAATh5AAE4egABOHsAATh9AAE4fgABOL0AATi/AAE4wgABOMQAATjHAAE4yAABOMkAATjKAAE4ywABOM0AATjPAAE40AABONEAATjTAAE41AABOOEAATjiAAE44wABOOUAATkkAAE5JgABOSgAATkqAAE5LQABOS4AATkvAAE5MAABOTEAATkzAAE5NQABOTYAATk3AAE5OQABOToAATl5AAE5ewABOX0AATl/AAE5ggABOYMAATmEAAE5hQABOYYAATmIAAE5igABOYsAATmMAAE5jgABOY8AATnOAAE50AABOdIAATnUAAE51wABOdgAATnZAAE52gABOdsAATndAAE53wABOeAAATnhAAE54wABOeQAATojAAE6JQABOicAATopAAE6LAABOi0AATouAAE6LwABOjAAAToyAAE6NAABOjUAATo2AAE6OAABOjkAATp4AAE6egABOnwAATp+AAE6gQABOoIAATqDAAE6hAABOoUAATqHAAE6iQABOooAATqLAAE6jQABOo4AATqzAAE61wABOv4AATsiAAE7JQABOycAATspAAE7KwABOy0AATsvAAE7MAABOzMAATtAAAE7TwABO1EAATtTAAE7VQABO1cAATtZAAE7WwABO10AATtsAAE7bwABO3IAATt1AAE7eAABO3sAATt+AAE7gQABO4MAATvCAAE7xAABO8YAATvIAAE7ywABO8wAATvNAAE7zgABO88AATvRAAE70wABO9QAATvVAAE71wABO9gAATwXAAE8GQABPBsAATwdAAE8IAABPCEAATwiAAE8IwABPCQAATwmAAE8KAABPCkAATwqAAE8LAABPC0AATxsAAE8bgABPHAAATxyAAE8dQABPHYAATx3AAE8eAABPHkAATx7AAE8fQABPH4AATx/AAE8gQABPIIAATzBAAE8wwABPMUAATzHAAE8ygABPMsAATzMAAE8zQABPM4AATzQAAE80gABPNMAATzUAAE81gABPNcAAT0WAAE9GAABPRoAAT0cAAE9HwABPSAAAT0hAAE9IgABPSMAAT0lAAE9JwABPSgAAT0pAAE9KwABPSwAAT1rAAE9bQABPW8AAT1xAAE9dAABPXUAAT12AAE9dwABPXgAAT16AAE9fAABPX0AAT1+AAE9gAABPYEAAT3AAAE9wgABPcUAAT3HAAE9ygABPcsAAT3MAAE9zQABPc4AAT3QAAE90gABPdMAAT3UAAE91gABPdcAAT4iAAE+RQABPmUAAT6FAAE+hwABPokAAT6LAAE+jQABPpAAAT6RAAE+kgABPpUAAT6WAAE+mAABPpkAAT6bAAE+nQABPp4AAT6fAAE+ogABPqMAAT6oAAE+tQABProAAT68AAE+vgABPsMAAT7GAAE+yQABPssAAT7wAAE/FAABPzsAAT9fAAE/YgABP2QAAT9mAAE/aAABP2oAAT9sAAE/bQABP3AAAT99AAE/jgABP5AAAT+SAAE/lAABP5YAAT+YAAE/mgABP5wAAT+eAAE/rwABP7IAAT+1AAE/uAABP7sAAT++AAE/wQABP8QAAT/HAAE/yQABQAgAAUAKAAFADAABQA4AAUARAAFAEgABQBMAAUAUAAFAFQABQBcAAUAZAAFAGgABQBsAAUAdAAFAHgABQF0AAUBfAAFAYQABQGMAAUBmAAFAZwABQGgAAUBpAAFAagABQGwAAUBuAAFAbwABQHAAAUByAAFAcwABQLIAAUC0AAFAtwABQLkAAUC8AAFAvQABQL4AAUC/AAFAwAABQMIAAUDEAAFAxQABQMYAAUDIAAFAyQABQNYAAUDXAAFA2AABQNoAAUEZAAFBGwABQR0AAUEfAAFBIgABQSMAAUEkAAFBJQABQSYAAUEoAAFBKgABQSsAAUEsAAFBLgABQS8AAUFuAAFBcAA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BWJEAAViSAAFYkwABWJQAAViVAAFYlwABWJkAAViaAAFYmwABWJ0AAVieAAFYqwABWKwAAVitAAFYrwABWO4AAVjwAAFY8gABWPQAAVj3AAFY+AABWPkAAVj6AAFY+wABWP0AAVj/AAFZAAABWQEAAVkDAAFZBAABWUMAAVlFAAFZRwABWUkAAVlMAAFZTQABWU4AAVlPAAFZUAABWVIAAVlUAAFZVQABWVYAAVlYAAFZWQABWZgAAVmaAAFZnAABWZ4AAVmhAAFZogABWaMAAVmkAAFZpQABWacAAVmpAAFZqgABWasAAVmtAAFZrgABWe0AAVnvAAFZ8QABWfMAAVn2AAFZ9wABWfgAAVn5AAFZ+gABWfwAAVn+AAFZ/wABWgAAAVoCAAFaAwABWkIAAVpEAAFaRgABWkgAAVpLAAFaTAABWk0AAVpOAAFaTwABWlEAAVpTAAFaVAABWlUAAVpXAAFaWAABWn0AAVqhAAFayAABWuwAAVrvAAFa8QABWvMAAVr1AAFa9wABWvkAAVr6AAFa/QABWwoAAVsZAAFbGwABWx0AAVsfAAFbIQABWyMAAVslAAFbJwABWzYAAVs5AAFbPAABWz8AAVtCAAFbRQABW0gAAVtLAAFbTQABW4wAAVuOAAFbkAABW5IAAVuVAAFblgABW5cAAVuYAAFbmQABW5sAAVudAAFbngABW58AAVuhAAFbogABW+EAAVvjAAFb5QABW+cAAVvqAAFb6wABW+wAAVvtAAFb7gABW/AAAVvyAAFb8wABW/QAAVv2AAFb9wABXDYAAVw4AAFcOgABXDwAAVw/AAFcQAABXEEAAVxCAAFcQwABXEUAAVxHAAFcSAABXEkAAVxLAAFcTAABXIsAAVyNAAFckAABXJIAAVyVAAFclgABXJcAAVyYAAFcmQABXJsAAVydAAFcngABXJ8AAVyhAAFcogABXKUAAVzkAAFc5gABXOgAAVzqAAFc7QABXO4AAVzvAAFc8AABXPEAAVzzAAFc9QABXPYAAVz3AAFc+QABXPoAAV05AAFdOwABXT0AAV0/AAFdQgABXUMAAV1EAAFdRQABXUYAAV1IAAFdSgABXUsAAV1MAAFdTgABXU8AAV2OAAFdkAABXZIAAV2UAAFdlwABXZgAAV2ZAAFdmgABXZsAAV2dAAFdnwABXaAAAV2hAAFdowABXaQAAV3vAAFeEgABXjIAAV5SAAFeVAABXlYAAV5YAAFeWgABXl0AAV5eAAFeXwABXmIAAV5jAAFeZQABXmYAAV5oAAFeawABXmwAAV5tAAFecAABXnEAAV52AAFegwABXogAAV6KAAFejAABXpEAAV6UAAFelwABXpkAAV6+AAFe4gABXwkAAV8tAAFfMAABXzIAAV80AAFfNgABXzgAAV86AAFfOwABXz4AAV9LAAFfXAABX14AAV9gAAFfYgABX2QAAV9mAAFfaAABX2oAAV9sAAFffQABX4AAAV+DAAFfhgABX4kAAV+MAAFfjwABX5IAAV+VAAFflwABX9YAAV/YAAFf2gABX9wAAV/fAAFf4AABX+EAAV/iAAFf4wABX+UAAV/nAAFf6AABX+kAAV/rAAFf7AABYCsAAWAtAAFgLwABYDEAAWA0AAFgNQABYDYAAWA3AAFgOAABYDoAAWA8AAFgPQABYD4AAWBAAAFgQQABYIAAAWCCAAFghQABYIcAAWCKAAFgiwABYIwAAWCNAAFgjgABYJAAAWCSAAFgkwABYJQAAWCWAAFglwABYKQAAWClAAFgpgABYKgAAWDnAAFg6QABYOsAAWDtAAFg8AABYPEAAWDyAAFg8wABYPQAAWD2AAFg+AABYPkAAWD6AAFg/AABYP0AAWE8AAFhPgABYUAAAWFCAAFhRQABYUYAAWFHAAFhSAABYUkAAWFLAAFhTQABYU4AAWFPAAFhUQABYVIAAWGRAAFhkwABYZUAAWGXAAFhmgABYZsAAWGcAAFhnQABYZ4AAWGgAAFhogABYaMAAWGkAAFhpgABYacAAWHmAAFh6AABYeoAAWHsAAFh7wABYfAAAWHxAAFh8gABYfMAAWH1AAFh9wABYfgAAWH5AAFh+wABYfwAAWI7AAFiPQABYj8AAWJBAAFiRAABYkUAAWJGAAFiRwABYkgAAWJKAAFiTAABYk0AAWJOAAFiUAABYlEAAWJ2AAFimgABYsEAAWLlAAFi6AABYuoAAWLsAAFi7gABYvAAAWLyAAFi8wABYvYAAWMDAAFjEgABYxQAAWMWAAFjGAABYxoAAWMcAAFjHgABYyAAAWMvAAFjMgABYzUAAWM4AAFjOwABYz4AAWNBAAFjRAABY0YAAWOFAAFjhwABY4kAAWOLAAFjjgABY48AAWOQAAFjkQABY5IAAWOUAAFjlgABY5cAAWOYAAFjmgABY5sAAWPaAAFj3AABY94AAWPgAAFj4wABY+QAAWPlAAFj5gABY+cAAWPpAAFj6wABY+wAAWPtAAFj7wABY/AAAWQvAAFkMQABZDMAAWQ1AAFkOAABZDkAAWQ6AAFkOwABZDwAAWQ+AAFkQAABZEEAAWRCAAFkRAABZEUAAWSEAAFkhgABZIgAAWSKAAFkjQABZI4AAWSPAAFkkAABZJEAAWSTAAFklQABZJYAAWSXAAFkmQABZJoAAWTZAAFk2wABZN0AAWTfAAFk4gABZOMAAWTkAAFk5QABZOYAAWToAAFk6gABZOsAAWTsAAFk7gABZO8AAWUuAAFlMAABZTIAAWU0AAFlNwABZTgAAWU5AAFlOgABZTsAAWU9AAFlPwABZUAAAWVBAAFlQwABZUQAAWWDAAFlhQABZYcAAWWJAAFljAABZY0AAWWOAAFljwABZZAAAWWSAAFllAABZZUAAWWWAAFlmAABZZkAAWXkAAFmBwABZicAAWZHAAFmSQABZksAAWZNAAFmTwABZlIAAWZTAAFmVAABZlcAAWZYAAFmWgABZlsAAWZdAAFmYAABZmEAAWZiAAFmZQABZmYAAWZrAAFmeAABZn0AAWZ/AAFmgQABZoYAAWaJAAFmjAABZo4AAWazAAFm1wABZv4AAWciAAFnJQABZycAAWcpAAFnKwABZy0AAWcvAAFnMAABZzMAAWdAAAFnUQABZ1MAAWdVAAFnVwABZ1kAAWdbAAFnXQABZ18AAWdhAAFncgABZ3UAAWd4AAFnewABZ34AAWeBAAFnhAABZ4cAAWeKAAFnjAABZ8sAAWfNAAFnzwABZ9EAAWfUAAFn1QABZ9YAAWfXAAFn2AABZ9oAAWfcAAFn3QABZ94AAWfgAAFn4QABaCAAAWgiAAFoJAABaCYAAWgpAAFoKgABaCsAAWgsAAFoLQABaC8AAWgxAAFoMgABaDMAAWg1AAFoNgABaHUAAWh3AAFoegABaHwAAWh/AAFogAABaIEAAWiCAAFogwABaIUAAWiHAAFoiAABaIkAAWiLAAFojAABaJkAAWiaAAFomwABaJ0AAWjcAAFo3gABaOAAAWjiAAFo5QABaOYAAWjnAAFo6AABaOkAAWjrAAFo7QABaO4AAWjvAAFo8QABaPIAAWkxAAFpMwABaTUAAWk3AAFpOgABaTsAAWk8AAFpPQABaT4AAWlAAAFpQgABaUMAAWlEAAFpRgABaUcAAWmGAAFpiAABaYoAAWmMAAFpjwABaZAAAWmRAAFpkgABaZMAAWmVAAFplwABaZgAAWmZAAFpmwABaZwAAWnbAAFp3QABad8AAWnhAAFp5AABaeUAAWnmAAFp5wABaegAAWnqAAFp7AABae0AAWnuAAFp8AABafEAAWowAAFqMgABajQAAWo2AAFqOQABajoAAWo7AAFqPAABaj0AAWo/AAFqQQABakIAAWpDAAFqRQABakYAAWprAAFqjwABarYAAWraAAFq3QABat8AAWrhAAFq4wABauUAAWrnAAFq6AABausAAWr4AAFrBwABawkAAWsLAAFrDQABaw8AAWsRAAFrEwABaxUAAWskAAFrJwABayoAAWstAAFrMAABazMAAWs2AAFrOQABazsAAWt6AAFrfAABa34AAWuAAAFrgwABa4QAAWuFAAFrhgABa4cAAWuJAAFriwABa4wAAWuNAAFrjwABa5AAAWvPAAFr0QABa9MAAWvVAAFr2AABa9kAAWvaAAFr2wABa9wAAWveAAFr4AABa+EAAWviAAFr5AABa+UAAWwkAAFsJgABbCgAAWwqAAFsLQABbC4AAWwvAAFsMAABbDEAAWwzAAFsNQABbDYAAWw3AAFsOQABbDoAAWx5AAFsewABbH0AAWx/AAFsggABbIMAAWyEAAFshQABbIYAAWyIAAFsigABbIsAAWyMAAFsjgABbI8AAWzOAAFs0AABbNIAAWzUAAFs1wABbNgAAWzZAAFs2gABbNsAAWzdAAFs3wABbOAAAWzhAAFs4wABbOQAAW0jAAFtJQABbScAAW0pAAFtLAABbS0AAW0uAAFtLwABbTAAAW0yAAFtNAABbTUAAW02AAFtOAABbTkAAW14AAFtegABbXwAAW1+AAFtgQABbYIAAW2DAAFthAABbYUAAW2HAAFtiQABbYoAAW2LAAFtjQABbY4AAW3ZAAFt/AABbhwAAW48AAFuPgABbkAAAW5CAAFuRAABbkcAAW5IAAFuSQABbkwAAW5NAAFuTwABblAAAW5SAAFuVQABblYAAW5XAAFuWgABblsAAW5gAAFubQABbnIAAW50AAFudgABbnsAAW5+AAFugQABboMAAW6oAAFuzAABbvMAAW8XAAFvGgABbxwAAW8eAAFvIAABbyIAAW8kAAFvJQABbygAAW81AAFvRgABb0gAAW9KAAFvTAABb04AAW9QAAFvUgABb1QAAW9WAAFvZwABb2oAAW9tAAFvcAABb3MAAW92AAFveQABb3wAAW9/AAFvgQABb8AAAW/CAAFvxAABb8YAAW/JAAFvygABb8sAAW/MAAFvzQABb88AAW/RAAFv0gABb9MAAW/VAAFv1gABcBUAAXAXAAFwGQABcBsAAXAeAAFwHwABcCAAAXAhAAFwIgABcCQAAXAmAAFwJwABcCgAAXAqAAFwKwABcGoAAXBsAAFwbwABcHEAAXB0AAFwdQABcHYAAXB3AAFweAABcHoAAXB8AAFwfQABcH4AAXCAAAFwgQABcI4AAXCPAAFwkAABcJIAAXDRAAFw0wABcNUAAXDXAAFw2gABcNsAAXDcAAFw3QABcN4AAXDgAAFw4gABcOMAAXDkAAFw5gABcOcAAXEmAAFxKAABcSoAAXEsAAFxLwABcTAAAXExAAFxMgABcTMAAXE1AAFxNwABcTgAAXE5AAFxOwABcTwAAXF7AAFxfQABcX8AAXGBAAFxhAABcYUAAXGGAAFxhwABcYgAAXGKAAFxjAABcY0AAXGOAAFxkAABcZEAAXHQAAFx0gABcdQAAXHWAAFx2QABcdoAAXHbAAFx3AABcd0AAXHfAAFx4QABceIAAXHjAAFx5QABceYAAXIlAAFyJwABcikAAXIrAAFyLgABci8AAXIwAAFyMQABcjIAAXI0AAFyNgABcjcAAXI4AAFyOgABcjsAAXJgAAFyhAABcqsAAXLPAAFy0gABctQAAXLWAAFy2AABctoAAXLcAAFy3QABcuAAAXLtAAFy/AABcv4AAXMAAAFzAgABcwQAAXMGAAFzCAABcwoAAXMZAAFzHAABcx8AAXMiAAFzJQABcygAAXMrAAFzLgABczAAAXNvAAFzcQABc3MAAXN1AAFzeAABc3kAAXN6AAFzewABc3wAAXN+AAFzgAABc4EAAXOCAAFzhAABc4UAAXPEAAFzxgABc8gAAXPKAAFzzQABc84AAXPPAAFz0AABc9EAAXPTAAFz1QABc9YAAXPXAAFz2QABc9oAAXQZAAF0GwABdB0AAXQfAAF0IgABdCMAAXQkAAF0JQABdCYAAXQoAAF0KgABdCsAAXQsAAF0LgABdC8AAXRuAAF0cAABdHIAAXR0AAF0dwABdHgAAXR5AAF0egABdHsAAXR9AAF0fwABdIAAAXSBAAF0gwABdIQAAXTDAAF0xQABdMcAAXTJAAF0zAABdM0AAXTOAAF0zwABdNAAAXTSAAF01AABdNUAAXTWAAF02AABdNkAAXUYAAF1GgABdRwAAXUeAAF1IQABdSIAAXUjAAF1JAABdSUAAXUnAAF1KQABdSoAAXUrAAF1LQABdS4AAXVtAAF1bwABdXEAAXVzAAF1dgABdXcAAXV4AAF1eQABdXoAAXV8AAF1fgABdX8AAXWAAAF1ggABdYMAAXWMAAF1jQABdY8AAXWcAAF1nQABdZ4AAXWgAAF1rQABda4AAXWvAAF1sQABdb4AAXW/AAF1wAABdcIAAXXLAAF12gABdecAAXX2AAF2CAABdhwAAXYzAAF2RQABdk4AAXZPAAF2UQABdl4AAXZjAAF2ZgABdmkAAXZuAAF2cQABdnQAAXZ2AAF2fgABdocAAXaYAAF2nwABdqkAAXasAAF2rwABdrEAAXa0AAF2vQABdsgAAXbKAAF2zAABds8AAXbRAAF21AABdtYAAXbfAAF28wABdvgAAXcMAAF3HQABdyAAAXcjAAF3JQABdygAAXcxAAF3MgABdzQAAXc1AAF3PgABd0gAAXdPAAAAAAAABAIAAAAAAAA4JQAAAAAAAAAAAAAAAAABd1c= + + Harmony/Model/Core Data/Harmony.xcdatamodeld/Harmony 2.xcdatamodel + YnBsaXN0MDDUAAEAAgADAAQABQAGAAcAClgkdmVyc2lvblkkYXJjaGl2ZXJUJHRvcFgkb2JqZWN0 +cxIAAYagXxAPTlNLZXllZEFyY2hpdmVy0QAIAAlUcm9vdIABrxEEogALAAwAGwA3ADgAOQBJAEoASwBMAE0ATgBpAGoAawBxAHIAfgCUAJUAlgCXAJgAmQCaAJsAnACdALYAuQDAAMYA1QDkAOgA7QDuAO8A/gENARAAaAEgAS8BMwE3AUYBTAFNAVUBZAFlAW4BfgF/AYABgQGCAYMBhAGZAZoBogGjAaQBsAHEAcUBxgHHAcgByQHKAcsBzAHbAeoB+QH9AgwCGwIcAisCOgJJAlUCZwJoAmkCagJrAmwCbQJuADECfQKMAo0CnAKdAqwCxgLHAs0C2QLvAv4DAQMQAx8DIwMoAykDKgM5A0gDSwNaA2kDbQN8A4sDjAOmA6cDqAOpA6oDqwOsA60DrgOvA7ADsQPGA8cDzwPQA9wD8AP/BA4EHQQhBDAEPwROBF0EbAR4BIoEiwSMBI0EjgSPBJAEkQSgBKEEsAS/BM4EzwTeBO0E/AUEBRkFGgUiBS4FQgVRBWAFbwVzBYIFkQWgBa8FvgXKBdwF6wX6BgkGGAYyBjMGOQZFBlsGagZtBnwGiwaOBp0GrAavBr4GzQbRBuAG7wbwBwAHAQcCBwMHBAcZBxoHIgcuB0IHUQdgB28HcweCB5EHoAevB74HygfcB+sH+ggJCBgIGQgoCDcIRghbCFwIZAhwCIQIkwiiCLEItQjECNMI4gjxCQAJDAkeCS0JPAlLCVoJaQl4CYcJnAmdCaUJsQnFCdQJ4wnyCfYKBQoUCiMKMgpBCk0KXwpuCn0KjAqbCpwKqwq6CskK3grfCucK8wsHCxYLJQs0CzgLRwtWC2ULdAuDC48LoQuwC78LzgvdC+wL+wwKDBIMJwwoDDAMPAxQDF8Mbgx9DIEMkAyfDK4MvQzMDNgM6gz5DQgNFw0mDTUNRA1TDWgNaQ1xDX0NkQ2gDa8Nvg3CDdEN4A3vDf4ODQ4ZDisOOg5JDlgOZw52DoUOlA6VDpgOoQ6wDr8Ozg7jDuQO7A74DwwPGw8qDzkPPQ9MD1sPag95D4gPlA+mD7UPxA/TD+IP8RAAEA8QJBAlEC0QORBNEFwQaxB6EH4QjRCcEKsQuhDJENUQ5xD2EQURFBEjESQRMxFCEVERZhFnEW8RexGPEZ4RrRG8EcARzxHeEe0R/BILEhcSKRI4EkcSVhJlEmYSdRKEEpMSqBKpErESvRLREuAS7xL+EwITERMgEy8TPhNNE1kTaxN6E4kTmBOnE7YTxRPUE+kT6hPyE/4UEhQhFDAUPxRDFFIUYRRwFH8UjhSaFKwUuxTKFNkU6BT3FQYVFRUqFSsVMxU/FVMVYhVxFYAVhBWTFaIVsRXAFc8V2xXtFfwWCxYaFikWOBZHFlYWaxZsFnQWgBaUFqMWshbBFsUW1BbjFvIXARcQFxwXLhc9F0wXWxdqF3kXiBeXF6wXrRe1F8EX1RfkF/MYAhgGGBUYJBgzGEIYURhdGG8YfhiNGJwYqxisGLsYyhjLGNoY7xjwGPgZBBkYGScZNhlFGUkZWBlnGXYZhRmUGaAZshnBGdAZ3xnuGf0aDBobGh4aLRo8GksaYBphGmkadRqJGpgapxq2GroayRrYGuca9hsFGxEbIxsyG0EbUBtfG24bfRuMG6EbohuqG7YbyhvZG+gb9xv7HAocGRwoHDccRhxSHGQccxx0HIMckhyhHKIcsRzAHM8c5BzlHO0c+R0NHRwdKx06HT4dTR1cHWsdeh2JHZUdpx22HcUd1B3jHfIeAR4QHiUeJh4uHjoeTh5dHmweex5/Ho4enR6sHrseyh7WHuge9x8GHxUfJB8+Hz8fRR9RH2cfdh95H4gflx+bH6AfoR+iH7EfwB/DH9If4R/lH/QgAyAEICQgJSAmICcgKCApICogKyAsIC0gLiAvIEQgRSBNIFkgbSB8IIsgmiCeIK0gvCDLINog6SD1IQchFiElITQhQyFSIWEhcCGFIYYhjiGaIa4hvSHMIdsh3yHuIf0iDCIbIioiNiJIIlciZiJ1IoQikyKiIrEixiLHIs8i2yLvIv4jDSMcIyAjLyM+I00jXCNrI3cjiSOYI6cjtiPFI9Qj4yPyJAckCCQQJBwkMCQ/JE4kXSRhJHAkfySOJJ0krCS4JMok2SToJPclBiUVJSQlMyVIJUklUSVdJXElgCWPJZ4loiWxJcAlzyXeJe0l+SYLJhomKSY4JkcmViZlJnQmiSaKJpImniayJsEm0CbfJuMm8icBJxAnHycuJzonTCdbJ2oneSeIJ5cnpie1J8onyyfTJ98n8ygCKBEoICgkKDMoQihRKGAobyh7KI0onCirKLooySjYKOco9ikLKQwpFCkgKTQpQylSKWEpZSl0KYMpkimhKbApvCnOKd0p7Cn7KgoqGSooKjcqTCpNKlUqYSp1KoQqkyqiKqYqtSrEKtMq4irxKv0rDyseKy0rPCtLK1oraStqK3krjiuPK5croyu3K8Yr1SvkK+gr9ywGLBUsJCwzLD8sUSxgLG8sfiyNLJwsqyy6LM8s0CzYLOQs+C0HLRYtJS0pLTgtRy1WLWUtdC2ALZItoS2wLb8tzi3dLewt+y4QLhEuGS4lLjkuSC5XLmYuai55Loguly6mLrUuwS7TLuIu8S8ALw8vHi8tLzwvUS9SL1ovZi96L4kvmC+nL6svui/JL9gv5y/2MAIwFDAjMDIwQTBQMF8wbjB9MJIwkzCbMKcwuzDKMNkw6DDsMPsxCjEZMSgxNzFDMVUxZDFzMYIxkTGgMa8xvjHBMdAx3zHuMgMyBDIMMhgyLDI7MkoyWTJdMmwyezKKMpkyqDK0MsYy1TLWMuUy9DMDMxIzITMwMzMzTTNOM1QzYDN2M4UziDOXM6YzqjOuM68zvjPNM9Az3zPuM/I0ATQQNBE0HTQeNB80IDQhNDY0NzQ/NEs0XzRuNH00jDSQNJ80rjS9NMw02zTnNPk1CDUXNSY1NTU2NUU1VDVjNXg1eTWBNY01oTWwNb81zjXSNeE18DX/Ng42HTYpNjs2SjZZNmg2dzaGNpU2pDa5Nro2wjbONuI28TcANw83EzciNzE3QDdPN143ajd8N4s3mjepN7g3xzfWN+U3+jf7OAM4DzgjODI4QThQOFQ4YzhyOIE4kDifOKs4vTjMONs46jj5OQg5FzkmOSk5LTkxOTU5PTlAOUg5STlKOVE5WTldOWI5ZTlmVSRudWxs1wANAA4ADwAQABEAEgATABQAFQAWABcAGAAXABpfEA9feGRfcm9vdFBhY2thZ2VWJGNsYXNzXF94ZF9jb21tZW50c18QEF94ZF9tb2RlbE1hbmFnZXJfEBVfY29uZmlndXJhdGlvbnNCeU5hbWVdX3hkX21vZGVsTmFtZV8QF19tb2RlbFZlcnNpb25JZGVudGlmaWVygAKBBKGBBJeAAIEEmIAAgQSg3gAcAB0AHgAfACAAIQAiAA4AIwAkACUAJgAnACgAKQAqACsACQApABcALwAwADEAMgAzACkAKQAXXxAcWERCdWNrZXRGb3JDbGFzc2Vzd2FzRW5jb2RlZF8QGlhEQnVja2V0Rm9yUGFja2FnZXNzdG9yYWdlXxAcWERCdWNrZXRGb3JJbnRlcmZhY2Vzc3RvcmFnZV8QD194ZF9vd25pbmdNb2RlbF8QHVhEQnVja2V0Rm9yUGFja2FnZXN3YXNFbmNvZGVkVl9vd25lcl8QG1hEQnVja2V0Rm9yRGF0YVR5cGVzc3RvcmFnZVtfdmlzaWJpbGl0eV8QGVhEQnVja2V0Rm9yQ2xhc3Nlc3N0b3JhZ2VVX25hbWVfEB9YREJ1Y2tldEZvckludGVyZmFjZXN3YXNFbmNvZGVkXxAeWERCdWNrZXRGb3JEYXRhVHlwZXN3YXNFbmNvZGVkXxAQX3VuaXF1ZUVsZW1lbnRJRIAEgQSVgQSTgAGABIAAgQSUgQSWEACABYADgASABIAAUFNZRVPTADoAOwAOADwAQgBIV05TLmtleXNaTlMub2JqZWN0c6UAPQA+AD8AQABBgAaAB4AIgAmACqUAQwBEAEUARgBHgAuAvIBkgQQbgQKZgCxdTWFuYWdlZFJlY29yZFpSZW1vdGVGaWxlW0xvY2FsUmVjb3JkXk1hbmFnZWRBY2NvdW50XFJlbW90ZVJlY29yZN8QEABPAFAAUQBSACEAUwBUACMAVQBWAA4AJQBXAFgAKABZAFoAWwApACkAFABfAGAAMQApAFoAYwA9AFoAZgBnAGhfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2VfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNkdXBsaWNhdGVzXxAkWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc29yZGVyZWRfECFYREJ1Y2tldEZvckdlbmVyYWxpemF0aW9uc3N0b3JhZ2VbX2lzQWJzdHJhY3SADYA0gASABIACgA6BAWGABIANgQFjgAaADYEEGoAMCBJ2kkg2V29yZGVyZWTTADoAOwAOAGwAbgBIoQBtgA+hAG+AEIAsXlhEX1BTdGVyZW90eXBl2QAhACUAcwAOACgAdAAjAFkAdQBDAG0AWgB5ABcAKQAxAGgAfV8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYALgA+ADYAzgACABAiAEdMAOgA7AA4AfwCJAEipAIAAgQCCAIMAhACFAIYAhwCIgBKAE4AUgBWAFoAXgBiAGYAaqQCKAIsAjACNAI4AjwCQAJEAkoAbgB+AIIAlgCaAKIAqgC2AMYAsXxATWERQTUNvbXBvdW5kSW5kZXhlc18QEFhEX1BTS19lbGVtZW50SURfEBlYRFBNVW5pcXVlbmVzc0NvbnN0cmFpbnRzXxAaWERfUFNLX3ZlcnNpb25IYXNoTW9kaWZpZXJfEBlYRF9QU0tfZmV0Y2hSZXF1ZXN0c0FycmF5XxARWERfUFNLX2lzQWJzdHJhY3RfEA9YRF9QU0tfdXNlckluZm9fEBNYRF9QU0tfY2xhc3NNYXBwaW5nXxAWWERfUFNLX2VudGl0eUNsYXNzTmFtZd8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXAKkAFwBvAGgAaABoADEAaACwAIAAaABoABcAaFVfdHlwZVhfZGVmYXVsdFxfYXNzb2NpYXRpb25bX2lzUmVhZE9ubHlZX2lzU3RhdGljWV9pc1VuaXF1ZVpfaXNEZXJpdmVkWl9pc09yZGVyZWRcX2lzQ29tcG9zaXRlV19pc0xlYWaAAIAcgACAEAgICAiAHoASCAiAAAjSADsADgC3ALiggB3SALoAuwC8AL1aJGNsYXNzbmFtZVgkY2xhc3Nlc15OU011dGFibGVBcnJheaMAvAC+AL9XTlNBcnJheVhOU09iamVjdNIAugC7AMEAwl8QEFhEVU1MUHJvcGVydHlJbXCkAMMAxADFAL9fEBBYRFVNTFByb3BlcnR5SW1wXxAUWERVTUxOYW1lZEVsZW1lbnRJbXBfEA9YRFVNTEVsZW1lbnRJbXDfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcAbwBoAGgAaAAxAGgAsACBAGgAaAAXAGiAAIAAgACAEAgICAiAHoATCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwDXABcAbwBoAGgAaAAxAGgAsACCAGgAaAAXAGiAAIAhgACAEAgICAiAHoAUCAiAAAjSADsADgDlALihAOaAIoAd0gA7AA4A6QC4ogDqAOuAI4AkgB1fEBJyZWNvcmRlZE9iamVjdFR5cGVfEBhyZWNvcmRlZE9iamVjdElkZW50aWZpZXLfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcAbwBoAGgAaAAxAGgAsACDAGgAaAAXAGiAAIAAgACAEAgICAiAHoAVCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwEAABcAbwBoAGgAaAAxAGgAsACEAGgAaAAXAGiAAIAngACAEAgICAiAHoAWCAiAAAjSADsADgEOALiggB3fEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcAbwBoAGgAaAAxAGgAsACFAGgAaAAXAGiAAIApgACAEAgICAiAHoAXCAiAAAgI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBIgAXAG8AaABoAGgAMQBoALAAhgBoAGgAFwBogACAK4AAgBAICAgIgB6AGAgIgAAI0wA6ADsADgEwATEASKCggCzSALoAuwE0ATVfEBNOU011dGFibGVEaWN0aW9uYXJ5owE0ATYAv1xOU0RpY3Rpb25hcnnfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwE5ABcAbwBoAGgAaAAxAGgAsACHAGgAaAAXAGiAAIAugACAEAgICAiAHoAZCAiAAAjWACUADgAoAFkAIQAjAUcBSAAXAGgAFwAxgC+AMIAACIAAXxAUWERHZW5lcmljUmVjb3JkQ2xhc3PSALoAuwFOAU9dWERVTUxDbGFzc0ltcKYBUAFRAVIBUwFUAL9dWERVTUxDbGFzc0ltcF8QElhEVU1MQ2xhc3NpZmllckltcF8QEVhEVU1MTmFtZXNwYWNlSW1wXxAUWERVTUxOYW1lZEVsZW1lbnRJbXBfEA9YRFVNTEVsZW1lbnRJbXDfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwFXABcAbwBoAGgAaAAxAGgAsACIAGgAaAAXAGiAAIAygACAEAgICAiAHoAaCAiAAAhdTWFuYWdlZFJlY29yZNIAugC7AWYBZ18QElhEVU1MU3RlcmVvdHlwZUltcKcBaAFpAWoBawFsAW0Av18QElhEVU1MU3RlcmVvdHlwZUltcF1YRFVNTENsYXNzSW1wXxASWERVTUxDbGFzc2lmaWVySW1wXxARWERVTUxOYW1lc3BhY2VJbXBfEBRYRFVNTE5hbWVkRWxlbWVudEltcF8QD1hEVU1MRWxlbWVudEltcNMAOgA7AA4BbwF2AEimAXABcQFyAXMBdAF1gDWANoA3gDiAOYA6pgF3AXgBeQF6AXsBfIA7gQI+gQJVgQJugQKFgQQCgCxbbG9jYWxSZWNvcmRfEBhyZWNvcmRlZE9iamVjdElkZW50aWZpZXJcaXNDb25mbGljdGVkXxAScmVjb3JkZWRPYmplY3RUeXBlXHJlbW90ZVJlY29yZF8QEGlzU3luY2luZ0VuYWJsZWTfEBIAngCfAKABhQAhAKIAowGGACMAoQGHAKQADgAlAKUApgAoAKcAFwAXABcAKQBDAGgAaAGPADEAaABaAGgBkwFwAGgAaAGXAGhfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIALCAiAPQiADQiBATKANQgIgDwIEnb966nTADoAOwAOAZsBngBIogGcAZ2APoA/ogGfAaCAQIBUgCxfEBJYRF9QUHJvcFN0ZXJlb3R5cGVfEBBYRF9QUl9TdGVyZW90eXBl2QAhACUBpQAOACgBpgAjAFkBpwF3AZwAWgB5ABcAKQAxAGgBr18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYA7gD6ADYAzgAC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DIYBugB3SADsADgMkALiiAyUDJoBvgHCAHV8QEnJlY29yZGVkT2JqZWN0VHlwZV8QGHJlY29yZGVkT2JqZWN0SWRlbnRpZmllct8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFwLLAGgAaABoADEAaACwAIMAaABoABcAaIAAgACAAIBnCAgICIAegBUICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXAzsAFwLLAGgAaABoADEAaACwAIQAaABoABcAaIAAgHOAAIBnCAgICIAegBYICIAACNIAOwAOA0kAuKCAHd8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFwLLAGgAaABoADEAaACwAIUAaABoABcAaIAAgCmAAIBnCAgICIAegBcICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXA1wAFwLLAGgAaABoADEAaACwAIYAaABoABcAaIAAgHaAAIBnCAgICIAegBgICIAACNMAOgA7AA4DagNrAEigoIAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBOQAXAssAaABoAGgAMQBoALAAhwBoAGgAFwBogACALoAAgGcICAgIgB6AGQgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcDfgAXAssAaABoAGgAMQBoALAAiABoAGgAFwBogACAeYAAgGcICAgIgB6AGggIgAAIW0xvY2FsUmVjb3Jk0wA6ADsADgONA5kASKsDjgOPA5ADkQOSA5MDlAOVA5YDlwOYgHuAfIB9gH6Af4CAgIGAgoCDgISAhasDmgObA5wDnQOeA58DoAOhA6IDowOkgIaAqIEBZ4EBfoEBloEBroEBxYEB3IEB84ECCoECI4AsVnN0YXR1c1tyZW1vdGVGaWxlc18QEXZlcnNpb25JZGVudGlmaWVyXxAQbW9kaWZpY2F0aW9uRGF0ZV8QEXJlY29yZGVkT2JqZWN0VVJJW3ZlcnNpb25EYXRlXW1hbmFnZWRSZWNvcmRfEBJyZWNvcmRlZE9iamVjdFR5cGVYc2hhMUhhc2hfEBRhZGRpdGlvbmFsUHJvcGVydGllc18QGHJlY29yZGV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fEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcHHwBoAGgAaAAxAGgAsAGyAGgAaAAXAGiAAIApgACA1wgICAiAHoBCCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcHHwBoAGgAaAAxAGgAsAGzAGgAaAAXAGiAAIAAgACA1wgICAiAHoBDCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwdiABcHHwBoAGgAaAAxAGgAsAG0AGgAaAAXAGiAAIDcgACA1wgICAiAHoBECAiAAAjTADoAOwAOB3AHcQBIoKCALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFwcfAGgAaABoADEAaACwAbUAaABoABcAaIAAgCmAAIDXCAgICIAegEUICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFwcfAGgAaABoADEAaACwAbYAaABoABcAaIAAgCmAAIDXCAgICIAegEYICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFwcfAGgAaABoADEAaACwAbcAaABoABcAaIAAgCmAAIDXCAgICIAegEcICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFwcfAGgAaABoADEAaACwAbgAaABoABcAaIAAgACAAIDXCAgICIAegEgICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFwcfAGgAaABoADEAaACwAbkAaABoABcAaIAAgCmAAIDXCAgICIAegEkICIAACNkAIQAlB78ADgAoB8AAIwBZB8EG+QPKAFoAeQAXACkAMQBoB8lfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WA1ICJgA2AM4AAgAQIgOPTADoAOwAOB8sH0wBIpwR6BHsEfAR9BH4EfwSAgJeAmICZgJqAm4CcgJ2nB9QH1QfWB9cH2AfZB9qA5IDlgOaA54DpgOqA64As3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXByAAaABoAGgAMQBoALAEegBoAGgAFwBogACAAIAAgOIICAgIgB6AlwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXByAAaABoAGgAMQBoALAEewBoAGgAFwBogACAKYAAgOIICAgIgB6AmAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXByAAaABoAGgAMQBoALAEfABoAGgAFwBogACAAIAAgOIICAgIgB6AmQgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcICwAXByAAaABoAGgAMQBoALAEfQBoAGgAFwBogACA6IAAgOIICAgIgB6AmggIgAAIEQK83xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXByAAaABoAGgAMQBoALAEfgBoAGgAFwBogACAAIAAgOIICAgIgB6AmwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXByAAaABoAGgAMQBoALAEfwBoAGgAFwBogACAAIAAgOIICAgIgB6AnAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXByAAaABoAGgAMQBoALAEgABoAGgAFwBogACAAIAAgOIICAgIgB6AnQgIgAAI3xASAJ4AnwCgCEcAIQCiAKMISAAjAKEISQCkAA4AJQClAKYAKACnABcAFwAXACkARABoAGgIUQAxAGgAWgBoA8ADlgBoAGgIWQBoXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASAvAgIgO4IgA0IgKeAgwgIgO0IEo6NgeLTADoAOwAOCF0IYABIogGcA8qAPoCJoghhCGKA74D6gCzZACEAJQhlAA4AKAhmACMAWQhnBvoBnABaAHkAFwApADEAaAhvXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgOyAPoANgDOAAIAECIDw0wA6ADsADghxCHoASKgBsgGzAbQBtQG2AbcBuAG5gEKAQ4BEgEWARoBHgEiASagIewh8CH0Ifgh/CIAIgQiCgPGA8oDzgPWA9oD3gPiA+YAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXCGEAaABoAGgAMQBoALABsgBoAGgAFwBogACAKYAAgO8ICAgIgB6AQggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXCGEAaABoAGgAMQBoALABswBoAGgAFwBogACAAIAAgO8ICAgIgB6AQwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcIpAAXCGEAaABoAGgAMQBoALABtABoAGgAFwBogACA9IAAgO8ICAgIgB6ARAgIgAAI0wA6ADsADgiyCLMASKCggCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcIYQBoAGgAaAAxAGgAsAG1AGgAaAAXAGiAAIApgACA7wgICAiAHoBFCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcIYQBoAGgAaAAxAGgAsAG2AGgAaAAXAGiAAIApgACA7wgICAiAHoBGCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcIYQBoAGgAaAAxAGgAsAG3AGgAaAAXAGiAAIApgACA7wgICAiAHoBHCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcIYQBoAGgAaAAxAGgAsAG4AGgAaAAXAGiAAIAAgACA7wgICAiAHoBICAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcIYQBoAGgAaAAxAGgAsAG5AGgAaAAXAGiAAIApgACA7wgICAiAHoBJCAiAAAjZACEAJQkBAA4AKAkCACMAWQkDBvoDygBaAHkAFwApADEAaAkLXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgOyAiYANgDOAAIAECID70wA6ADsADgkNCRUASKcEegR7BHwEfQR+BH8EgICXgJiAmYCagJuAnICdpwkWCRcJGAkZCRoJGwkcgPyA/YD+gP+BAQCBAQGBAQKALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFwhiAGgAaABoADEAaACwBHoAaABoABcAaIAAgACAAID6CAgICIAegJcICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFwhiAGgAaABoADEAaACwBHsAaABoABcAaIAAgCmAAID6CAgICIAegJgICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFwhiAGgAaABoADEAaACwBHwAaABoABcAaIAAgACAAID6CAgICIAegJkICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXCAsAFwhiAGgAaABoADEAaACwBH0AaABoABcAaIAAgOiAAID6CAgICIAegJoICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFwhiAGgAaABoADEAaACwBH4AaABoABcAaIAAgACAAID6CAgICIAegJsICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFwhiAGgAaABoADEAaACwBH8AaABoABcAaIAAgACAAID6CAgICIAegJwICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFwhiAGgAaABoADEAaACwBIAAaABoABcAaIAAgACAAID6CAgICIAegJ0ICIAACN8QEgCeAJ8AoAmIACEAogCjCYkAIwChCYoApAAOACUApQCmACgApwAXABcAFwApAEQAaABoCZIAMQBoAFoAaAPABvQAaABoCZoAaF8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgLwICIEBBQiADQiAp4DRCAiBAQQIEwAAAAERXq6/0wA6ADsADgmeCaEASKIBnAPKgD6AiaIJogmjgQEGgQERgCzZACEAJQmmAA4AKAmnACMAWQmoBvsBnABaAHkAFwApADEAaAmwXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQEDgD6ADYAzgACABAiBAQfTADoAOwAOCbIJuwBIqAGyAbMBtAG1AbYBtwG4AbmAQoBDgESARYBGgEeASIBJqAm8Cb0Jvgm/CcAJwQnCCcOBAQiBAQmBAQqBAQyBAQ2BAQ6BAQ+BARCALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFwmiAGgAaABoADEAaACwAbIAaABoABcAaIAAgCmAAIEBBggICAiAHoBCCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcJogBoAGgAaAAxAGgAsAGzAGgAaAAXAGiAAIAAgACBAQYICAgIgB6AQwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcJ5QAXCaIAaABoAGgAMQBoALABtABoAGgAFwBogACBAQuAAIEBBggICAiAHoBECAiAAAjTADoAOwAOCfMJ9ABIoKCALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFwmiAGgAaABoADEAaACwAbUAaABoABcAaIAAgCmAAIEBBggICAiAHoBFCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcJogBoAGgAaAAxAGgAsAG2AGgAaAAXAGiAAIApgACBAQYICAgIgB6ARggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXCaIAaABoAGgAMQBoALABtwBoAGgAFwBogACAKYAAgQEGCAgICIAegEcICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFwmiAGgAaABoADEAaACwAbgAaABoABcAaIAAgACAAIEBBggICAiAHoBICAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcJogBoAGgAaAAxAGgAsAG5AGgAaAAXAGiAAIApgACBAQYICAgIgB6ASQgIgAAI2QAhACUKQgAOACgKQwAjAFkKRAb7A8oAWgB5ABcAKQAxAGgKTF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEBA4CJgA2AM4AAgAQIgQES0wA6ADsADgpOClYASKcEegR7BHwEfQR+BH8EgICXgJiAmYCagJuAnICdpwpXClgKWQpaClsKXApdgQETgQEUgQEVgQEWgQEYgQEZgQEagCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwSTABcJowBoAGgAaAAxAGgAsAR6AGgAaAAXAGiAAICfgACBAREICAgIgB6AlwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXCaMAaABoAGgAMQBoALAEewBoAGgAFwBogACAKYAAgQERCAgICIAegJgICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFwmjAGgAaABoADEAaACwBHwAaABoABcAaIAAgACAAIEBEQgICAiAHoCZCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwqOABcJowBoAGgAaAAxAGgAsAR9AGgAaAAXAGiAAIEBF4AAgQERCAgICIAegJoICIAACBDI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXCaMAaABoAGgAMQBoALAEfgBoAGgAFwBogACAAIAAgQERCAgICIAegJsICIAACN8QDwCeAJ8AoAAhAKE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BdHRyaWJ1dGVzc3RvcmFnZYEBM4A+gA2AM4AAgAQIgQE30wA6ADsADgw9DEYASKgBsgGzAbQBtQG2AbcBuAG5gEKAQ4BEgEWARoBHgEiASagMRwxIDEkMSgxLDEwMTQxOgQE4gQE5gQE6gQE8gQE9gQE+gQE/gQFAgCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcMLQBoAGgAaAAxAGgAsAGyAGgAaAAXAGiAAIApgACBATYICAgIgB6AQggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXDC0AaABoAGgAMQBoALABswBoAGgAFwBogACAAIAAgQE2CAgICIAegEMICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXDHAAFwwtAGgAaABoADEAaACwAbQAaABoABcAaIAAgQE7gACBATYICAgIgB6ARAgIgAAI0wA6ADsADgx+DH8ASKCggCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcMLQBoAGgAaAAxAGgAsAG1AGgAaAAXAGiAAIApgACBATYICAgIgB6ARQgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXDC0AaABoAGgAMQBoALABtgBoAGgAFwBogACAKYAAgQE2CAgICIAegEYICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFwwtAGgAaABoADEAaACwAbcAaABoABcAaIAAgCmAAIEBNggICAiAHoBHCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcMLQBoAGgAaAAxAGgAsAG4AGgAaAAXAGiAAIAAgACBATYICAgIgB6ASAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXDC0AaABoAGgAMQBoALABuQBoAGgAFwBogACAKYAAgQE2CAgICIAegEkICIAACNkAIQAlDM0ADgAoDM4AIwBZDM8G/QPKAFoAeQAXACkAMQBoDNdfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ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vcmFnZYEBZ4A+gA2AM4AAgAQIgQFr0wA6ADsADg75DwIASKgBsgGzAbQBtQG2AbcBuAG5gEKAQ4BEgEWARoBHgEiASagPAw8EDwUPBg8HDwgPCQ8KgQFsgQFtgQFugQFwgQFxgQFygQFzgQF0gCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcO6QBoAGgAaAAxAGgAsAGyAGgAaAAXAGiAAIApgACBAWoICAgIgB6AQggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXDukAaABoAGgAMQBoALABswBoAGgAFwBogACAAIAAgQFqCAgICIAegEMICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXDywAFw7pAGgAaABoADEAaACwAbQAaABoABcAaIAAgQFvgACBAWoICAgIgB6ARAgIgAAI0wA6ADsADg86DzsASKCggCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcO6QBoAGgAaAAxAGgAsAG1AGgAaAAXAGiAAIApgACBAWoICAgIgB6ARQgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcCDgAXDukAaABoAGgAMQBoALABtgBoAGgAFwBogACAUIAAgQFqCAgICIAegEYICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFw7pAGgAaABoADEAaACwAbcAaABoABcAaIAAgCmAAIEBaggICAiAHoBHCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcO6QBoAGgAaAAxAGgAsAG4AGgAaAAXAGiAAIAAgACBAWoICAgIgB6ASAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXDukAaABoAGgAMQBoALABuQBoAGgAFwBogACAKYAAgQFqCAgICIAegEkICIAACNkAIQAlD4kADgAoD4oAIwBZD4sDnAPKAFoAeQAXACkAMQBoD5NfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmV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lAKYAKACnABcAFwAXECoAaABoAGgAMQBoALABuABoAGgAFwBogACAAIAAgQGBCAgICIAegEgICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxAqAGgAaABoADEAaACwAbkAaABoABcAaIAAgCmAAIEBgQgICAiAHoBJCAiAAAjZACEAJRDKAA4AKBDLACMAWRDMA50DygBaAHkAFwApADEAaBDUXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQF+gImADYAzgACABAiBAY3TADoAOwAOENYQ3gBIpwR6BHsEfAR9BH4EfwSAgJeAmICZgJqAm4CcgJ2nEN8Q4BDhEOIQ4xDkEOWBAY6BAY+BAZCBAZGBAZOBAZSBAZWALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFxArAGgAaABoADEAaACwBHoAaABoABcAaIAAgACAAIEBjAgICAiAHoCXCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcQKwBoAGgAaAAxAGgAsAR7AGgAaAAXAGiAAIApgACBAYwICAgIgB6AmAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXECsAaABoAGgAMQBoALAEfABoAGgAFwBogACAAIAAgQGMCAgICIAegJkICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXERYAFxArAGgAaABoADEAaACwBH0AaABoABcAaIAAgQGSgACBAYwICAgIgB6AmggIgAAIEQOE3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXECsAaABoAGgAMQBoALAEfgBoAGgAFwBogACAAIAAgQGMCAgICIAegJsICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFxArAGgAaABoADEAaACwBH8AaABoABcAaIAAgACAAIEBjAgICAiAHoCcCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcQKwBoAGgAaAAxAGgAsASAAGgAaAAXAGiAAIAAgACBAYwICAgIgB6AnQgIgAAI3xASAJ4AnwCgEVIAIQCiAKMRUwAjAKERVACkAA4AJQClAKYAKACnABcAFwAXACkARQBoAGgRXAAxAGgAWgBoA8ADkgBoAGgRZABoXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASAZAgIgQGYCIANCICngH8ICIEBlwgSivTEGNMAOgA7AA4RaBFrAEiiAZwDyoA+gImiEWwRbYEBmYEBpIAs2QAhACURcAAOACgRcQAjAFkRcgOeAZwAWgB5ABcAKQAxAGgRel8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEBloA+gA2AM4AAgAQIgQGa0wA6ADsADhF8EYUASKgBsgGzAbQBtQG2AbcBuAG5gEKAQ4BEgEWARoBHgEiASagRhhGHEYgRiRGKEYsRjBGNgQGbgQGcgQGdgQGfgQGggQGhgQGigQGjgCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcRbABoAGgAaAAxAGgAsAGyAGgAaAAXAGiAAIApgACBAZkICAgIgB6AQggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXEWwAaABoAGgAMQBoALABswBoAGgAFwBogACAAIAAgQGZCAgICIAegEMICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXEa8AFxFsAGgAaABoADEAaACwAbQAaABoABcAaIAAgQGegACBAZkICAgIgB6ARAgIgAAI0wA6ADsADhG9Eb4ASKCggCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwIOABcRbABoAGgAaAAxAGgAsAG1AGgAaAAXAGiAAIBQgACBAZkICAgIgB6ARQgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXEWwAaABoAGgAMQBoALABtgBoAGgAFwBogACAKYAAgQGZCAgICIAegEYICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxFsAGgAaABoADEAaACwAbcAaABoABcAaIAAgCmAAIEBmQgICAiAHoBHCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcRbABoAGgAaAAxAGgAsAG4AGgAaAAXAGiAAIAAgACBAZkICAgIgB6ASAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXEWwAaABoAGgAMQBoALABuQBoAGgAFwBogACAKYAAgQGZCAgICIAegEkICIAACNkAIQAlEgwADgAoEg0AIwBZEg4DngPKAFoAeQAXACkAMQBoEhZfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAZaAiYANgDOAAIAECIEBpdMAOgA7AA4SGBIgAEinBHoEewR8BH0EfgR/BICAl4CYgJmAmoCbgJyAnacSIRIiEiMSJBIlEiYSJ4EBpoEBp4EBqIEBqYEBq4EBrIEBrYAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXEW0AaABoAGgAMQBoALAEegBoAGgAFwBogACAAIAAgQGkCAgICIAegJcICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxFtAGgAaABoADEAaACwBHsAaABoABcAaIAAgCmAAIEBpAgICAiAHoCYCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcRbQBoAGgAaAAxAGgAsAR8AGgAaAAXAGiAAIAAgACBAaQICAgIgB6AmQgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcSWAAXEW0AaABoAGgAMQBoALAEfQBoAGgAFwBogACBAaqAAIEBpAgICAiAHoCaCAiAAAgRBLDfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcRbQBoAGgAaAAxAGgAsAR+AGgAaAAXAGiAAIAAgACBAaQICAgIgB6AmwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXEW0AaABoAGgAMQBoALAEfwBoAGgAFwBogACAAIAAgQGkCAgICIAegJwICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFxFtAGgAaABoADEAaACwBIAAaABoABcAaIAAgACAAIEBpAgICAiAHoCdCAiAAAjfEBIAngCfAKASlAAhAKIAoxKVACMAoRKWAKQADgAlAKUApgAoAKcAFwAXABcAKQBFAGgAaBKeADEAaABaAGgDwAOTAGgAaBKmAGhfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIBkCAiBAbAIgA0IgKeAgAgIgQGvCBKb6ZWL0wA6ADsADhKqEq0ASKIBnAPKgD6AiaISrhKvgQGxgQG8gCzZACEAJRKyAA4AKBKzACMAWRK0A58BnABaAHkAFwApADEAaBK8XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQGugD6ADYAzgACABAiBAbLTADoAOwAOEr4SxwBIqAGyAbMBtAG1AbYBtwG4AbmAQoBDgESARYBGgEeASIBJqBLIEskSyhLLEswSzRLOEs+BAbOBAbSBAbWBAbeBAbiBAbmBAbqBAbuALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxKuAGgAaABoADEAaACwAbIAaABoABcAaIAAgCmAAIEBsQgICAiAHoBCCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcSrgBoAGgAaAAxAGgAsAGzAGgAaAAXAGiAAIAAgACBAbEICAgIgB6AQwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcS8QAXEq4AaABoAGgAMQBoALABtABoAGgAFwBogACBAbaAAIEBsQgICAiAHoBECAiAAAjTADoAOwAOEv8TAABIoKCALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxKuAGgAaABoADEAaACwAbUAaABoABcAaIAAgCmAAIEBsQgICAiAHoBFCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwIOABcSrgBoAGgAaAAxAGgAsAG2AGgAaAAXAGiAAIBQgACBAbEICAgIgB6ARggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXEq4AaABoAGgAMQBoALABtwBoAGgAFwBogACAKYAAgQGxCAgICIAegEcICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFxKuAGgAaABoADEAaACwAbgAaABoABcAaIAAgACAAIEBsQgICAiAHoBICAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcSrgBoAGgAaAAxAGgAsAG5AGgAaAAXAGiAAIApgACBAbEICAgIgB6ASQgIgAAI2QAhACUTTgAOACgTTwAjAFkTUAOfA8oAWgB5ABcAKQAxAGgTWF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEBroCJgA2AM4AAgAQIgQG90wA6ADsADhNaE2IASKcEegR7BHwEfQR+BH8EgICXgJiAmYCagJuAnICdpxNjE2QTZRNmE2cTaBNpgQG+gQG/gQHAgQHBgQHCgQHDgQHEgCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcSrwBoAGgAaAAxAGgAsAR6AGgAaAAXAGiAAIAAgACBAbwICAgIgB6AlwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXEq8AaABoAGgAMQBoALAEewBoAGgAFwBogACAKYAAgQG8CAgICIAegJgICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFxKvAGgAaABoADEAaACwBHwAaABoABcAaIAAgACAAIEBvAgICAiAHoCZCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFxEWABcSrwBoAGgAaAAxAGgAsAR9AGgAaAAXAGiAAIEBkoAAgQG8CAgICIAegJoICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFxKvAGgAaABoADEAaACwBH4AaABoABcAaIAAgACAAIEBvAgICAiAHoCbCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcSrwBoAGgAaAAxAGgAsAR/AGgAaAAXAGiAAIAAgACBAbwICAgIgB6AnAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXEq8AaABoAGgAMQBoALAEgABoAGgAFwBogACAAIAAgQG8CAgICIAegJ0ICIAACN8QEgCeAJ8AoBPVACEAogCjE9YAIwChE9cApAAOACUApQCmACgApwAXABcAFwApAEUAaABoE98AMQBoAFoAaAGTA5QAaABoE+cAaF8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgGQICIEBxwiADQiBATKAgQgIgQHGCBMAAAABGGkwc9MAOgA7AA4T6xPuAEiiAZwBnYA+gD+iE+8T8IEByIEB04As2QAhACUT8wAOACgT9AAjAFkT9QOgAZwAWgB5ABcAKQAxAGgT/V8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEBxYA+gA2AM4AAgAQIgQHJ0wA6ADsADhP/FAgASKgBsgGzAbQBtQG2AbcBuAG5gEKAQ4BEgEWARoBHgEiASagUCRQKFAsUDBQNFA4UDxQQgQHKgQHLgQHMgQHOgQHPgQHQgQHRgQHSgCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcT7wBoAGgAaAAxAGgAsAGyAGgAaAAXAGiAAIApgACBAcgICAgIgB6AQggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXE+8AaABoAGgAMQBoALABswBoAGgAFwBogACAAIAAgQHICAgICIAegEMICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXFDIAFxPvAGgAaABoADEAaACwAbQAaABoABcAaIAAgQHNgACBAcgICAgIgB6ARAgIgAAI0wA6ADsADhRAFEEASKCggCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcT7wBoAGgAaAAxAGgAsAG1AGgAaAAXAGiAAIApgACBAcgICAgIgB6ARQgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcCDgAXE+8AaABoAGgAMQBoALABtgBoAGgAFwBogACAUIAAgQHICAgICIAegEYICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxPvAGgAaABoADEAaACwAbcAaABoABcAaIAAgCmAAIEByAgICAiAHoBHCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcT7wBoAGgAaAAxAGgAsAG4AGgAaAAXAGiAAIAAgACBAcgICAgIgB6ASAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXE+8AaABoAGgAMQBoALABuQBoAGgAFwBogACAKYAAgQHICAgICIAegEkICIAACNkAIQAlFI8ADgAoFJAAIwBZFJEDoAGdAFoAeQAXACkAMQBoFJlfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAcWAP4ANgDOAAIAECIEB1NMAOgA7AA4UmxSjAEinAlcCWAJZAloCWwJcAl2AVoBXgFiAWYBagFuAXKcUpBSlFKYUpxSoFKkUqoEB1YEB1oEB14EB2IEB2YEB2oEB24As3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcCcAAXE/AAaABoAGgAMQBoALACVwBoAGgAFwBogACAXoAAgQHTCAgICIAegFYICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXAo8AFxPwAGgAaABoADEAaACwAlgAaABoABcAaIAAgGKAAIEB0wgICAiAHoBXCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwKPABcT8ABoAGgAaAAxAGgAsAJZAGgAaAAXAGiAAIBigACBAdMICAgIgB6AWAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAQwAXE/AAaABoAGgAMQBoALACWgBoAGgAFwBogACAC4AAgQHTCAgICIAegFkICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxPwAGgAaABoADEAaACwAlsAaABoABcAaIAAgCmAAIEB0wgICAiAHoBaCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcT8ABoAGgAaAAxAGgAsAJcAGgAaAAXAGiAAIApgACBAdMICAgIgB6AWwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBdwAXE/AAaABoAGgAMQBoALACXQBoAGgAFwBogACAO4AAgQHTCAgICIAegFwICIAACN8QEgCeAJ8AoBUWACEAogCjFRcAIwChFRgApAAOACUApQCmACgApwAXABcAFwApAEUAaABoFSAAMQBoAFoAaAPAA5UAaABoFSgAaF8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgGQICIEB3giADQiAp4CCCAiBAd0IEkgFNOvTADoAOwAOFSwVLwBIogGcA8qAPoCJohUwFTGBAd+BAeqALNkAIQAlFTQADgAoFTUAIwBZFTYDoQGcAFoAeQAXACkAMQBoFT5fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAdyAPoANgDOAAIAECIEB4NMAOgA7AA4VQBVJAEioAbIBswG0AbUBtgG3AbgBuYBCgEOARIBFgEaAR4BIgEmoFUoVSxVMFU0VThVPFVAVUYEB4YEB4oEB44EB5YEB5oEB54EB6IEB6YAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXFTAAaABoAGgAMQBoALABsgBoAGgAFwBogACAKYAAgQHfCAgICIAegEIICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFxUwAGgAaABoADEAaACwAbMAaABoABcAaIAAgACAAIEB3wgICAiAHoBDCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFxVzABcVMABoAGgAaAAxAGgAsAG0AGgAaAAXAGiAAIEB5IAAgQHfCAgICIAegEQICIAACNMAOgA7AA4VgRWCAEigoIAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXFTAAaABoAGgAMQBoALABtQBoAGgAFwBogACAKYAAgQHfCAgICIAegEUICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxUwAGgAaABoADEAaACwAbYAaABoABcAaIAAgCmAAIEB3wgICAiAHoBGCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcVMABoAGgAaAAxAGgAsAG3AGgAaAAXAGiAAIApgACBAd8ICAgIgB6ARwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXFTAAaABoAGgAMQBoALABuABoAGgAFwBogACAAIAAgQHfCAgICIAegEgICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxUwAGgAaABoADEAaACwAbkAaABoABcAaIAAgCmAAIEB3wgICAiAHoBJCAiAAAjZACEAJRXQAA4AKBXRACMAWRXSA6EDygBaAHkAFwApADEAaBXaXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQHcgImADYAzgACABAiBAevTADoAOwAOFdwV5ABIpwR6BHsEfAR9BH4EfwSAgJeAmICZgJqAm4CcgJ2nFeUV5hXnFegV6RXqFeuBAeyBAe2BAe6BAe+BAfCBAfGBAfKALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFxUxAGgAaABoADEAaACwBHoAaABoABcAaIAAgACAAIEB6ggICAiAHoCXCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcVMQBoAGgAaAAxAGgAsAR7AGgAaAAXAGiAAIApgACBAeoICAgIgB6AmAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXFTEAaABoAGgAMQBoALAEfABoAGgAFwBogACAAIAAgQHqCAgICIAegJkICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXCAsAFxUxAGgAaABoADEAaACwBH0AaABoABcAaIAAgOiAAIEB6ggICAiAHoCaCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcVMQBoAGgAaAAxAGgAsAR+AGgAaAAXAGiAAIAAgACBAeoICAgIgB6AmwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXFTEAaABoAGgAMQBoALAEfwBoAGgAFwBogACAAIAAgQHqCAgICIAegJwICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFxUxAGgAaABoADEAaACwBIAAaABoABcAaIAAgACAAIEB6ggICAiAHoCdCAiAAAjfEBIAngCfAKAWVwAhAKIAoxZYACMAoRZZAKQADgAlAKUApgAoAKcAFwAXABcAKQBFAGgAaBZhADEAaABaAGgDwAOWAGgAaBZpAGhfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIBkCAiBAfUIgA0IgKeAgwgIgQH0CBLYq0pW0wA6ADsADhZtFnAASKIBnAPKgD6AiaIWcRZygQH2gQIBgCzZACEAJRZ1AA4AKBZ2ACMAWRZ3A6IBnABaAHkAFwApADEAaBZ/XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQHzgD6ADYAzgACABAiBAffTADoAOwAOFoEWigBIqAGyAbMBtAG1AbYBtwG4AbmAQoBDgESARYBGgEeASIBJqBaLFowWjRaOFo8WkBaRFpKBAfiBAfmBAfqBAfyBAf2BAf6BAf+BAgCALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxZxAGgAaABoADEAaACwAbIAaABoABcAaIAAgCmAAIEB9ggICAiAHoBCCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcWcQBoAGgAaAAxAGgAsAGzAGgAaAAXAGiAAIAAgACBAfYICAgIgB6AQwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcWtAAXFnEAaABoAGgAMQBoALABtABoAGgAFwBogACBAfuAAIEB9ggICAiAHoBECAiAAAjTADoAOwAOFsIWwwBIoKCALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxZxAGgAaABoADEAaACwAbUAaABoABcAaIAAgCmAAIEB9ggICAiAHoBFCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcWcQBoAGgAaAAxAGgAsAG2AGgAaAAXAGiAAIApgACBAfYICAgIgB6ARggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXFnEAaABoAGgAMQBoALABtwBoAGgAFwBogACAKYAAgQH2CAgICIAegEcICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFxZxAGgAaABoADEAaACwAbgAaABoABcAaIAAgACAAIEB9ggICAiAHoBICAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcWcQBoAGgAaAAxAGgAsAG5AGgAaAAXAGiAAIApgACBAfYICAgIgB6ASQgIgAAI2QAhACUXEQAOACgXEgAjAFkXEwOiA8oAWgB5ABcAKQAxAGgXG18QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYEB84CJgA2AM4AAgAQIgQIC0wA6ADsADhcdFyUASKcEegR7BHwEfQR+BH8EgICXgJiAmYCagJuAnICdpxcmFycXKBcpFyoXKxcsgQIDgQIEgQIFgQIGgQIHgQIIgQIJgCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcWcgBoAGgAaAAxAGgAsAR6AGgAaAAXAGiAAIAAgACBAgEICAgIgB6AlwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXFnIAaABoAGgAMQBoALAEewBoAGgAFwBogACAKYAAgQIBCAgICIAegJgICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFxZyAGgAaABoADEAaACwBHwAaABoABcAaIAAgACAAIECAQgICAiAHoCZCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwgLABcWcgBoAGgAaAAxAGgAsAR9AGgAaAAXAGiAAIDogACBAgEICAgIgB6AmggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXFnIAaABoAGgAMQBoALAEfgBoAGgAFwBogACAAIAAgQIBCAgICIAegJsICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFxZyAGgAaABoADEAaACwBH8AaABoABcAaIAAgACAAIECAQgICAiAHoCcCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcWcgBoAGgAaAAxAGgAsASAAGgAaAAXAGiAAIAAgACBAgEICAgIgB6AnQgIgAAI3xASAJ4AnwCgF5gAIQCiAKMXmQAjAKEXmgCkAA4AJQClAKYAKACnABcAFwAXACkARQBoAGgXogAxAGgAWgBoA8ADlwBoAGgXqgBoXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASAZAgIgQIMCIANCICngIQICIECCwgSt+SedtMAOgA7AA4XrhexAEiiAZwDyoA+gImiF7IXs4ECDYECGIAs2QAhACUXtgAOACgXtwAjAFkXuAOjAZwAWgB5ABcAKQAxAGgXwF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzb3JkZXJlZF8QJFhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzd2FzRW5jb2RlZF8QIVhEQnVja2V0Rm9yT3duZWRBdHRyaWJ1dGVzc3RvcmFnZYECCoA+gA2AM4AAgAQIgQIO0wA6ADsADhfCF8sASKgBsgGzAbQBtQG2AbcBuAG5gEKAQ4BEgEWARoBHgEiASagXzBfNF84XzxfQF9EX0hfTgQIPgQIQgQIRgQITgQIUgQIVgQIWgQIXgCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcXsgBoAGgAaAAxAGgAsAGyAGgAaAAXAGiAAIApgACBAg0ICAgIgB6AQggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXF7IAaABoAGgAMQBoALABswBoAGgAFwBogACAAIAAgQINCAgICIAegEMICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXF/UAFxeyAGgAaABoADEAaACwAbQAaABoABcAaIAAgQISgACBAg0ICAgIgB6ARAgIgAAI0wA6ADsADhgDGAQASKCggCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcXsgBoAGgAaAAxAGgAsAG1AGgAaAAXAGiAAIApgACBAg0ICAgIgB6ARQgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcCDgAXF7IAaABoAGgAMQBoALABtgBoAGgAFwBogACAUIAAgQINCAgICIAegEYICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxeyAGgAaABoADEAaACwAbcAaABoABcAaIAAgCmAAIECDQgICAiAHoBHCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcXsgBoAGgAaAAxAGgAsAG4AGgAaAAXAGiAAIAAgACBAg0ICAgIgB6ASAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXF7IAaABoAGgAMQBoALABuQBoAGgAFwBogACAKYAAgQINCAgICIAegEkICIAACNkAIQAlGFIADgAoGFMAIwBZGFQDowPKAFoAeQAXACkAMQBoGFxfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAgqAiYANgDOAAIAECIECGdMAOgA7AA4YXhhmAEinBHoEewR8BH0EfgR/BICAl4CYgJmAmoCbgJyAnacYZxhoGGkYahhrGGwYbYECGoECG4ECHIECHYECH4ECIIECIoAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXF7MAaABoAGgAMQBoALAEegBoAGgAFwBogACAAIAAgQIYCAgICIAegJcICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxezAGgAaABoADEAaACwBHsAaABoABcAaIAAgCmAAIECGAgICAiAHoCYCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcXswBoAGgAaAAxAGgAsAR8AGgAaAAXAGiAAIAAgACBAhgICAgIgB6AmQgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcYngAXF7MAaABoAGgAMQBoALAEfQBoAGgAFwBogACBAh6AAIECGAgICAiAHoCaCAiAAAgRBwjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcXswBoAGgAaAAxAGgAsAR+AGgAaAAXAGiAAIAAgACBAhgICAgIgB6AmwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcYvQAXF7MAaABoAGgAMQBoALAEfwBoAGgAFwBogACBAiGAAIECGAgICAiAHoCcCAiAAAhfEBlOU1NlY3VyZVVuYXJjaGl2ZUZyb21EYXRh3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXF7MAaABoAGgAMQBoALAEgABoAGgAFwBogACAAIAAgQIYCAgICIAegJ0ICIAACN8QEgCeAJ8AoBjbACEAogCjGNwAIwChGN0ApAAOACUApQCmACgApwAXABcAFwApAEUAaABoGOUAMQBoAFoAaAPAA5gAaABoGO0AaF8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgGQICIECJQiADQiAp4CFCAiBAiQIEnmxrDrTADoAOwAOGPEY9ABIogGcA8qAPoCJohj1GPaBAiaBAjGALNkAIQAlGPkADgAoGPoAIwBZGPsDpAGcAFoAeQAXACkAMQBoGQNfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAiOAPoANgDOAAIAECIECJ9MAOgA7AA4ZBRkOAEioAbIBswG0AbUBtgG3AbgBuYBCgEOARIBFgEaAR4BIgEmoGQ8ZEBkRGRIZExkUGRUZFoECKIECKYECKoECLIECLYECLoECL4ECMIAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXGPUAaABoAGgAMQBoALABsgBoAGgAFwBogACAKYAAgQImCAgICIAegEIICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFxj1AGgAaABoADEAaACwAbMAaABoABcAaIAAgACAAIECJggICAiAHoBDCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFxk4ABcY9QBoAGgAaAAxAGgAsAG0AGgAaAAXAGiAAIECK4AAgQImCAgICIAegEQICIAACNMAOgA7AA4ZRhlHAEigoIAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcCDgAXGPUAaABoAGgAMQBoALABtQBoAGgAFwBogACAUIAAgQImCAgICIAegEUICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxj1AGgAaABoADEAaACwAbYAaABoABcAaIAAgCmAAIECJggICAiAHoBGCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcY9QBoAGgAaAAxAGgAsAG3AGgAaAAXAGiAAIApgACBAiYICAgIgB6ARwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXGPUAaABoAGgAMQBoALABuABoAGgAFwBogACAAIAAgQImCAgICIAegEgICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxj1AGgAaABoADE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egEMICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXGqkAFxpmAGgAaABoADEAaACwAbQAaABoABcAaIAAgQJGgACBAkEICAgIgB6ARAgIgAAI0wA6ADsADhq3GrgASKCggCzfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwIOABcaZgBoAGgAaAAxAGgAsAG1AGgAaAAXAGiAAIBQgACBAkEICAgIgB6ARQgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXGmYAaABoAGgAMQBoALABtgBoAGgAFwBogACAKYAAgQJBCAgICIAegEYICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxpmAGgAaABoADEAaACwAbcAaABoABcAaIAAgCmAAIECQQgICAiAHoBHCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcaZgBoAGgAaAAxAGgAsAG4AGgAaAAXAGiAAIAAgACBAkEICAgIgB6ASAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXGmYAaABoAGgAMQBoALABuQBoAGgAFwBogACAKYAAgQJBCAgICIAegEkICIAACNkAIQAlGwYADgAoGwcAIwBZGwgBeAPKAFoAeQAXACkAMQBoGxBfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAj6AiYANgDOAAIAECIECTdMAOgA7AA4bEhsaAEinBHoEewR8BH0EfgR/BICAl4CYgJmAmoCbgJyAnacbGxscGx0bHhsfGyAbIYECToECT4ECUIECUYECUoECU4ECVIAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXGmcAaABoAGgAMQBoALAEegBoAGgAFwBogACAAIAAgQJMCAgICIAegJcICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxpnAGgAaABoADEAaACwBHsAaABoABcAaIAAgCmAAIECTAgICAiAHoCYCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcaZwBoAGgAaAAxAGgAsAR8AGgAaAAXAGiAAIAAgACBAkwICAgIgB6AmQgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcICwAXGmcAaABoAGgAMQBoALAEfQBoAGgAFwBogACA6IAAgQJMCAgICIAegJoICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFxpnAGgAaABoADEAaACwBH4AaABoABcAaIAAgACAAIECTAgICAiAHoCbCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcaZwBoAGgAaAAxAGgAsAR/AGgAaAAXAGiAAIAAgACBAkwICAgIgB6AnAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXGmcAaABoAGgAMQBoALAEgABoAGgAFwBogACAAIAAgQJMCAgICIAegJ0ICIAACN8QEgCeAJ8AoBuNACEAogCjG44AIwChG48ApAAOACUApQCmACgApwAXABcAFwApAEMAaABoG5cAMQBoAFoAaAPAAXIAaABoG58AaF8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgAsICIECVwiADQiAp4A3CAiBAlYIEjr0Db/TADoAOwAOG6MbpgBIogGcA8qAPoCJohunG6iBAliBAmOALNkAIQAlG6sADgAoG6wAIwBZG60BeQGcAFoAeQAXACkAMQBoG7VfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAlWAPoANgDOAAIAECIECWdMAOgA7AA4btxvAAEioAbIBswG0AbUBtgG3AbgBuYBCgEOARIBFgEaAR4BIgEmoG8EbwhvDG8QbxRvGG8cbyIECWoECW4ECXIECXoECX4ECYIECYYECYoAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXG6cAaABoAGgAMQBoALABsgBoAGgAFwBogACAKYAAgQJYCAgICIAegEIICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFxunAGgAaABoADEAaACwAbMAaABoABcAaIAAgACAAIECWAgICAiAHoBDCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFxvqABcbpwBoAGgAaAAxAGgAsAG0AGgAaAAXAGiAAIECXYAAgQJYCAgICIAegEQICIAACNMAOgA7AA4b+Bv5AEigoIAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXG6cAaABoAGgAMQBoALABtQBoAGgAFwBogACAKYAAgQJYCAgICIAegEUICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxunAGgAaABoADEAaACwAbYAaABoABcAaIAAgCmAAIECWAgICAiAHoBGCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcbpwBoAGgAaAAxAGgAsAG3AGgAaAAXAGiAAIApgACBAlgICAgIgB6ARwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXG6cAaABoAGgAMQBoALABuABoAGgAFwBogACAAIAAgQJYCAgICIAegEgICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxunAGgAaABoADEAaACwAbkAaABoABcAaIAAgCmAAIECWAgICAiAHoBJCAiAAAjZACEAJRxHAA4AKBxIACMAWRxJAXkDygBaAHkAFwApADEAaBxRXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQJVgImADYAzgACABAiBAmTTADoAOwAOHFMcWwBIpwR6BHsEfAR9BH4EfwSAgJeAmICZgJqAm4CcgJ2nHFwcXRxeHF8cYBxhHGKBAmWBAmeBAmiBAmmBAmuBAmyBAm2ALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXHGYAFxuoAGgAaABoADEAaACwBHoAaABoABcAaIAAgQJmgACBAmMICAgIgB6AlwgIgAAIUk5P3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXG6gAaABoAGgAMQBoALAEewBoAGgAFwBogACAKYAAgQJjCAgICIAegJgICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFxuoAGgAaABoADEAaACwBHwAaABoABcAaIAAgACAAIECYwgICAiAHoCZCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFxyUABcbqABoAGgAaAAxAGgAsAR9AGgAaAAXAGiAAIECaoAAgQJjCAgICIAegJoICIAACBEDIN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFxuoAGgAaABoADEAaACwBH4AaABoABcAaIAAgACAAIECYwgICAiAHoCbCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcbqABoAGgAaAAxAGgAsAR/AGgAaAAXAGiAAIAAgACBAmMICAgIgB6AnAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXG6gAaABoAGgAMQBoALAEgABoAGgAFwBogACAAIAAgQJjCAgICIAegJ0ICIAACN8QEgCeAJ8AoBzQACEAogCjHNEAIwChHNIApAAOACUApQCmACgApwAXABcAFwApAEMAaABoHNoAMQBoAFoAaAPAAXMAaABoHOIAaF8QIFhEQnVja2V0Rm9yU3RlcmVvdHlwZXN3YXNFbmNvZGVkXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc3N0b3JhZ2VfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzb3JkZXJlZIAAgACAAIAEgAsICIECcAiADQiAp4A4CAiBAm8IEmiKIUbTADoAOwAOHOYc6QBIogGcA8qAPoCJohzqHOuBAnGBAnyALNkAIQAlHO4ADgAoHO8AIwBZHPABegGcAFoAeQAXACkAMQBoHPhfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAm6APoANgDOAAIAECIECctMAOgA7AA4c+h0DAEioAbIBswG0AbUBtgG3AbgBuYBCgEOARIBFgEaAR4BIgEmoHQQdBR0GHQcdCB0JHQodC4ECc4ECdIECdYECd4ECeIECeYECeoECe4As3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXHOoAaABoAGgAMQBoALABsgBoAGgAFwBogACAKYAAgQJxCAgICIAegEIICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFxzqAGgAaABoADEAaACwAbMAaABoABcAaIAAgACAAIECcQgICAiAHoBDCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFx0tABcc6gBoAGgAaAAxAGgAsAG0AGgAaAAXAGiAAIECdoAAgQJxCAgICIAegEQICIAACNMAOgA7AA4dOx08AEigoIAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXHOoAaABoAGgAMQBoALABtQBoAGgAFwBogACAKYAAgQJxCAgICIAegEUICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFxzqAGgAaABoADEAaACwAbYAaABoABcAaIAAgCmAAIECcQgICAiAHoBGCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcc6gBoAGgAaAAxAGgAsAG3AGgAaAAXAGiAAIApgACBAnEICAgIgB6ARwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXHOoAaABoAGgAMQBoALABuAB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IgB6ARQgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcCDgAXHisAaABoAGgAMQBoALABtgBoAGgAFwBogACAUIAAgQKICAgICIAegEYICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFx4rAGgAaABoADEAaACwAbcAaABoABcAaIAAgCmAAIECiAgICAiAHoBHCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABceKwBoAGgAaAAxAGgAsAG4AGgAaAAXAGiAAIAAgACBAogICAgIgB6ASAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXHisAaABoAGgAMQBoALABuQBoAGgAFwBogACAKYAAgQKICAgICIAegEkICIAACNkAIQAlHssADgAoHswAIwBZHs0BewGdAFoAeQAXACkAMQBoHtVfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAoWAP4ANgDOAAIAECIEClNMAOgA7AA4e1x7fAEinAlcCWAJZAloCWwJcAl2AVoBXgFiAWYBagFuAXKce4B7hHuIe4x7kHuUe5oEClYECloECl4ECmIED/4EEAIEEAYAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcCcAAXHiwAaABoAGgAMQBoALACVwBoAGgAFwBogACAXoAAgQKTCAgICIAegFYICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXAn8AFx4sAGgAaABoADEAaACwAlgAaABoABcAaIAAgGCAAIECkwgICAiAHoBXCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwKPABceLABoAGgAaAAxAGgAsAJZAGgAaAAXAGiAAIBigACBApMICAgIgB6AWAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcARwAXHiwAaABoAGgAMQBoALACWgBoAGgAFwBogACBApmAAIECkwgICAiAHoBZCAiAAAjfEBAfJR8mHycfKAAhHykfKgAjHysfLAAOACUfLR8uACgAWQBaHzAAKQApABQfNABgADEAKQBaAGMAQQBaHzsfPABoXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zZHVwbGljYXRlc18QJFhEQnVja2V0Rm9yR2VuZXJhbGl6YXRpb25zd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNvcmRlcmVkXxAhWERCdWNrZXRGb3JHZW5lcmFsaXphdGlvbnNzdG9yYWdlgA2BAq+ABIAEgAKBApuBAWGABIANgQFjgAqADYED/oECmggTAAAAAQL0zv7TADoAOwAOH0AfQgBIoQBtgA+hH0OBApyALNkAIQAlH0YADgAoH0cAIwBZH0gARwBtAFoAeQAXACkAMQBoH1BfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBApmAD4ANgDOAAIAECIECndMAOgA7AA4fUh9cAEipAIAAgQCCAIMAhACFAIYAhwCIgBKAE4AUgBWAFoAXgBiAGYAaqR9dH14fXx9gH2EfYh9jH2QfZYECnoECoIECoYECpoECp4ECqYECqoECrIECrYAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcfaQAXH0MAaABoAGgAMQBoALAAgABoAGgAFwBogACBAp+AAIECnAgICAiAHoASCAiAAAjSADsADh93ALiggB3fEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcfQwBoAGgAaAAxAGgAsACBAGgAaAAXAGiAAIAAgACBApwICAgIgB6AEwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcfigAXH0MAaABoAGgAMQBoALAAggBoAGgAFwBogACBAqKAAIECnAgICAiAHoAUCAiAAAjSADsADh+YALihH5mBAqOAHdIAOwAOH5wAuKIfnR+egQKkgQKlgB1fEBJyZWNvcmRlZE9iamVjdFR5cGVfEBhyZWNvcmRlZE9iamVjdElkZW50aWZpZXLfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcfQwBoAGgAaAAxAGgAsACDAGgAaAAXAGiAAIAAgACBApwICAgIgB6AFQgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcfswAXH0MAaABoAGgAMQBoALAAhABoAGgAFwBogACBAqiAAIECnAgICAiAHoAWCAiAAAjSADsADh/BALiggB3fEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcfQwBoAGgAaAAxAGgAsACFAGgAaAAXAGiAAIApgACBApwICAgIgB6AFwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcf1AAXH0MAaABoAGgAMQBoALAAhgBoAGgAFwBogACBAquAAIECnAgICAiAHoAYCAiAAAjTADoAOwAOH+If4wBIoKCALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXATkAFx9DAGgAaABoADEAaACwAIcAaABoABcAaIAAgC6AAIECnAgICAiAHoAZCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFx/2ABcfQwBoAGgAaAAxAGgAsACIAGgAaAAXAGiAAIECroAAgQKcCAgICIAegBoICIAACFxSZW1vdGVSZWNvcmTTADoAOwAOIAUgFABIriAGA5YgCCAJIAogCyAMIA0gDgb2IBAgESASA46BArCAg4ECsYECsoECs4ECtIECtYECtoECt4DSgQK4gQK5gQK6gHuuIBUgFiAXIBggGSA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AKACnABcBEgAXIEsAaABoAGgAMQBoALAEewBoAGgAFwBogACAKYAAgQLJCAgICIAegJgICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFyBLAGgAaABoADEAaACwBHwAaABoABcAaIAAgACAAIECyQgICAiAHoCZCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwgLABcgSwBoAGgAaAAxAGgAsAR9AGgAaAAXAGiAAIDogACBAskICAgIgB6AmggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXIEsAaABoAGgAMQBoALAEfgBoAGgAFwBogACAAIAAgQLJCAgICIAegJsICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFyBLAGgAaABoADEAaACwBH8AaABoABcAaIAAgACAAIECyQgICAiAHoCcCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcgSwBoAGgAaAAxAGgAsASAAGgAaAAXAGiAAIAAgACBAskICAgIgB6AnQgIgAAI3xASAJ4AnwCgIXEAIQCiAKMhcgAjAKEhcwCkAA4AJQClAKYAKACnABcAFwAXACkARwBoAGghewAxAGgAWgBoA8ADlgBoAGghgwBoXxAgWERCdWNrZXRGb3JTdGVyZW90eXBlc3dhc0VuY29kZWRfEB1YREJ1Y2tldEZvclN0ZXJlb3R5cGVzc3RvcmFnZV8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNvcmRlcmVkgACAAIAAgASBApkICIEC1AiADQiAp4CDCAiBAtMIEkQIwLzTADoAOwAOIYchigBIogGcA8qAPoCJoiGLIYyBAtWBAuCALNkAIQAlIY8ADgAoIZAAIwBZIZEgFgGcAFoAeQAXACkAMQBoIZlfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAtKAPoANgDOAAIAECIEC1tMAOgA7AA4hmyGkAEioAbIBswG0AbUBtgG3AbgBuYBCgEOARIBFgEaAR4BIgEmoIaUhpiGnIaghqSGqIashrIEC14EC2IEC2YEC24EC3IEC3YEC3oEC34As3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXIYsAaABoAGgAMQBoALABsgBoAGgAFwBogACAKYAAgQLVCAgICIAegEIICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFyGLAGgAaABoADEAaACwAbMAaABoABcAaIAAgACAAIEC1QgICAiAHoBDCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFyHOABchiwBoAGgAaAAxAGgAsAG0AGgAaAAXAGiAAIEC2oAAgQLVCAgICIAegEQICIAACNMAOgA7AA4h3CHdAEigoIAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXIYsAaABoAGgAMQBoALABtQBoAGgAFwBogACAKYAAgQLVCAgICIAegEUICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFyGLAGgAaABoADEAaACwAbYAaABoABcAaIAAgCmAAIEC1QgICAiAHoBGCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABchiwBoAGgAaAAxAGgAsAG3AGgAaAAXAGiAAIApgACBAtUICAgIgB6ARwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXIYsAaABoAGgAMQBoALABuABoAGgAFwBogACAAIAAgQLVCAgICIAegEgICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFyGLAGgAaABoADEAaACwAbkAaABoABcAaIAAgCmAAIEC1QgICAiAHoBJCAiAAAjZACEAJSIrAA4AKCIsACMAWSItIBYDygBaAHkAFwApADEAaCI1XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQLSgImADYAzgACABAiBAuHTADoAOwAOIjciPwBIpwR6BHsEfAR9BH4EfwSAgJeAmICZgJqAm4CcgJ2nIkAiQSJCIkMiRCJFIkaBAuKBAuOBAuSBAuWBAuaBAueBAuiALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFyGMAGgAaABoADEAaACwBHoAaABoABcAaIAAgACAAIEC4AgICAiAHoCXCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABchjABoAGgAaAAxAGgAsAR7AGgAaAAXAGiAAIApgACBAuAICAgIgB6AmAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXIYwAaABoAGgAMQBoALAEfABoAGgAFwBogACAAIAAgQLgCAgICIAegJkICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXCAsAFyGMAGgAaABoADEAaACwBH0AaABoABcAaIAAgOiAAIEC4AgICAiAHoCaCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABchjABoAGgAaAAxAGgAsAR+AGgAaAAXAGiAAIAAgACBAuAICAgIgB6AmwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXIYwAaABoAGgAMQBoALAEfwBoAGgAFwBogACAAIAAgQLgCAgICIAegJwICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFyGMAGgAaABoADEAaACwBIAAaABoABcAaIAAgACAAIEC4AgICAiAHoCdCAiAAAjfEBIAngCfAKAisgAhAKIAoyKzACMAoSK0AKQADgAlAKUApgAoAKcAFwAXABcAKQBHAGgAaCK8ADEAaABaAGgDwCAIAGgAaCLEAGhfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIECmQgIgQLrCIANCICngQKxCAiBAuoIEo3/S7LTADoAOwAOIsgiywBIogGcA8qAPoCJoiLMIs2BAuyBAveALNkAIQAlItAADgAoItEAIwBZItIgFwGcAFoAeQAXACkAMQBoItpfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAumAPoANgDOAAIAECIEC7dMAOgA7AA4i3CLlAEioAbIBswG0AbUBtgG3AbgBuYBCgEOARIBFgEaAR4BIgEmoIuYi5yLoIuki6iLrIuwi7YEC7oEC74EC8IEC8oEC84EC9IEC9YEC9oAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXIswAaABoAGgAMQBoALABsgBoAGgAFwBogACAKYAAgQLsCAgICIAegEIICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFyLMAGgAaABoADEAaACwAbMAaABoABcAaIAAgACAAIEC7AgICAiAHoBDCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFyMPABcizABoAGgAaAAxAGgAsAG0AGgAaAAXAGiAAIEC8YAAgQLsCAgICIAegEQICIAACNMAOgA7AA4jHSMeAEigoIAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXIswAaABoAGgAMQBoALABtQBoAGgAFwBogACAKYAAgQLsCAgICIAegEUICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFyLMAGgAaABoADEAaACwAbYAaABoABcAaIAAgCmAAIEC7AgICAiAHoBGCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcizABoAGgAaAAxAGgAsAG3AGgAaAAXAGiAAIApgACBAuwICAgIgB6ARwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXIswAaABoAGgAMQBoALABuAB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ICIAegEUICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFyQNAGgAaABoADEAaACwAbYAaABoABcAaIAAgCmAAIEDAwgICAiAHoBGCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABckDQBoAGgAaAAxAGgAsAG3AGgAaAAXAGiAAIApgACBAwMICAgIgB6ARwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXJA0AaABoAGgAMQBoALABuABoAGgAFwBogACAAIAAgQMDCAgICIAegEgICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFyQNAGgAaABoADEAaACwAbkAaABoABcAaIAAgCmAAIEDAwgICAiAHoBJCAiAAAjZACEAJSStAA4AKCSuACMAWSSvIBgDygBaAHkAFwApADEAaCS3XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQMAgImADYAzgACABAiBAw/TADoAOwAOJLkkwQBIpwR6BHsEfAR9BH4EfwSAgJeAmICZgJqAm4CcgJ2nJMIkwyTEJMUkxiTHJMiBAxCBAxGBAxKBAxOBAxSBAxWBAxaALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFyQOAGgAaABoADEAaACwBHoAaABoABcAaIAAgACAAIEDDggICAiAHoCXCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABckDgBoAGgAaAAxAGgAsAR7AGgAaAAXAGiAAIApgACBAw4ICAgIgB6AmAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXJA4AaABoAGgAMQBoALAEfABoAGgAFwBogACAAIAAgQMOCAgICIAegJkICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXCAsAFyQOAGgAaABoADEAaACwBH0AaABoABcAaIAAgOiAAIEDDggICAiAHoCaCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABckDgBoAGgAaAAxAGgAsAR+AGgAaAAXAGiAAIAAgACBAw4ICAgIgB6AmwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXJA4AaABoAGgAMQBoALAEfwBoAGgAFwBogACAAIAAgQMOCAgICIAegJwICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFyQOAGgAaABoADEAaACwBIAAaABoABcAaIAAgACAAIEDDggICAiAHoCdCAiAAAjfEBIAngCfAKAlNAAhAKIAoyU1ACMAoSU2AKQADgAlAKUApgAoAKcAFwAXABcAKQBHAGgAaCU+ADEAaABaAGgDwCAKAGgAaCVGAGhfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIECmQgIgQMZCIANCICngQKzCAiBAxgIEsWCAYrTADoAOwAOJUolTQBIogGcA8qAPoCJoiVOJU+BAxqBAyWALNkAIQAlJVIADgAoJVMAIwBZJVQgGQGcAFoAeQAXACkAMQBoJVxfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAxeAPoANgDOAAIAECIEDG9MAOgA7AA4lXiVnAEioAbIBswG0AbUBtgG3AbgBuYBCgEOARIBFgEaAR4BIgEmoJWglaSVqJWslbCVtJW4lb4EDHIEDHYEDHoEDIIEDIYEDIoEDI4EDJIAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXJU4AaABoAGgAMQBoALABsgBoAGgAFwBogACAKYAAgQMaCAgICIAegEIICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFyVOAGgAaABoADEAaACwAbMAaABoABcAaIAAgACAAIEDGggICAiAHoBDCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFyWRABclTgBoAGgAaAAxAGgAsAG0AGgAaAAXAGiAAIEDH4AAgQMaCAgICIAegEQICIAACNMAOgA7AA4lnyWgAEigoIAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXJU4AaABoAGgAMQBoALABtQBoAGgAFwBogACAKYAAgQMaCAgICIAegEUICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXAg4AFyVOAGgAaABoADEAaACwAbYAaABoABcAaIAAgFCAAIEDGggICAiAHoBGCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABclTgBoAGgAaAAxAGgAsAG3AGgAaAAXAGiAAIApgACBAxoICAgIgB6ARwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXJU4AaABoAGgAMQBoALABuABoAGgAFwBogACAAIAAgQMaCAgICIAegEgICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFyVOAGgAaABoADEAaACwAbkAaABoABcAaIAAgCmAAIEDGggICAiAHoBJCAiAAAjZACEAJSXuAA4AKCXvACMAWSXwIBkDygBaAHkAFwApADEAaCX4XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQMXgImADYAzgACABAiBAybTADoAOwAOJfomAgBIpwR6BHsEfAR9BH4EfwSAgJeAmICZgJqAm4CcgJ2nJgMmBCYFJgYmByYIJgmBAyeBAyiBAymBAyqBAyuBAyyBAy2ALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFyVPAGgAaABoADEAaACwBHoAaABoABcAaIAAgACAAIEDJQgICAiAHoCXCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABclTwBoAGgAaAAxAGgAsAR7AGgAaAAXAGiAAIApgACBAyUICAgIgB6AmAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXJU8AaABoAGgAMQBoALAEfABoAGgAFwBogACAAIAAgQMlCAgICIAegJkICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXCAsAFyVPAGgAaABoADEAaACwBH0AaABoABcAaIAAgOiAAIEDJQgICAiAHoCaCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABclTwBoAGgAaAAxAGgAsAR+AGgAaAAXAGiAAIAAgACBAyUICAgIgB6AmwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXJU8AaABoAGgAMQBoALAEfwBoAGgAFwBogACAAIAAgQMlCAgICIAegJwICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFyVPAGgAaABoADEAaACwBIAAaABoABcAaIAAgACAAIEDJQgICAiAHoCdCAiAAAjfEBIAngCfAKAmdQAhAKIAoyZ2ACMAoSZ3AKQADgAlAKUApgAoAKcAFwAXABcAKQBHAGgAaCZ/ADEAaABaAGgDwCALAGgAaCaHAGhfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIECmQgIgQMwCIANCICngQK0CAiBAy8IEm4+PwHTADoAOwAOJosmjgBIogGcA8qAPoCJoiaPJpCBAzGBAzyALNkAIQAlJpMADgAoJpQAIwBZJpUgGgGcAFoAeQAXACkAMQBoJp1fECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBAy6APoANgDOAAIAECIEDMtMAOgA7AA4mnyaoAEioAbIBswG0AbUBtgG3AbgBuYBCgEOARIBFgEaAR4BIgEmoJqkmqiarJqwmrSauJq8msIEDM4EDNIEDNYEDN4EDOIEDOYEDOoEDO4As3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXJo8AaABoAGgAMQBoALABsgBoAGgAFwBogACAKYAAgQMxCAgICIAegEIICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFyaPAGgAaABoADEAaACwAbMAaABoABcAaIAAgACAAIEDMQgICAiAHoBDCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFybSABcmjwBoAGgAaAAxAGgAsAG0AGgAaAAXAGiAAIEDNoAAgQMxCAgICIAegEQICIAACNMAOgA7AA4m4CbhAEigoIAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXJo8AaABoAGgAMQBoALABtQBoAGgAFwBogACAKYAAgQMxCAgICIAegEUICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXAg4AFyaPAGgAaABoADEAaACwAbYAaABoABcAaIAAgFCAAIEDMQgICAiAHoBGCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcmjwBoAGgAaAAxAGgAsAG3AGgAaAAXAGiAAIApgACBAzEICAgIgB6ARwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXJo8AaABoAGgAMQBoALABuABoAGgAFwBogACAAIAAgQMxCAgICIAegEgICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFyaPAGgAaABoADEAaACwAbkAaABoABcAaIAAgCmAAIEDMQgICAiAHoBJCAiAAAjZACEAJScvAA4AKCcwACMAWScxIBoDygBaAHkAFwApADEAaCc5XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxA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lAKYAKACnABcBEgAXKREAaABoAGgAMQBoALABtQBoAGgAFwBogACAKYAAgQNfCAgICIAegEUICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFykRAGgAaABoADEAaACwAbYAaABoABcAaIAAgCmAAIEDXwgICAiAHoBGCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcpEQBoAGgAaAAxAGgAsAG3AGgAaAAXAGiAAIApgACBA18ICAgIgB6ARwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXKREAaABoAGgAMQBoALABuABoAGgAFwBogACAAIAAgQNfCAgICIAegEgICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFykRAGgAaABoADEAaACwAbkAaABoABcAaIAAgCmAAIEDXwgICAiAHoBJCAiAAAjZACEAJSmxAA4AKCmyACMAWSmzIBwDygBaAHkAFwApADEAaCm7XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQNcgImADYAzgACABAiBA2vTADoAOwAOKb0pxQBIpwR6BHsEfAR9BH4EfwSAgJeAmICZgJqAm4CcgJ2nKcYpxynIKckpyinLKcyBA2yBA22BA26BA2+BA3CBA3GBA3KALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFykSAGgAaABoADEAaACwBHoAaABoABcAaIAAgACAAIEDaggICAiAHoCXCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcpEgBoAGgAaAAxAGgAsAR7AGgAaAAXAGiAAIApgACBA2oICAgIgB6AmAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXKRIAaABoAGgAMQBoALAEfABoAGgAFwBogACAAIAAgQNqCAgICIAegJkICIAACN8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vck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBA4uAPoANgDOAAIAECIEDj9MAOgA7AA4rpCutAEioAbIBswG0AbUBtgG3AbgBuYBCgEOARIBFgEaAR4BIgEmoK64rryuwK7ErsiuzK7QrtYEDkIEDkYEDkoEDlIEDlYEDloEDl4EDmIAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXK5QAaABoAGgAMQBoALABsgBoAGgAFwBogACAKYAAgQOOCAgICIAegEIICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFyuUAGgAaABoADEAaACwAbMAaABoABcAaIAAgACAAIEDjggICAiAHoBDCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFyvXABcrlABoAGgAaAAxAGgAsAG0AGgAaAAXAGiAAIEDk4AAgQOOCAgICIAegEQICIAACNMAOgA7AA4r5SvmAEigoIAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcCDgAXK5QAaABoAGgAMQBoALABtQBoAGgAFwBogACAUIAAgQOOCAgICIAegEUICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFyuUAGgAaABoADEAaACwAbYAaABoABcAaIAAgCmAAIEDjggICAiAHoBGCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcrlABoAGgAaAAxAGgAsAG3AGgAaAAXAGiAAIApgACBA44ICAgIgB6ARwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXK5QAaABoAGgAMQBoALABuABoAGgAFwBogACAAIAAgQOOCAgICIAegEgICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFyuUAGgAaABoADEAaACwAbkAaABoABcAaIAAgCmAAIEDjggICAiAHoBJCAiAAAjZACEAJSw0AA4AKCw1ACMAWSw2IB4DygBaAHkAFwApADEAaCw+XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQOLgImADYAzgACABAiBA5rTADoAOwAOLEAsSABIpwR6BHsEfAR9BH4EfwSAgJeAmICZgJqAm4CcgJ2nLEksSixLLEwsTSxOLE+BA5uBA5yBA52BA56BA5+BA6CBA6GALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFyuVAGgAaABoADEAaACwBHoAaABoABcAaIAAgACAAIEDmQgICAiAHoCXCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcrlQBoAGgAaAAxAGgAsAR7AGgAaAAXAGiAAIApgACBA5kICAgIgB6AmAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXK5UAaABoAGgAMQBoALAEfABoAGgAFwBogACAAIAAgQOZCAgICIAegJkICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXCAsAFyuVAGgAaABoADEAaACwBH0AaABoABcAaIAAgOiAAIEDmQgICAiAHoCaCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcrlQBoAGgAaAAxAGgAsAR+AGgAaAAXAGiAAIAAgACBA5kICAgIgB6AmwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXK5UAaABoAGgAMQBoALAEfwBoAGgAFwBogACAAIAAgQOZCAgICIAegJwICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFyuVAGgAaABoADEAaACwBIAAaABoABcAaIAAgACAAIEDmQgICAiAHoCdCAiAAAjfEBIAngCfAKAsuwAhAKIAoyy8ACMAoSy9AKQADgAlAKUApgAoAKcAFwAXABcAKQBHAGgAaCzFADEAaABaAGgDwCAQAGgAaCzNAGhfECBYREJ1Y2tldEZvclN0ZXJlb3R5cGVzd2FzRW5jb2RlZF8QHVhEQnVja2V0Rm9yU3RlcmVvdHlwZXNzdG9yYWdlXxAdWERCdWNrZXRGb3JTdGVyZW90eXBlc29yZGVyZWSAAIAAgACABIECmQgIgQOkCIANCICngQK4CAiBA6MIEoSsqE7TADoAOwAOLNEs1ABIogGcA8qAPoCJoizVLNaBA6WBA7CALNkAIQAlLNkADgAoLNoAIwBZLNsgHwGcAFoAeQAXACkAMQBoLONfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc29yZGVyZWRfECRYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3dhc0VuY29kZWRfECFYREJ1Y2tldEZvck93bmVkQXR0cmlidXRlc3N0b3JhZ2WBA6KAPoANgDOAAIAECIEDptMAOgA7AA4s5SzuAEioAbIBswG0AbUBtgG3AbgBuYBCgEOARIBFgEaAR4BIgEmoLO8s8CzxLPIs8yz0LPUs9oEDp4EDqIEDqYEDq4EDrIEDrYEDroEDr4As3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXLNUAaABoAGgAMQBoALABsgBoAGgAFwBogACAKYAAgQOlCAgICIAegEIICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFyzVAGgAaABoADEAaACwAbMAaABoABcAaIAAgACAAIEDpQgICAiAHoBDCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFy0YABcs1QBoAGgAaAAxAGgAsAG0AGgAaAAXAGiAAIEDqoAAgQOlCAgICIAegEQICIAACNMAOgA7AA4tJi0nAEigoIAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXLNUAaABoAGgAMQBoALABtQBoAGgAFwBogACAKYAAgQOlCAgICIAegEUICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXAg4AFyzVAGgAaABoADEAaACwAbYAaABoABcAaIAAgFCAAIEDpQgICAiAHoBGCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcs1QBoAGgAaAAxAGgAsAG3AGgAaAAXAGiAAIApgACBA6UICAgIgB6ARwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXLNUAaABoAGgAMQBoALABuABoAGgAFwBogACAAIAAgQOlCAgICIAegEgICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFyzVAGgAaABoADEAaACwAbkAaABoABcAaIAAgCmAAIEDpQgICAiAHoBJCAiAAAjZACEAJS11AA4AKC12ACMAWS13IB8DygBaAHkAFwApADEAaC1/XxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQOigImADYAzgACABAiBA7HTADoAOwAOLYEtiQBIpwR6BHsEfAR9BH4EfwSAgJeAmICZgJqAm4CcgJ2nLYotiy2MLY0tji2PLZCBA7KBA7OBA7SBA7WBA7aBA7eBA7iALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFyzWAGgAaABoADEAaACwBHoAaABoABcAaIAAgACAAIEDsAgICAiAHoCXCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcs1gBoAGgAaAAxAGgAsAR7AGgAaAAXAGiAAIApgACBA7AICAgIgB6AmAgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXLNYAaABoAGgAMQBoALAEfABoAGgAFwBogACAAIAAgQOwCAgICIAegJkICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXERYAFyzWAGgAaABoADEAaACwBH0AaABoABcAaIAAgQGSgACBA7AICAgIgB6AmggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXLNYAaABoAGgAMQBoALAEfgBoAGgAFwBogACAAIAAgQOwCAg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1gCzZACEAJTCcAA4AKDCdACMAWTCeICIBnABaAHkAFwApADEAaDCmXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQPngD6ADYAzgACABAiBA+vTADoAOwAOMKgwsQBIqAGyAbMBtAG1AbYBtwG4AbmAQoBDgESARYBGgEeASIBJqDCyMLMwtDC1MLYwtzC4MLmBA+yBA+2BA+6BA/CBA/GBA/KBA/OBA/SALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFzCYAGgAaABoADEAaACwAbIAaABoABcAaIAAgCmAAIED6ggICAiAHoBCCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwAXABcwmABoAGgAaAAxAGgAsAGzAGgAaAAXAGiAAIAAgACBA+oICAgIgB6AQwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcw2wAXMJgAaABoAGgAMQBoALABtABoAGgAFwBogACBA++AAIED6ggICAiAHoBECAiAAAjTADoAOwAOMOkw6gBIoKCALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFzCYAGgAaABoADEAaACwAbUAaABoABcAaIAAgCmAAIED6ggICAiAHoBFCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABcwmABoAGgAaAAxAGgAsAG2AGgAaAAXAGiAAIApgACBA+oICAgIgB6ARggIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXMJgAaABoAGgAMQBoALABtwBoAGgAFwBogACAKYAAgQPqCAgICIAegEcICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFzCYAGgAaABoADEAaACwAbgAaABoABcAaIAAgACAAIED6ggICAiAHoBICAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgA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XABcAFzgAAGgAaABoADEAaACwAbMAaABoABcAaIAAgACAAIEEfggICAiAHoBDCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFzhDABc4AABoAGgAaAAxAGgAsAG0AGgAaAAXAGiAAIEEg4AAgQR+CAgICIAegEQICIAACNMAOgA7AA44UThSAEigoIAs3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcBEgAXOAAAaABoAGgAMQBoALABtQBoAGgAFwBogACAKYAAgQR+CAgICIAegEUICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFzgAAGgAaABoADEAaACwAbYAaABoABcAaIAAgCmAAIEEfggICAiAHoBGCAiAAAjfEA8AngCfAKAAIQChAKIAowAjAKQADgAlAKUApgAoAKcAFwESABc4AABoAGgAaAAxAGgAsAG3AGgAaAAXAGiAAIApgACBBH4ICAgIgB6ARwgIgAAI3xAPAJ4AnwCgACEAoQCiAKMAIwCkAA4AJQClAKYAKACnABcAFwAXOAAAaABoAGgAMQBoALABuABoAGgAFwBogACAAIAAgQR+CAgICIAegEgICIAACN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXARIAFzgAAGgAaABoADEAaACwAbkAaABoABcAaIAAgCmAAIEEfggICAiAHoBJCAiAAAjZACEAJTigAA4AKDihACMAWTiiNBsDygBaAHkAFwApADEAaDiqXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNvcmRlcmVkXxAkWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXN3YXNFbmNvZGVkXxAhWERCdWNrZXRGb3JPd25lZEF0dHJpYnV0ZXNzdG9yYWdlgQR7gImADYAzgACABAiBBIrTADoAOwAOOKw4tABIpwR6BHsEfAR9BH4EfwSAgJeAmICZgJqAm4CcgJ2nOLU4tji3OLg4uTi6OLuBBIuBBIyBBI2BBI6BBI+BBJCBBJGALN8QDwCeAJ8AoAAhAKEAogCjACMApAAOACUApQCmACgApwAXABcAFzgBAGgAaABoADEAaACwBHoAaABoABcAaIAAgACAAIEEiQgICAi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AEgQAABIFAAASBgAAEgcAABIIAAASCgAAEgwAABINAAASDgAAEhAAABIRAAASUAAAElIAABJUAAASVgAAElgAABJZAAASWgAAElsAABJcAAASXgAAEmAAABJhAAASYgAAEmQAABJlAAASbgAAEnEAABJzAAASdQAAEn4AABKDAAAShQAAEocAABKJAAASngAAErkAABL4AAAS+gAAEvwAABL+AAATAAAAEwEAABMCAAATAwAAEwQAABMGAAATCAAAEwkAABMKAAATDAAAEw0AABNMAAATTgAAE1AAABNSAAATVAAAE1UAABNWAAATVwAAE1gAABNaAAATXAAAE10AABNeAAATYAAAE2EAABNqAAATawAAE20AABOsAAATrgAAE7AAABOyAAATtAAAE7UAABO2AAATtwAAE7gAABO6AAATvAAAE70AABO+AAATwAAAE8EAABPCAAAUAQAAFAMAABQFAAAUBwAAFAkAABQKAAAUCwAAFAwAABQNAAAUDwAAFBEAABQSAAAUEwAAFBUAABQWAAAUIwAAFCQAABQlAAAUJwAAFDAAABRGAAAUTQAAFFoAABSZAAAUmwAAFJ0AABSfAAAUoQAAFKIAABSjAAAUpAAAFKUAABSnAAAUqQAAFKoAABSrAAAUrQAAFK4AABTHAAAUyQAAFMsAABTNAAAUzgAAFNAAABTnAAAU8AAAFP4AABULAAAVGQAAFS4AABVCAAAVWQAAFWsAABWqAAAVrAAAFa4AABWwAAAVsgAAFbMAABW0AAAVtQAAFbYAABW4AAAVugAAFbsAABW8AAAVvgAAFb8AABXNAAAV1gAAFesAABX6AAAWDwAAFh0AABYyAAAWRgAAFl0AABZvAAAWfAAAFokAABaLAAAWjQAAFo8AABaRAAAWkwAAFpUAABaiAAAWpAAAFqcAABaqAAAWrQAAFrAAABazAAAWtQAAFsEAABbcAAAW6QAAFv4AABcLAAAXHgAAF2kAABeMAAAXrAAAF8wAABfOAAAX0AAAF9IAABfUAAAX1gAAF9cAABfYAAAX2gAAF9sAABfdAAAX3gAAF+EAABfjAAAX5AAAF+UAABfnAAAX6AAAF+0AABf6AAAX/wAAGAEAABgDAAAYCAAAGAoAABgMAAAYDgAAGCMAABg2AAAYWwAAGH8AABimAAAYygAAGMwAABjOAAAY0AAAGNIAABjUAAAY1gAAGNcAABjZAAAY5gAAGPcAABj5AAAY+wAAGP0AABj/AAAZAQAAGQMAABkFAAAZBwAAGRgAABkaAAAZHAAAGR4AABkgAAAZIgAAGSQAABkmAAAZKAAAGSoAABlIAAAZZgAAGXkAABmNAAAZogAAGb8AABnTAAAZ6QAAGigAABoqAAAaLAAAGi4AABowAAAaMQAAGjIAABozAAAaNAAAGjYAABo4AAAaOQAAGjoAABo8AAAaPQAAGnwAABp+AAAagAAAGoIAABqEAAAahQAAGoYAABqHAAAaiAAAGooAABqMAAAajQAAGo4AABqQAAAakQAAGtAAABrSAAAa1AAAGtYAABrYAAAa2QAAGtoAABrbAAAa3AAAGt4AABrgAAAa4QAAGuIAABrkAAAa5QAAGvIAABrzAAAa9AAAGvYAABs1AAAbNwAAGzkAABs7AAAbPQAAGz4AABs/AAAbQAAAG0EAABtDAAAbRQAAG0YAABtHAAAbSQAAG0oAABuJAAAbiwAAG40AABuPAAAbkQAAG5IAABuTAAAblAAAG5UAABuXAAAbmQAAG5oAABubAAAbnQAAG54AABufAAAb3gAAG+AAABviAAAb5AAAG+YAABvnAAAb6AAAG+kAABvqAAAb7AAAG+4AABvvAAAb8AAAG/IAABvzAAAcMgAAHDQAABw2AAAcOAAAHDoAABw7AAAcPAAAHD0AABw+AAAcQAAAHEIAABxDAAAcRAAAHEYAABxHAAAchgAAHIgAAByKAAAcjAAAHI4AAByPAAAckAAAHJEAABySAAAclAAAHJYAAByXAAAcmAAAHJoAABybAAAcwAAAHOQAAB0LAAAdLwAAHTEAAB0zAAAdNQAAHTcAAB05AAAdOwAAHTwAAB0+AAAdSwAAHVoAAB1cAAAdXgAAHWAAAB1iAAAdZAAAHWYAAB1oAAAddwAAHXkAAB17AAAdfQAAHX8AAB2CAAAdhQAAHYgAAB2KAAAdnAAAHbAAAB3CAAAd1wAAHekAAB34AAAeFQAAHlQAAB5WAAAeWAAAHloAAB5cAAAeXQAAHl4AAB5fAAAeYAAAHmIAAB5kAAAeZQAAHmYAAB5oAAAeaQAAHqgAAB6qAAAerAAAHq4AAB6wAAAesQAAHrIAAB6zAAAetAAAHrYAAB64AAAeuQAAHroAAB68AAAevQAAHr8AAB7+AAAfAAAAHwIAAB8EAAAfBgAAHwcAAB8IAAAfCQAAHwoAAB8MAAAfDgAAHw8AAB8QAAAfEgAAHxMAAB8VAAAfVAAAH1YAAB9YAAAfWgAAH1wAAB9dAAAfXgAAH18AAB9gAAAfYgAAH2QAAB9lAAAfZgAAH2gAAB9pAAAfrAAAH9AAAB/0AAAgFwAAID4AACBeAAAghQAAIKwAACDMAAAg8AAAIRQAACEWAAAhGAAAIRoAACEcAAAhHgAAISAAACEjAAAhJQAAIScAACEqAAAhLAAAIS4AACExAAAhMwAAITQAACE5AAAhRgAAIUkAACFLAAAhTgAAIVAAACFSAAAhdwAAIZsAACHCAAAh5gAAIegAACHqAAAh7AAAIe4AACHwAAAh8gAAIfMAACH1AAAiAgAAIhUAACIXAAAiGQAAIhsAACIdAAAiHwAAIiEAACIjAAAiJQAAIicAACI6AAAiPAAAIj4AACJAAAAiQgAAIkQAACJGAAAiSAAAIkoAACJMAAAiTgAAIo0AACKPAAAikQAAIpMAACKVAAAilgAAIpcAACKYAAAimQAAIpsAACKdAAAingAAIp8AACKhAAAiogAAIqsAACKsAAAirgAAIu0AACLvAAAi8QAAIvMAACL1AAAi9gAAIvcAACL4AAAi+QAAIvsAACL9AAAi/gAAIv8AACMBAAAjAgAAI0EAACNDAAAjRQAAI0cAACNJAAAjSgAAI0sAACNMAAAjTQAAI08AACNRAAAjUgAAI1MAACNVAAAjVgAAI18AACNiAAAjZAAAI2YAACNvAAAjdAAAI3YAACN4AAAjegAAI48AACOqAAAj6QAAI+sAACPtAAAj7wAAI/EAACPyAAAj8wAAI/QAACP1AAAj9wAAI/kAACP6AAAj+wAAI/0AACP+AAAkPQAAJD8AACRBAAAkQwAAJEUAACRGAAAkRwAAJEgAACRJAAAkSwAAJE0AACROAAAkTwAAJFEAACRSAAAkWwAAJFwAACReAAAknQAAJJ8AACShAAAkowAAJKUAACSmAAAkpwAAJKgAACSpAAAkqwAAJK0AACSuAAAkrwAAJLEAACSyAAAk8QAAJPMAACT1AAAk9wAAJPkAACT6AAAk+wAAJPwAACT9AAAk/wAAJQEAACUCAAAlAwAAJQUAACUGAAAlEwAAJRQAACUVAAAlFwAAJVYAACVYAAAlWgAAJVwAACVeAAAlXwAAJWAAACVhAAAlYgAAJWQAACVmAAAlZwAAJWgAACVqAAAlawAAJaoAACWsAAAlrgAAJbAAACWyAAAlswAAJbQAACW1AAAltgAAJbgAACW6AAAluwAAJbwAACW+AAAlvwAAJcsAACXYAAAl7wAAJfEAACXzAAAl9QAAJfcAACX5AAAl+wAAJf0AACX/AAAmAQAAJgMAACYFAAAmHAAAJh4AACYgAAAmIwAAJiYAACYpAAAmLAAAJi8AACYyAAAmNQAAJjgAACY7AAAmPQAAJkQAACZQAAAmZAAAJncAACaLAAAmlwAAJqUAACa6AAAmwwAAJtoAACb1AAAnQAAAJ2MAACeDAAAnowAAJ6UAACenAAAnqQAAJ6sAACetAAAnrgAAJ68AACexAAAnsgAAJ7QAACe1AAAntwAAJ7kAACe6AAAnuwAAJ70AACe+AAAnwwAAJ9AAACfVAAAn1wAAJ9kAACfeAAAn4AAAJ+IAACfkAAAn+QAAKB4AAChCAAAoaQAAKI0AACiPAAAokQAAKJMAACiVAAAolwAAKJkAACiaAAAonAAAKKkAACi6AAAovAAAKL4AACjAAAAowgAAKMQAACjGAAAoyAAAKMoAACjbAAAo3QAAKN8AACjhAAAo4wAAKOUAACjnAAAo6QAAKOsAACjtAAApLAAAKS4AACkwAAApMgAAKTQAACk1AAApNgAAKTcAACk4AAApOgAAKTwAACk9AAApPgAAKUAAAClBAAApgAAAKYIAACmEAAAphgAAKYgAACmJAAApigAAKYsAACmMAAApjgAAKZAAACmRAAApkgAAKZQAACmVAAAp1AAAKdYAACnYAAAp2gAAKdwAACndAAAp3gAAKd8AACngAAAp4gAAKeQAACnlAAAp5gAAKegAACnpAAAp9gAAKfcAACn4AAAp+gAAKjkAACo7AAAqPQAAKj8AACpBAAAqQgAAKkMAACpEAAAqRQAAKkcAACpJAAAqSgAAKksAACpNAAAqTgAAKo0AACqPAAAqkQAAKpMAACqVAAAqlgAAKpcAACqYAAAqmQAAKpsAACqdAAAqngAAKp8AACqhAAAqogAAKuEAACrjAAAq5QAAKucAACrpAAAq6gAAKusAACrsAAAq7QAAKu8AACrxAAAq8gAAKvMAACr1AAAq9gAAKzUAACs3AAArOQAAKzsAACs9AAArPgAAKz8AACtAAAArQQAAK0MAACtFAAArRgAAK0cAACtJAAArSgAAK4kAACuLAAArjQAAK48AACuRAAArkgAAK5MAACuUAAArlQAAK5cAACuZAAArmgAAK5sAACudAAArngAAK8MAACvnAAAsDgAALDIAACw0AAAsNgAALDgAACw6AAAsPAAALD4AACw/AAAsQQAALE4AACxdAAAsXwAALGEAACxjAAAsZQAALGcAACxpAAAsawAALHoAACx8AAAsfgAALIAAACyCAAAshAAALIYAACyIAAAsigAALKoAACzVAAAs7wAALQgAAC0iAAAtQgAALWUAAC2kAAAtpgAALagAAC2qAAAtrAAALa0AAC2uAAAtrwAALbAAAC2yAAAttAAALbUAAC22AAAtuAAALbkAAC27AAAt+gAALfwAAC3+AAAuAAAALgIAAC4DAAAuBAAALgUAAC4GAAAuCAAALgoAAC4LAAAuDAAALg4AAC4PAAAuTgAALlAAAC5SAAAuVAAALlYAAC5XAAAuWAAALlkAAC5aAAAuXAAALl4AAC5fAAAuYAAALmIAAC5jAAAuogAALqQAAC6mAAAuqAAALqoAAC6rAAAurAAALq0AAC6uAAAusAAALrIAAC6zAAAutAAALrYAAC63AAAuuQAALvgAAC76AAAu/AAALv4AAC8AAAAvAQAALwIAAC8DAAAvBAAALwYAAC8IAAAvCQAALwoAAC8MAAAvDQAAL0wAAC9OAAAvUAAAL1IAAC9UAAAvVQAAL1YAAC9XAAAvWAAAL1oAAC9cAAAvXQAAL14AAC9gAAAvYQAAL6AAAC+iAAAvpAAAL6YAAC+oAAAvqQAAL6oAAC+rAAAvrAAAL64AAC+wAAAvsQAAL7IAAC+0AAAvtQAAL74AAC/MAAAv2QAAL+cAAC/0AAAwBwAAMB4AADAwAAAwewAAMJ4AADC+AAAw3gAAMOAAADDiAAAw5AAAMOYAADDoAAAw6QAAMOoAADDsAAAw7QAAMO8AADDwAAAw8wAAMPUAADD2AAAw9wAAMPkAADD6AAAw/wAAMQwAADERAAAxEwAAMRUAADEaAAAxHAAAMR4AADEgAAAxRQAAMWkAADGQAAAxtAAAMbYAADG4AAAxugAAMbwAADG+AAAxwAAAMcEAADHDAAAx0AAAMeEAADHjAAAx5QAAMecAADHpAAAx6wAAMe0AADHvAAAx8QAAMgIAADIEAAAyBgAAMggAADIKAAAyDAAAMg4AADIQAAAyEgAAMhQAADJTAAAyVQAAMlcAADJZAAAyWwAAMlwAADJdAAAyXgAAMl8AADJhAAAyYwAAMmQAADJlAAAyZwAAMmgAADKnAAAyqQAAMqsAADKtAAAyrwAAMrAAADKxAAAysgAAMrMAADK1AAAytwAAMrgAADK5AAAyuwAAMrwAADL7AAAy/QAAMv8AADMBAAAzAwAAMwQAADMFAAAzBgAAMwcAADMJAAAzCwAAMwwAADMNAAAzDwAAMxAAADMdAAAzHgAAMx8AADMhAAAzYAAAM2IAADNkAAAzZgAAM2gAADNpAAAzagAAM2sAADNsAAAzbgAAM3AAADNxAAAzcgAAM3QAADN1AAAztAAAM7YAADO4AAAzugAAM7wAADO9AAAzvgAAM78AADPAAAAzwgAAM8QAADPFAAAzxgAAM8gAADPJAAA0CAAANAoAADQMAAA0DgAANBAAADQRAAA0EgAANBMAADQUAAA0FgAANBgAADQZAAA0GgAANBwAADQdAAA0XAAANF4AADRgAAA0YgAANGQAADRlAAA0ZgAANGcAADRoAAA0agAANGwAADRtAAA0bgAANHAAADRxAAA0sAAANLIAADS0AAA0tgAANLgAADS5AAA0ugAANLsAADS8AAA0vgAANMAAADTBAAA0wgAANMQAADTFAAA06gAANQ4AADU1AAA1WQAANVsAADVdAAA1XwAANWEAADVjAAA1ZQAANWYAADVoAAA1dQAANYQAADWGAAA1iAAANYoAADWMAAA1jgAANZAAADWSAAA1oQAANaMAADWlAAA1pwAANakAADWsAAA1rwAANbIAADW0AAA18wAANfUAADX3AAA1+QAANfsAADX8AAA1/QAANf4AADX/AAA2AQAANgMAADYEAAA2BQAANgcAADYIAAA2RwAANkkAADZLAAA2TQAANk8AADZQAAA2UQAANlIAADZTAAA2VQAANlcAADZYAAA2WQAANlsAADZcAAA2mwAANp0AADafAAA2oQAANqMAADakAAA2pQAANqYAADanAAA2qQAANqsAADasAAA2rQAANq8AADawAAA27wAANvEAADbzAAA29QAANvcAADb4AAA2+QA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AQv4AAEMNAABDDwAAQxEAAEMTAABDFQAAQxcAAEMZAABDGwAAQx0AAENcAABDXgAAQ2AAAENiAABDZAAAQ2UAAENmAABDZwAAQ2gAAENqAABDbAAAQ20AAENuAABDcAAAQ3EAAEOwAABDsgAAQ7QAAEO2AABDuAAAQ7kAAEO6AABDuwAAQ7wAAEO+AABDwAAAQ8EAAEPCAABDxAAAQ8UAAEQEAABEBgAARAgAAEQKAABEDAAARA0AAEQOAABEDwAARBAAAEQSAABEFAAARBUAAEQWAABEGAAARBkAAERYAABEWgAARFwAAEReAABEYAAARGEAAERiAABEYwAARGQAAERmAABEaAAARGkAAERqAABEbAAARG0AAERwAABErwAARLEAAESzAABEtQAARLcAAES4AABEuQAARLoAAES7AABEvQAARL8AAETAAABEwQAARMMAAETEAABFAwAARQUAAEUHAABFCQAARQsAAEUMAABFDQAARQ4AAEUPAABFEQAARRMAAEUUAABFFQAARRcAAEUYAABFVwAARVkAAEVbAABFXQAARV8AAEVgAABFYQAARWIAAEVjAABFZQAARWcAAEVoAABFaQAARWsAAEVsAABFtwAARdoAAEX6AABGGgAARhwAAEYeAABGIAAARiIAAEYkAABGJQAARiYAAEYoAABGKQAARisAAEYsAABGLgAARjAAAEYxAABGMgAARjQAAEY1AABGOgAARkcAAEZMAABGTgAARlAAAEZVAABGVwAARlkAAEZbAABGgAAARqQAAEbLAABG7wAARvEAAEbzAABG9QAARvcAAEb5AABG+wAARvwAAEb+AABHCwAARxwAAEceAABHIAAARyIAAEckAABHJgAARygAAEcqAABHLAAARz0AAEc/AABHQQAAR0MAAEdFAABHRwAAR0kAAEdLAABHTQAAR08AAEeOAABHkAAAR5IAAEeUAABHlgAAR5cAAEeYAABHmQAAR5oAAEecAABHngAAR58AAEegAABHogAAR6MAAEfiAABH5AAAR+YAAEfoAABH6gAAR+sAAEfsAABH7QAAR+4AAEfwAABH8gAAR/MAAEf0AABH9gAAR/cAAEg2AABIOAAASDoAAEg8AABIPgAASD8AAEhAAABIQQAASEIAAEhEAABIRgAASEcAAEhIAABISgAASEsAAEhYAABIWQAASFoAAEhcAABImwAASJ0AAEifAABIoQAASKMAAEikAABIpQAASKYAAEinAABIqQAASKsAAEisAABIrQAASK8AAEiwAABI7wAASPEAAEjzAABI9QAASPcAAEj4AABI+QAASPoAAEj7AABI/QAASP8AAEkAAABJAQAASQMAAEkEAABJQwAASUUAAElHAABJSQAASUsAAElMAABJTQAASU4AAElPAABJUQAASVMAAElUAABJVQAASVcAAElYAABJlwAASZkAAEmbAABJnQAASZ8AAEmgAABJoQAASaIAAEmjAABJpQAASacAAEmoAABJqQAASasAAEmsAABJ6wAASe0AAEnvAABJ8QAASfMAAEn0AABJ9QAASfYAAEn3AABJ+QAASfsAAEn8AABJ/QAASf8AAEoAAABKJQAASkkAAEpwAABKlAAASpYAAEqYAABKmgAASpwAAEqeAABKoAAASqEAAEqjAABKsAAASr8AAErBAABKwwAASsUAAErHAABKyQAASssAAErNAABK3AAASt4AAErgAABK4gAASuQAAErnAABK6gAASu0AAErvAABLLgAASzAAAEsyAABLNAAASzYAAEs3AABLOAAASzkAAEs6AABLPAAASz4AAEs/AABLQAAAS0IAAEtDAABLggAAS4QAAEuGAABLiAAAS4oAAEuLAABLjAAAS40AAEuOAABLkAAAS5IAAEuTAABLlAAAS5YAAEuXAABL1gAAS9gAAEvaAABL3AAAS94AAEvfAABL4AAAS+EAAEviAABL5AAAS+YAAEvnAABL6AAAS+oAAEvrAABMKgAATCwAAEwuAABMMAAATDIAAEwzAABMNAAATDUAAEw2AABMOAAATDoAAEw7AABMPAAATD4AAEw/AABMfgAATIAAAEyCAABMhAAATIYAAEyHAABMiAAATIkAAEyKAABMjAAATI4AAEyPAABMkAAATJIAAEyTAABM0gAATNQAAEzWAABM2AAATNoAAEzbAABM3AAATN0AAEzeAABM4AAATOIAAEzjAABM5AAATOYAAEznAABNJgAATSgAAE0qAABNLAAATS4AAE0vAABNMAAATTEAAE0yAABNNAAATTYAAE03AABNOAAATToAAE07AABNhgAATakAAE3JAABN6QAATesAAE3tAABN7wAATfEAAE3zAABN9AAATfUAAE34AABN+QAATfsAAE38AABN/gAATgAAAE4BAABOAgAATgUAAE4GAABODwAAThwAAE4hAABOIwAATiUAAE4qAABOLQAATjAAAE4yAABOVwAATnsAAE6iAABOxgAATskAAE7LAABOzQAATs8AAE7RAABO0wAATtQAAE7XAABO5AAATvUAAE73AABO+QAATvsAAE79AABO/wAATwEAAE8DAABPBQAATxYAAE8ZAABPHAAATx8AAE8iAABPJQAATygAAE8rAABPLgAATzAAAE9vAABPcQAAT3MAAE91AABPeAAAT3kAAE96AABPewAAT3wAAE9+AABPgAAAT4EAAE+CAABPhAAAT4UAAE/EAABPxgAAT8gAAE/KAABPzQAAT84AAE/PAABP0AAAT9EAAE/TAABP1QAAT9YAAE/XAABP2QAAT9oAAFAZAABQGwAAUB4AAFAgAABQIwAAUCQAAFAlAABQJgAAUCcAAFApAABQKwAAUCwAAFAtAABQLwAAUDAAAFA9AABQPgAAUD8AAFBBAABQgAAAUIIAAFCEAABQhgAAUIkAAFCKAABQiwAAUIwAAFCNAABQjwAAUJEAAFCSAABQkwAAUJUAAFCWAABQ1QAAUNcAAFDZAABQ2wAAUN4AAFDfAABQ4AAAUOEAAFDiAABQ5AAAUOYAAFDnAABQ6AAAUOoAAFDrAABRKgAAUSwAAFEuAABRMAAAUTMAAFE0AABRNQAAUTYAAFE3AABROQAAUTsAAFE8AABRPQAAUT8AAFFAAABRfwAAUYEAAFGDAABRhQAAUYgAAFGJAABRigAAUYsAAFGMAABRjgAAUZAAAFGRAABRkgAAUZQAAFGVAABR1AAAUdYAAFHYAABR2gAAUd0AAFHeAABR3wAAUeAAAFHhAABR4wAAUeUAAFHmAABR5wAAUekAAFHqAABSDwAAUjMAAFJaAABSfgAAUoEAAFKDAABShQAAUocAAFKJAABSiwAAUowAAFKPAABSnAAAUqsAAFKtAABSrwAAUrEAAFKzAABStQAAUrcAAFK5AABSyAAAUssAAFLOAABS0QAAUtQAAFLXAABS2gAAUt0AAFLfAABTHgAAUyAAAFMiAABTJAAAUycAAFMoAABTKQAAUyoAAFMrAABTLQAAUy8AAFMwAABTMQAAUzMAAFM0AABTcwAAU3UAAFN3AABTeQAAU3wAAFN9AABTfgAAU38AAFOAAABTggAAU4QAAFOFAABThgAAU4gAAFOJAABTyAAAU8oAAFPMAABTzgAAU9EAAFPSAABT0wAAU9QAAFPVAABT1wAAU9kAAFPaAABT2wAAU90AAFPeAABUHQAAVB8AAFQiAABUJAAAVCcAAFQoAABUKQAAVCoAAFQrAABULQAAVC8AAFQwAABUMQAAVDMAAFQ0AABUNgAAVHUAAFR3AABUeQAAVHsAAFR+AABUfwAAVIAAAFSBAABUggAAVIQAAFSGAABUhwAAVIgAAFSKAABUiwAAVMoAAFTMAABUzgAAVNAAAFTTAABU1AAAVNUAAFTWAABU1wAAVNkAAFTbAABU3AAAVN0AAFTfAABU4AAAVR8AAFUhAABVIwAAVSUAAFUoAABVKQAAVSoAAFUrAABVLAAAVS4AAFUwAABVMQAAVTIAAFU0AABVNQAAVYAAAFWjAABVwwAAVeMAAFXlAABV5wAAVekAAFXrAABV7QAAVe4AAFXvAABV8gAAVfMAAFX1AABV9gAAVfkAAFX7AABV/AAAVf0AAFYAAABWAQAAVgYAAFYTAABWGAAAVhoAAFYcAABWIQAAViQAAFYnAABWKQAAVk4AAFZyAABWmQAAVr0AAFbAAABWwgAAVsQAAFbGAABWyAAAVsoAAFbLAABWzgAAVtsAAFbsAABW7gAAVvAAAFbyAABW9AAAVvYAAFb4AABW+gAAVvwAAFcNAABXEAAAVxMAAFcWAABXGQAAVxwAAFcfAABXIgAAVyUAAFcnAABXZgAAV2gAAFdqAABXbAAAV28AAFdwAABXcQAAV3IAAFdzAABXdQAAV3cAAFd4AABXeQAAV3sAAFd8AABXuwAAV70AAFe/AABXwQAAV8QAAFfFAABXxgAAV8cAAFfIAABXygAAV8wAAFfNAABXzgAAV9AAAFfRAABYEAAAWBIAAFgVAABYFwAAWBoAAFgbAABYHAAAWB0AAFgeAABYIAAAWCIAAFgjAABYJAAAWCYAAFgnAABYNAAAWDUAAFg2AABYOAAAWHcAAFh5AABYewAAWH0AAFiAAABYgQAAWIIAAFiDAABYhAAAWIYAAFiIAABYiQAAWIoAAFiMAABYjQAAWMwAAFjOAABY0AAAWNIAAFjVAABY1gAAWNcAAFjYAABY2QAAWNsAAFjdAABY3gAAWN8AAFjhAABY4gAAWSEAAFkjAABZJQAAWScAAFkqAABZKwAAWSwAAFktAABZLgAAWTAAAFkyAABZMwAAWTQAAFk2AABZNwAAWXYAAFl4AABZegAAWXwAAFl/AABZgAAAWYEAAFmCAABZgwAAWYUAAFmHAABZiAAAWYkAAFmLAABZjAAAWcsAAFnNAABZzwAAWdEAAFnUAABZ1QAAWdYAAFnXAABZ2AAAWdoAAFncAABZ3QAAWd4AAFngAABZ4QAAWgYAAFoqAABaUQAAWnUAAFp4AABaegAAWnwAAFp+AABagAAAWoIAAFqDAABahgAAWpMAAFqiAABapAAAWqYAAFqoAABaqgAAWqwAAFquAABasAAAWr8AAFrCAABaxQAAWsgAAFrLAABazgAAWtEAAFrUAABa1gAAWxUAAFsXAABbGQAAWxsAAFseAABbHwAAWyAAAFshAABbIgAAWyQAAFsmAABbJwAAWygAAFsqAABbKwAAW2oAAFtsAABbbgAAW3AAAFtzAABbdAAAW3UAAFt2AABbdwAAW3kAAFt7AABbfAAAW30AAFt/AABbgAAAW78AAFvBAABbwwAAW8UAAFvIAABbyQAAW8oAAFvLAABbzAAAW84AAFvQAABb0QAAW9IAAFvUAABb1QAAXBQAAFwWAABcGAAAXBoAAFwdAABcHgAAXB8AAFwgAABcIQAAXCMAAFwlAABcJgAAXCcAAFwpAABcKgAAXGkAAFxrAABcbQAAXG8AAFxyAABccwAAXHQAAFx1AABcdgAAXHgAAFx6AABcewAAXHwAAFx+AABcfwAAXL4AAFzAAABcwgAAXMQAAFzHAABcyAAAXMkAAFzKAABcywAAXM0AAFzPAABc0AAAXNEAAFzTAABc1AAAXRMAAF0VAABdFwAAXRkAAF0cAABdHQAAXR4AAF0fAABdIAAAXSIAAF0kAABdJQAAXSYAAF0oAABdKQAAXTIAAF1FAABdUgAAXWUAAF1yAABdhQAAXZwAAF2uAABd+QAAXhwAAF48AABeXAAAXl4AAF5gAABeYgAAXmQAAF5mAABeZwAAXmgAAF5rAABebAAAXm4AAF5vAABecQAAXnMAAF50AABedQAAXngAAF55AABefgAAXosAAF6QAABekgAAXpQAAF6ZAABenAAAXp8AAF6hAABexgAAXuoAAF8RAABfNQAAXzgAAF86AABfPAAAXz4AAF9AAABfQgAAX0MAAF9GAABfUwAAX2QAAF9mAABfaAAAX2oAAF9sAABfbgAAX3AAAF9yAABfdAAAX4UAAF+IAABfiwAAX44AAF+RAABflAAAX5cAAF+aAABfnQAAX58AAF/eAABf4AAAX+IAAF/kAABf5wAAX+gAAF/pAABf6gAAX+sAAF/tAABf7wAAX/AAAF/xAABf8wAAX/QAAGAzAABgNQAAYDcAAGA5AABgPAAAYD0AAGA+AABgPwAAYEAAAGBCAABgRAAAYEUAAGBGAABgSAAAYEkAAGCIAABgigAAYI0AAGCPAABgkgAAYJMAAGCUAABglQAAYJYAAGCYAABgmgAAYJsAAGCcAABgngAAYJ8AAGCsAABgrQAAYK4AAGCwAABg7wAAYPEAAGDzAABg9QAAYPgAAGD5AABg+gAAYPsAAGD8AABg/gAAYQAAAGEBAABhAgAAYQQAAGEFAABhRAAAYUYAAGFIAABhSgAAYU0AAGFOAABhTwAAYVAAAGFRAABhUwAAYVUAAGFWAABhVwAAYVkAAGFaAABhmQAAYZsAAGGdAABhnwAAYaIAAGGjAABhpAAAYaUAAGGmAABhqAAAYaoAAGGrAABhrAAAYa4AAGGvAABh7gAAYfAAAGHyAABh9AAAYfcAAGH4AABh+QAAYfoAAGH7AABh/QAAYf8AAGIAAABiAQAAYgMAAGIEAABiQwAAYkUAAGJHAABiSQAAYkwAAGJNAABiTgAAYk8AAGJQAABiUgAAYlQAAGJVAABiVgAAYlgAAGJZAABifgAAYqIAAGLJAABi7QAAYvAAAGLyAABi9AAAYvYAAGL4AABi+gAAYvsAAGL+AABjCwAAYxoAAGMcAABjHgAAYyAAAGMiAABjJAAAYyYAAGMoAABjNwAAYzoAAGM9AABjQAAAY0MAAGNGAABjSQAAY0wAAGNOAABjjQAAY48AAGORAABjkwAAY5YAAGOXAABjmAAAY5kAAGOaAABjnAAAY54AAGOfAABjoAAAY6IAAGOjAABj4gAAY+QAAGPmAABj6AAAY+sAAGPsAABj7QAAY+4AAGPvAABj8QAAY/MAAGP0AABj9QAAY/cAAGP4AABkNwAAZDkAAGQ7AABkPQAAZEAAAGRBAABkQgAAZEMAAGREAABkRgAAZEgAAGRJAABkSgAAZEwAAGRNAABkjAAAZI4AAGSQAABkkgAAZJUAAGSWAABklwAAZJgAAGSZAABkmwAAZJ0AAGSeAABknwAAZKEAAGSiAABk4QAAZOMAAGTlAABk5wAAZOoAAGTrAABk7AAAZO0AAGTuAABk8AAAZPIAAGTzAABk9AAAZPYAAGT3AABlNgAAZTgAAGU6AABlPAAAZT8AAGVAAABlQQAAZUIAAGVDAABlRQAAZUcAAGVIAABlSQAAZUsAAGVMAABliwAAZY0AAGWPAABlkQAAZZQAAGWVAABllgAAZZcAAGWYAABlmgAAZZwAAGWdAABlngAAZaAAAGWhAABl7AAAZg8AAGYvAABmTwAAZlEAAGZTAABmVQAAZlcAAGZZAABmWgAAZlsAAGZeAABmXwAAZmEAAGZiAABmZAAAZmYAAGZnAABmaAAAZmsAAGZsAABmcQAAZn4AAGaDAABmhQAAZocAAGaMAABmjwAAZpIAAGaUAABmuQAAZt0AAGcEAABnKAAAZysAAGctAABnLwAAZzEAAGczAABnNQAAZzYAAGc5AABnRgAAZ1cAAGdZAABnWwAAZ10AAGdfAABnYQAAZ2MAAGdlAABnZwAAZ3gAAGd7AABnfgAAZ4EAAGeEAABnhwAAZ4oAAGeNAABnkAAAZ5IAAGfRAABn0wAAZ9UAAGfXAABn2gAAZ9sAAGfcAABn3QAAZ94AAGfgAABn4gAAZ+MAAGfkAABn5gAAZ+cAAGgmAABoKAAAaCoAAGgsAABoLwAAaDAAAGgxAABoMgAAaDMAAGg1AABoNwAAaDgAAGg5AABoOwAAaDwAAGh7AABofQAAaIAAAGiCAABohQAAaIYAAGiHAABoiAAAaIkAAGiLAABojQAAaI4AAGiPAABokQAAaJIAAGifAABooAAAaKEAAGijAABo4gAAaOQAAGjmAABo6AAAaOsAAGjsAABo7QAAaO4AAGjvAABo8QAAaPMAAGj0AABo9QAAaPcAAGj4AABpNwAAaTkAAGk7AABpPQAAaUAAAGlBAABpQgAAaUMAAGlEAABpRgAAaUgAAGlJAABpSgAAaUwAAGlNAABpjAAAaY4AAGmQAABpkgAAaZUAAGmWAABplwAAaZgAAGmZAABpmwAAaZ0AAGmeAABpnwAAaaEAAGmiAABp4QAAaeMAAGnlAABp5wAAaeoAAGnrAABp7AAAae0AAGnuAABp8AAAafIAAGnzAABp9AAAafYAAGn3AABqNgAAajgAAGo6AABqPAAAaj8AAGpAAABqQQAAakIAAGpDAABqRQAAakcAAGpIAABqSQAAaksAAGpMAABqcQAAapUAAGq8AABq4AAAauMAAGrlAABq5wAAaukAAGrrAABq7QAAau4AAGrxAABq/gAAaw0AAGsPAABrEQAAaxMAAGsVAABrFwAAaxkAAGsbAABrKgAAay0AAGswAABrMwAAazYAAGs5AABrPAAAaz8AAGtBAABrgAAAa4IAAGuEAABrhgAAa4kAAGuKAABriwAAa4wAAGuNAABrjwAAa5EAAGuSAABrkwAAa5UAAGuWAABr1QAAa9cAAGvZAABr2wAAa94AAGvfAABr4AAAa+EAAGviAABr5AAAa+YAAGvnAABr6AAAa+oAAGvrAABsKgAAbCwAAGwuAABsMAAAbDMAAGw0AABsNQAAbDYAAGw3AABsOQAAbDsAAGw8AABsPQAAbD8AAGxAAABsfwAAbIEAAGyDAABshQAAbIgAAGyJAABsigAAbIsAAGyMAABsjgAAbJAAAGyRAABskgAAbJQAAGyVAABs1AAAbNYAAGzYAABs2gAAbN0AAGzeAABs3wAAbOAAAGzhAABs4wAAbOUAAGzmAABs5wAAbOkAAGzqAABtKQAAbSsAAG0tAABtLwAAbTIAAG0zAABtNAAAbTUAAG02AABtOAAAbToAAG07AABtPAAAbT4AAG0/AABtfgAAbYAAAG2CAABthAAAbYcAAG2IAABtiQAAbYoAAG2LAABtjQAAbY8AAG2QAABtkQAAbZMAAG2UAABtnwAAbagAAG2pAABtqwAAbbQAAG2/AABtzgAAbdkAAG3nAABt/AAAbhAAAG4nAABuOQAAbngAAG56AABufAAAbn4AAG6AAABugQAAboIAAG6DAABuhAAAboYAAG6IAABuiQAAbooAAG6MAABujQAAbswAAG7OAABu0AAAbtIAAG7UAABu1QAAbtYAAG7XAABu2AAAbtoAAG7cAABu3QAAbt4AAG7gAABu4QAAbyAAAG8iAABvJQAAbycAAG8pAABvKgAAbysAAG8sAABvLQAAby8AAG8xAABvMgAAbzMAAG81AABvNgAAb4EAAG+kAABvxAAAb+QAAG/mAABv6AAAb+oAAG/sAABv7gAAb+8AAG/wAABv8wAAb/QAAG/2AABv9wAAb/kAAG/7AABv/AAAb/0AAHAAAABwAQAAcAYAAHATAABwGAAAcBoAAHAcAABwIQAAcCQAAHAnAABwKQAAcE4AAHByAABwmQAAcL0AAHDAAABwwgAAcMQAAHDGAABwyAAAcMoAAHDLAABwzgAAcNsAAHDsAABw7gAAcPAAAHDyAABw9AAAcPYAAHD4AABw+gAAcPwAAHENAABxEAAAcRMAAHEWAABxGQAAcRwAAHEfAABxIgAAcSUAAHEnAABxZgAAcWgAAHFqAABxbAAAcW8AAHFwAABxcQAAcXIAAHFzAABxdQAAcXcAAHF4AABxeQAAcXsAAHF8AABxuwAAcb0AAHG/AABxwQAAccQAAHHFAABxxgAAcccAAHHIAABxygAAccwAAHHNAABxzgAAcdAAAHHRAAByEAAAchIAAHIVAAByFwAAchoAAHIbAAByHAAAch0AAHIeAAByIAAAciIAAHIjAAByJAAAciYAAHInAAByNAAAcjUAAHI2AAByOAAAcncAAHJ5AAByewAAcn0AAHKAAABygQAAcoIAAHKDAAByhAAAcoYAAHKIAAByiQAAcooAAHKMAAByjQAAcswAAHLOAABy0AAActIAAHLVAABy1gAActcAAHLYAABy2QAActsAAHLdAABy3gAAct8AAHLhAABy4gAAcyEAAHMjAABzJQAAcycAAHMqAABzKwAAcywAAHMtAABzLgAAczAAAHMyAABzMwAAczQAAHM2AABzNwAAc3YAAHN4AABzegAAc3wAAHN/AABzgAAAc4EAAHOCAABzgwAAc4UAAHOHAABziAAAc4kAAHOLAABzjAAAc8sAAHPNAABzzwAAc9EAAHPUAABz1QAAc9YAAHPXAABz2AAAc9oAAHPcAABz3QAAc94AAHPgAABz4QAAdAYAAHQqAAB0UQAAdHUAAHR4AAB0egAAdHwAAHR+AAB0gAAAdIIAAHSDAAB0hgAAdJMAAHSiAAB0pAAAdKYAAHSoAAB0qgAAdKwAAHSuAAB0sAAAdL8AAHTCAAB0xQAAdMgAAHTLAAB0zgAAdNEAAHTUAAB01gAAdRUAAHUXAAB1GQAAdRsAAHUeAAB1HwAAdSAAAHUhAAB1IgAAdSQAAHUmAAB1JwAAdSgAAHUqAAB1KwAAdWoAAHVsAAB1bgAAdXAAAHVzAAB1dAA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AhgwAAIYOAACGEAAAhhEAAIYSAACGFAAAhhUAAIYYAACGVwAAhlkAAIZbAACGXQAAhmAAAIZhAACGYgAAhmMAAIZkAACGZgAAhmgAAIZpAACGagAAhmwAAIZtAACGrAAAhq4AAIawAACGsgAAhrUAAIa2AACGtwAAhrgAAIa5AACGuwAAhr0AAIa+AACGvwAAhsEAAIbCAACHAQAAhwMAAIcFAACHBwAAhwoAAIcLAACHDAAAhw0AAIcOAACHEAAAhxIAAIcTAACHFAAAhxYAAIcXAACHYgAAh4UAAIelAACHxQAAh8cAAIfJAACHywAAh80AAIfPAACH0AAAh9EAAIfUAACH1QAAh9cAAIfYAACH2gAAh9wAAIfdAACH3gAAh+EAAIfiAACH5wAAh/QAAIf5AACH+wAAh/0AAIgCAACIBQAAiAgAAIgKAACILwAAiFMAAIh6AACIngAAiKEAAIijAACIpQAAiKcAAIipAACIqwAAiKwAAIivAACIvAAAiM0AAIjPAACI0QAAiNMAAIjVAACI1wAAiNkAAIjbAACI3QAAiO4AAIjxAACI9AAAiPcAAIj6AACI/QAAiQAAAIkDAACJBgAAiQgAAIlHAACJSQAAiUsAAIlNAACJUAAAiVEAAIlSAACJUwAAiVQAAIlWAACJWAAAiVkAAIlaAACJXAAAiV0AAImcAACJngAAiaAAAImiAACJpQAAiaYAAImnAACJqAAAiakAAImrAACJrQAAia4AAImvAACJsQAAibIAAInxAACJ8wAAifYAAIn4AACJ+wAAifwAAIn9AACJ/gAAif8AAIoBAACKAwAAigQAAIoFAACKBwAAiggAAIoVAACKFgAAihcAAIoZAACKWAAAiloAAIpcAACKXgAAimEAAIpiAACKYwAAimQAAIplAACKZwAAimkAAIpqAACKawAAim0AAIpuAACKrQAAiq8AAIqxAACKswAAirYAAIq3AACKuAAAirkAAIq6AACKvAAAir4AAIq/AACKwAAAisIAAIrDAACLAgAAiwQAAIsGAACLCAAAiwsAAIsMAACLDQAAiw4AAIsPAACLEQAAixMAAIsUAACLFQAAixcAAIsYAACLVwAAi1kAAItbAACLXQAAi2AAAIthAACLYgAAi2MAAItkAACLZgAAi2gAAItpAACLagAAi2wAAIttAACLrAA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AlqkAAJaqAACWqwAAlq0AAJauAACW7QAAlu8AAJbxAACW8wAAlvYAAJb3AACW+AAAlvkAAJb6AACW/AAAlv4AAJb/AACXAAAAlwIAAJcDAACXTgAAl3EAAJeRAACXsQAAl7MAAJe1AACXtwAAl7kAAJe7AACXvAAAl70AAJfAAACXwQAAl8MAAJfEAACXxgAAl8gAAJfJAACXygAAl80AAJfOAACX0wAAl+AAAJflAACX5wAAl+kAAJfuAACX8QAAl/QAAJf2AACYGwAAmD8AAJhmAACYigAAmI0AAJiPAACYkQAAmJMAAJiVAACYlwAAmJgAAJibAACYqAAAmLkAAJi7AACYvQAAmL8AAJjBAACYwwAAmMUAAJjHAACYyQAAmNoAAJjdAACY4AAAmOMAAJjmAACY6QAAmOwAAJjvAACY8gAAmPQAAJkzAACZNQAAmTcAAJk5AACZPAAAmT0AAJk+AACZPwAAmUAAAJlCAACZRAAAmUUAAJlGAACZSAAAmUkAAJmIAACZigAAmYwAAJmOAACZkQAAmZIAAJmTAACZlAAAmZUAAJmXAACZmQAAmZoAAJmbAACZnQAAmZ4AAJndAACZ3wAAmeIAAJnkAACZ5wAAmegAAJnpAACZ6gAAmesAAJntAACZ7wAAmfAAAJnxAACZ8wAAmfQAAJoBAACaAgAAmgMAAJoFAACaRAAAmkYAAJpIAACaSgAAmk0AAJpOAACaTwAAmlAAAJpRAACaUwAAmlUAAJpWAACaVwAAmlkAAJpaAACamQAAmpsAAJqdAACanwAAmqIAAJqjAACapAAAmqUAAJqmAACaqAAAmqoAAJqrAACarAAAmq4AAJqvAACa7gAAmvAAAJryAACa9AAAmvcAAJr4AACa+QAAmvoAAJr7AACa/QAAmv8AAJsAAACbAQAAmwMAAJsEAACbQwAAm0UAAJtHAACbSQAAm0wAAJtNAACbTgAAm08AAJtQAACbUgAAm1QAAJtVAACbVgAAm1gAAJtZAACbmAAAm5oAAJucAACbngAAm6EAAJuiAACbowAAm6QAAJulAACbpwAAm6kAAJuqAACbqwAAm60AAJuuAACb0wAAm/cAAJweAACcQgAAnEUAAJxHAACcSQAAnEsAAJxNAACcTwAAnFAAAJxTAACcYAAAnG8AAJxxAACccwAAnHUAAJx3AACceQAAnHsAAJx9AACcjAAAnI8AAJySAACclQAAnJgAAJybAACcngAAnKEAAJyjAACc4gAAnOQAAJzmAACc6AAAnOsAAJzsAACc7QAAnO4AAJzvAACc8QAAnPMAAJz0AACc9QAAnPcAAJz4AACdNwAAnTkAAJ07AACdPQAAnUAAAJ1BAACdQgAAnUMAAJ1EAACdRgAAnUgAAJ1JAACdSgAAnUwAAJ1NAACdjAAAnY4AAJ2QAACdkgAAnZUAAJ2WAACdlwAAnZgAAJ2ZAACdmwAAnZ0AAJ2eAACdnwAAnaEAAJ2iAACd4QAAneMAAJ3lAACd5wAAneoAAJ3rAACd7AAAne0AAJ3uAACd8AAAnfIAAJ3zAACd9AAAnfYAAJ33AACeNgAAnjgAAJ46AACePAAAnj8AAJ5AAACeQQAAnkIAAJ5DAACeRQAAnkcAAJ5IAACeSQAAnksAAJ5MAACeiwAAno0AAJ6PAACekQAAnpQAAJ6VAACelgAAnpcAAJ6YAACemgAAnpwAAJ6dAACengAAnqAAAJ6hAACe4AAAnuIAAJ7kAACe5gAAnukAAJ7qAACe6wAAnuwAAJ7tAACe7wAAnvEAAJ7yAACe8wAAnvUAAJ72AACfQQAAn2QAAJ+EAACfpAAAn6YAAJ+oAACfqgAAn6wAAJ+uAACfrwAAn7AAAJ+zAACftAAAn7YAAJ+3AACfuQAAn7sAAJ+8AACfvQAAn8AAAJ/BAACfxgAAn9MAAJ/YAACf2gAAn9wAAJ/hAACf5AAAn+cAAJ/pAACgDgAAoDIAAKBZAACgfQAAoIAAAKCCAACghAAAoIYAAKCIAACgigAAoIsAAKCOAACgmwAAoKwAAKCuAACgsAAAoLIAAKC0AACgtgAAoLgAAKC6AACgvAAAoM0AAKDQAACg0wAAoNYAAKDZAACg3AAAoN8AAKDiAACg5QAAoOcAAKEmAAChKAAAoSoAAKEsAAChLwAAoTAAAKExAAChMgAAoTMAAKE1AAChNwAAoTgAAKE5AAChOwAAoTwAAKF7AAChfQAAoX8AAKGBAAChhAAAoYUAAKGGAAChhwAAoYgAAKGKAAChjAAAoY0AAKGOAAChkAAAoZEAAKHQAACh0gAAodUAAKHXAACh2gAAodsAAKHcAACh3QAAod4AAKHgAACh4gAAoeMAAKHkAACh5gAAoecAAKH0AACh9QAAofYAAKH4AACiNwAAojkAAKI7AACiPQAAokAAAKJBAACiQgAAokMAAKJEAACiRgAAokgAAKJJAACiSgAAokwAAKJNAACijAAAoo4AAKKQAACikgAAopUAAKKWAACilwAAopgAAKKZAACimwAAop0AAKKeAACinwAAoqEAAKKiAACi4QAAouMAAKLlAACi5wAAouoAAKLrAACi7AAAou0AAKLuAACi8AAAovIAAKLzAACi9AAAovYAAKL3AACjNgAAozgAAKM6AACjPAAAoz8AAKNAAACjQQAAo0IAAKNDAACjRQAAo0cAAKNIAACjSQAAo0sAAKNMAACjiwAAo40AAKOPAACjkQAAo5QAAKOVAACjlgAAo5cAAKOYAACjmgAAo5wAAKOdAACjngAAo6AAAKOhAACjxgAAo+oAAKQRAACkNQAApDgAAKQ6AACkPAAApD4AAKRAAACkQgAApEMAAKRGAACkUwAApGIAAKRkAACkZgAApGgAAKRqAACkbAAApG4AAKRwAACkfwAApIIAAKSFAACkiAAApIsAAKSOAACkkQAApJQAAKSWAACk1QAApNcAAKTZAACk2wAApN4AAKTfAACk4AAApOEAAKTiAACk5AAApOYAAKTnAACk6AAApOoAAKTrAAClKgAApSwAAKUuAAClMAAApTMAAKU0AAClNQAApTYAAKU3AAClOQAApTsAAKU8AAClPQAApT8AAKVAAAClfwAApYEAAKWDAAClhQAApYgAAKWJAACligAApYsAAKWMAACljgAApZAAAKWRAAClkgAApZQAAKWVAACl1AAApdYAAKXYAACl2gAApd0AAKXeAACl3wAApeAAAKXhAACl4wAApeUAAKXmAACl5wAApekAAKXqAACmKQAApisAAKYtAACmLwAApjIAAKYzAACmNAAApjUAAKY2AACmOAAApjoAAKY7AACmPAAApj4AAKY/AACmfgAApoAAAKaCAACmhAAApocAAKaIAACmiQAApooAAKaLAACmjQAApo8AAKaQAACmkQAAppMAAKaUAACm0wAAptUAAKbXAACm2QAAptwAAKbdAACm3gAApt8AAKbgAACm4gAApuQAAKblAACm5gAApugAAKbpAACnNAAAp1cAAKd3AACnlwAAp5kAAKebAACnnQAAp58AAKehAACnogAAp6MAAKemAACnpwAAp6kAAKeqAACnrAAAp64AAKevAACnsAAAp7MAAKe0AACnuQAAp8YAAKfLAACnzQAAp88AAKfUAACn1wAAp9oAAKfcAACoAQAAqCUAAKhMAACocAAAqHMAAKh1AACodwAAqHkAAKh7AACofQAAqH4AAKiBAACojgAAqJ8AAKihAACoowAAqKUAAKinAACoqQAAqKsAAKitAACorwAAqMAAAKjDAACoxgAAqMkAAKjMAACozwAAqNIAAKjVAACo2AAAqNoAAKkZAACpGwAAqR0AAKkfAACpIgAAqSMAAKkkAACpJQAAqSYAAKkoAACpKgAAqSsAAKksAACpLgAAqS8AAKluAACpcAAAqXIAAKl0AACpdwAAqXgAAKl5AACpegAAqXsAAKl9AACpfwAAqYAAAKmBAACpgwAAqYQAAKnDAACpxQAAqcgAAKnKAACpzQAAqc4AAKnPAACp0AAAqdEAAKnTAACp1QAAqdYAAKnXAACp2QAAqdoAAKnnAACp6AAAqekAAKnrAACqKgAAqiwAAKouAACqMAAAqjMAAKo0AACqNQAAqjYAAKo3AACqOQAAqjsAAKo8AACqPQAAqj8AAKpAAACqfwAAqoEAAKqDAACqhQAAqogAAKqJAACqigAAqosAAKqMAACqjgAAqpAAAKqRAACqkgAAqpQAAKqVAACq1AAAqtYAAKrYAACq2gAAqt0AAKreAACq3wAAquAAAKrhAACq4wAAquUAAKrmAACq5wAAqukAAKrqAACrKQAAqysAAKstAACrLwAAqzIAAKszAACrNAAAqzUAAKs2AACrOAAAqzoAAKs7AACrPAAAqz4AAKs/AACrfgAAq4AAAKuCAACrhAAAq4cAAKuIAACriQAAq4oAAKuLAACrjQAAq48AAKuQAACrkQAAq5MAAKuUAACruQAAq90AAKwEAACsKAAArCsAAKwtAACsLwAArDEAAKwzAACsNQAArDYAAKw5AACsRgAArFUAAKxXAACsWQAArFsAAKxdAACsXwAArGEAAKxjAACscgAArHUAAKx4AACsewAArH4AAKyBAACshAAArIcAAKyJAACsyAAArMoAAKzMAACszgAArNEAAKzSAACs0wAArNQAAKzVAACs1wAArNkAAKzaAACs2wAArN0AAKzeAACtHQAArR8AAK0hAACtIwAArSYAAK0nAACtKAAArSkAAK0qAACtLAAArS4AAK0vAACtMAAArTIAAK0zAACtcgAArXQAAK12AACteAAArXsAAK18AACtfQAArX4AAK1/AACtgQAArYMAAK2EAACthQAArYcAAK2IAACtxwAArckAAK3MAACtzgAArdEAAK3SAACt0wAArdQAAK3VAACt1wAArdkAAK3aAACt2wAArd0AAK3eAACt4QAAriAAAK4iAACuJAAAriYAAK4pAACuKgAArisAAK4sAACuLQAAri8AAK4xAACuMgAArjMAAK41AACuNgAArnUAAK53AACuegAArnwAAK5/AACugAAAroEAAK6CAACugwAAroUAAK6HAACuiAAArokAAK6LAACujAAArqgAAK7nAACu6QAArusAAK7tAACu8AAArvEAAK7yAACu8wAArvQAAK72AACu+AAArvkAAK76AACu/AAArv0AAK9IAACvawAAr4sAAK+rAACvrQAAr68AAK+xAACvswAAr7UAAK+2AACvtwAAr7oAAK+7AACvvQAAr74AAK/AAACvwgAAr8MAAK/EAACvxwAAr8gAAK/NAACv2gAAr98AAK/hAACv4wAAr+gAAK/rAACv7gAAr/AAALAVAACwOQAAsGAAALCEAACwhwAAsIkAALCLAACwjQAAsI8AALCRAACwkgAAsJUAALCiAACwswAAsLUAALC3AACwuQAAsLsAALC9AACwvwAAsMEAALDDAACw1AAAsNcAALDaAACw3QAAsOAAALDjAACw5gAAsOkAALDsAACw7gAAsS0AALEvAACxMQAAsTMAALE2AACxNwAAsTgAALE5AACxOgAAsTwAALE+AACxPwAAsUAAALFCAACxQwAAsYIAALGEAACxhgAAsYgAALGLAACxjAAAsY0AALGOAACxjwAAsZEAALGTAACxlAAAsZUAALGXAACxmAAAsdcAALHZAACx3AAAsd4AALHhAACx4gAAseMAALHkAACx5QAAsecAALHpAACx6gAAsesAALHtAACx7gAAsfsAALH8AACx/QAAsf8AALI+AACyQAAAskIAALJEAACyRwAAskgAALJJAACySgAAsksAALJNAACyTwAAslAAALJRAACyUwAAslQAALKTAACylQAAspcAALKZAACynAAAsp0AALKeAACynwAAsqAAALKiAACypAAAsqUAALKmAACyqAAAsqkAALLoAACy6gAAsuwAALLuAACy8QAAsvIAALLzAACy9AAAsvUAALL3AACy+QAAsvoAALL7AACy/QAAsv4AALM9AACzPwAAs0EAALNDAACzRgAAs0cAALNIAACzSQAAs0oAALNMAACzTgAAs08AALNQAACzUgAAs1MAALOSAACzlAAAs5YAALOYAACzmwAAs5wAALOdAACzngAAs58AALOhAACzowAAs6QAALOlAACzpwAAs6gAALPNAACz8QAAtBgAALQ8AAC0PwAAtEEAALRDAAC0RQAAtEcAALRJAAC0SgAAtE0AALRaAAC0aQAAtGsAALRtAAC0bwAAtHEAALRzAAC0dQAAtHcAALSGAAC0iQAAtIwAALSPAAC0kgAAtJUAALSYAAC0mwAAtJ0AALTcAAC03gAAtOAAALTiAAC05QAAtOYAALTnAAC06AAAtOkAALTrAAC07QAAtO4AALTvAAC08QAAtPIAALUxAAC1MwAAtTUAALU3AAC1OgAAtTsAALU8AAC1PQAAtT4AALVAAAC1QgAAtUMAALVEAAC1RgAAtUcAALWGAAC1iAAAtYoAALWMAAC1jwAAtZAAALWRAAC1kgAAtZMAALWVAAC1lwAAtZgAALWZAAC1mwAAtZwAALXbAAC13QAAtd8AALXhAAC15AAAteUAALXmAAC15wAAtegAALXqAAC17AAAte0AALXuAAC18AAAtfEAALYwAAC2MgAAtjQAALY2AAC2OQAAtjoAALY7AAC2PAAAtj0AALY/AAC2QQAAtkIAALZDAAC2RQAAtkYAALaFAAC2hwAAtokAALaLAAC2jgAAto8AALaQAAC2kQAAtpIAALaUAAC2lgAAtpcAALaYAAC2mgAAtpsAALbaAAC23AAAtt4AALbgAAC24wAAtuQAALblAAC25gAAtucAALbpAAC26wAAtuwAALbtAAC27wAAtvAAALb5AAC2+gAAtvwAALc7AAC3PQAAtz8AALdBAAC3QwAAt0QAALdFAAC3RgAAt0cAALdJAAC3SwAAt0wAALdNAAC3TwAAt1AAALePAAC3kQAAt5MAALeVAAC3lwAAt5gAALeZAAC3mgAAt5sAALedAAC3nwAAt6AAALehAAC3owAAt6QAALfjAAC35QAAt+gAALfqAAC37AAAt+0AALfuAAC37wAAt/AAALfyAAC39AA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AznsAAM58AADOfQAAzn8AAM6BAADOggAAzoMAAM6FAADOhgAAzsUAAM7HAADOyQAAzssAAM7OAADOzwAAztAAAM7RAADO0gAAztQAAM7WAADO1wAAztgAAM7aAADO2wAAzxoAAM8cAADPHgAAzyAAAM8jAADPJAAAzyUAAM8mAADPJwAAzykAAM8rAADPLAAAzy0AAM8vAADPMAAAz28AAM9xAADPcwAAz3UAAM94AADPeQAAz3oAAM97AADPfAAAz34AAM+AAADPgQAAz4IAAM+EAADPhQAAz8QAAM/GAADPyAAAz8oAAM/NAADPzgAAz88AAM/QAADP0QAAz9MAAM/VAADP1gAAz9cAAM/ZAADP2gAA0CUAANBIAADQaAAA0IgAANCKAADQjAAA0I4AANCQAADQkgAA0JMAANCUAADQlwAA0JgAANCaAADQmwAA0J4AANCgAADQoQAA0KIAANClAADQpgAA0KsAANC4AADQvQAA0L8AANDBAADQxgAA0MkAANDMAADQzgAA0PMAANEXAADRPgAA0WIAANFlAADRZwAA0WkAANFrAADRbQAA0W8AANFwAADRcwAA0YAAANGRAADRkwAA0ZUAANGXAADRmQAA0ZsAANGdAADRnwAA0aEAANGyAADRtQAA0bgAANG7AADRvgAA0cEAANHEAADRxwAA0coAANHMAADSCwAA0g0AANIPAADSEQAA0hQAANIVAADSFgAA0hcAANIYAADSGgAA0hwAANIdAADSHgAA0iAAANIhAADSYAAA0mIAANJkAADSZgAA0mkAANJqAADSawAA0mwAANJtAADSbwAA0nEAANJyAADScwAA0nUAANJ2AADStQAA0rcAANK6AADSvAAA0r8AANLAAADSwQAA0sIAANLDAADSxQAA0scAANLIAADSyQAA0ssAANLMAADS2QAA0toAANLbAADS3QAA0xwAANMeAADTIAAA0yIAANMlAADTJgAA0ycAANMoAADTKQAA0ysAANMtAADTLgAA0y8AANMxAADTMgAA03EAANNzAADTdQAA03cAANN6AADTewAA03wAANN9AADTfgAA04AAANOCAADTgwAA04QAANOGAADThwAA08YAANPIAADTygAA08wAANPPAADT0AAA09EAANPSAADT0wAA09UAANPXAADT2AAA09kAANPbAADT3AAA1BsAANQdAADUHwAA1CEAANQkAADUJQAA1CYAANQnAADUKAAA1CoAANQsAADULQAA1C4AANQwAADUMQAA1HAAANRyAADUdAAA1HYAANR5AADUegAA1HsAANR8AADUfQAA1H8AANSBAADUggAA1IMAANSFAADUhgAA1KsAANTPAADU9gAA1RoAANUdAADVHwAA1SEAANUjAADVJQAA1ScAANUoAADVKwAA1TgAANVHAADVSQAA1UsAANVNAADVTwAA1VEAANVTAADVVQAA1WQAANVnAADVagAA1W0AANVwAADVcwAA1XYAANV5AADVewAA1boAANW8AADVvgAA1cAAANXDAADVxAAA1cUAANXGAADVxwAA1ckAANXLAADVzAAA1c0AANXPAADV0AAA1g8AANYRAADWEwAA1hUAANYYAADWGQAA1hoAANYbAADWHAAA1h4AANYgAADWIQAA1iIAANYkAADWJQAA1mQAANZmAADWaAAA1moAANZtAADWbgAA1m8AANZwAADWcQAA1nMAANZ1AADWdgAA1ncAANZ5AADWegAA1rkAANa7AADWvgAA1sAAANbDAADWxAAA1sUAANbGAADWxwAA1skAANbLAADWzAAA1s0AANbPAADW0AAA1xMAANc3AADXWwAA134AANelAADXxQAA1+wAANgTAADYMwAA2FcAANh7AADYfQAA2IAAANiCAADYhAAA2IYAANiJAADYjAAA2I4AANiQAADYkwAA2JUAANiXAADYmgAA2J0AANieAADYpwAA2LQAANi3AADYuQAA2LwAANi/AADYwQAA2OYAANkKAADZMQAA2VUAANlYAADZWgAA2VwAANleAADZYAAA2WIAANljAADZZgAA2XMAANmGAADZiAAA2YoAANmMAADZjgAA2ZAAANmSAADZlAAA2ZYAANmYAADZqwAA2a4AANmxAADZtAAA2bcAANm6AADZvQAA2cAAANnDAADZxgAA2cgAANoHAADaCQAA2gwAANoOAADaEQAA2hIAANoTAADaFAAA2hUAANoXAADaGQAA2hoAANobAADaHQAA2h4AANonAADaKAAA2ioAANppAADaawAA2m0AANpvAADacgAA2nMAANp0AADadQAA2nYAANp4AADaegAA2nsAANp8AADafgAA2n8AANq+AADawAAA2sMAANrFAADayAAA2skAANrKAADaywAA2swAANrOAADa0AAA2tEAANrSAADa1AAA2tUAANreAADa4QAA2uQAANrmAADa7wAA2vQAANr3AADa+gAA2vwAANsRAADbLAAA22sAANttAADbbwAA23EAANt0AADbdQAA23YAANt3AADbeAAA23oAANt8AADbfQAA234AANuAAADbgQAA28AAANvCAADbxQAA28cAANvKAADbywAA28wAANvNAADbzgAA29AAANvSAADb0wAA29QAANvWAADb1wAA2+AAANvhAADb4wAA3CIAANwkAADcJgAA3CgAANwrAADcLAAA3C0AANwuAADcLwAA3DEAANwzAADcNAAA3DUAANw3AADcOAAA3HcAANx5AADcfAAA3H4AANyBAADcggAA3IMAANyEAADchQAA3IcAANyJAADcigAA3IsAANyNAADcjgAA3JsAANycAADcnQAA3J8AANzeAADc4AAA3OIAANzkAADc5wAA3OgAANzpAADc6gAA3OsAANztAADc7wAA3PAAANzxAADc8wAA3PQAAN0zAADdNQAA3TgAAN06AADdPQAA3T4AAN0/AADdQAAA3UEAAN1DAADdRQAA3UYAAN1HAADdSQAA3UoAAN1XAADdZAAA3YEAAN2EAADdhgAA3YkAAN2MAADdjwAA3ZIAAN2VAADdmAAA3ZsAAN2dAADdoAAA3aMAAN2mAADdqAAA3cUAAN3IAADdywAA3c4AAN3RAADd1AAA3dcAAN3aAADd3QAA3eAAAN3jAADd5gAA3ekAAN3sAADd7wAA3fEAAN4MAADeIAAA3jUAAN5RAADeWAAA3mYAAN5yAADeewAA3pEAAN6aAADeqAAA3vMAAN8WAADfNgAA31YAAN9YAADfWgAA31wAAN9eAADfYQAA32IAAN9jAADfZgAA32cAAN9pAADfagAA32wAAN9vAADfcAAA33EAAN90AADfdQAA33oAAN+HAADfjAAA344AAN+QAADflQAA35gAAN+bAADfnQAA38IAAN/mAADgDQAA4DEAAOA0AADgNgAA4DgAAOA6AADgPAAA4D4AAOA/AADgQgAA4E8AAOBgAADgYgAA4GQAAOBmAADgaAAA4GoAAOBsAADgbgAA4HAAAOCBAADghAAA4IcAAOCKAADgjQAA4JAAAOCTAADglgAA4JkAAOCbAADg2gAA4NwAAODeAADg4AAA4OMAAODkAADg5QAA4OYAAODnAADg6QAA4OsAAODsAADg7QAA4O8AAODwAADhLwAA4TEAAOEzAADhNQAA4TgAAOE5AADhOgAA4TsAAOE8AADhPgAA4UAAAOFBAADhQgAA4UQAAOFFAADhhAAA4YYAAOGJAADhiwAA4Y4AAOGPAADhkAAA4ZEAAOGSAADhlAAA4ZYAAOGXAADhmAAA4ZoAAOGbAADhqAAA4akAAOGqAADhrAAA4esAAOHtAADh7wAA4fEAAOH0AADh9QAA4fYAAOH3AADh+AAA4foAAOH8AADh/QAA4f4AAOIAAADiAQAA4kAAAOJCAADiRAAA4kYAAOJJAADiSgAA4ksAAOJMAADiTQAA4k8AAOJRAADiUgAA4lMAAOJVAADiVgAA4pUAAOKXAADimQAA4psAAOKeAADinwAA4qAAAOKhAADiogAA4qQAAOKmAADipwAA4qgAAOKqAADiqwAA4uoAAOLsAADi7gAA4vAAAOLzAADi9AAA4vUAAOL2AADi9wAA4vkAAOL7AADi/AAA4v0AAOL/AADjAAAA4z8AAONBAADjQwAA40UAAONIAADjSQAA40oAAONLAADjTAAA404AAONQAADjUQAA41IAAONUAADjVQAA43oAAOOeAADjxQAA4+kAAOPsAADj7gAA4/AAAOPyAADj9AAA4/YAAOP3AADj+gAA5AcAAOQWAADkGAAA5BoAAOQcAADkHgAA5CAAAOQiAADkJAAA5DMAAOQ2AADkOQAA5DwAAOQ/AADkQgAA5EUAAORIAADkSgAA5IkAAOSLAADkjQAA5I8AAOSSAADkkwAA5JQAAOSVAADklgAA5JgAAOSaAADkmwAA5JwAAOSeAADknwAA5N4AAOTgAADk4gAA5OQAAOTnAADk6AAA5OkAAOTqAADk6wAA5O0AAOTvAADk8AAA5PEAAOTzAADk9AAA5TMAAOU1AADlNwAA5TkAAOU8AADlPQAA5T4AAOU/AADlQAAA5UIAAOVEAADlRQAA5UYAAOVIAADlSQAA5YgAAOWKAADljAAA5Y4AAOWRAADlkgAA5ZMAAOWUAADllQAA5ZcAAOWZAADlmgAA5ZsAAOWdAADlngAA5d0AAOXfAADl4QAA5eMAAOXmAADl5wAA5egAAOXpAADl6gAA5ewAAOXuAADl7wAA5fAAAOXyAADl8wAA5jIAAOY0AADmNgAA5jgAAOY7AADmPAAA5j0AAOY+AADmPwAA5kEAAOZDAADmRAAA5kUAAOZHAADmSAAA5ocAAOaJAADmiwAA5o0AAOaQAADmkQAA5pIAAOaTAADmlAAA5pYAAOaYAADmmQAA5poAAOacAADmnQAA5ugAAOcLAADnKwAA50sAAOdNAADnTwAA51EAAOdTAADnVgAA51cAAOdYAADnWwAA51wAAOdeAADnXwAA52EAAOdjAADnZAAA52UAAOdoAADnaQAA524AAOd7AADngAAA54IAAOeEAADniQAA54wAAOePAADnkQAA57YAAOfaAADoAQAA6CUAAOgoAADoKgAA6CwAAOguAADoMAAA6DIAAOgzAADoNgAA6EMAAOhUAADoVgAA6FgAAOhaAADoXAAA6F4AAOhgAADoYgAA6GQAAOh1AADoeAAA6HsAAOh+AADogQAA6IQAAOiHAADoigAA6I0AAOiPAADozgAA6NAAAOjSAADo1AAA6NcAAOjYAADo2QAA6NoAAOjbAADo3QAA6N8AAOjgAADo4QAA6OMAAOjkAADpIwAA6SUAAOknAADpKQAA6SwAAOktAADpLgAA6S8AAOkwAADpMgAA6TQAAOk1AADpNgAA6TgAAOk5AADpeAAA6XoAAOl9AADpfwAA6YIAAOmDAADphAAA6YUAAOmGAADpiAAA6YoAAOmLAADpjAAA6Y4AAOmPAADpnAAA6Z0AAOmeAADpoAAA6d8AAOnhAADp4wAA6eUAAOnoAADp6QAA6eoAAOnrAADp7AAA6e4AAOnwAADp8QAA6fIAAOn0AADp9QAA6jQAAOo2AADqOAAA6joAAOo9AADqPgAA6j8AAOpAAADqQQAA6kMAAOpFAADqRgAA6kcAAOpJAADqSgAA6okAAOqLAADqjQAA6o8AAOqSAADqkwAA6pQAAOqVAADqlgAA6pgAAOqaAADqmwAA6pwAAOqeAADqnwAA6t4AAOrgAADq4gAA6uQAAOrnAADq6AAA6ukAAOrqAADq6wAA6u0AAOrvAADq8AAA6vEAAOrzAADq9AAA6zMAAOs1AADrNwAA6zkAAOs8AADrPQAA6z4AAOs/AADrQAAA60IAAOtEAADrRQAA60YAAOtIAADrSQAA624AAOuSAADruQAA690AAOvgAADr4gAA6+QAAOvmAADr6AAA6+oAAOvrAADr7gAA6/sAAOwKAADsDAAA7A4AAOwQAADsEgAA7BQAAOwWAADsGAAA7CcAAOwqAADsLQAA7DAAAOwzAADsNgAA7DkAAOw8AADsPgAA7H0AAOx/AADsgQAA7IMAAOyGAADshwAA7IgAAOyJAADsigAA7IwAAOyOAADsjwAA7JAAAOySAADskwAA7NIAAOzUAADs1gAA7NgAAOzbAADs3AAA7N0AAOzeAADs3wAA7OEAAOzjAADs5AAA7OUAAOznAADs6AAA7ScAAO0pAADtKwAA7S0AAO0wAADtMQAA7TIAAO0zAADtNAAA7TYAAO04AADtOQAA7ToAAO08AADtPQAA7XwAAO1+AADtgAAA7YIAAO2FAADthgAA7YcAAO2IAADtiQAA7YsAAO2NAADtjgAA7Y8AAO2RAADtkgAA7dEAAO3TAADt1QAA7dcAAO3aAADt2wAA7dwAAO3dAADt3gAA7eAAAO3iAADt4wAA7eQAAO3mAADt5wAA7iYAAO4oAADuKgAA7iwAAO4vAADuMAAA7jEAAO4yAADuMwAA7jUAAO43AADuOAAA7jkAAO47AADuPAAA7nsAAO59AADufwAA7oEAAO6EAADuhQAA7oYAAO6HAADuiAAA7ooAAO6MAADujQAA7o4AAO6QAADukQAA7twAAO7/AADvHwAA7z8AAO9BAADvQwAA70UAAO9HAADvSgAA70sAAO9MAADvTwAA71AAAO9SAADvUwAA71UAAO9YAADvWQAA71oAAO9dAADvXgAA72MAAO9wAADvdQAA73cAAO95AADvfgAA74EAAO+EAADvhgAA76sAAO/PAADv9gAA8BoAAPAdAADwHwAA8CEAAPAjAADwJQAA8CcAAPAoAADwKwAA8DgAAPBJAADwSwAA8E0AAPBPAADwUQAA8FMAAPBVAADwVwAA8FkAAPBqAADwbQAA8HAAAPBzAADwdgAA8HkAAPB8AADwfwAA8IIAAPCEAADwwwAA8MUAAPDHAADwyQAA8MwAAPDNAADwzgAA8M8AAPDQAADw0gAA8NQAAPDVAADw1gAA8NgAAPDZAADxGAAA8RoAAPEcAADxHgAA8SEAAPEiAADxIwAA8SQAAPElAADxJwAA8SkAAPEqAADxKwAA8S0AAPEuAADxbQAA8W8AAPFyAADxdAA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BDQ4AAQ0QAAENEQABDVAAAQ1SAAENVAABDVYAAQ1ZAAENWgABDVsAAQ1cAAENXQABDV8AAQ1hAAENYgABDWMAAQ1lAAENZgABDaUAAQ2nAAENqQABDasAAQ2uAAENrwABDbAAAQ2xAAENsgABDbQAAQ22AAENtwABDbgAAQ26AAENuwABDfoAAQ38AAEN/gABDgAAAQ4DAAEOBAABDgUAAQ4GAAEOBwABDgkAAQ4LAAEODAABDg0AAQ4PAAEOEAABDk8AAQ5RAAEOUwABDlUAAQ5YAAEOWQABDloAAQ5bAAEOXAABDl4AAQ5gAAEOYQABDmIAAQ5kAAEOZQABDrAAAQ7TAAEO8wABDxMAAQ8VAAEPFwABDxkAAQ8bAAEPHgABDx8AAQ8gAAEPIwABDyQAAQ8mAAEPJwABDykAAQ8sAAEPLQABDy4AAQ8xAAEPMgABDzcAAQ9EAAEPSQABD0sAAQ9NAAEPUgABD1UAAQ9YAAEPWgABD38AAQ+jAAEPygABD+4AAQ/xAAEP8wABD/UAAQ/3AAEP+QABD/sAAQ/8AAEP/wABEAwAARAdAAEQHwABECEAARAjAAEQJQABECcAARApAAEQKwABEC0AARA+AAEQQQABEEQAARBHAAEQSgABEE0AARBQAAEQUwABEFYAARBYAAEQlwABEJkAARCbAAEQnQABEKAAARChAAEQogABEKMAARCkAAEQpgABEKgAARCpAAEQqgABEKwAARCtAAEQ7AABEO4AARDwAAEQ8gABEPUAARD2AAEQ9wABEPgAARD5AAEQ+wABEP0AARD+AAEQ/wABEQEAARECAAERQQABEUMAARFGAAERSAABEUsAARFMAAERTQABEU4AARFPAAERUQABEVMAARFUAAERVQABEVcAARFYAAERZQABEWYAARFnAAERaQABEagAARGqAAERrAABEa4AARGxAAERsgABEbMAARG0AAERtQABEbcAARG5AAERugABEbsAARG9AAERvgABEf0AARH/AAESAQABEgMAARIGAAESBwABEggAARIJAAESCgABEgwAARIOAAESDwABEhAAARISAAESEwABElIAARJUAAESVgABElgAARJbAAESXAABEl0AARJeAAESXwABEmEAARJjAAESZAABEmUAARJnAAESaAABEqcAARKpAAESqwABEq0AARKwAAESsQABErIAARKzAAEStAABErYAARK4AAESuQABEroAARK8AAESvQABEvwAARL+AAETAAABEwIAARMFAAETBgABEwcAARMIAAETCQABEwsAARMNAAETDgABEw8AARMRAAETEgABEzcAARNbAAETggABE6YAAROpAAETqwABE60AAROvAAETsQABE7MAARO0AAETtwABE8QAARPTAAET1QABE9cAARPZAAET2wABE90AARPfAAET4QABE/AAARPzAAET9gABE/kAARP8AAET/wABFAIAARQFAAEUBwABFEYAARRIAAEUSgABFEwAARRPAAEUUAABFFEAARRSAAEUUwABFFUAARRXAAEUWAABFFkAARRbAAEUXAABFJsAARSdAAEUnwABFKEAARSkAAEUpQABFKYAARSnAAEUqAABFKoAARSsAAEUrQABFK4AARSwAAEUsQABFPAAARTyAAEU9AABFPYAART5AAEU+gABFPsAART8AAEU/QABFP8AARUBAAEVAgABFQMAARUFAAEVBgABFUUAARVHAAEVSQABFUsAARVOAAEVTwABFVAAARVRAAEVUgABFVQAARVWAAEVVwABFVgAARVaAAEVWwABFZoAARWcAAEVngABFaAAARWjAAEVpAABFaUAARWmAAEVpwABFakAARWrAAEVrAABFa0AARWvAAEVsAABFe8AARXxAAEV8wABFfUAARX4AAEV+QABFfoAARX7AAEV/AABFf4AARYAAAEWAQABFgIAARYEAAEWBQABFkQAARZGAAEWSAABFkoAARZNAAEWTgABFk8AARZQAAEWUQABFlMAARZVAAEWVgABFlcAARZZAAEWWgABFqUAARbIAAEW6AABFwgAARcKAAEXDAABFw4AARcQAAEXEwABFxQAARcVAAEXGAABFxkAARcbAAEXHAABFx4AARchAAEXIgABFyMAARcmAAEXJwABFywAARc5AAEXPgABF0AAARdCAAEXRwABF0oAARdNAAEXTwABF3QAAReYAAEXvwABF+MAARfmAAEX6AABF+oAARfsAAEX7gABF/AAARfxAAEX9AABGAEAARgSAAEYFAABGBYAARgYAAEYGgABGBwAARgeAAEYIAABGCIAARgzAAEYNgABGDkAARg8AAEYPwABGEIAARhFAAEYSAABGEsAARhNAAEYjAABGI4AARiQAAEYkgABGJUAARiWAAEYlwABGJgAARiZAAEYmwABGJ0AARieAAEYnwABGKEAARiiAAEY4QABGOMAARjlAAEY5wABGOoAARjrAAEY7AABGO0AARjuAAEY8AABGPIAARjzAAEY9AABGPYAARj3AAEZNgABGTgAARk7AAEZPQABGUAAARlBAAEZQgABGUMAARlEAAEZRgABGUgAARlJAAEZSgABGUwAARlNAAEZWgABGVsAARlcAAEZXgABGZ0AARmfAAEZoQABGaMAARmmAAEZpwABGagAARmpAAEZqgABGawAARmuAAEZrwABGbAAARmyAAEZswABGfIAARn0AAEZ9gABGfgAARn7AAEZ/AABGf0AARn+AAEZ/wABGgEAARoDAAEaBAABGgUAARoHAAEaCAABGkcAARpJAAEaSwABGk0AARpQAAEaUQABGlIAARpTAAEaVAABGlYAARpYAAEaWQABGloAARpcAAEaXQABGpwAARqeAAEaoAABGqIAARqlAAEapgABGqcAARqoAAEaqQABGqsAARqtAAEargABGq8AARqxAAEasgABGvEAARrzAAEa9QABGvcAARr6AAEa+wABGvwAARr9AAEa/gABGwAAARsCAAEbAwABGwQAARsGAAEbBwABGywAARtQAAEbdwABG5sAARueAAEboAABG6IAARukAAEbpgABG6gAARupAAEbrAABG7kAARvIAAEbygABG8wAARvOAAEb0AABG9IAARvUAAEb1gABG+UAARvoAAEb6wABG+4AARvxAAEb9AABG/cAARv6AAEb/AABHDsAARw9AAEcPwABHEEAARxEAAEcRQABHEYAARxHAAEcSAABHEoAARxMAAEcTQABHE4AARxQAAEcUQABHJAAARySAAEclAABHJYAARyZAAEcmgABHJsAARycAAEcnQABHJ8AARyhAAEcogABHKMAARylAAEcpgABHOUAARznAAEc6QABHOsAARzuAAEc7wABHPAAARzxAAEc8gABHPQAARz2AAEc9wABHPgAARz6AAEc+wABHToAAR08AAEdPwABHUEAAR1EAAEdRQABHUYAAR1HAAEdSAABHUoAAR1MAAEdTQABHU4AAR1QAAEdUQABHZAAAR2SAAEdlAABHZYAAR2ZAAEdmgABHZsAAR2cAAEdnQABHZ8AAR2hAAEdogABHaMAAR2lAAEdpgABHeUAAR3nAAEd6QABHesAAR3uAAEd7wABHfAAAR3xAAEd8gABHfQAAR32AAEd9wABHfgAAR36AAEd+wABHjoAAR48AAEePgABHkAAAR5DAAEeRAABHkUAAR5GAAEeRwABHkkAAR5LAAEeTAABHk0AAR5PAAEeUAABHpsAAR6+AAEe3gABHv4AAR8AAAEfAgABHwQAAR8GAAEfCQABHwoAAR8LAAEfDgABHw8AAR8RAAEfEgABHxQAAR8XAAEfGAABHxkAAR8cAAEfHQABHyIAAR8vAAEfNAABHzYAAR84AAEfPQABH0AAAR9DAAEfRQABH2oAAR+OAAEftQABH9kAAR/cAAEf3gABH+AAAR/iAAEf5AABH+YAAR/nAAEf6gABH/cAASAIAAEgCgABIAwAASAOAAEgEAABIBIAASAUAAEgFgABIBgAASApAAEgLAABIC8AASAyAAEgNQABIDgAASA7AAEgPgABIEEAASBDAAEgggABIIQAASCGAAEgiAABIIsAASCMAAEgjQABII4AASCPAAEgkQABIJMAASCUAAEglQABIJcAASCYAAEg1wABINkAASDbAAEg3QABIOAAASDhAAEg4gABIOMAASDkAAEg5gABIOgAASDpAAEg6gABIOwAASDtAAEhLAABIS4AASExAAEhMwABITYAASE3AAEhOAABITkAASE6AAEhPAABIT4AASE/AAEhQAABIUIAASFDAAEhUAABIVEAASFSAAEhVAABIZMAASGVAAEhlwABIZkAASGcAAEhnQABIZ4AASGfAAEhoAABIaIAASGkAAEhpQABIaYAASGoAAEhqQABIegAASHqAAEh7AABIe4AASHxAAEh8gABIfMAASH0AAEh9QABIfcAASH5AAEh+gABIfsAASH9AAEh/gABIj0AASI/AAEiQQABIkMAASJGAAEiRwABIkgAASJJAAEiSgABIkwAASJOAAEiTwABIlAAASJSAAEiUwABIpIAASKUAAEilgABIpgAASKbAAEinAABIp0AASKeAAEinwABIqEAASKjAAEipAABIqUAASKnAAEiqAABIucAASLpAAEi6wABIu0AASLwAAEi8QABIvIAASLzAAEi9AABIvYAASL4AAEi+QABIvoAASL8AAEi/QABIyIAASNGAAEjbQABI5EAASOUAAEjlgABI5gAASOaAAEjnAABI54AASOfAAEjogABI68AASO+AAEjwAABI8IAASPEAAEjxgABI8gAASPKAAEjzAABI9sAASPeAAEj4QABI+QAASPnAAEj6gABI+0AASPwAAEj8gABJDEAASQzAAEkNQABJDcAASQ6AAEkOwABJDwAASQ9AAEkPgABJEAAASRCAAEkQwABJEQAASRGAAEkRwABJIYAASSIAAEkigABJIwAASSPAAEkkAABJJEAASSSAAEkkwABJJUAASSXAAEkmAABJJkAASSbAAEknAABJNsAASTdAAEk3wABJOEAASTkAAEk5QABJOYAASTnAAEk6AABJOoAASTsAAEk7QABJO4AASTwAAEk8QABJTAAASUyAAElNQABJTcAASU6AAElOwABJTwAASU9AAElPgABJUAAASVCAAElQwABJUQAASVGAAElRwABJYYAASWIAAEligABJYwAASWPAAElkAABJZEAASWSAAElkwABJZUAASWXAAElmAABJZkAASWbAAElnAABJdsAASXdAAEl4AABJeIAASXlAAEl5gABJecAASXoAAEl6QABJesAASXtAAEl7gABJe8AASXxAAEl8gABJg4AASZNAAEmTwABJlEAASZTAAEmVgABJlcAASZYAAEmWQABJloAASZcAAEmXgABJl8AASZgAAEmYgABJmMAASauAAEm0QABJvEAAScRAAEnEwABJxUAAScXAAEnGQABJxwAAScdAAEnHgABJyEAASciAAEnJAABJyUAAScnAAEnKQABJyoAAScrAAEnLgABJy8AASc0AAEnQQABJ0YAASdIAAEnSgABJ08AASdSAAEnVQABJ1cAASd8AAEnoAABJ8cAASfrAAEn7gABJ/AAASfyAAEn9AABJ/YAASf4AAEn+QABJ/wAASgJAAEoGgABKBwAASgeAAEoIAABKCIAASgkAAEoJgABKCgAASgqAAEoOwABKD4AAShBAAEoRAABKEcAAShKAAEoTQABKFAAAShTAAEoVQABKJQAASiWAAEomAABKJoAASidAAEongABKJ8AASigAAEooQABKKMAASilAAEopgABKKcAASipAAEoqgABKOkAASjrAAEo7QABKO8AASjyAAEo8wABKPQAASj1AAEo9gABKPgAASj6AAEo+wABKPwAASj+AAEo/wABKT4AASlAAAEpQwABKUUAASlIAAEpSQABKUoAASlLAAEpTAABKU4AASlQAAEpUQABKVIAASlUAAEpVQABKWIAASljAAEpZAABKWYAASmlAAEppwABKakAASmrAAEprgABKa8AASmwAAEpsQABKbIAASm0AAEptgABKbcAASm4AAEpugABKbsAASn6AAEp/AABKf4AASoAAAEqAwABKgQAASoFAAEqBgABKgcAASoJAAEqCwABKgwAASoNAAEqDwABKhAAASpPAAEqUQABKlMAASpVAAEqWAABKlkAASpaAAEqWwABKlwAASpeAAEqYAABKmEAASpiAAEqZAABKmUAASqkAAEqpgABKqgAASqqAAEqrQABKq4AASqvAAEqsAABKrEAASqzAAEqtQABKrYAASq3AAEquQABKroAASr5AAEq+wABKv0AASr/AAErAgABKwMAASsEAAErBQABKwYAASsIAAErCgABKwsAASsMAAErDgABKw8AASs0AAErWAABK38AASujAAErpgABK6gAASuqAAErrAABK64AASuwAAErsQABK7QAASvBAAEr0AABK9IAASvUAAEr1gABK9gAASvaAAEr3AABK94AASvtAAEr8AABK/MAASv2AAEr+QABK/wAASv/AAEsAgABLAQAASxDAAEsRQABLEcAASxJAAEsTAABLE0AASxOAAEsTwABLFAAASxSAAEsVAABLFUAASxWAAEsWAABLFkAASyYAAEsmgABLJwAASyeAAEsoQABLKIAASyjAAEspAABLKUAASynAAEsqQABLKoAASyrAAEsrQABLK4AASztAAEs7wABLPEAASzzAAEs9gABLPcAASz4AAEs+QABLPoAASz8AAEs/gABLP8AAS0AAAEtAgABLQMAAS1CAAEtRAABLUYAAS1IAAEtSwABLUwAAS1NAAEtTgABLU8AAS1RAAEtUwABLVQAAS1VAAEtVwABLVgAAS2XAAEtmQABLZsAAS2dAAEtoAABLaEAAS2iAAEtowABLaQAAS2mAAEtqAABLakAAS2qAAEtrAABLa0AAS3sAAEt7gABLfAAAS3yAAEt9QABLfYAAS33AAEt+AABLfkAAS37AAEt/QABLf4AAS3/AAEuAQABLgIAAS5BAAEuQwABLkUAAS5HAAEuSgABLksAAS5MAAEuTQABLk4AAS5QAAEuUgABLlMAAS5UAAEuVgABLlcAAS6iAAEuxQABLuUAAS8FAAEvBwABLwkAAS8LAAEvDQABLxAAAS8RAAEvEgABLxUAAS8WAAEvGAABLxkAAS8bAAEvHgABLx8AAS8gAAEvIwABLyQAAS8pAAEvNgABLzsAAS89AAEvPwABL0QAAS9HAAEvSgABL0wAAS9xAAEvlQABL7wAAS/gAAEv4wABL+UAAS/nAAEv6QABL+sAAS/tAAEv7gABL/EAAS/+AAEwDwABMBEAATATAAEwFQABMBcAATAZAAEwGwABMB0AATAfAAEwMAABMDMAATA2AAEwOQABMDwAATA/AAEwQgABMEUAATBIAAEwSgABMIkAATCLAAEwjQABMI8AATCSAAEwkwABMJQAATCVAAEwlgABMJgAATCaAAEwmwABMJwAATCeAAEwnwABMN4AATDgAAEw4gABMOQAATDnAAEw6AABMOkAATDqAAEw6wABMO0AATDvAAEw8AABMPEAATDzAAEw9AABMTMAATE1AAExOAABMToAATE9AAExPgABMT8AATFAAAExQQABMUMAATFFAAExRgABMUcAATFJAAExSgABMVcAATFYAAExWQABMVsAATGaAAExnAABMZ4AATGgAAExowABMaQAATGlAAExpgABMacAATGpAAExqwABMawAATGtAAExrwABMbAAATHvAAEx8QABMfMAATH1AAEx+AABMfkAATH6AAEx+wABMfwAATH+AAEyAAABMgEAATICAAEyBAABMgUAATJEAAEyRgABMkgAATJKAAEyTQABMk4AATJPAAEyUAABMlEAATJTAAEyVQABMlYAATJXAAEyWQABMloAATKZAAEymwABMp0AATKfAAEyogABMqMAATKkAAEypQABMqYAATKoAAEyqgABMqsAATKsAAEyrgABMq8AATLuAAEy8AABMvIAATL0AAEy9wABMvgAATL5AAEy+gABMvsAATL9AAEy/wABMwAAATMBAAEzAwABMwQAATMpAAEzTQABM3QAATOYAAEzmwABM50AATOfAAEzoQABM6MAATOlAAEzpgABM6kAATO2AAEzxQABM8cAATPJAAEzywABM80AATPPAAEz0QABM9MAATPiAAEz5QABM+gAATPrAAEz7gABM/EAATP0AAEz9wABM/kAATQ4AAE0OgABNDwAATQ+AAE0QQABNEIAATRDAAE0RAABNEUAATRHAAE0SQABNEoAATRLAAE0TQABNE4AATSNAAE0jwABNJEAATSTAAE0lgABNJcAATSYAAE0mQABNJoAATScAAE0ngABNJ8AATSgAAE0ogABNKMAATTiAAE05AABNOYAATToAAE06wABNOwAATTtAAE07gABNO8AATTxAAE08wABNPQAATT1AAE09wABNPgAATU3AAE1OQABNTwAATU+AAE1QQABNUIAATVDAAE1RAABNUUAATVHAAE1SQABNUoAATVLAAE1TQABNU4AATWNAAE1jwABNZEAATWTAAE1lgABNZcAATWYAAE1mQABNZoAATWcAAE1ngABNZ8AATWgAAE1ogABNaMAATXiAAE15AABNeYAATXoAAE16wABNewAATXtAAE17gABNe8AATXxAAE18wABNfQAATX1AAE19wABNfgAATY3AAE2OQABNjsAATY9AAE2QAABNkEAATZCAAE2QwABNkQAATZGAAE2SAABNkkAATZKAAE2TAABNk0AATaYAAE2uwABNtsAATb7AAE2/QABNv8AATcBAAE3AwABNwYAATcHAAE3CAABNwsAATcMAAE3DgABNw8AATcRAAE3FAABNxUAATcWAAE3GQABNxoAATcfAAE3LAABNzEAATczAAE3NQABNzoAATc9AAE3QAABN0IAATdnAAE3iwABN7IAATfWAAE32QABN9sAATfdAAE33wABN+EAATfjAAE35AABN+cAATf0AAE4BQABOAcAATgJAAE4CwABOA0AATgPAAE4EQABOBMAATgVAAE4JgABOCkAATgsAAE4LwABODIAATg1AAE4OAABODsAATg+AAE4QAABOH8AATiBAAE4gwABOIUAATiIAAE4iQABOIoAATiLAAE4jAABOI4AATiQAAE4kQABOJIAATiUAAE4lQABONQAATjWAAE42AABONoAATjdAAE43gABON8AATjgAAE44QABOOMAATjlAAE45gABOOcAATjpAAE46gABOSkAATkrAAE5LgABOTAAATkzAAE5NAABOTUAATk2AAE5NwABOTkAATk7AAE5PAABOT0AATk/AAE5QAABOU0AATlOAAE5TwABOVEAATmQAAE5kgABOZQAATmWAAE5mQABOZoAATmbAAE5nAABOZ0AATmfAAE5oQABOaIAATmjAAE5pQABOaYAATnlAAE55wABOekAATnrAAE57gABOe8AATnwAAE58QABOfIAATn0AAE59gABOfcAATn4AAE5+gABOfsAATo6AAE6PAABOj4AATpAAAE6QwABOkQAATpFAAE6RgABOkcAATpJAAE6SwABOkwAATpNAAE6TwABOlAAATqPAAE6kQABOpMAATqVAAE6mAABOpkAATqaAAE6mwABOpwAATqeAAE6oAABOqEAATqiAAE6pAABOqUAATrkAAE65gABOugAATrqAAE67QABOu4AATrvAAE68AABOvEAATrzAAE69QABOvYAATr3AAE6+QABOvoAATsfAAE7QwABO2oAATuOAAE7kQABO5MAATuVAAE7lwABO5kAATubAAE7nAABO58AATusAAE7uwABO70AATu/AAE7wQABO8MAATvFAAE7xwABO8kAATvYAAE72wABO94AATvhAAE75AABO+cAATvqAAE77QABO+8AATwuAAE8MAABPDMAATw1AAE8OAABPDkAATw6AAE8OwABPDwAATw+AAE8QAABPEEAATxCAAE8RAABPEUAATyEAAE8hgABPIgAATyKAAE8jQABPI4AATyPAAE8kAABPJEAATyTAAE8lQABPJYAATyXAAE8mQABPJoAATzZAAE82wABPN0AATzfAAE84gABPOMAATzkAAE85QABPOYAATzoAAE86gABPOsAATzsAAE87gABPO8AAT0uAAE9MAABPTMAAT01AAE9OAABPTkAAT06AAE9OwABPTwAAT0+AAE9QAABPUEAAT1CAAE9RAABPUUAAT2EAAE9hgABPYgAAT2KAAE9jQABPY4AAT2PAAE9kAABPZEAAT2TAAE9lQABPZYAAT2XAAE9mQABPZoAAT3ZAAE92wABPd0AAT3fAAE94gABPeMAAT3kAAE95QABPeYAAT3oAAE96gABPesAAT3sAAE97gABPe8AAT4uAAE+MAABPjIAAT40AAE+NwABPjgAAT45AAE+OgABPjsAAT49AAE+PwABPkAAAT5BAAE+QwABPkQAAT6PAAE+sgABPtIAAT7yAAE+9AABPvYAAT74AAE++gABPv0AAT7+AAE+/wABPwIAAT8DAAE/BQABPwYAAT8JAAE/DAABPw0AAT8OAAE/EQABPxIAAT8XAAE/JAABPykAAT8rAAE/LQABPzIAAT81AAE/OAABPzoAAT9fAAE/gwABP6oAAT/OAAE/0QA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BVYkAAVWKAAFVyQABVcsAAVXNAAFVzwABVdIAAVXTAAFV1AABVdUAAVXWAAFV2AABVdoAAVXbAAFV3AABVd4AAVXfAAFWHgABViAAAVYjAAFWJQABVigAAVYpAAFWKgABVisAAVYsAAFWLgABVjAAAVYxAAFWMgABVjQAAVY1AAFWdAABVnYAAVZ4AAFWegABVn0AAVZ+AAFWfwABVoAAAVaBAAFWgwABVoUAAVaGAAFWhwABVokAAVaKAAFWyQABVssAAVbNAAFWzwABVtIAAVbTAAFW1AABVtUAAVbWAAFW2AABVtoAAVbbAAFW3AABVt4AAVbfAAFXHgABVyAAAVciAAFXJAABVycAAVcoAAFXKQABVyoAAVcrAAFXLQABVy8AAVcwAAFXMQABVzMAAVc0AAFXPQABVz4AAVdAAAFXgwABV6cAAVfLAAFX7gABWBUAAVg1AAFYXAABWIMAAVijAAFYxwABWOsAAVjtAAFY8AABWPIAAVj0AAFY9gABWPkAAVj8AAFY/gABWQAAAVkDAAFZBQABWQcAAVkKAAFZDQABWQ4AAVkXAAFZJAABWScAAVkpAAFZLAABWS8AAVkxAAFZVgABWXoAAVmhAAFZxQABWcgAAVnKAAFZzAABWc4AAVnQAAFZ0gABWdMAAVnWAAFZ4wABWfYAAVn4AAFZ+gABWfwAAVn+AAFaAAABWgIAAVoEAAFaBgABWggAAVobAAFaHgABWiEAAVokAAFaJwABWioAAVotAAFaMAABWjMAAVo2AAFaOAABWncAAVp5AAFafAABWn4AAVqBAAFaggABWoMAAVqEAAFahQABWocAAVqJAAFaigABWosAAVqNAAFajgABWpcAAVqYAAFamgABWtkAAVrbAAFa3QABWt8AAVriAAFa4wABWuQAAVrlAAFa5gABWugAAVrqAAFa6wABWuwAAVruAAFa7wABWy4AAVswAAFbMwABWzUAAVs4AAFbOQABWzoAAVs7AAFbPAABWz4AAVtAAAFbQQABW0IAAVtEAAFbRQABW04AAVtRAAFbVAABW1YAAVtfAAFbYgABW2UAAVtnAAFbewABW7oAAVu8AAFbvgABW8AAAVvDAAFbxAABW8UAAVvGAAFbxwABW8kAAVvLAAFbzAABW80AAVvPAAFb0AABXA8AAVwRAAFcFAABXBYAAVwZAAFcGgABXBsAAVwcAAFcHQABXB8AAVwhAAFcIgABXCMAAVwlAAFcJgABXC8AAVwwAAFcMgABXHEAAVxzAAFcdQABXHcAAVx6AAFcewABXHwAAVx9AAFcfgABXIAAAVyCAAFcgwABXIQAAVyGAAFchwABXMYAAVzIAAFcywABXM0AAVzQAAFc0QABXNIAAVzTAAFc1AABXNYAAVzYAAFc2QABXNoAAVzcAAFc3QABXOoAAVzrAAFc7AABXO4AAV0tAAFdLwABXTEAAV0zAAFdNgABXTcAAV04AAFdOQABXToAAV08AAFdPgABXT8AAV1AAAFdQgABXUMAAV2CAAFdhAABXYcAAV2JAAFdjAABXY0AAV2OAAFdjwABXZAAAV2SAAFdlAABXZUAAV2WAAFdmAABXZkAAV2oAAFdtQABXb4AAV3BAAFdxAABXccAAV3KAAFd0wABXdYAAV3ZAAFd3AABXd8AAV3hAAFd7QABXfoAAV4OAAFeEwABXl4AAV6BAAFeoQABXsEAAV7DAAFexQABXscAAV7JAAFezAABXs0AAV7OAAFe0QABXtIAAV7UAAFe1QABXtcAAV7aAAFe2wABXtwAAV7fAAFe4AABXuUAAV7yAAFe9wABXvkAAV77AAFfAAABXwMAAV8GAAFfCAABXy0AAV9RAAFfeAABX5wAAV+fAAFfoQABX6MAAV+lAAFfpwABX6kAAV+qAAFfrQABX7oAAV/LAAFfzQABX88AAV/RAAFf0wABX9UAAV/XAAFf2QABX9sAAV/sAAFf7wABX/IAAV/1AAFf+AABX/sAAV/+AAFgAQABYAQAAWAGAAFgRQABYEcAAWBJAAFgSwABYE4AAWBPAAFgUAABYFEAAWBSAAFgVAABYFYAAWBXAAFgWAABYFoAAWBbAAFgmgABYJwAAWCeAAFgoAABYKMAAWCkAAFgpQABYKYAAWCnAAFgqQABYKsAAWCsAAFgrQABYK8AAWCwAAFg7wABYPEAAWD0AAFg9gABYPkAAWD6AAFg+wABYPwAAWD9AAFg/wABYQEAAWECAAFhAwABYQUAAWEGAAFhEwABYRQAAWEVAAFhFwABYVYAAWFYAAFhWgABYVwAAWFfAAFhYAABYWEAAWFiAAFhYwABYWUAAWFnAAFhaAABYWkAAWFrAAFhbAABYasAAWGtAAFhrwABYbEAAWG0AAFhtQABYbYAAWG3AAFhuAABYboAAWG8AAFhvQABYb4AAWHAAAFhwQABYgAAAWICAAFiBAABYgYAAWIJAAFiCgABYgsAAWIMAAFiDQABYg8AAWIRAAFiEgABYhMAAWIVAAFiFgABYlUAAWJXAAFiWQABYlsAAWJeAAFiXwABYmAAAWJhAAFiYgABYmQAAWJmAAFiZwABYmgAAWJqAAFiawABYqoAAWKsAAFirgABYrAAAWKzAAFitAABYrUAAWK2AAFitwABYrkAAWK7AAFivAABYr0AAWK/AAFiwAABYuUAAWMJAAFjMAABY1QAAWNXAAFjWQABY1sAAWNdAAFjXwABY2EAAWNiAAFjZQABY3IAAWOBAAFjgwABY4UAAWOHAAFjiQABY4sAAWONAAFjjwABY54AAWOhAAFjpAABY6cAAWOqAAFjrQABY7AAAWOzAAFjtQABY/QAAWP2AAFj+AABY/oAAWP9AAFj/gABY/8AAWQAAAFkAQABZAMAAWQFAAFkBgABZAcAAWQJAAFkCgABZEkAAWRLAAFkTQABZE8AAWRSAAFkUwABZFQAAWRVAAFkVgABZFgAAWRaAAFkWwABZFwAAWReAAFkXwABZJ4AAWSgAAFkogABZKQAAWSnAAFkqAABZKkAAWSqAAFkqwABZK0AAWSvAAFksAABZLEAAWSzAAFktAABZPMAAWT1AAFk+AABZPoAAWT9AAFk/gABZP8AAWUAAAFlAQABZQMAAWUFAAFlBgABZQcAAWUJAAFlCgABZQ0AAWVMAAFlTgABZVAAAWVSAAFlVQABZVYAAWVXAAFlWAABZVkAAWVbAAFlXQABZV4AAWVfAAFlYQABZWIAAWWhAAFlowABZaUAAWWnAAFlqgABZasAAWWsAAFlrQABZa4AAWWwAAFlsgABZbMAAWW0AAFltgABZbcAAWX2AAFl+AABZfoAAWX8AAFl/wABZgAAAWYBAAFmAgABZgMAAWYFAAFmBwABZggAAWYJAAFmCwABZgwAAWZXAAFmegABZpoAAWa6AAFmvAABZr4AAWbAAAFmwgABZsUAAWbGAAFmxwABZsoAAWbLAAFmzQABZs4AAWbQAAFm0wABZtQAAWbVAAFm2AABZtkAAWbeAAFm6wABZvAAAWbyAAFm9AABZvkAAWb8AAFm/wABZwEAAWcmAAFnSgABZ3EAAWeVAAFnmAABZ5oAAWecAAFnngABZ6AAAWeiAAFnowABZ6YAAWezAAFnxAABZ8YAAWfIAAFnygABZ8wAAWfOAAFn0AABZ9IAAWfUAAFn5QABZ+gAAWfrAAFn7gABZ/EAAWf0AAFn9wABZ/oAAWf9AAFn/wABaD4AAWhAAAFoQgABaEQAAWhHAAFoSAABaEkAAWhKAAFoSwABaE0AAWhPAAFoUAABaFEAAWhTAAFoVAABaJMAAWiVAAFolwABaJkAAWicAAFonQABaJ4AAWifAAFooAABaKIAAWikAAFopQABaKYAAWioAAFoqQABaOgAAWjqAAFo7QABaO8AAWjyAAFo8wABaPQAAWj1AAFo9gABaPgAAWj6AAFo+wABaPwAAWj+AAFo/wABaQwAAWkNAAFpDgABaRAAAWlPAAFpUQABaVMAAWlVAAFpWAABaVkAAWlaAAFpWwABaVwAAWleAAFpYAABaWEAAWliAAFpZAABaWUAAWmkAAFppgABaagAAWmqAAFprQABaa4AAWmvAAFpsAABabEAAWmzAAFptQABabYAAWm3AAFpuQABaboAAWn5AAFp+wABaf0AAWn/AAFqAgABagMAAWoEAAFqBQABagYAAWoIAAFqCgABagsAAWoMAAFqDgABag8AAWpOAAFqUAABalIAAWpUAAFqVwABalgAAWpZAAFqWgABalsAAWpdAAFqXwABamAAAWphAAFqYwABamQAAWqjAAFqpQABaqcAAWqpAAFqrAABaq0AAWquAAFqrwABarAAAWqyAAFqtAABarUAAWq2AAFquAABarkAAWreAAFrAgABaykAAWtNAAFrUAABa1IAAWtUAAFrVgABa1gAAWtaAAFrWwABa14AAWtrAAFregABa3wAAWt+AAFrgAABa4IAAWuEAAFrhgABa4gAAWuXAAFrmgABa50AAWugAAFrowABa6YAAWupAAFrrAABa64AAWvtAAFr7wABa/EAAWvzAAFr9gABa/cAAWv4AAFr+QABa/oAAWv8AAFr/gABa/8AAWwAAAFsAgABbAMAAWxCAAFsRAABbEYAAWxIAAFsSwABbEwAAWxNAAFsTgABbE8AAWxRAAFsUwABbFQAAWxVAAFsVwABbFgAAWyXAAFsmQABbJsAAWydAAFsoAABbKEAAWyiAAFsowABbKQAAWymAAFsqAABbKkAAWyqAAFsrAABbK0AAWzsAAFs7gABbPAAAWzyAAFs9QABbPYAAWz3AAFs+AABbPkAAWz7AAFs/QABbP4AAWz/AAFtAQABbQIAAW1BAAFtQwABbUUAAW1HAAFtSgABbUsAAW1MAAFtTQABbU4AAW1QAAFtUgABbVMAAW1UAAFtVgABbVcAAW2WAAFtmAABbZoAAW2cAAFtnwABbaAAAW2hAAFtogABbaMAAW2lAAFtpwABbagAAW2pAAFtqwABbawAAW3rAAFt7QABbe8AAW3xAAFt9AABbfUAAW32AAFt9wABbfgAAW36AAFt/AABbf0AAW3+AAFuAAABbgEAAW5MAAFubwABbo8AAW6vAAFusQABbrMAAW61AAFutwABbroAAW67AAFuvAABbr8AAW7AAAFuwgABbsMAAW7FAAFuyAABbskAAW7KAAFuzQABbs4AAW7TAAFu4AABbuUAAW7nAAFu6QABbu4AAW7xAAFu9AABbvYAAW8bAAFvPwABb2YAAW+KAAFvjQABb48AAW+RAAFvkwABb5UAAW+XAAFvmAABb5sAAW+oAAFvuQABb7sAAW+9AAFvvwABb8EAAW/DAAFvxQABb8cAAW/JAAFv2gABb90AAW/gAAFv4wABb+YAAW/pAAFv7AABb+8AAW/yAAFv9AABcDMAAXA1AAFwNwABcDkAAXA8AAFwPQABcD4AAXA/AAFwQAABcEIAAXBEAAFwRQABcEYAAXBIAAFwSQABcIgAAXCKAAFwjAABcI4AAXCRAAFwkgABcJMAAXCUAAFwlQABcJcAAXCZAAFwmgABcJsAAXCdAAFwngABcN0AAXDfAAFw4gABcOQAAXDnAAFw6AABcOkAAXDqAAFw6wABcO0AAXDvAAFw8AABcPEAAXDzAAFw9AABcQEAAXECAAFxAwABcQUAAXFEAAFxRgABcUgAAXFKAAFxTQABcU4AAXFPAAFxUAABcVEAAXFTAAFxVQABcVYAAXFXAAFxWQABcVoAAXGZAAFxmwABcZ0AAXGfAAFxogABcaMAAXGkAAFxpQABcaYAAXGoAAFxqgABcasAAXGsAAFxrgABca8AAXHuAAFx8AABcfIAAXH0AAFx9wABcfgAAXH5AAFx+gABcfsAAXH9AAFx/wABcgAAAXIBAAFyAwABcgQAAXJDAAFyRQABckcAAXJJAAFyTAABck0AAXJOAAFyTwABclAAAXJSAAFyVAABclUAAXJWAAFyWAABclkAAXKYAAFymgABcpwAAXKeAAFyoQABcqIAAXKjAAFypAABcqUAAXKnAAFyqQABcqoAAXKrAAFyrQABcq4AAXLTAAFy9wABcx4AAXNCAAFzRQABc0cAAXNJAAFzSwABc00AAXNPAAFzUAABc1MAAXNgAAFzbwABc3EAAXNzAAFzdQABc3cAAXN5AAFzewABc30AAXOMAAFzjwABc5IAAXOVAAFzmAABc5sAAXOeAAFzoQABc6MAAXPiAAFz5AABc+YAAXPoAAFz6wABc+wAAXPtAAFz7gABc+8AAXPxAAFz8wABc/QAAXP1AAFz9wABc/gAAXQ3AAF0OQABdDsAAXQ9AAF0QAABdEEAAXRCAAF0QwABdEQAAXRGAAF0SAABdEkAAXRKAAF0TAABdE0AAXSMAAF0jgABdJAAAXSSAAF0lQABdJYAAXSXAAF0mAABdJkAAXSbAAF0nQABdJ4AAXSfAAF0oQABdKIAAXThAAF04wABdOUAAXTnAAF06gABdOsAAXTsAAF07QABdO4AAXTwAAF08gABdPMAAXT0AAF09gABdPcAAXU2AAF1OAABdToAAXU8AAF1PwABdUAAAXVBAAF1QgABdUMAAXVFAAF1RwABdUgAAXVJAAF1SwABdUwAAXWLAAF1jQABdY8AAXWRAAF1lAABdZUAAXWWAAF1lwABdZgAAXWaAAF1nAABdZ0AAXWeAAF1oAABdaEAAXXgAAF14gABdeQAAXXmAAF16QABdeoAAXXrAAF17AABde0AAXXvAAF18QABdfIAAXXzAAF19QABdfYAAXZBAAF2ZAABdoQAAXakAAF2pgABdqgAAXaqAAF2rAABdq8AAXawAAF2sQABdrQAAXa1AAF2twABdrgAAXa6AAF2vQABdr4AAXa/AAF2wgABdsMAAXbMAAF22QABdt4AAXbgAAF24gABducAAXbqAAF27QABdu8AAXcUAAF3OAABd18AAXeDAAF3hgABd4gAAXeKAAF3jAABd44AAXeQAAF3kQABd5QAAXehAAF3sgABd7QAAXe2AAF3uAABd7oAAXe8AAF3vgABd8AAAXfCAAF30wABd9YAAXfZAAF33AABd98AAXfiAAF35QABd+gAAXfrAAF37QABeCwAAXguAAF4MAABeDIAAXg1AAF4NgABeDcAAXg4AAF4OQABeDsAAXg9AAF4PgABeD8AAXhBAAF4QgABeIEAAXiDAAF4hQABeIcAAXiKAAF4iwABeIwAAXiNAAF4jgABeJAAAXiSAAF4kwABeJQAAXiWAAF4lwABeNYAAXjYAAF42wABeN0AAXjgAAF44QABeOIAAXjjAAF45AABeOYAAXjoAAF46QABeOoAAXjsAAF47QABePoAAXj7AAF4/AABeP4AAXk9AAF5PwABeUEAAXlDAAF5RgABeUcAAXlIAAF5SQABeUoAAXlMAAF5TgABeU8AAXlQAAF5UgABeVMAAXmSAAF5lAABeZYAAXmYAAF5mwABeZwAAXmdAAF5ngABeZ8AAXmhAAF5owABeaQAAXmlAAF5pwABeagAAXnnAAF56QABeesAAXntAAF58AABefEAAXnyAAF58wABefQAAXn2AAF5+AABefkAAXn6AAF5/AABef0AAXo8AAF6PgABekAAAXpCAAF6RQABekYAAXpHAAF6SAABekkAAXpLAAF6TQABek4AAXpPAAF6UQABelIAAXqRAAF6kwABepUAAXqXAAF6mgABepsAAXqcAAF6nQABep4AAXqgAAF6ogABeqMAAXqkAAF6pgABeqcAAXrMAAF68AABexcAAXs7AAF7PgABe0AAAXtCAAF7RAABe0YAAXtIAAF7SQABe0wAAXtZAAF7aAABe2oAAXtsAAF7bgABe3AAAXtyAAF7dAABe3YAAXuFAAF7iAABe4sAAXuOAAF7kQABe5QAAXuXAAF7mgABe5wAAXvbAAF73QABe98AAXvhAAF75AABe+UAAXvmAAF75wABe+gAAXvqAAF77AABe+0AAXvuAAF78AABe/EAAXwwAAF8MgABfDQAAXw2AAF8OQABfDoAAXw7AAF8PAABfD0AAXw/AAF8QQABfEIAAXxDAAF8RQABfEYAAXyFAAF8hwABfIkAAXyLAAF8jgABfI8AAXyQAAF8kQABfJIAAXyUAAF8lgABfJcAAXyYAAF8mgABfJsAAXzaAAF83AABfN4AAXzgAAF84wABfOQAAXzlAAF85gABfOcAAXzpAAF86wABfOwAAXztAAF87wABfPAAAX0vAAF9MQABfTMAAX01AAF9OAABfTkAAX06AAF9OwABfTwAAX0+AAF9QAABfUEAAX1CAAF9RAABfUUAAX2EAAF9hgABfYgAAX2KAAF9jQABfY4AAX2PAAF9kAABfZEAAX2TAAF9lQABfZYAAX2XAAF9mQABfZoAAX3ZAAF92wABfd0AAX3fAAF94gABfeMAAX3kAAF95QABfeYAAX3oAAF96gABfesAAX3sAAF97gABfe8AAX34AAF9+QABffsAAX4IAAF+CQABfgoAAX4MAAF+GQABfhoAAX4bAAF+HQABfioAAX4rAAF+LAABfi4AAX43AAF+RgABflMAAX5iAAF+dAABfogAAX6fAAF+sQABfroAAX67AAF+vQABfsoAAX7PAAF+0gABftUAAX7aAAF+3QABfuAAAX7iAAF+6gABfvMAAX8EAAF/CwABfxUAAX8YAAF/GwABfx0AAX8gAAF/KQABfzQAAX82AAF/OAABfzsAAX89AAF/QAABf0IAAX9LAAF/XwABf2QAAX94AAF/iQABf4wAAX+PAAF/kQABf5QAAX+dAAF/ngABf6AAAX+hAAF/qgABf7QAAX+7AAAAAAAABAIAAAAAAAA5agAAAAAAAAAAAAAAAAABf8M= + + + + + status + + + + versionDate + + + + localizedName + + + \ No newline at end of file diff --git a/Pods/Harmony/Harmony/Model/Core Data/RecordRepresentation.swift b/Pods/Harmony/Harmony/Model/Core Data/RecordRepresentation.swift new file mode 100644 index 000000000..915752806 --- /dev/null +++ b/Pods/Harmony/Harmony/Model/Core Data/RecordRepresentation.swift @@ -0,0 +1,36 @@ +// +// RecordRepresentation.swift +// Harmony +// +// Created by Riley Testut on 10/10/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import CoreData + +public class RecordRepresentation: NSManagedObject, RecordEntry +{ + @NSManaged public internal(set) var recordedObjectType: String + @NSManaged public internal(set) var recordedObjectIdentifier: String + + @NSManaged public var managedRecord: ManagedRecord? + + @NSManaged var sha1Hash: String + + @objc public var status: RecordStatus { + get { + self.willAccessValue(forKey: #keyPath(RecordRepresentation.status)) + defer { self.didAccessValue(forKey: #keyPath(RecordRepresentation.status)) } + + let rawValue = (self.primitiveValue(forKey: #keyPath(RecordRepresentation.status)) as? Int16) ?? 0 + let status = RecordStatus(rawValue: rawValue) ?? .updated + return status + } + set { + self.willChangeValue(forKey: #keyPath(RecordRepresentation.status)) + defer { self.didChangeValue(forKey: #keyPath(RecordRepresentation.status)) } + + self.setPrimitiveValue(newValue.rawValue, forKey: #keyPath(RecordRepresentation.status)) + } + } +} diff --git a/Pods/Harmony/Harmony/Model/Core Data/RemoteFile.swift b/Pods/Harmony/Harmony/Model/Core Data/RemoteFile.swift new file mode 100644 index 000000000..3ec6d4008 --- /dev/null +++ b/Pods/Harmony/Harmony/Model/Core Data/RemoteFile.swift @@ -0,0 +1,92 @@ +// +// RemoteFile.swift +// Harmony +// +// Created by Riley Testut on 11/7/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import Foundation +import CoreData + +extension RemoteFile +{ + private enum CodingKeys: String, CodingKey + { + case identifier + case sha1Hash + case remoteIdentifier + case versionIdentifier + case size + } +} + +@objc(RemoteFile) +public class RemoteFile: NSManagedObject, Codable +{ + @NSManaged public var identifier: String + @NSManaged public var sha1Hash: String + @NSManaged public var size: Int32 + + @NSManaged public var remoteIdentifier: String + @NSManaged public var versionIdentifier: String + + @NSManaged public var localRecord: LocalRecord? + + private override init(entity: NSEntityDescription, insertInto context: NSManagedObjectContext?) + { + super.init(entity: entity, insertInto: context) + } + + public init(remoteIdentifier: String, versionIdentifier: String, size: Int, metadata: [HarmonyMetadataKey: String], context: NSManagedObjectContext) throws + { + guard let identifier = metadata[.relationshipIdentifier], let sha1Hash = metadata[.sha1Hash] else { throw ValidationError.invalidMetadata(metadata) } + + super.init(entity: RemoteFile.entity(), insertInto: context) + + self.identifier = identifier + self.sha1Hash = sha1Hash + self.remoteIdentifier = remoteIdentifier + self.versionIdentifier = versionIdentifier + self.size = Int32(size) + } + + public required init(from decoder: Decoder) throws + { + guard let context = decoder.managedObjectContext else { throw ValidationError.nilManagedObjectContext } + + super.init(entity: RemoteFile.entity(), insertInto: nil) + + let container = try decoder.container(keyedBy: CodingKeys.self) + + self.identifier = try container.decode(String.self, forKey: .identifier) + self.sha1Hash = try container.decode(String.self, forKey: .sha1Hash) + self.remoteIdentifier = try container.decode(String.self, forKey: .remoteIdentifier) + self.versionIdentifier = try container.decode(String.self, forKey: .versionIdentifier) + self.size = try container.decode(Int32.self, forKey: .size) + + context.insert(self) + } + + public func encode(to encoder: Encoder) throws + { + var container = encoder.container(keyedBy: CodingKeys.self) + try container.encode(self.identifier, forKey: .identifier) + try container.encode(self.sha1Hash, forKey: .sha1Hash) + try container.encode(self.remoteIdentifier, forKey: .remoteIdentifier) + try container.encode(self.versionIdentifier, forKey: .versionIdentifier) + try container.encode(self.size, forKey: .size) + } + + public override func willSave() + { + super.willSave() + + guard !self.isDeleted else { return } + + if self.localRecord == nil + { + self.managedObjectContext?.delete(self) + } + } +} diff --git a/Pods/Harmony/Harmony/Model/Core Data/RemoteRecord.swift b/Pods/Harmony/Harmony/Model/Core Data/RemoteRecord.swift new file mode 100644 index 000000000..d53b85518 --- /dev/null +++ b/Pods/Harmony/Harmony/Model/Core Data/RemoteRecord.swift @@ -0,0 +1,126 @@ +// +// RemoteRecord.swift +// Harmony +// +// Created by Riley Testut on 6/10/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +import CoreData + +@objc(RemoteRecord) +public class RemoteRecord: RecordRepresentation +{ + /* Properties */ + @NSManaged public var identifier: String + @NSManaged public var isLocked: Bool + + @NSManaged public var author: String? + @NSManaged public var localizedName: String? + + @NSManaged var metadata: [HarmonyMetadataKey: String] + + @NSManaged var versionIdentifier: String + @NSManaged var versionDate: Date + + @NSManaged private var previousVersionIdentifier: String? + @NSManaged private var previousVersionDate: Date? + + public var version: Version { + get { + let version = Version(identifier: self.versionIdentifier, date: self.versionDate) + return version + } + set { + self.versionIdentifier = newValue.identifier + self.versionDate = newValue.date + } + } + + var previousUnlockedVersion: Version? { + get { + guard let identifier = self.previousVersionIdentifier, let date = self.previousVersionDate else { return nil } + + let version = Version(identifier: identifier, date: date) + return version + } + set { + self.previousVersionIdentifier = newValue?.identifier + self.previousVersionDate = newValue?.date + } + } + + init(identifier: String, versionIdentifier: String, versionDate: Date, recordedObjectType: String, recordedObjectIdentifier: String, status: RecordStatus, context: NSManagedObjectContext) + { + super.init(entity: RemoteRecord.entity(), insertInto: context) + + self.identifier = identifier + + self.recordedObjectType = recordedObjectType + self.recordedObjectIdentifier = recordedObjectIdentifier + + self.status = status + + self.version = Version(identifier: versionIdentifier, date: versionDate) + } + + public convenience init(identifier: String, versionIdentifier: String, versionDate: Date, metadata: [HarmonyMetadataKey: String], status: RecordStatus, context: NSManagedObjectContext) throws + { + guard let recordedObjectType = metadata[.recordedObjectType], let recordedObjectIdentifier = metadata[.recordedObjectIdentifier] else { throw ValidationError.invalidMetadata(metadata) } + + self.init(identifier: identifier, versionIdentifier: versionIdentifier, versionDate: versionDate, recordedObjectType: recordedObjectType, recordedObjectIdentifier: recordedObjectIdentifier, status: status, context: context) + + if let isLocked = metadata[.isLocked], isLocked == "true" + { + self.isLocked = true + } + + if let identifier = metadata[.previousVersionIdentifier], let dateString = metadata[.previousVersionDate], let timeInterval = TimeInterval(dateString) + { + let date = Date(timeIntervalSinceReferenceDate: timeInterval) + self.previousUnlockedVersion = Version(identifier: identifier, date: date) + } + + if let author = metadata[.author] + { + self.author = author + } + + if let localizedName = metadata[.localizedName] + { + self.localizedName = localizedName + } + + if let sha1Hash = metadata[.sha1Hash] + { + self.sha1Hash = sha1Hash + } + else + { + self.sha1Hash = "" + } + + let filteredMetadata = metadata.filter { !HarmonyMetadataKey.allHarmonyKeys.contains($0.key) } + self.metadata = filteredMetadata + } + + private override init(entity: NSEntityDescription, insertInto context: NSManagedObjectContext?) + { + super.init(entity: entity, insertInto: context) + } + + public override func awakeFromInsert() + { + super.awakeFromInsert() + + self.metadata = [:] + } +} + +extension RemoteRecord +{ + @nonobjc class func fetchRequest() -> NSFetchRequest + { + return NSFetchRequest(entityName: "RemoteRecord") + } +} diff --git a/Pods/Harmony/Harmony/Model/File.swift b/Pods/Harmony/Harmony/Model/File.swift new file mode 100644 index 000000000..65739f142 --- /dev/null +++ b/Pods/Harmony/Harmony/Model/File.swift @@ -0,0 +1,21 @@ +// +// File.swift +// Harmony +// +// Created by Riley Testut on 12/2/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +import Foundation + +public struct File: Hashable +{ + public var identifier: String + public var fileURL: URL + + public init(identifier: String, fileURL: URL) + { + self.identifier = identifier + self.fileURL = fileURL + } +} diff --git a/Pods/Harmony/Harmony/Model/Record.swift b/Pods/Harmony/Harmony/Model/Record.swift new file mode 100644 index 000000000..9afee9462 --- /dev/null +++ b/Pods/Harmony/Harmony/Model/Record.swift @@ -0,0 +1,192 @@ +// +// Record.swift +// Harmony +// +// Created by Riley Testut on 11/20/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import CoreData + +@objc public enum RecordStatus: Int16, CaseIterable +{ + case normal + case updated + case deleted +} + +public typealias AnyRecord = Record + +public struct RecordID: Hashable, Codable, CustomStringConvertible +{ + public var type: String + public var identifier: String + + public var description: String { + return self.type + "-" + self.identifier + } + + public init(type: String, identifier: String) + { + self.type = type + self.identifier = identifier + } +} + +public class Record +{ + public let recordID: RecordID + + private let managedRecord: ManagedRecord + private let managedRecordContext: NSManagedObjectContext? + + public var localizedName: String? { + return self.perform { $0.localRecord?.recordedObject?.syncableLocalizedName ?? $0.remoteRecord?.localizedName } + } + + public var localMetadata: [HarmonyMetadataKey: String]? { + return self.perform { $0.localRecord?.recordedObject?.syncableMetadata } + } + + public var remoteMetadata: [HarmonyMetadataKey: String]? { + return self.perform { $0.remoteRecord?.metadata } + } + + public var isConflicted: Bool { + return self.perform { $0.isConflicted } + } + + public var isSyncingEnabled: Bool { + return self.perform { $0.isSyncingEnabled } + } + + public var localStatus: RecordStatus? { + return self.perform { $0.localRecord?.status } + } + + public var remoteStatus: RecordStatus? { + return self.perform { $0.remoteRecord?.status } + } + + public var remoteVersion: Version? { + return self.perform { $0.remoteRecord?.version } + } + + public var remoteAuthor: String? { + return self.perform { $0.remoteRecord?.author } + } + + public var localModificationDate: Date? { + return self.perform { $0.localRecord?.modificationDate } + } + + var shouldLockWhenUploading = false + + init(_ managedRecord: ManagedRecord) + { + self.managedRecord = managedRecord + self.managedRecordContext = managedRecord.managedObjectContext + + let recordID: RecordID + + if let context = self.managedRecordContext + { + recordID = context.performAndWait { managedRecord.recordID } + } + else + { + recordID = managedRecord.recordID + } + + self.recordID = recordID + } +} + +extension Record +{ + public func perform(in context: NSManagedObjectContext? = nil, closure: @escaping (ManagedRecord) -> T) -> T + { + if let context = context ?? self.managedRecordContext + { + return context.performAndWait { + let record = self.managedRecord.in(context) + return closure(record) + } + } + else + { + return closure(self.managedRecord) + } + } + + public func perform(in context: NSManagedObjectContext? = nil, closure: @escaping (ManagedRecord) throws -> T) throws -> T + { + if let context = context ?? self.managedRecordContext + { + return try context.performAndWait { + let record = self.managedRecord.in(context) + return try closure(record) + } + } + else + { + return try closure(self.managedRecord) + } + } +} + +public extension Record where T == NSManagedObject +{ + var recordedObject: Syncable? { + return self.perform { $0.localRecord?.recordedObject } + } + + convenience init(_ record: Record) + { + let managedRecord = record.perform { $0 } + self.init(managedRecord) + } +} + +public extension Record where T: Syncable +{ + var recordedObject: T? { + return self.perform { $0.localRecord?.recordedObject as? T } + } +} + +public extension Record +{ + func setSyncingEnabled(_ syncingEnabled: Bool) throws + { + let result = self.perform { (managedRecord) -> Result in + do + { + managedRecord.isSyncingEnabled = syncingEnabled + + try managedRecord.managedObjectContext?.save() + + return .success + } + catch + { + return .failure(error) + } + } + + try result.get() + } +} + +extension Record: Hashable +{ + public static func ==(lhs: Record, rhs: Record) -> Bool + { + return lhs.recordID == rhs.recordID + } + + public func hash(into hasher: inout Hasher) + { + hasher.combine(self.recordID) + } +} diff --git a/Pods/Harmony/Harmony/Model/Version.swift b/Pods/Harmony/Harmony/Model/Version.swift new file mode 100644 index 000000000..3aa12c74f --- /dev/null +++ b/Pods/Harmony/Harmony/Model/Version.swift @@ -0,0 +1,21 @@ +// +// Version.swift +// Harmony +// +// Created by Riley Testut on 11/20/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import Foundation + +public struct Version: Hashable +{ + public var identifier: String + public var date: Date + + public init(identifier: String, date: Date) + { + self.identifier = identifier + self.date = date + } +} diff --git a/Pods/Harmony/Harmony/Operations/Conflict/ConflictRecordOperation.swift b/Pods/Harmony/Harmony/Operations/Conflict/ConflictRecordOperation.swift new file mode 100644 index 000000000..82b393220 --- /dev/null +++ b/Pods/Harmony/Harmony/Operations/Conflict/ConflictRecordOperation.swift @@ -0,0 +1,87 @@ +// +// ConflictRecordOperation.swift +// Harmony +// +// Created by Riley Testut on 10/24/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import Foundation +import CoreData + +private enum ConflictAction +{ + case upload + case download + case conflict +} + +class ConflictRecordOperation: RecordOperation +{ + override func main() + { + super.main() + + self.record.perform(in: self.managedObjectContext) { (managedRecord) in + + let action: ConflictAction + + if + let remoteRecord = managedRecord.remoteRecord, + let localRecord = managedRecord.localRecord, + let recordedObject = localRecord.recordedObject + { + let resolution = recordedObject.resolveConflict(self.record) + switch resolution + { + case .conflict: action = .conflict + case .local: action = .upload + case .remote: action = .download + + case .newest: + if localRecord.modificationDate > remoteRecord.versionDate + { + action = .upload + } + else + { + action = .download + } + + case .oldest: + if localRecord.modificationDate < remoteRecord.versionDate + { + action = .upload + } + else + { + action = .download + } + } + } + else + { + action = .conflict + } + + switch action + { + case .upload: + managedRecord.localRecord?.status = .updated + managedRecord.remoteRecord?.status = .normal + + case .download: + managedRecord.localRecord?.status = .normal + managedRecord.remoteRecord?.status = .updated + + case .conflict: + managedRecord.isConflicted = true + } + + self.progress.completedUnitCount = 1 + + self.result = .success + self.finish() + } + } +} diff --git a/Pods/Harmony/Harmony/Operations/Conflict/ConflictRecordsOperation.swift b/Pods/Harmony/Harmony/Operations/Conflict/ConflictRecordsOperation.swift new file mode 100644 index 000000000..dfd6010fc --- /dev/null +++ b/Pods/Harmony/Harmony/Operations/Conflict/ConflictRecordsOperation.swift @@ -0,0 +1,25 @@ +// +// ConflictRecordsOperation.swift +// Harmony +// +// Created by Riley Testut on 11/8/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import Foundation +import CoreData + +class ConflictRecordsOperation: BatchRecordOperation +{ + override class var predicate: NSPredicate { + return ManagedRecord.conflictRecordsPredicate + } + + override func main() + { + // Not worth having an additional state for just conflicting records. + self.syncProgress.status = .fetchingChanges + + super.main() + } +} diff --git a/Pods/Harmony/Harmony/Operations/Delete/DeleteRecordOperation.swift b/Pods/Harmony/Harmony/Operations/Delete/DeleteRecordOperation.swift new file mode 100644 index 000000000..bec5bc738 --- /dev/null +++ b/Pods/Harmony/Harmony/Operations/Delete/DeleteRecordOperation.swift @@ -0,0 +1,161 @@ +// +// DeleteRecordOperation.swift +// Harmony +// +// Created by Riley Testut on 10/23/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import Foundation +import CoreData + +class DeleteRecordOperation: RecordOperation +{ + required init(record: Record, coordinator: SyncCoordinator, context: NSManagedObjectContext) throws + { + try super.init(record: record, coordinator: coordinator, context: context) + + // Remote record = 2 units, local record = 1 unit. + self.progress.totalUnitCount = 3 + } + + override func main() + { + super.main() + + self.deleteRemoteFiles { (result) in + do + { + try result.get() + + self.deleteRemoteRecord { (result) in + do + { + try result.get() + + self.deleteManagedRecord { (result) in + self.result = result + self.finish() + } + } + catch + { + self.result = result + self.finish() + } + } + } + catch + { + self.result = result + self.finish() + } + } + } +} + +private extension DeleteRecordOperation +{ + func deleteRemoteFiles(completionHandler: @escaping (Result) -> Void) + { + self.record.perform { (managedRecord) -> Void in + // If local record doesn't exist, we don't treat it as an error and just say it succeeded. + guard let localRecord = managedRecord.localRecord else { return completionHandler(.success) } + + let filesProgress = Progress(totalUnitCount: Int64(localRecord.remoteFiles.count), parent: self.progress, pendingUnitCount: 2) + + var errors = [FileError]() + let dispatchGroup = DispatchGroup() + + for remoteFile in localRecord.remoteFiles + { + dispatchGroup.enter() + + let operation = ServiceOperation(coordinator: self.coordinator) { (completionHandler) -> Progress? in + return remoteFile.managedObjectContext?.performAndWait { + return self.service.delete(remoteFile, completionHandler: completionHandler) + } + } + operation.resultHandler = { (result) in + do + { + try result.get() + } + catch FileError.doesNotExist + { + // Ignore + } + catch let error as FileError + { + errors.append(error) + } + catch + { + errors.append(FileError(remoteFile.identifier, error)) + } + + dispatchGroup.leave() + } + + filesProgress.addChild(operation.progress, withPendingUnitCount: 1) + + self.operationQueue.addOperation(operation) + } + + dispatchGroup.notify(queue: .global()) { + self.managedObjectContext.perform { + if !errors.isEmpty + { + completionHandler(.failure(.filesFailed(self.record, errors))) + } + else + { + completionHandler(.success) + } + } + } + } + } + + func deleteRemoteRecord(completionHandler: @escaping (Result) -> Void) + { + let operation = ServiceOperation(coordinator: self.coordinator) { (completionHandler) -> Progress? in + return self.service.delete(self.record, completionHandler: completionHandler) + } + operation.resultHandler = { (result) in + do + { + try result.get() + + completionHandler(.success) + } + catch RecordError.doesNotExist + { + completionHandler(.success) + } + catch + { + completionHandler(.failure(RecordError(self.record, error))) + } + } + + self.progress.addChild(operation.progress, withPendingUnitCount: 1) + self.operationQueue.addOperation(operation) + } + + func deleteManagedRecord(completionHandler: @escaping (Result) -> Void) + { + self.record.perform(in: self.managedObjectContext) { (managedRecord) in + if let recordedObject = managedRecord.localRecord?.recordedObject + { + self.managedObjectContext.delete(recordedObject) + } + + self.managedObjectContext.delete(managedRecord) + + self.progress.completedUnitCount += 1 + + completionHandler(.success) + } + } +} diff --git a/Pods/Harmony/Harmony/Operations/Delete/DeleteRecordsOperation.swift b/Pods/Harmony/Harmony/Operations/Delete/DeleteRecordsOperation.swift new file mode 100644 index 000000000..cf1fa3918 --- /dev/null +++ b/Pods/Harmony/Harmony/Operations/Delete/DeleteRecordsOperation.swift @@ -0,0 +1,69 @@ +// +// DeleteRecordsOperation.swift +// Harmony +// +// Created by Riley Testut on 11/8/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import Foundation +import CoreData + +class DeleteRecordsOperation: BatchRecordOperation +{ + private var syncableFiles = [AnyRecord: Set]() + + override class var predicate: NSPredicate { + return ManagedRecord.deleteRecordsPredicate + } + + override func main() + { + self.syncProgress.status = .deleting + + super.main() + } + + override func process(_ records: [AnyRecord], in context: NSManagedObjectContext, completionHandler: @escaping (Result<[AnyRecord], Error>) -> Void) + { + for record in records + { + record.perform { (managedRecord) in + guard let syncableFiles = managedRecord.localRecord?.recordedObject?.syncableFiles else { return } + self.syncableFiles[record] = syncableFiles + } + } + + completionHandler(.success(records)) + } + + override func process(_ result: Result<[AnyRecord : Result], Error>, in context: NSManagedObjectContext, completionHandler: @escaping () -> Void) + { + guard case .success(let results) = result else { return completionHandler() } + + for (record, result) in results + { + guard case .success = result else { continue } + + guard let files = self.syncableFiles[record] else { continue } + + for file in files + { + do + { + try FileManager.default.removeItem(at: file.fileURL) + } + catch CocoaError.fileNoSuchFile + { + // Ignore + } + catch + { + print("Harmony failed to delete file at URL:", file.fileURL) + } + } + } + + completionHandler() + } +} diff --git a/Pods/Harmony/Harmony/Operations/Download/DownloadRecordOperation.swift b/Pods/Harmony/Harmony/Operations/Download/DownloadRecordOperation.swift new file mode 100644 index 000000000..98ea662e2 --- /dev/null +++ b/Pods/Harmony/Harmony/Operations/Download/DownloadRecordOperation.swift @@ -0,0 +1,274 @@ +// +// DownloadRecordOperation.swift +// Harmony +// +// Created by Riley Testut on 10/3/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import Foundation +import CoreData + +import Roxas + +class DownloadRecordOperation: RecordOperation +{ + var version: Version? + + required init(record: Record, coordinator: SyncCoordinator, context: NSManagedObjectContext) throws + { + try super.init(record: record, coordinator: coordinator, context: context) + + // Record itself = 1 unit, files = 3 units. + self.progress.totalUnitCount = 4 + } + + override func main() + { + super.main() + + if UserDefaults.standard.isDebugModeEnabled + { + print("Started downloading record: ", self.record.recordID) + } + + self.downloadRecord { (result) in + do + { + let localRecord = try result.get() + + self.downloadFiles(for: localRecord) { (result) in + self.managedObjectContext.perform { + do + { + let files = try result.get() + localRecord.downloadedFiles = files + + self.result = .success(localRecord) + } + catch + { + self.result = .failure(RecordError(self.record, error)) + + localRecord.removeFromContext() + } + + self.finishDownload() + } + } + } + catch + { + self.result = .failure(RecordError(self.record, error)) + self.finishDownload() + } + } + } + + override func finish() + { + super.finish() + + if UserDefaults.standard.isDebugModeEnabled + { + print("Finished downloading record: ", self.record.recordID) + } + } +} + +private extension DownloadRecordOperation +{ + func finishDownload() + { + if self.isBatchOperation + { + self.finish() + } + else + { + let operation = FinishDownloadingRecordsOperation(results: [self.record: self.result!], coordinator: self.coordinator, context: self.managedObjectContext) + operation.resultHandler = { (result) in + do + { + let results = try result.get() + + guard let result = results.values.first else { throw RecordError.other(self.record, GeneralError.unknown) } + + let tempLocalRecord = try result.get() + + try self.managedObjectContext.save() + + let localRecord = tempLocalRecord.in(self.managedObjectContext) + self.result = .success(localRecord) + } + catch + { + self.result = .failure(RecordError(self.record, error)) + } + + self.finish() + } + + self.operationQueue.addOperation(operation) + } + } + + func downloadRecord(completionHandler: @escaping (Result) -> Void) + { + self.record.perform { (managedRecord) -> Void in + guard let remoteRecord = managedRecord.remoteRecord else { return completionHandler(.failure(RecordError(self.record, ValidationError.nilRemoteRecord))) } + + let version: Version + + if let recordVersion = self.version + { + version = recordVersion + } + else if remoteRecord.isLocked + { + guard let previousVersion = remoteRecord.previousUnlockedVersion else { + return completionHandler(.failure(RecordError.locked(self.record))) + } + + version = previousVersion + } + else + { + version = remoteRecord.version + } + + let operation = ServiceOperation(coordinator: self.coordinator) { (completionHandler) in + return self.service.download(self.record, version: version, context: self.managedObjectContext, completionHandler: completionHandler) + } + operation.resultHandler = { (result) in + do + { + let localRecord = try result.get() + localRecord.status = .normal + localRecord.modificationDate = version.date + localRecord.version = version + + let remoteRecord = remoteRecord.in(self.managedObjectContext) + remoteRecord.status = .normal + + completionHandler(.success(localRecord)) + } + catch + { + completionHandler(.failure(RecordError(self.record, error))) + } + } + + self.progress.addChild(operation.progress, withPendingUnitCount: 1) + self.operationQueue.addOperation(operation) + } + } + + func downloadFiles(for localRecord: LocalRecord, completionHandler: @escaping (Result, RecordError>) -> Void) + { + // Retrieve files from self.record.localRecord because file URLs may depend on relationships that haven't been downloaded yet. + // If self.record.localRecord doesn't exist, we can just assume we should download all files. + let filesByIdentifier = self.record.perform { (managedRecord) -> [String: File]? in + guard let recordedObject = managedRecord.localRecord?.recordedObject else { return nil } + + let dictionary = Dictionary(recordedObject.syncableFiles, keyedBy: \.identifier) + return dictionary + } + + // Suspend operation queue to prevent download operations from starting automatically. + self.operationQueue.isSuspended = true + + let filesProgress = Progress.discreteProgress(totalUnitCount: 0) + + var files = Set() + var errors = [FileError]() + + let dispatchGroup = DispatchGroup() + + for remoteFile in localRecord.remoteFiles + { + do + { + // If there _are_ cached files, compare hashes to ensure we're not unnecessarily downloading unchanged files. + if let filesByIdentifier = filesByIdentifier + { + guard let localFile = filesByIdentifier[remoteFile.identifier] else { + throw FileError.unknownFile(remoteFile.identifier) + } + + do + { + let hash = try RSTHasher.sha1HashOfFile(at: localFile.fileURL) + + if remoteFile.sha1Hash == hash + { + // Hash is the same, so don't download file. + continue + } + } + catch CocoaError.fileNoSuchFile + { + // Ignore + } + catch + { + errors.append(FileError(remoteFile.identifier, error)) + } + } + + let fileIdentifier = remoteFile.identifier + + dispatchGroup.enter() + + let operation = ServiceOperation(coordinator: self.coordinator) { (completionHandler) in + return self.managedObjectContext.performAndWait { + return self.service.download(remoteFile, completionHandler: completionHandler) + } + } + operation.resultHandler = { (result) in + do + { + let file = try result.get() + files.insert(file) + } + catch + { + errors.append(FileError(fileIdentifier, error)) + } + + dispatchGroup.leave() + } + + filesProgress.totalUnitCount += 1 + filesProgress.addChild(operation.progress, withPendingUnitCount: 1) + + self.operationQueue.addOperation(operation) + } + catch + { + errors.append(FileError(remoteFile.identifier, error)) + } + } + + if errors.isEmpty + { + self.progress.addChild(filesProgress, withPendingUnitCount: 3) + + self.operationQueue.isSuspended = false + } + + dispatchGroup.notify(queue: .global()) { + self.managedObjectContext.perform { + if !errors.isEmpty + { + completionHandler(.failure(.filesFailed(self.record, errors))) + } + else + { + completionHandler(.success(files)) + } + } + } + } +} + diff --git a/Pods/Harmony/Harmony/Operations/Download/DownloadRecordsOperation.swift b/Pods/Harmony/Harmony/Operations/Download/DownloadRecordsOperation.swift new file mode 100644 index 000000000..e47ef72b2 --- /dev/null +++ b/Pods/Harmony/Harmony/Operations/Download/DownloadRecordsOperation.swift @@ -0,0 +1,34 @@ +// +// DownloadRecordsOperation.swift +// Harmony +// +// Created by Riley Testut on 11/5/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import Foundation +import CoreData + +class DownloadRecordsOperation: BatchRecordOperation +{ + override class var predicate: NSPredicate { + return ManagedRecord.downloadRecordsPredicate + } + + override func main() + { + self.syncProgress.status = .downloading + + super.main() + } + + override func process(_ results: [AnyRecord : Result], in context: NSManagedObjectContext, completionHandler: @escaping (Result<[AnyRecord : Result], Error>) -> Void) + { + let operation = FinishDownloadingRecordsOperation(results: results, coordinator: self.coordinator, context: context) + operation.resultHandler = { (result) in + completionHandler(result) + } + + self.operationQueue.addOperation(operation) + } +} diff --git a/Pods/Harmony/Harmony/Operations/Download/FinishDownloadingRecordsOperation.swift b/Pods/Harmony/Harmony/Operations/Download/FinishDownloadingRecordsOperation.swift new file mode 100644 index 000000000..8e4b85be8 --- /dev/null +++ b/Pods/Harmony/Harmony/Operations/Download/FinishDownloadingRecordsOperation.swift @@ -0,0 +1,295 @@ +// +// FinishRecordDownloadsOperation.swift +// Harmony +// +// Created by Riley Testut on 11/26/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import Foundation +import CoreData + +class FinishDownloadingRecordsOperation: Operation<[AnyRecord: Result], Error> +{ + let results: [AnyRecord: Result] + + private let managedObjectContext: NSManagedObjectContext + + override var isAsynchronous: Bool { + return true + } + + init(results: [AnyRecord: Result], coordinator: SyncCoordinator, context: NSManagedObjectContext) + { + self.results = results + self.managedObjectContext = context + + super.init(coordinator: coordinator) + } + + override func main() + { + super.main() + + self.managedObjectContext.perform { + var results = self.results + + let recordIDs = results.values.reduce(into: Set()) { (recordIDs, result) in + guard let localRecord = try? result.get(), let relationships = localRecord.remoteRelationships else { return } + recordIDs.formUnion(relationships.values) + } + + // Use temporary context to prevent fetching objects that may conflict with temporary objects when saving context. + let temporaryContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType) + temporaryContext.parent = self.managedObjectContext + temporaryContext.perform { + do + { + let localRecords = try temporaryContext.fetchRecords(for: recordIDs) as [LocalRecord] + + let keyValuePairs = localRecords.lazy.compactMap { (localRecord) -> (RecordID, Syncable)? in + guard let recordedObject = localRecord.recordedObject else { return nil } + return (localRecord.recordID, recordedObject) + } + + // Prefer temporary objects to persisted ones for establishing relationships. + // This prevents the persisted objects from registering with context and potentially causing conflicts. + let relationshipObjects = Dictionary(keyValuePairs, uniquingKeysWith: { return $0.objectID.isTemporaryID ? $0 : $1 }) + + self.managedObjectContext.perform { + // Switch back to context so we can modify objects. + + func handleError(_ error: Error, record: AnyRecord, localRecord: LocalRecord?) + { + localRecord?.removeFromContext() + + results[record] = .failure(RecordError(record, error)) + + if let remoteRecordObjectID = record.perform(closure: { $0.remoteRecord?.objectID }) + { + // Reset remoteRecord status to make us retry the download again in the future. + let remoteRecord = self.managedObjectContext.object(with: remoteRecordObjectID) as! RemoteRecord + remoteRecord.status = .updated + } + } + + // Update relationships for all records first. + for (record, result) in results + { + do + { + let localRecord = try result.get() + + do + { + try self.updateRelationships(for: localRecord, relationshipObjects: relationshipObjects) + } + catch + { + handleError(error, record: record, localRecord: localRecord) + } + } + catch + { + handleError(error, record: record, localRecord: nil) + } + } + + // Perform additional logic now that all relationships have been repaired. + for (record, result) in results + { + // Only process records that don't have errors. + guard let localRecord = try? result.get() else { continue } + + var backupFiles: [File: URL]? + + do + { + // Copy existing files to a backup location in case something goes wrong. + let files = try self.backupFiles(for: localRecord, record: record) + backupFiles = files + + // Update files after updating relationships (to prevent replacing files prematurely). + try self.updateFiles(for: localRecord, record: record) + + // Awake record after updating files and relationships (since we might need to access them from awakeFromSync). + try localRecord.recordedObject?.awakeFromSync(record) + + // Remove backup files since we no longer need them. + self.removeBackupFiles(files) + } + catch + { + if let backupFiles = backupFiles + { + // Restore backup files since an error did occur. + self.restoreBackupFiles(backupFiles) + } + + handleError(error, record: record, localRecord: localRecord) + } + } + + self.result = .success(results) + self.finish() + } + } + catch + { + self.result = .failure(error) + self.finish() + } + } + } + } +} + +private extension FinishDownloadingRecordsOperation +{ + func updateRelationships(for localRecord: LocalRecord, relationshipObjects: [RecordID: Syncable]) throws + { + guard let recordedObject = localRecord.recordedObject else { throw ValidationError.nilRecordedObject } + + guard let relationships = localRecord.remoteRelationships else { return } + + var missingRelationshipKeys = Set() + + for (key, recordID) in relationships + { + if let relationshipObject = relationshipObjects[recordID] + { + let relationshipObject = relationshipObject.in(self.managedObjectContext) + recordedObject.setValue(relationshipObject, forKey: key) + } + else + { + missingRelationshipKeys.insert(key) + } + } + + if !missingRelationshipKeys.isEmpty + { + throw ValidationError.nilRelationshipObjects(keys: missingRelationshipKeys) + } + } + + func updateFiles(for localRecord: LocalRecord, record: AnyRecord) throws + { + guard let recordedObject = localRecord.recordedObject else { throw ValidationError.nilRecordedObject } + + guard let files = localRecord.downloadedFiles else { return } + let filesByIdentifier = Dictionary(recordedObject.syncableFiles, keyedBy: \.identifier) + + let unknownFiles = files.filter { !filesByIdentifier.keys.contains($0.identifier) } + for file in unknownFiles + { + do + { + // File doesn't match any declared file identifiers, so just delete it. + try FileManager.default.removeItem(at: file.fileURL) + } + catch + { + print(error) + } + } + + var fileErrors = [FileError]() + + // Replace files. + for file in files + { + guard let destinationURL = filesByIdentifier[file.identifier]?.fileURL else { continue } + + do + { + if FileManager.default.fileExists(atPath: destinationURL.path) + { + _ = try FileManager.default.replaceItemAt(destinationURL, withItemAt: file.fileURL) + } + else + { + try FileManager.default.moveItem(at: file.fileURL, to: destinationURL) + } + } + catch + { + fileErrors.append(FileError(file.identifier, error)) + } + } + + guard fileErrors.isEmpty else { throw RecordError.filesFailed(record, fileErrors) } + } + + func backupFiles(for localRecord: LocalRecord, record: AnyRecord) throws -> [File: URL] + { + guard let recordedObject = localRecord.recordedObject else { throw ValidationError.nilRecordedObject } + let temporaryURLsByFile = Dictionary(uniqueKeysWithValues: recordedObject.syncableFiles.lazy.map { ($0, FileManager.default.uniqueTemporaryURL()) }) + + var fileErrors = [FileError]() + + for (file, temporaryURL) in temporaryURLsByFile + { + do + { + try FileManager.default.copyItem(at: file.fileURL, to: temporaryURL) + } + catch CocoaError.fileReadNoSuchFile + { + // Ignore + } + catch + { + fileErrors.append(FileError(file.identifier, error)) + } + } + + if !fileErrors.isEmpty + { + throw RecordError.filesFailed(record, fileErrors) + } + + return temporaryURLsByFile + } + + func restoreBackupFiles(_ backupFiles: [File: URL]) + { + for (file, temporaryURL) in backupFiles + { + guard FileManager.default.fileExists(atPath: temporaryURL.path) else { continue } + + do + { + if FileManager.default.fileExists(atPath: file.fileURL.path) + { + _ = try FileManager.default.replaceItemAt(file.fileURL, withItemAt: temporaryURL) + } + else + { + try FileManager.default.moveItem(at: temporaryURL, to: file.fileURL) + } + } + catch + { + print(error) + } + } + } + + func removeBackupFiles(_ backupFiles: [File: URL]) + { + for (_, temporaryURL) in backupFiles + { + guard FileManager.default.fileExists(atPath: temporaryURL.path) else { continue } + + do + { + try FileManager.default.removeItem(at: temporaryURL) + } + catch + { + print(error) + } + } + } +} diff --git a/Pods/Harmony/Harmony/Operations/Misc./FetchRemoteRecordsOperation.swift b/Pods/Harmony/Harmony/Operations/Misc./FetchRemoteRecordsOperation.swift new file mode 100644 index 000000000..85406329d --- /dev/null +++ b/Pods/Harmony/Harmony/Operations/Misc./FetchRemoteRecordsOperation.swift @@ -0,0 +1,184 @@ +// +// FetchRemoteRecordsOperation.swift +// Harmony +// +// Created by Riley Testut on 1/16/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import Foundation +import CoreData + +class FetchRemoteRecordsOperation: Operation<(Set, Data), FetchError> +{ + let changeToken: Data? + + override var isAsynchronous: Bool { + return true + } + + init(changeToken: Data?, coordinator: SyncCoordinator, recordController: RecordController) + { + self.changeToken = changeToken + + super.init(coordinator: coordinator) + } + + override func main() + { + super.main() + + let context = self.recordController.newBackgroundContext() + + // Use closure instead of local function so we can capture `self` weakly. + let finish = { [weak self] (result: Result<(Set, Set?, Data), FetchError>) in + guard let self = self else { return } + + do + { + let (updatedRecords, deletedRecordIDs, changeToken) = try result.get() + + context.perform { + do + { + var records = updatedRecords + + if UserDefaults.standard.isDebugModeEnabled + { + for record in updatedRecords + { + print("Fetched RecordID: \(record.recordID). Hash: \(record.sha1Hash).") + } + } + + if let recordIDs = deletedRecordIDs + { + let updatedRecordsByRecordID = Dictionary(updatedRecords, keyedBy: \.recordID) + + let childContext = self.recordController.newBackgroundContext(withParent: context) + + let result = childContext.performAndWait { () -> Result, Error> in + do + { + let fetchRequest = RemoteRecord.fetchRequest() as NSFetchRequest + fetchRequest.predicate = NSPredicate(format: "%K IN %@", #keyPath(RemoteRecord.identifier), recordIDs) + fetchRequest.includesPendingChanges = false + + let fetchedRecords = try childContext.fetch(fetchRequest) + + var deletedRecords = Set() + + for record in fetchedRecords + { + if let updatedRecord = updatedRecordsByRecordID[record.recordID] + { + // Record has been deleted _and_ updated. + + if updatedRecord.identifier == record.identifier + { + // Do nothing, update trumps deletion. + } + else + { + // Deleted and updated remote records have _different_ remote identifiers. + // This means a new record with the same recorded object type/ID was uploaded after deleting the old record. + // In this case, delete the old cached remote record, since the updated one will take its place. + childContext.delete(record) + } + } + else + { + // Record was deleted and _not_ also updated, so just mark it as deleted to handle it later. + record.status = .deleted + + deletedRecords.insert(record) + } + } + + // Save to propagate changes to parent context. + try childContext.save() + + return .success(deletedRecords) + } + catch + { + return .failure(error) + } + } + + let deletedRecords = try result.get().map { $0.in(context) } + records.formUnion(deletedRecords) + } + + try context.save() + + self.result = .success((records, changeToken)) + } + catch + { + self.result = .failure(FetchError(error)) + } + + self.finish() + } + } + catch + { + self.result = .failure(FetchError(error)) + + self.finish() + } + } + + let fetchOperation: Foundation.Operation & ProgressReporting + + if let changeToken = self.changeToken + { + let operation = ServiceOperation(coordinator: self.coordinator) { (completionHandler) -> Progress? in + return self.service.fetchChangedRemoteRecords(changeToken: changeToken, context: context, completionHandler: completionHandler) + } + operation.resultHandler = { (result) in + do + { + let (updatedRecords, deletedRecordIDs, changeToken) = try result.get() + finish(.success((updatedRecords, deletedRecordIDs, changeToken))) + } + catch + { + finish(.failure(FetchError(error))) + } + } + + fetchOperation = operation + } + else + { + let operation = ServiceOperation(coordinator: self.coordinator) { (completionHandler) -> Progress? in + return self.service.fetchAllRemoteRecords(context: context, completionHandler: completionHandler) + } + operation.resultHandler = { (result) in + do + { + let (updatedRecords, changeToken) = try result.get() + finish(.success((updatedRecords, nil, changeToken))) + } + catch + { + finish(.failure(FetchError(error))) + } + } + + fetchOperation = operation + } + + self.progress.addChild(fetchOperation.progress, withPendingUnitCount: self.progress.totalUnitCount) + self.operationQueue.addOperation(fetchOperation) + } + + override func finish() + { + self.recordController.processPendingUpdates() + + super.finish() + } +} diff --git a/Pods/Harmony/Harmony/Operations/Misc./UpdateRecordMetadataOperation.swift b/Pods/Harmony/Harmony/Operations/Misc./UpdateRecordMetadataOperation.swift new file mode 100644 index 000000000..814aa0807 --- /dev/null +++ b/Pods/Harmony/Harmony/Operations/Misc./UpdateRecordMetadataOperation.swift @@ -0,0 +1,49 @@ +// +// UpdateRecordMetadataOperation.swift +// Harmony +// +// Created by Riley Testut on 11/5/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import Foundation +import CoreData + +class UpdateRecordMetadataOperation: RecordOperation +{ + var metadata = [HarmonyMetadataKey: Any]() + + required init(record: Record, coordinator: SyncCoordinator, context: NSManagedObjectContext) throws + { + self.metadata[.recordedObjectType] = record.recordID.type + self.metadata[.recordedObjectIdentifier] = record.recordID.identifier + + try super.init(record: record, coordinator: coordinator, context: context) + } + + override func main() + { + super.main() + + let operation = ServiceOperation(coordinator: self.coordinator) { (completionHandler) -> Progress? in + return self.service.updateMetadata(self.metadata, for: self.record, completionHandler: completionHandler) + } + operation.resultHandler = { (result) in + do + { + try result.get() + + self.result = .success + } + catch + { + self.result = .failure(RecordError(self.record, error)) + } + + self.finish() + } + + self.progress.addChild(operation.progress, withPendingUnitCount: 1) + self.operationQueue.addOperation(operation) + } +} diff --git a/Pods/Harmony/Harmony/Operations/Operation.swift b/Pods/Harmony/Harmony/Operations/Operation.swift new file mode 100644 index 000000000..9fb2fef93 --- /dev/null +++ b/Pods/Harmony/Harmony/Operations/Operation.swift @@ -0,0 +1,102 @@ +// +// Operation.swift +// Harmony +// +// Created by Riley Testut on 1/16/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import Foundation +import CoreData + +import Roxas + +class Operation: RSTOperation, ProgressReporting +{ + let coordinator: SyncCoordinator + + let progress = Progress.discreteProgress(totalUnitCount: 1) + + let operationQueue: OperationQueue + + var result: Result? + var resultHandler: ((Result) -> Void)? + + var service: Service { + return self.coordinator.service + } + + var recordController: RecordController { + return self.coordinator.recordController + } + + init(coordinator: SyncCoordinator) + { + self.coordinator = coordinator + + self.operationQueue = OperationQueue() + self.operationQueue.name = "com.rileytestut.Harmony.\(type(of: self)).operationQueue" + self.operationQueue.qualityOfService = .utility + + super.init() + + self.progress.cancellationHandler = { [weak self] in + self?.cancel() + } + } + + public override func cancel() + { + super.cancel() + + if !self.progress.isCancelled + { + self.progress.cancel() + } + + self.operationQueue.cancelAllOperations() + } + + public override func finish() + { + guard !self.isFinished else { + return + } + + super.finish() + + if !self.progress.isFinished + { + self.progress.completedUnitCount = self.progress.totalUnitCount + } + + let result: Result? + + if self.isCancelled + { + let cancelledResult = Result.failure(GeneralError.cancelled) + + if let cancelledResult = cancelledResult as? Result + { + result = cancelledResult + } + else + { + result = self.result + } + } + else + { + result = self.result + } + + if let resultHandler = self.resultHandler, let result = result + { + resultHandler(result) + } + else + { + assertionFailure("There should always be a result handler and a result.") + } + } +} diff --git a/Pods/Harmony/Harmony/Operations/Parent Operations/BatchRecordOperation.swift b/Pods/Harmony/Harmony/Operations/Parent Operations/BatchRecordOperation.swift new file mode 100644 index 000000000..2441b4fc6 --- /dev/null +++ b/Pods/Harmony/Harmony/Operations/Parent Operations/BatchRecordOperation.swift @@ -0,0 +1,197 @@ +// +// BatchRecordOperation.swift +// Harmony +// +// Created by Riley Testut on 10/3/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import Foundation +import CoreData + +class BatchRecordOperation>: Operation<[Record: Result], Error> +{ + class var predicate: NSPredicate { + fatalError() + } + + var syncProgress: SyncProgress! + + private(set) var recordResults = [AnyRecord: Result]() + + override var isAsynchronous: Bool { + return true + } + + override init(coordinator: SyncCoordinator) + { + super.init(coordinator: coordinator) + + self.operationQueue.maxConcurrentOperationCount = 5 + } + + override func main() + { + super.main() + + let fetchRequest = ManagedRecord.fetchRequest() as NSFetchRequest + fetchRequest.predicate = type(of: self).predicate + fetchRequest.returnsObjectsAsFaults = false + + let dispatchGroup = DispatchGroup() + + self.recordController.performBackgroundTask { (fetchContext) in + let saveContext = self.recordController.newBackgroundContext() + + do + { + let records = try fetchContext.fetch(fetchRequest).map(Record.init) + records.forEach { self.recordResults[$0] = .failure(RecordError.other($0, GeneralError.unknown)) } + + if records.count > 0 + { + // We'll increment totalUnitCount as we add operations. + self.progress.totalUnitCount = 0 + } + + var remainingRecordsCount = records.count + let remainingRecordsOutputQueue = DispatchQueue(label: "com.rileytestut.BatchRecordOperation.remainingRecordsOutputQueue") + + self.process(records, in: fetchContext) { (result) in + do + { + let records = try result.get() + + let operations = records.compactMap { (record) -> OperationType? in + do + { + let operation = try OperationType(record: record, coordinator: self.coordinator, context: saveContext) + operation.isBatchOperation = true + operation.resultHandler = { (result) in + self.recordResults[record] = result + dispatchGroup.leave() + + if UserDefaults.standard.isDebugModeEnabled + { + remainingRecordsOutputQueue.async { + remainingRecordsCount = remainingRecordsCount - 1 + print("Remaining \(type(of: self)) operations:", remainingRecordsCount) + } + } + } + + self.progress.totalUnitCount += 1 + self.progress.addChild(operation.progress, withPendingUnitCount: 1) + + dispatchGroup.enter() + + return operation + } + catch + { + self.recordResults[record] = .failure(RecordError(record, error)) + } + + return nil + } + + if records.count > 0 + { + self.syncProgress.addChild(self.progress, withPendingUnitCount: self.progress.totalUnitCount) + self.syncProgress.activeProgress = self.progress + } + else + { + self.syncProgress.addChild(self.progress, withPendingUnitCount: 0) + } + + self.operationQueue.addOperations(operations, waitUntilFinished: false) + + dispatchGroup.notify(queue: .global()) { + saveContext.perform { + self.process(self.recordResults, in: saveContext) { (result) in + saveContext.perform { + do + { + self.recordResults = try result.get() + + guard !self.isCancelled else { throw GeneralError.cancelled } + + try saveContext.save() + + self.result = .success(self.recordResults) + } + catch + { + self.result = .failure(error) + self.propagateFailure(error: error) + } + + self.process(self.result!, in: saveContext) { + saveContext.perform { + self.finish() + } + } + } + } + } + } + } + catch + { + self.result = .failure(error) + self.propagateFailure(error: error) + + saveContext.perform { + self.finish() + } + } + } + } + catch + { + self.result = .failure(error) + self.propagateFailure(error: error) + + saveContext.perform { + self.finish() + } + } + } + } + + func process(_ records: [Record], in context: NSManagedObjectContext, completionHandler: @escaping (Result<[Record], Error>) -> Void) + { + completionHandler(.success(records)) + } + + func process(_ results: [Record: Result], + in context: NSManagedObjectContext, + completionHandler: @escaping (Result<[Record: Result], Error>) -> Void) + { + completionHandler(.success(results)) + } + + func process(_ result: Result<[Record: Result], Error>, in context: NSManagedObjectContext, completionHandler: @escaping () -> Void) + { + completionHandler() + } + + override func finish() + { + self.recordController.processPendingUpdates() + + super.finish() + } +} + +private extension BatchRecordOperation +{ + func propagateFailure(error: Error) + { + for (record, _) in self.recordResults + { + self.recordResults[record] = .failure(RecordError(record, error)) + } + } +} diff --git a/Pods/Harmony/Harmony/Operations/Parent Operations/RecordOperation.swift b/Pods/Harmony/Harmony/Operations/Parent Operations/RecordOperation.swift new file mode 100644 index 000000000..3e606ba16 --- /dev/null +++ b/Pods/Harmony/Harmony/Operations/Parent Operations/RecordOperation.swift @@ -0,0 +1,56 @@ +// +// RecordOperation.swift +// Harmony +// +// Created by Riley Testut on 10/23/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import Foundation +import CoreData + +class RecordOperation: Operation +{ + let record: AnyRecord + let managedObjectContext: NSManagedObjectContext + + var isBatchOperation = false + + override var isAsynchronous: Bool { + return true + } + + required init(record: Record, coordinator: SyncCoordinator, context: NSManagedObjectContext) throws + { + let record = AnyRecord(record) + guard !record.isConflicted else { throw RecordError.conflicted(record) } + + self.record = record + + self.managedObjectContext = context + + super.init(coordinator: coordinator) + + self.progress.totalUnitCount = 1 + self.operationQueue.maxConcurrentOperationCount = 2 + } + + override func start() + { + self.record.perform { _ in + super.start() + } + } + + override func finish() + { + self.managedObjectContext.performAndWait { + if self.isCancelled + { + self.result = .failure(RecordError(self.record, GeneralError.cancelled)) + } + + super.finish() + } + } +} diff --git a/Pods/Harmony/Harmony/Operations/ServiceOperation.swift b/Pods/Harmony/Harmony/Operations/ServiceOperation.swift new file mode 100644 index 000000000..319a7c4b6 --- /dev/null +++ b/Pods/Harmony/Harmony/Operations/ServiceOperation.swift @@ -0,0 +1,134 @@ +// +// ServiceOperation.swift +// Harmony +// +// Created by Riley Testut on 3/6/19. +// Copyright © 2019 Riley Testut. All rights reserved. +// + +import Roxas + +class ServiceOperation: Operation +{ + var requiresAuthentication = true + + private let task: (@escaping (Result) -> Void) -> Progress? + + private var retryDelay: TimeInterval = 1.0 + private var didAttemptReauthentication = false + + private var taskProgress: Progress? + + override var isAsynchronous: Bool { + return true + } + + init(coordinator: SyncCoordinator, task: @escaping (@escaping (Result) -> Void) -> Progress?) + { + self.task = task + + super.init(coordinator: coordinator) + } + + override func main() + { + super.main() + + self.performTask() + } +} + +private extension ServiceOperation +{ + func performTask() + { + guard !self.isCancelled else { + self.result = .failure(GeneralError.cancelled) + self.finish() + return + } + + guard self.coordinator.isAuthenticated || !self.requiresAuthentication else { + self.coordinator.authenticate { (result) in + switch result + { + case .success: + self.performTask() + + case .failure(let error): + self.result = .failure(error) + self.finish() + } + } + + return + } + + self.taskProgress = self.task() { (result) in + let result = result.mapError { $0 as Error } + + if let progress = self.taskProgress + { + // Ensure progress is completed. + progress.completedUnitCount = progress.totalUnitCount + } + + // We must append .self to our Error enum cases for pattern matching to work. + // Otherwise, the compiler (incorrectly) defaults to using normal enum pattern matching + // and won't call our custom pattern matching operator. + // https://bugs.swift.org/browse/SR-1121 + + do + { + _ = try result.get() + + self.result = result + self.finish() + } + catch ServiceError.rateLimitExceeded.self + { + guard self.retryDelay < 60 else { + self.result = result + self.finish() + return + } + + print("Retrying request after delay:", self.retryDelay) + + self.progress.completedUnitCount -= 1 + + DispatchQueue.global().asyncAfter(deadline: .now() + self.retryDelay) { + self.retryDelay = self.retryDelay * 2 + self.performTask() + } + } + catch AuthenticationError.tokenExpired.self where !self.didAttemptReauthentication && self.requiresAuthentication + { + self.didAttemptReauthentication = true + + self.coordinator.authenticate() { (authResult) in + switch authResult + { + case .success: + self.performTask() + + case .failure: + // Set result to whatever the result was prior to reauthentication attempt. + self.result = result + self.finish() + } + } + } + catch + { + self.result = result + self.finish() + } + } + + if let progress = self.taskProgress + { + self.progress.addChild(progress, withPendingUnitCount: 1) + } + } +} diff --git a/Pods/Harmony/Harmony/Operations/SyncRecordsOperation.swift b/Pods/Harmony/Harmony/Operations/SyncRecordsOperation.swift new file mode 100644 index 000000000..872872038 --- /dev/null +++ b/Pods/Harmony/Harmony/Operations/SyncRecordsOperation.swift @@ -0,0 +1,231 @@ +// +// SyncRecordsOperation.swift +// Harmony +// +// Created by Riley Testut on 5/22/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +import Foundation +import CoreData + +import Roxas + +class SyncRecordsOperation: Operation<[Record: Result], SyncError> +{ + let changeToken: Data? + + let syncProgress = SyncProgress(parent: nil, userInfo: nil) + + private let dispatchGroup = DispatchGroup() + + private(set) var updatedChangeToken: Data? + private var backgroundTaskIdentifier: UIBackgroundTaskIdentifier? + + private var recordResults = [Record: Result]() + + override var isAsynchronous: Bool { + return true + } + + init(changeToken: Data?, coordinator: SyncCoordinator) + { + self.changeToken = changeToken + + super.init(coordinator: coordinator) + + self.syncProgress.totalUnitCount = 1 + self.operationQueue.maxConcurrentOperationCount = 1 + } + + override func main() + { + super.main() + + self.progress.addChild(self.syncProgress, withPendingUnitCount: 1) + + self.backgroundTaskIdentifier = UIApplication.shared.beginBackgroundTask(withName: "com.rileytestut.Harmony.SyncRecordsOperation") { [weak self] in + guard let identifier = self?.backgroundTaskIdentifier else { return } + UIApplication.shared.endBackgroundTask(identifier) + } + + NotificationCenter.default.post(name: SyncCoordinator.didStartSyncingNotification, object: nil) + + let fetchRemoteRecordsOperation = FetchRemoteRecordsOperation(changeToken: self.changeToken, coordinator: self.coordinator, recordController: self.recordController) + fetchRemoteRecordsOperation.resultHandler = { [weak self] (result) in + if case .success(_, let changeToken) = result + { + self?.updatedChangeToken = changeToken + } + + self?.finish(result, debugTitle: "Fetch Records Result:") + } + self.syncProgress.status = .fetchingChanges + self.syncProgress.addChild(fetchRemoteRecordsOperation.progress, withPendingUnitCount: 0) + + let conflictRecordsOperation = ConflictRecordsOperation(coordinator: self.coordinator) + conflictRecordsOperation.resultHandler = { [weak self, unowned conflictRecordsOperation] (result) in + self?.finishRecordOperation(conflictRecordsOperation, result: result, debugTitle: "Conflict Result:") + } + conflictRecordsOperation.syncProgress = self.syncProgress + + let uploadRecordsOperation = UploadRecordsOperation(coordinator: self.coordinator) + uploadRecordsOperation.resultHandler = { [weak self, unowned uploadRecordsOperation] (result) in + self?.finishRecordOperation(uploadRecordsOperation, result: result, debugTitle: "Upload Result:") + } + uploadRecordsOperation.syncProgress = self.syncProgress + + let downloadRecordsOperation = DownloadRecordsOperation(coordinator: self.coordinator) + downloadRecordsOperation.resultHandler = { [weak self, unowned downloadRecordsOperation] (result) in + self?.finishRecordOperation(downloadRecordsOperation, result: result, debugTitle: "Download Result:") + } + downloadRecordsOperation.syncProgress = self.syncProgress + + let deleteRecordsOperation = DeleteRecordsOperation(coordinator: self.coordinator) + deleteRecordsOperation.resultHandler = { [weak self, unowned deleteRecordsOperation] (result) in + self?.finishRecordOperation(deleteRecordsOperation, result: result, debugTitle: "Delete Result:") + } + deleteRecordsOperation.syncProgress = self.syncProgress + + let operations = [fetchRemoteRecordsOperation, conflictRecordsOperation, uploadRecordsOperation, downloadRecordsOperation, deleteRecordsOperation] + for operation in operations + { + self.dispatchGroup.enter() + self.operationQueue.addOperation(operation) + } + + self.dispatchGroup.notify(queue: .global()) { [weak self] in + guard let self = self else { return } + + // Fetch all conflicted records and add conflicted errors for them all to recordResults. + let context = self.recordController.newBackgroundContext() + context.performAndWait { + let fetchRequest = ManagedRecord.fetchRequest() as NSFetchRequest + fetchRequest.predicate = ManagedRecord.conflictedRecordsPredicate + + do + { + let records = try context.fetch(fetchRequest) + + for record in records + { + let record = Record(record) + self.recordResults[record] = .failure(RecordError.conflicted(record)) + } + } + catch + { + print(error) + } + } + + let didFail = self.recordResults.values.contains(where: { (result) in + switch result + { + case .success: return false + case .failure: return true + } + }) + + if didFail + { + self.result = .failure(SyncError.partial(self.recordResults)) + } + else + { + self.result = .success(self.recordResults) + } + + self.finish() + + if UserDefaults.standard.isDebugModeEnabled + { + self.recordController.printRecords() + } + } + } + + override func finish() + { + guard !self.isFinished else { return } + + if self.isCancelled + { + self.result = .failure(SyncError(GeneralError.cancelled)) + } + + super.finish() + + if let identifier = self.backgroundTaskIdentifier + { + UIApplication.shared.endBackgroundTask(identifier) + + self.backgroundTaskIdentifier = nil + } + } +} + +private extension SyncRecordsOperation +{ + func finish(_ result: Result, debugTitle: String) + { + do + { + _ = try result.get() + + let context = self.recordController.newBackgroundContext() + let recordCount = try context.performAndWait { () -> Int in + let fetchRequest = ManagedRecord.fetchRequest() as NSFetchRequest + fetchRequest.predicate = NSCompoundPredicate(orPredicateWithSubpredicates: [ConflictRecordsOperation.predicate, + UploadRecordsOperation.predicate, + DownloadRecordsOperation.predicate, + DeleteRecordsOperation.predicate]) + + let count = try context.count(for: fetchRequest) + return count + } + + self.syncProgress.totalUnitCount = Int64(recordCount) + } + catch let error as HarmonyError + { + self.operationQueue.cancelAllOperations() + + self.result = .failure(SyncError(error)) + self.finish() + } + catch + { + fatalError("Non-HarmonyError thrown from SyncRecordsOperation.finish") + } + + self.dispatchGroup.leave() + } + + func finishRecordOperation(_ operation: BatchRecordOperation, result: Result<[AnyRecord: Result], Error>, debugTitle: String) + { + // Map operation.recordResults to use Result. + let recordResults = operation.recordResults.mapValues { (result) in + result.map { _ in () } + } + + print(debugTitle, result) + + do + { + for (record, result) in recordResults + { + self.recordResults[record] = result + } + + _ = try result.get() + } + catch + { + self.result = .failure(SyncError.partial(self.recordResults)) + self.finish() + } + + self.dispatchGroup.leave() + } +} diff --git a/Pods/Harmony/Harmony/Operations/Upload/FinishUploadingRecordsOperation.swift b/Pods/Harmony/Harmony/Operations/Upload/FinishUploadingRecordsOperation.swift new file mode 100644 index 000000000..bce6da578 --- /dev/null +++ b/Pods/Harmony/Harmony/Operations/Upload/FinishUploadingRecordsOperation.swift @@ -0,0 +1,127 @@ +// +// FinishUploadingRecordsOperation.swift +// Harmony +// +// Created by Riley Testut on 11/26/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import Foundation +import CoreData + +class FinishUploadingRecordsOperation: Operation<[AnyRecord: Result], Error> +{ + let results: [AnyRecord: Result] + + private let managedObjectContext: NSManagedObjectContext + + override var isAsynchronous: Bool { + return true + } + + init(results: [AnyRecord: Result], coordinator: SyncCoordinator, context: NSManagedObjectContext) + { + self.results = results + self.managedObjectContext = context + + super.init(coordinator: coordinator) + } + + override func main() + { + super.main() + + self.managedObjectContext.perform { + // Unlock records that were previously locked, and no longer have relationships that have not yet been uploaded. + + var results = self.results + + do + { + let records = results.compactMap { (record, result) -> AnyRecord? in + guard record.shouldLockWhenUploading else { return nil } + guard let _ = try? result.get() else { return nil } + + return record + } + + let recordIDs = try Record.remoteRelationshipRecordIDs(for: records, in: self.managedObjectContext) + + var recordsToUnlock = Set() + + for record in records + { + let missingRelationships = record.missingRelationships(in: recordIDs) + if !missingRelationships.isEmpty + { + results[record] = .failure(RecordError(record, ValidationError.nilRelationshipObjects(keys: Set(missingRelationships.keys)))) + } + else + { + recordsToUnlock.insert(record) + } + } + + let dispatchGroup = DispatchGroup() + + let operations = recordsToUnlock.compactMap { (record) -> UpdateRecordMetadataOperation? in + record.perform(in: self.managedObjectContext) { (managedRecord) in + do + { + if managedRecord.remoteRecord == nil, let result = results[record], let remoteRecord = try? result.get() + { + managedRecord.remoteRecord = remoteRecord + } + + let record = AnyRecord(managedRecord) + + let operation = try UpdateRecordMetadataOperation(record: record, coordinator: self.coordinator, context: self.managedObjectContext) + operation.metadata[.isLocked] = NSNull() + operation.resultHandler = { (result) in + do + { + try result.get() + } + catch + { + // Mark record for re-uploading later to unlock remote record. + managedRecord.localRecord?.status = .updated + + results[record] = .failure(RecordError(record, error)) + } + + dispatchGroup.leave() + } + + dispatchGroup.enter() + + return operation + } + catch + { + results[record] = .failure(RecordError(record, error)) + + return nil + } + } + } + + self.operationQueue.addOperations(operations, waitUntilFinished: false) + + dispatchGroup.notify(queue: .global()) { + self.managedObjectContext.perform { + self.result = .success(results) + self.finish() + } + } + } + catch + { + self.managedObjectContext.perform { + self.result = .failure(error) + self.finish() + } + } + } + } +} diff --git a/Pods/Harmony/Harmony/Operations/Upload/PrepareUploadingRecordsOperation.swift b/Pods/Harmony/Harmony/Operations/Upload/PrepareUploadingRecordsOperation.swift new file mode 100644 index 000000000..79af59603 --- /dev/null +++ b/Pods/Harmony/Harmony/Operations/Upload/PrepareUploadingRecordsOperation.swift @@ -0,0 +1,59 @@ +// +// PrepareUploadingRecordsOperation.swift +// Harmony +// +// Created by Riley Testut on 11/26/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import Foundation +import CoreData + +class PrepareUploadingRecordsOperation: Operation<[AnyRecord], Error> +{ + let records: [AnyRecord] + + private let managedObjectContext: NSManagedObjectContext + + override var isAsynchronous: Bool { + return true + } + + init(records: [AnyRecord], coordinator: SyncCoordinator, context: NSManagedObjectContext) + { + self.records = records + self.managedObjectContext = context + + super.init(coordinator: coordinator) + } + + override func main() + { + super.main() + + self.managedObjectContext.perform { + // Lock records that have relationships which have not yet been uploaded. + do + { + let recordIDs = try Record.remoteRelationshipRecordIDs(for: self.records, in: self.managedObjectContext) + + for record in self.records + { + let missingRelationships = record.missingRelationships(in: recordIDs) + if !missingRelationships.isEmpty + { + record.shouldLockWhenUploading = true + } + } + + self.result = .success(self.records) + } + catch + { + self.result = .failure(error) + } + + self.finish() + } + } +} diff --git a/Pods/Harmony/Harmony/Operations/Upload/UploadRecordOperation.swift b/Pods/Harmony/Harmony/Operations/Upload/UploadRecordOperation.swift new file mode 100644 index 000000000..dbdeaa57c --- /dev/null +++ b/Pods/Harmony/Harmony/Operations/Upload/UploadRecordOperation.swift @@ -0,0 +1,349 @@ +// +// UploadRecordOperation.swift +// Harmony +// +// Created by Riley Testut on 10/1/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import CoreData + +import Roxas + +class UploadRecordOperation: RecordOperation +{ + private var localRecord: LocalRecord! + + required init(record: Record, coordinator: SyncCoordinator, context: NSManagedObjectContext) throws + { + try super.init(record: record, coordinator: coordinator, context: context) + + try self.record.perform { (managedRecord) in + guard let localRecord = managedRecord.localRecord else { + throw RecordError(self.record, ValidationError.nilLocalRecord) + } + self.localRecord = localRecord + + // Record itself = 1 unit, files = 3 units. + self.progress.totalUnitCount = 4 + } + } + + override func main() + { + super.main() + + if UserDefaults.standard.isDebugModeEnabled + { + print("Started uploading record: ", self.record.recordID) + } + + func upload() + { + self.managedObjectContext.perform { + do + { + let localRecord = self.localRecord.in(self.managedObjectContext) + try localRecord.recordedObject?.prepareForSync(self.record) + } + catch + { + self.result = .failure(RecordError(self.record, error)) + self.finishUpload() + + return + } + + self.uploadFiles() { (result) in + do + { + let remoteFiles = try result.get() + + let localRecord = self.localRecord.in(self.managedObjectContext) + let localRecordRemoteFilesByIdentifier = Dictionary(localRecord.remoteFiles, keyedBy: \.identifier) + + for remoteFile in remoteFiles + { + if let cachedFile = localRecordRemoteFilesByIdentifier[remoteFile.identifier] + { + localRecord.remoteFiles.remove(cachedFile) + } + + localRecord.remoteFiles.insert(remoteFile) + } + + self.upload(localRecord) { (result) in + self.result = result + self.finishUpload() + } + } + catch + { + self.result = .failure(RecordError(self.record, error)) + self.finishUpload() + } + } + } + } + + if self.isBatchOperation + { + upload() + } + else + { + let prepareUploadingRecordsOperation = PrepareUploadingRecordsOperation(records: [self.record], coordinator: self.coordinator, context: self.managedObjectContext) + prepareUploadingRecordsOperation.resultHandler = { (result) in + do + { + let records = try result.get() + + guard !records.isEmpty else { throw RecordError.other(self.record, GeneralError.unknown) } + + upload() + } + catch + { + self.result = .failure(RecordError(self.record, error)) + self.finishUpload() + } + } + + self.operationQueue.addOperation(prepareUploadingRecordsOperation) + } + } + + override func finish() + { + super.finish() + + if UserDefaults.standard.isDebugModeEnabled + { + print("Finished uploading record: ", self.record.recordID) + } + } +} + +private extension UploadRecordOperation +{ + func finishUpload() + { + if self.isBatchOperation + { + self.finish() + } + else + { + let operation = FinishUploadingRecordsOperation(results: [self.record: self.result!], coordinator: self.coordinator, context: self.managedObjectContext) + operation.resultHandler = { (result) in + do + { + let results = try result.get() + + guard let result = results.values.first else { throw RecordError.other(self.record, GeneralError.unknown) } + + let tempRemoteRecord = try result.get() + + try self.managedObjectContext.save() + + let remoteRecord = tempRemoteRecord.in(self.managedObjectContext) + self.result = .success(remoteRecord) + } + catch + { + self.result = .failure(RecordError(self.record, error)) + } + + self.finish() + } + + self.operationQueue.addOperation(operation) + } + } + + func uploadFiles(completionHandler: @escaping (Result, RecordError>) -> Void) + { + self.record.perform { (managedRecord) -> Void in + guard let localRecord = managedRecord.localRecord else { return completionHandler(.failure(RecordError(self.record, ValidationError.nilLocalRecord))) } + guard let recordedObject = localRecord.recordedObject else { return completionHandler(.failure(RecordError(self.record, ValidationError.nilRecordedObject))) } + + let remoteFilesByIdentifier = Dictionary(localRecord.remoteFiles, keyedBy: \.identifier) + + // Suspend operation queue to prevent upload operations from starting automatically. + self.operationQueue.isSuspended = true + + let filesProgress = Progress.discreteProgress(totalUnitCount: 0) + + var remoteFiles = Set() + var errors = [FileError]() + + let dispatchGroup = DispatchGroup() + + for file in recordedObject.syncableFiles + { + do + { + let hash = try RSTHasher.sha1HashOfFile(at: file.fileURL) + + let remoteFile = remoteFilesByIdentifier[file.identifier] + guard remoteFile?.sha1Hash != hash else { + // Hash is the same, so don't upload file. + self.progress.completedUnitCount += 1 + continue + } + + dispatchGroup.enter() + + // Hash is either different or file hasn't yet been uploaded, so upload file. + let operation = ServiceOperation(coordinator: self.coordinator) { [weak self] (completionHandler) in + guard let self = self else { + completionHandler(.failure(FileError(file.identifier, GeneralError.unknown))) + return nil + } + + return localRecord.managedObjectContext?.performAndWait { () -> Progress in + let metadata: [HarmonyMetadataKey: Any] = [.relationshipIdentifier: file.identifier, .sha1Hash: hash] + return self.service.upload(file, for: self.record, metadata: metadata, context: self.managedObjectContext, completionHandler: completionHandler) + } + } + operation.resultHandler = { (result) in + do + { + let remoteFile = try result.get() + remoteFiles.insert(remoteFile) + } + catch let error as FileError + { + errors.append(error) + } + catch + { + errors.append(FileError(file.identifier, error)) + } + + dispatchGroup.leave() + } + + filesProgress.totalUnitCount += 1 + filesProgress.addChild(operation.progress, withPendingUnitCount: 1) + + self.operationQueue.addOperation(operation) + } + catch CocoaError.fileNoSuchFile + { + // File doesn't exist (which is valid), so just continue along. + } + catch + { + errors.append(FileError(file.identifier, error)) + } + } + + if errors.isEmpty + { + self.progress.addChild(filesProgress, withPendingUnitCount: 3) + + self.operationQueue.isSuspended = false + } + + dispatchGroup.notify(queue: .global()) { + self.managedObjectContext.perform { + if !errors.isEmpty + { + completionHandler(.failure(RecordError.filesFailed(self.record, errors))) + } + else + { + completionHandler(.success(remoteFiles)) + } + } + } + } + } + + func upload(_ localRecord: LocalRecord, completionHandler: @escaping (Result) -> Void) + { + var metadata = localRecord.recordedObject?.syncableMetadata.mapValues { $0 as Any } ?? [:] + metadata[.recordedObjectType] = localRecord.recordedObjectType + metadata[.recordedObjectIdentifier] = localRecord.recordedObjectIdentifier + metadata[.author] = UIDevice.current.name + metadata[.localizedName] = localRecord.recordedObject?.syncableLocalizedName as Any + + if self.record.shouldLockWhenUploading + { + metadata[.isLocked] = String(true) + } + + // Keep track of the previous non-locked version, so we can restore to it in case record is locked indefinitely. + if let remoteRecord = localRecord.managedRecord?.remoteRecord, !remoteRecord.isLocked + { + metadata[.previousVersionIdentifier] = remoteRecord.version.identifier + metadata[.previousVersionDate] = String(remoteRecord.version.date.timeIntervalSinceReferenceDate) + } + + do + { + // Always re-calculate hash since the record's files on disk might have changed. + try localRecord.updateSHA1Hash() + + let sha1Hash = localRecord.sha1Hash + metadata[.sha1Hash] = sha1Hash + + func finish(_ localRecord: LocalRecord, _ remoteRecord: RemoteRecord) + { + remoteRecord.status = .normal + + let localRecord = localRecord.in(self.managedObjectContext) + localRecord.version = remoteRecord.version + localRecord.status = .normal + localRecord.sha1Hash = sha1Hash + + completionHandler(.success(remoteRecord)) + } + + guard sha1Hash != localRecord.managedRecord?.remoteRecord?.sha1Hash else { + // Hash is the same, so don't upload record. + self.progress.completedUnitCount += 1 + + let remoteRecord = localRecord.managedRecord!.remoteRecord! // Safe because sha1Hash must've matched non-nil hash. + finish(localRecord, remoteRecord) + + return + } + + let temporaryContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType) + temporaryContext.parent = self.managedObjectContext + + self.record.perform(in: temporaryContext) { (managedRecord) in + let temporaryLocalRecord = localRecord.in(temporaryContext) + managedRecord.localRecord = temporaryLocalRecord + + let record = Record(managedRecord) + + let operation = ServiceOperation(coordinator: self.coordinator) { (completionHandler) in + return self.service.upload(record, metadata: metadata, context: self.managedObjectContext, completionHandler: completionHandler) + } + operation.resultHandler = { (result) in + do + { + let remoteRecord = try result.get() + finish(localRecord, remoteRecord) + } + catch + { + completionHandler(.failure(RecordError(self.record, error))) + } + } + + self.progress.addChild(operation.progress, withPendingUnitCount: 1) + self.operationQueue.addOperation(operation) + } + } + catch + { + self.progress.completedUnitCount += 1 + + completionHandler(.failure(RecordError(self.record, error))) + } + } +} diff --git a/Pods/Harmony/Harmony/Operations/Upload/UploadRecordsOperation.swift b/Pods/Harmony/Harmony/Operations/Upload/UploadRecordsOperation.swift new file mode 100644 index 000000000..a202872c6 --- /dev/null +++ b/Pods/Harmony/Harmony/Operations/Upload/UploadRecordsOperation.swift @@ -0,0 +1,44 @@ +// +// UploadRecordsOperation.swift +// Harmony +// +// Created by Riley Testut on 11/5/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import Foundation +import CoreData + +class UploadRecordsOperation: BatchRecordOperation +{ + override class var predicate: NSPredicate { + return ManagedRecord.uploadRecordsPredicate + } + + override func main() + { + self.syncProgress.status = .uploading + + super.main() + } + + override func process(_ records: [AnyRecord], in context: NSManagedObjectContext, completionHandler: @escaping (Result<[AnyRecord], Error>) -> Void) + { + let operation = PrepareUploadingRecordsOperation(records: records, coordinator: coordinator, context: context) + operation.resultHandler = { (result) in + completionHandler(result) + } + + self.operationQueue.addOperation(operation) + } + + override func process(_ results: [AnyRecord : Result], in context: NSManagedObjectContext, completionHandler: @escaping (Result<[AnyRecord : Result], Error>) -> Void) + { + let operation = FinishUploadingRecordsOperation(results: results, coordinator: self.coordinator, context: context) + operation.resultHandler = { (result) in + completionHandler(result) + } + + self.operationQueue.addOperation(operation) + } +} diff --git a/Pods/Harmony/Harmony/Protocols/RecordEntry.swift b/Pods/Harmony/Harmony/Protocols/RecordEntry.swift new file mode 100644 index 000000000..346c81395 --- /dev/null +++ b/Pods/Harmony/Harmony/Protocols/RecordEntry.swift @@ -0,0 +1,25 @@ +// +// RecordEntry.swift +// Harmony +// +// Created by Riley Testut on 3/4/19. +// Copyright © 2019 Riley Testut. All rights reserved. +// + +import CoreData + +public protocol RecordEntry: NSManagedObject +{ + var recordedObjectType: String { get } + var recordedObjectIdentifier: String { get } + + var recordID: RecordID { get } +} + +public extension RecordEntry +{ + var recordID: RecordID { + let recordID = RecordID(type: self.recordedObjectType, identifier: self.recordedObjectIdentifier) + return recordID + } +} diff --git a/Pods/Harmony/Harmony/Protocols/Service.swift b/Pods/Harmony/Harmony/Protocols/Service.swift new file mode 100644 index 000000000..c498ce051 --- /dev/null +++ b/Pods/Harmony/Harmony/Protocols/Service.swift @@ -0,0 +1,51 @@ +// +// Service.swift +// Harmony +// +// Created by Riley Testut on 6/4/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +import Foundation +import CoreData + +public protocol Service +{ + var localizedName: String { get } + var identifier: String { get } + + func authenticate(withPresentingViewController viewController: UIViewController, completionHandler: @escaping (Result) -> Void) + func authenticateInBackground(completionHandler: @escaping (Result) -> Void) + + func deauthenticate(completionHandler: @escaping (Result) -> Void) + + func fetchAllRemoteRecords(context: NSManagedObjectContext, completionHandler: @escaping (Result<(Set, Data), FetchError>) -> Void) -> Progress + func fetchChangedRemoteRecords(changeToken: Data, context: NSManagedObjectContext, completionHandler: @escaping (Result<(Set, Set, Data), FetchError>) -> Void) -> Progress + + func upload(_ record: AnyRecord, metadata: [HarmonyMetadataKey: Any], context: NSManagedObjectContext, completionHandler: @escaping (Result) -> Void) -> Progress + func download(_ record: AnyRecord, version: Version, context: NSManagedObjectContext, completionHandler: @escaping (Result) -> Void) -> Progress + func delete(_ record: AnyRecord, completionHandler: @escaping (Result) -> Void) -> Progress + + func upload(_ file: File, for record: AnyRecord, metadata: [HarmonyMetadataKey: Any], context: NSManagedObjectContext, completionHandler: @escaping (Result) -> Void) -> Progress + func download(_ remoteFile: RemoteFile, completionHandler: @escaping (Result) -> Void) -> Progress + func delete(_ remoteFile: RemoteFile, completionHandler: @escaping (Result) -> Void) -> Progress + + func updateMetadata(_ metadata: [HarmonyMetadataKey: Any], for record: AnyRecord, completionHandler: @escaping (Result) -> Void) -> Progress + + func fetchVersions(for record: AnyRecord, completionHandler: @escaping (Result<[Version], RecordError>) -> Void) -> Progress +} + +public func ==(lhs: Service, rhs: Service) -> Bool +{ + return lhs.identifier == rhs.identifier +} + +public func !=(lhs: Service, rhs: Service) -> Bool +{ + return !(lhs == rhs) +} + +public func ~=(lhs: Service, rhs: Service) -> Bool +{ + return lhs == rhs +} diff --git a/Pods/Harmony/Harmony/Protocols/Syncable.swift b/Pods/Harmony/Harmony/Protocols/Syncable.swift new file mode 100644 index 000000000..20d36fe80 --- /dev/null +++ b/Pods/Harmony/Harmony/Protocols/Syncable.swift @@ -0,0 +1,116 @@ +// +// Syncable.swift +// Harmony +// +// Created by Riley Testut on 5/25/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +import Foundation +import CoreData + +public enum ConflictResolution +{ + case conflict + case local + case remote + case newest + case oldest +} + +public protocol Syncable: NSManagedObject +{ + static var syncablePrimaryKey: AnyKeyPath { get } + + var syncableType: String { get } + + var syncableKeys: Set { get } + var syncableRelationships: Set { get } + + var syncableFiles: Set { get } + var syncableMetadata: [HarmonyMetadataKey: String] { get } + + var syncableLocalizedName: String? { get } + + var isSyncingEnabled: Bool { get } + + func prepareForSync(_ record: AnyRecord) throws + func awakeFromSync(_ record: AnyRecord) throws + + func resolveConflict(_ record: AnyRecord) -> ConflictResolution +} + +public extension Syncable +{ + var syncableType: String { + guard let type = self.entity.name else { fatalError("SyncableManagedObjects must have a valid entity name.") } + return type + } + + var syncableFiles: Set { + return [] + } + + var syncableRelationships: Set { + return [] + } + + var isSyncingEnabled: Bool { + return true + } + + var syncableLocalizedName: String? { + return nil + } + + var syncableMetadata: [HarmonyMetadataKey: String] { + return [:] + } + + func prepareForSync(_ record: AnyRecord) + { + } + + func awakeFromSync(_ record: AnyRecord) + { + } + + func resolveConflict(_ record: AnyRecord) -> ConflictResolution + { + return .conflict + } +} + +public extension Syncable +{ + internal(set) var syncableIdentifier: String? { + get { + guard let keyPath = Self.syncablePrimaryKey.stringValue else { fatalError("Syncable.syncablePrimaryKey must reference an @objc String property.") } + guard let value = self.value(forKeyPath: keyPath) else { return nil } // Valid to have nil value (for example, if property itself is nil, or self has been deleted). + guard let identifier = value as? String else { fatalError("Syncable.syncablePrimaryKey must reference an @objc String property.") } + + return identifier + } + set { + guard let keyPath = Self.syncablePrimaryKey.stringValue else { fatalError("Syncable.syncablePrimaryKey must reference an @objc String property.") } + self.setValue(newValue, forKeyPath: keyPath) + } + } +} + +internal extension Syncable +{ + var syncableRelationshipObjects: [String: Syncable] { + var relationshipObjects = [String: Syncable]() + + for keyPath in self.syncableRelationships + { + guard let stringValue = keyPath.stringValue else { continue } + + let relationshipObject = self.value(forKeyPath: stringValue) as? Syncable + relationshipObjects[stringValue] = relationshipObject + } + + return relationshipObjects + } +} diff --git a/Pods/Harmony/Harmony/SyncCoordinator.swift b/Pods/Harmony/Harmony/SyncCoordinator.swift new file mode 100644 index 000000000..4a33f1bb4 --- /dev/null +++ b/Pods/Harmony/Harmony/SyncCoordinator.swift @@ -0,0 +1,467 @@ +// +// SyncCoordinator.swift +// Harmony +// +// Created by Riley Testut on 5/17/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +import Foundation +import CoreData + +public extension SyncCoordinator +{ + static let didStartSyncingNotification = Notification.Name("syncCoordinatorDidStartSyncingNotification") + static let didFinishSyncingNotification = Notification.Name("syncCoordinatorDidFinishSyncingNotification") + + static let syncResultKey = "syncResult" +} + +extension SyncCoordinator +{ + public enum ConflictResolution + { + case local + case remote(Version) + } +} + +public typealias SyncResult = Result<[AnyRecord: Result], SyncError> + +public final class SyncCoordinator +{ + public let service: Service + public let persistentContainer: NSPersistentContainer + + public let recordController: RecordController + + public var account: Account? { + return self.managedAccount?.managedObjectContext?.performAndWait { + guard let managedAccount = self.managedAccount else { return nil } + + let account = Account(account: managedAccount) + return account + } + } + + private var managedAccount: ManagedAccount? { + guard _managedAccount == nil else { return _managedAccount } + + let context = self.recordController.newBackgroundContext() + _managedAccount = context.performAndWait { + do + { + let accounts = try context.fetch(ManagedAccount.currentAccountFetchRequest()) + return accounts.first + } + catch + { + print("Failed to fetch managed account.", error) + return nil + } + } + + return _managedAccount + } + private var _managedAccount: ManagedAccount? { + didSet { + self._managedAccountContext = self._managedAccount?.managedObjectContext + } + } + private var _managedAccountContext: NSManagedObjectContext? + + public private(set) var isAuthenticated = false + public private(set) var isSyncing = false + + public var isStarted: Bool { + return self.recordController.isStarted + } + + private let operationQueue: OperationQueue + private let syncOperationQueue: OperationQueue + + public init(service: Service, persistentContainer: NSPersistentContainer) + { + self.service = service + self.persistentContainer = persistentContainer + self.recordController = RecordController(persistentContainer: persistentContainer) + + self.operationQueue = OperationQueue() + self.operationQueue.name = "com.rileytestut.Harmony.SyncCoordinator.operationQueue" + self.operationQueue.qualityOfService = .utility + + self.syncOperationQueue = OperationQueue() + self.syncOperationQueue.name = "com.rileytestut.Harmony.SyncCoordinator.syncOperationQueue" + self.syncOperationQueue.qualityOfService = .utility + self.syncOperationQueue.maxConcurrentOperationCount = 1 + } + + deinit + { + do + { + try self.stop() + } + catch + { + print("Failed to stop SyncCoordinator.", error) + } + } +} + +public extension SyncCoordinator +{ + func start(completionHandler: @escaping (Result) -> Void) + { + guard !self.isStarted else { return completionHandler(.success(self.account)) } + + self.recordController.start { (result) in + do + { + try result.get() + + self.authenticate() { (result) in + do + { + let account = try result.get() + completionHandler(.success(account)) + } + catch AuthenticationError.noSavedCredentials + { + completionHandler(.success(nil)) + } + catch + { + if self.account == nil + { + completionHandler(.success(nil)) + } + else + { + completionHandler(.failure(error)) + } + } + } + } + catch + { + completionHandler(.failure(error)) + } + } + } + + func stop() throws + { + guard self.isStarted else { return } + + try self.recordController.stop() + + // Intentionally do not deauthorize, as that also resets the database. + // No harm in allowing user to remain authorized even if not syncing. + // self.deauthenticate() + } + + @discardableResult func sync() -> Progress? + { + guard let account = self.managedAccount, let context = account.managedObjectContext else { return nil } + + return context.performAndWait { + // If there is already a sync operation waiting to execute, no use adding another one. + if self.syncOperationQueue.operationCount > 1, let operation = self.syncOperationQueue.operations.last as? SyncRecordsOperation + { + return operation.syncProgress + } + + self.isSyncing = true + + let syncRecordsOperation = SyncRecordsOperation(changeToken: account.changeToken, coordinator: self) + syncRecordsOperation.resultHandler = { [weak syncRecordsOperation] (result) in + if let changeToken = syncRecordsOperation?.updatedChangeToken + { + let context = self.recordController.newBackgroundContext() + context.performAndWait { + let account = account.in(context) + account.changeToken = changeToken + + do + { + try context.save() + } + catch + { + print("Failed to save change token.", error) + } + } + } + + NotificationCenter.default.post(name: SyncCoordinator.didFinishSyncingNotification, object: self, userInfo: [SyncCoordinator.syncResultKey: result]) + + if self.syncOperationQueue.operations.isEmpty + { + self.isSyncing = false + } + } + self.syncOperationQueue.addOperation(syncRecordsOperation) + + return syncRecordsOperation.syncProgress + } + } +} + +public extension SyncCoordinator +{ + func authenticate(presentingViewController: UIViewController? = nil, completionHandler: @escaping (Result) -> Void) + { + guard self.isStarted else { + self.start { (result) in + switch result + { + case .success: self.authenticate(presentingViewController: presentingViewController, completionHandler: completionHandler) + case .failure(let error): completionHandler(.failure(AuthenticationError(error))) + } + } + + return + } + + let operation = ServiceOperation(coordinator: self) { (completionHandler) -> Progress? in + DispatchQueue.main.async { + if let presentingViewController = presentingViewController + { + self.service.authenticate(withPresentingViewController: presentingViewController, completionHandler: completionHandler) + } + else + { + self.service.authenticateInBackground(completionHandler: completionHandler) + } + } + return nil + } + operation.resultHandler = { (result) in + let result = result.mapError { AuthenticationError($0) } + switch result + { + case .success(let account): + let context = self.recordController.newBackgroundContext() + context.performAndWait { + let account = ManagedAccount(account: account, service: self.service, context: context) + + do + { + try context.save() + + self.isAuthenticated = true + } + catch + { + print("Failed to save account.", account, error) + } + } + + case .failure: break + } + + completionHandler(result) + } + + // Don't add to operation queue, or else it might result in a deadlock + // if another operation we've started requires reauthentication. + operation.requiresAuthentication = false + operation.start() + } + + func deauthenticate(completionHandler: @escaping (Result) -> Void) + { + // Set isAuthenticated to false immediately to disable syncing while we attempt deauthentication. + let isAuthenticated = self.isAuthenticated + self.isAuthenticated = false + + let operation = ServiceOperation(coordinator: self) { (completionHandler) -> Progress? in + self.service.deauthenticate(completionHandler: completionHandler) + return nil + } + operation.requiresAuthentication = false + operation.resultHandler = { (result) in + do + { + try result.get() + + try self.stop() + try self.recordController.reset() + + self._managedAccount = nil + self.isAuthenticated = false + + completionHandler(.success) + } + catch + { + self.isAuthenticated = isAuthenticated + completionHandler(.failure(DeauthenticationError(error))) + } + } + + self.syncOperationQueue.cancelAllOperations() + self.syncOperationQueue.addOperation(operation) + } +} + +public extension SyncCoordinator +{ + @discardableResult func fetchVersions(for record: Record, completionHandler: @escaping (Result<[Version], RecordError>) -> Void) -> Progress + { + let operation = ServiceOperation(coordinator: self) { (completionHandler) -> Progress? in + return self.service.fetchVersions(for: AnyRecord(record), completionHandler: completionHandler) + } + operation.resultHandler = { (result) in + switch result + { + case .success(let versions): completionHandler(.success(versions)) + case .failure(let error): completionHandler(.failure(RecordError(Record(record), error))) + } + } + + self.operationQueue.addOperation(operation) + + return operation.progress + } + + @discardableResult func upload(_ record: Record, completionHandler: @escaping (Result, RecordError>) -> Void) -> Progress + { + let progress = Progress.discreteProgress(totalUnitCount: 1) + + let context = self.recordController.newBackgroundContext() + + do + { + let operation = try UploadRecordOperation(record: record, coordinator: self, context: context) + operation.resultHandler = { (result) in + do + { + _ = try result.get() + + let context = self.recordController.newBackgroundContext() + record.perform(in: context) { (managedRecord) in + let record = Record(managedRecord) as Record + completionHandler(.success(record)) + } + } + catch + { + completionHandler(.failure(RecordError(Record(record), error))) + } + } + + progress.addChild(operation.progress, withPendingUnitCount: 1) + + self.operationQueue.addOperation(operation) + } + catch + { + completionHandler(.failure(RecordError(Record(record), error))) + } + + return progress + } + + @discardableResult func restore(_ record: Record, to version: Version, completionHandler: @escaping (Result, RecordError>) -> Void) -> Progress + { + let progress = Progress.discreteProgress(totalUnitCount: 1) + + let context = self.recordController.newBackgroundContext() + + do + { + let operation = try DownloadRecordOperation(record: record, coordinator: self, context: context) + operation.version = version + operation.resultHandler = { (result) in + do + { + _ = try result.get() + + let context = self.recordController.newBackgroundContext() + try record.perform(in: context) { (managedRecord) in + + // Mark as updated so we can upload restored version on next sync. + managedRecord.localRecord?.status = .updated + + if let version = managedRecord.remoteRecord?.version + { + // Assign to same version as RemoteRecord to prevent sync conflicts. + managedRecord.localRecord?.version = version + } + + try context.save() + + let record = Record(managedRecord) as Record + completionHandler(.success(record)) + } + } + catch + { + completionHandler(.failure(RecordError(Record(record), error))) + } + } + + progress.addChild(operation.progress, withPendingUnitCount: 1) + + self.operationQueue.addOperation(operation) + } + catch + { + completionHandler(.failure(RecordError(Record(record), error))) + } + + return progress + } + + @discardableResult func resolveConflictedRecord(_ record: Record, resolution: ConflictResolution, completionHandler: @escaping (Result, RecordError>) -> Void) -> Progress + { + let progress: Progress + + record.perform { (managedRecord) in + // Mark as not conflicted to prevent operations from throwing "record conflicted" errors. + managedRecord.isConflicted = false + } + + func finish(_ result: Result, RecordError>) + { + do + { + let record = try result.get() + + try record.perform { (managedRecord) in + managedRecord.isConflicted = false + + try managedRecord.managedObjectContext?.save() + + let resolvedRecord = Record(managedRecord) + completionHandler(.success(resolvedRecord)) + } + } + catch + { + record.perform { (managedRecord) in + managedRecord.isConflicted = true + } + + completionHandler(.failure(RecordError(AnyRecord(record), error))) + } + } + + switch resolution + { + case .local: + progress = self.upload(record) { (result) in + finish(result) + } + + case .remote(let version): + progress = self.restore(record, to: version) { (result) in + finish(result) + } + } + + return progress + } +} diff --git a/Pods/Harmony/Harmony/Types/AnyCodable.swift b/Pods/Harmony/Harmony/Types/AnyCodable.swift new file mode 100644 index 000000000..677435a7f --- /dev/null +++ b/Pods/Harmony/Harmony/Types/AnyCodable.swift @@ -0,0 +1,115 @@ +// +// AnyCodable.swift +// Harmony +// +// Created by Riley Testut on 4/24/20. +// Copyright © 2020 Riley Testut. All rights reserved. +// +// Heavily based on Flight School's AnyCodable by Mattt Thompson (https://github.com/Flight-School/AnyCodable) +// + +import Foundation + +struct AnyCodable: Codable +{ + let value: Any + + init(_ value: T?) + { + self.value = value ?? () + } + + init(from decoder: Decoder) throws + { + let container = try decoder.singleValueContainer() + + if container.decodeNil() + { + self.init(NSNull()) + } + else if let bool = try? container.decode(Bool.self) + { + self.init(bool) + } + else if let int = try? container.decode(Int.self) + { + self.init(int) + } + else if let uint = try? container.decode(UInt.self) + { + self.init(uint) + } + else if let double = try? container.decode(Double.self) + { + self.init(double) + } + else if let string = try? container.decode(String.self) + { + self.init(string) + } + else if let array = try? container.decode([AnyCodable].self) + { + self.init(array.map { $0.value }) + } + else if let dictionary = try? container.decode([String: AnyCodable].self) + { + self.init(dictionary.mapValues { $0.value }) + } + else + { + throw DecodingError.dataCorruptedError(in: container, debugDescription: "AnyCodable value cannot be decoded.") + } + } + + func encode(to encoder: Encoder) throws + { + var container = encoder.singleValueContainer() + + switch self.value + { + case let number as NSNumber: try self.encode(nsnumber: number, into: &container) + case is NSNull: try container.encodeNil() + case is Void: try container.encodeNil() + case let bool as Bool: try container.encode(bool) + case let int as Int: try container.encode(int) + case let int8 as Int8: try container.encode(int8) + case let int16 as Int16: try container.encode(int16) + case let int32 as Int32: try container.encode(int32) + case let int64 as Int64: try container.encode(int64) + case let uint as UInt: try container.encode(uint) + case let uint8 as UInt8: try container.encode(uint8) + case let uint16 as UInt16: try container.encode(uint16) + case let uint32 as UInt32: try container.encode(uint32) + case let uint64 as UInt64: try container.encode(uint64) + case let float as Float: try container.encode(float) + case let double as Double: try container.encode(double) + case let string as String: try container.encode(string) + case let date as Date: try container.encode(date) + case let url as URL: try container.encode(url) + case let array as [Any?]: try container.encode(array.map { AnyCodable($0) }) + case let dictionary as [String: Any?]: try container.encode(dictionary.mapValues { AnyCodable($0) }) + default: + let context = EncodingError.Context(codingPath: container.codingPath, debugDescription: "AnyCodable value cannot be encoded.") + throw EncodingError.invalidValue(self.value, context) + } + } + + private func encode(nsnumber: NSNumber, into container: inout SingleValueEncodingContainer) throws + { + switch CFNumberGetType(nsnumber) + { + case .charType: try container.encode(nsnumber.boolValue) + case .sInt8Type: try container.encode(nsnumber.int8Value) + case .sInt16Type: try container.encode(nsnumber.int16Value) + case .sInt32Type: try container.encode(nsnumber.int32Value) + case .sInt64Type: try container.encode(nsnumber.int64Value) + case .shortType: try container.encode(nsnumber.uint16Value) + case .longType: try container.encode(nsnumber.uint32Value) + case .longLongType: try container.encode(nsnumber.uint64Value) + case .intType, .nsIntegerType, .cfIndexType: try container.encode(nsnumber.intValue) + case .floatType, .float32Type: try container.encode(nsnumber.floatValue) + case .doubleType, .float64Type, .cgFloatType: try container.encode(nsnumber.doubleValue) + @unknown default: fatalError() + } + } +} diff --git a/Pods/Harmony/Harmony/Types/Errors.swift b/Pods/Harmony/Harmony/Types/Errors.swift new file mode 100644 index 000000000..67c01f145 --- /dev/null +++ b/Pods/Harmony/Harmony/Types/Errors.swift @@ -0,0 +1,525 @@ +// +// Errors.swift +// Harmony +// +// Created by Riley Testut on 12/3/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +import Foundation +import CoreData + +public protocol HarmonyError: LocalizedError, CustomNSError +{ + var failureDescription: String { get } + + var underlyingError: HarmonyError? { get } +} + +extension HarmonyError +{ + public var errorUserInfo: [String : Any] { + let userInfo = [NSLocalizedFailureErrorKey: self.failureDescription] + return userInfo + } + + public static func ==(lhs: Self, rhs: Self) -> Bool + { + return lhs._code == rhs._code + } +} + +public func ~=(pattern: T, value: Error) -> Bool +{ + switch value + { + case let error as T: return error == pattern + case let harmonyError as HarmonyError: + var error = harmonyError.underlyingError + while error != nil + { + if let error = error as? T, error == pattern + { + return true + } + + error = error?.underlyingError + } + return false + + default: return false + } +} + +public enum GeneralError: HarmonyError +{ + case cancelled + case unknown + + public var underlyingError: HarmonyError? { + return nil + } +} + +//MARK: Errors - +public enum SyncError: HarmonyError +{ + case authentication(AuthenticationError) + case fetch(FetchError) + case partial([AnyRecord: Result]) + case other(HarmonyError) + + public var underlyingError: HarmonyError? { + switch self + { + case .authentication(let error): return error + case .fetch(let error): return error + case .partial: return nil + case .other(let error): return error + } + } + + init(_ error: HarmonyError) + { + switch error + { + case let error as SyncError: self = error + case let error as AuthenticationError: self = SyncError.authentication(error) + case let error as FetchError: self = SyncError.fetch(error) + default: self = SyncError.other(error) + } + } +} + +public enum DatabaseError: HarmonyError +{ + case corrupted(Error) + case other(Error) + + public var underlyingError: HarmonyError? { + switch self + { + case .corrupted(let error): return error as? HarmonyError + case .other(let error): return error as? HarmonyError + } + } + + public init(_ error: Error) + { + switch error + { + case let error as DatabaseError: self = error + case let error: self = .other(error) + } + } +} + +public enum AuthenticationError: HarmonyError +{ + case notAuthenticated + case noSavedCredentials + case tokenExpired + case other(Error) + + public var underlyingError: HarmonyError? { + switch self + { + case .other(let error): return error as? HarmonyError + default: return nil + } + } + + public init(_ error: Error) + { + switch error + { + case let error as AuthenticationError: self = error + case let error: self = .other(error) + } + } +} + +public enum DeauthenticationError: HarmonyError +{ + case other(Error) + + public var underlyingError: HarmonyError? { + switch self + { + case .other(let error): return error as? HarmonyError + } + } + + public init(_ error: Error) + { + switch error + { + case let error as DeauthenticationError: self = error + case let error: self = .other(error) + } + } +} + +public enum FetchError: HarmonyError +{ + case invalidChangeToken(Data) + case other(Error) + + public var underlyingError: HarmonyError? { + switch self + { + case .other(let error): return error as? HarmonyError + default: return nil + } + } + + public init(_ error: Error) + { + switch error + { + case let error as FetchError: self = error + case let error: self = .other(error) + } + } +} + +public enum RecordError: HarmonyError +{ + case locked(AnyRecord) + case doesNotExist(AnyRecord) + case syncingDisabled(AnyRecord) + case conflicted(AnyRecord) + case filesFailed(AnyRecord, [FileError]) + case other(AnyRecord, Error) + + public var record: Record { + switch self + { + case .locked(let record), + .doesNotExist(let record), + .syncingDisabled(let record), + .conflicted(let record), + .filesFailed(let record, _), + .other(let record, _): + return record + } + } + + public var underlyingError: HarmonyError? { + switch self + { + case .doesNotExist: return ServiceError.itemDoesNotExist + case .other(_, let error): return error as? HarmonyError + default: return nil + } + } + + public init(_ record: AnyRecord, _ error: Error) + { + switch error + { + case let error as RecordError: self = error + case ServiceError.itemDoesNotExist: self = .doesNotExist(record) + case let error: self = .other(record, error) + } + } +} + +public enum FileError: HarmonyError +{ + case unknownFile(String) + case doesNotExist(String) + case restricted(String) + case other(String, Error) + + public var fileIdentifier: String { + switch self + { + case .unknownFile(let identifier), + .doesNotExist(let identifier), + .restricted(let identifier), + .other(let identifier, _): + return identifier + } + } + + public var underlyingError: HarmonyError? { + switch self + { + case .doesNotExist: return ServiceError.itemDoesNotExist + case .other(_, let error): return error as? HarmonyError + default: return nil + } + } + + public init(_ fileIdentifier: String, _ error: Error) + { + switch error + { + case let error as FileError: self = error + case ServiceError.itemDoesNotExist: self = .doesNotExist(fileIdentifier) + case ServiceError.restrictedContent: self = .restricted(fileIdentifier) + case let error: self = .other(fileIdentifier, error) + } + } +} + +public enum ServiceError: HarmonyError +{ + case invalidResponse + case rateLimitExceeded + case itemDoesNotExist + case restrictedContent + case connectionFailed(URLError) + case other(Error) + + public var underlyingError: HarmonyError? { + switch self + { + case .other(let error): return error as? HarmonyError + default: return nil + } + } + + public init(_ error: Error) + { + switch error + { + case let error as ServiceError: self = error + case let error as URLError: self = .connectionFailed(error) + case let error: self = .other(error) + } + } +} + +public enum ValidationError: HarmonyError +{ + case nilManagedObjectContext + case nilManagedRecord + case nilLocalRecord + case nilRemoteRecord + case nilRecordedObject + case nilRelationshipObjects(keys: Set) + + case invalidSyncableIdentifier + case unknownRecordType(String) + case nonSyncableRecordType(String) + case nonSyncableRecordedObject(NSManagedObject) + + case invalidMetadata([HarmonyMetadataKey: String]) + + public var underlyingError: HarmonyError? { + return nil + } +} + +//MARK: - Error Localization - +extension GeneralError +{ + public var failureDescription: String { + return NSLocalizedString("Unable to complete operation.", comment: "") + } + + public var failureReason: String? { + switch self + { + case .cancelled: return NSLocalizedString("The operation was cancelled.", comment: "") + case .unknown: return NSLocalizedString("An unknown error occured.", comment: "") + } + } +} + +extension SyncError +{ + public var failureDescription: String { + return NSLocalizedString("Failed to sync items.", comment: "") + } + + public var failureReason: String? { + switch self + { + case .authentication(let error): return error.failureReason + case .fetch(let error): return error.failureReason + case .other(let error): return error.failureReason + case .partial(let results): + let failures = results.filter { + switch $0.value + { + case .success: return false + case .failure: return true + } + } + + if failures.count == 1 + { + return String.localizedStringWithFormat("Failed to sync %@ item.", NSNumber(value: failures.count)) + } + else + { + return String.localizedStringWithFormat("Failed to sync %@ items.", NSNumber(value: failures.count)) + } + } + } +} + +extension AuthenticationError +{ + public var failureDescription: String { + return NSLocalizedString("Failed to authenticate user.", comment: "") + } + + public var failureReason: String? { + switch self + { + case .notAuthenticated: return NSLocalizedString("The current user is not authenticated.", comment: "") + case .noSavedCredentials: return NSLocalizedString("There are no saved credentials for the current user.", comment: "") + case .tokenExpired: return NSLocalizedString("The authentication token has expired.", comment: "") + case .other(let error as NSError): return error.localizedFailureReason ?? error.localizedDescription + } + } +} + +extension DeauthenticationError +{ + public var failureDescription: String { + return NSLocalizedString("Failed to deauthenticate user.", comment: "") + } + + public var failureReason: String? { + switch self + { + case .other(let error as NSError): return error.localizedFailureReason ?? error.localizedDescription + } + } +} + +extension FetchError +{ + public var failureDescription: String { + return NSLocalizedString("Failed to fetch remote changes.", comment: "") + } + + public var failureReason: String? { + switch self + { + case .invalidChangeToken: return NSLocalizedString("The provided change token was invalid.", comment: "") + case .other(let error as NSError): return error.localizedFailureReason ?? error.localizedDescription + } + } +} + +extension RecordError +{ + public var failureDescription: String { + let name = self.record.localizedName ?? NSLocalizedString("item", comment: "") + return String.localizedStringWithFormat("Failed to sync %@.", name) + } + + public var failureReason: String? { + switch self + { + case .locked: return NSLocalizedString("The record is locked.", comment: "") + case .doesNotExist: return NSLocalizedString("The record does not exist.", comment: "") + case .syncingDisabled: return NSLocalizedString("Syncing is disabled for this record.", comment: "") + case .conflicted: return NSLocalizedString("There is a conflict with this record.", comment: "") + case .other(_, let error as NSError): return error.localizedFailureReason ?? error.localizedDescription + case .filesFailed(_, let errors): + if let error = errors.first, errors.count == 1 + { + return error.failureReason ?? String.localizedStringWithFormat("Failed to sync file '%@'.", error.fileIdentifier) + } + else + { + return String.localizedStringWithFormat("Failed to sync %@ files.", NSNumber(value: errors.count)) + } + } + } +} + +extension FileError +{ + public var failureDescription: String { + return String.localizedStringWithFormat("Failed to sync file '%@'.", self.fileIdentifier) + } + + public var failureReason: String? { + switch self + { + case .doesNotExist: return NSLocalizedString("The file does not exist.", comment: "") + case .unknownFile: return NSLocalizedString("The file is unknown.", comment: "") + case .restricted: return NSLocalizedString("The file has been restricted by the sync provider.", comment: "") + case .other(_, let error as NSError): return error.localizedFailureReason ?? error.localizedDescription + } + } +} + +extension DatabaseError +{ + public var failureDescription: String { + switch self + { + case .corrupted: return NSLocalizedString("The syncing database is corrupted.", comment: "") + case .other(let error as NSError): return error.localizedFailureDescription ?? error.localizedDescription + } + } + + public var failureReason: String? { + switch self + { + case .corrupted(let error as NSError), + .other(let error as NSError): + return error.localizedFailureReason ?? error.localizedDescription + } + } +} + +extension ServiceError +{ + public var failureDescription: String { + return NSLocalizedString("Failed to communicate with server.", comment: "") + } + + public var failureReason: String? { + switch self + { + case .invalidResponse: return NSLocalizedString("The server returned an invalid response.", comment: "") + case .rateLimitExceeded: return NSLocalizedString("The network request rate exceeded the server's rate limit.", comment: "") + case .itemDoesNotExist: return NSLocalizedString("The requested item does not exist.", comment: "") + case .restrictedContent: return NSLocalizedString("The requested item has been restricted by the sync provider.", comment: "") + case .connectionFailed(let error as NSError): return error.localizedFailureReason ?? error.localizedDescription + case .other(let error as NSError): return error.localizedFailureReason ?? error.localizedDescription + } + } +} + +extension ValidationError +{ + public var failureDescription: String { + return NSLocalizedString("The item is invalid.", comment: "") + } + + public var failureReason: String? { + switch self + { + case .nilManagedObjectContext: return NSLocalizedString("The record's managed object context is nil.", comment: "") + case .nilManagedRecord: return NSLocalizedString("The record could not be found.", comment: "") + case .nilLocalRecord: return NSLocalizedString("The record's local data could not be found.", comment: "") + case .nilRemoteRecord: return NSLocalizedString("The record's remote data could not be found.", comment: "") + case .nilRecordedObject: return NSLocalizedString("The record's recorded object could not be found.", comment: "") + case .invalidSyncableIdentifier: return NSLocalizedString("The recorded object's identifier is invalid.", comment: "") + case .unknownRecordType(let recordType): return String.localizedStringWithFormat("Record has unknown type '%@'.", recordType) + case .nonSyncableRecordType(let recordType): return String.localizedStringWithFormat("Record has type '%@' which does not support syncing.", recordType) + case .nonSyncableRecordedObject: return NSLocalizedString("The record's recorded object does not support syncing.", comment: "") + case .invalidMetadata: return NSLocalizedString("The record's remote metadata is invalid.", comment: "") + case .nilRelationshipObjects(let keys): + if let key = keys.first, keys.count == 1 + { + return String.localizedStringWithFormat("The record's '%@' relationship could not be found.", key) + } + else + { + return NSLocalizedString("The record's relationships could not be found.", comment: "") + } + } + } +} diff --git a/Pods/Harmony/Harmony/Types/SyncProgress.swift b/Pods/Harmony/Harmony/Types/SyncProgress.swift new file mode 100644 index 000000000..87ce72174 --- /dev/null +++ b/Pods/Harmony/Harmony/Types/SyncProgress.swift @@ -0,0 +1,79 @@ +// +// SyncProgress.swift +// Harmony +// +// Created by Riley Testut on 3/21/19. +// Copyright © 2019 Riley Testut. All rights reserved. +// + +import Foundation + +extension SyncProgress +{ + enum Status + { + case fetchingChanges + case uploading + case downloading + case deleting + } +} + +class SyncProgress: Progress +{ + var status: Status = .fetchingChanges { + didSet { + self.updateLocalizedAdditionalDescription() + } + } + + var activeProgress: Progress? { + didSet { + self.activeProgressObservation?.invalidate() + + if let progress = self.activeProgress + { + self.activeProgressObservation = progress.observe(\.completedUnitCount) { [weak self] (progress, change) in + self?.updateLocalizedAdditionalDescription() + } + } + + self.updateLocalizedAdditionalDescription() + } + } + + private var activeProgressObservation: NSKeyValueObservation? + + override init(parent parentProgressOrNil: Progress?, userInfo userInfoOrNil: [ProgressUserInfoKey : Any]? = nil) + { + super.init(parent: parentProgressOrNil, userInfo: userInfoOrNil) + + self.localizedDescription = NSLocalizedString("Syncing…", comment: "") + self.updateLocalizedAdditionalDescription() + } + + private func updateLocalizedAdditionalDescription() + { + let localizedAdditionalDescription: String + + if let progress = self.activeProgress + { + // Ensures we start at 1, but never go past totalUnitCount. + let count = min(progress.completedUnitCount + 1, progress.totalUnitCount) + + switch self.status + { + case .fetchingChanges: localizedAdditionalDescription = "" + case .uploading: localizedAdditionalDescription = String.localizedStringWithFormat(NSLocalizedString("Uploading %d of %d", comment: ""), count, progress.totalUnitCount) + case .downloading: localizedAdditionalDescription = String.localizedStringWithFormat(NSLocalizedString("Downloading %d of %d", comment: ""), count, progress.totalUnitCount) + case .deleting: localizedAdditionalDescription = "" // Intentionally don't display anything for deleting. + } + } + else + { + localizedAdditionalDescription = "" + } + + self.localizedAdditionalDescription = localizedAdditionalDescription + } +} diff --git a/Pods/Headers/Private/DSDeltaCore/DSDeltaCore/Types/DSTypes.h b/Pods/Headers/Private/DSDeltaCore/DSDeltaCore/Types/DSTypes.h deleted file mode 120000 index 1e4119313..000000000 --- a/Pods/Headers/Private/DSDeltaCore/DSDeltaCore/Types/DSTypes.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/DSDeltaCore/DSDeltaCore/Types/DSTypes.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/Database.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/Database.h deleted file mode 120000 index 40dc7aa3b..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/Database.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/Database.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/FIFO.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/FIFO.h deleted file mode 120000 index c1a207dd5..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/FIFO.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/FIFO.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/GPU.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/GPU.h deleted file mode 120000 index 9ba002a04..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/GPU.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/GPU.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/MMU.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/MMU.h deleted file mode 120000 index f0a0d5df8..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/MMU.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/MMU.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/MMU_timing.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/MMU_timing.h deleted file mode 120000 index 642c8b9ae..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/MMU_timing.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/MMU_timing.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/NDSSystem.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/NDSSystem.h deleted file mode 120000 index df3b70aa5..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/NDSSystem.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/NDSSystem.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/OGLRender.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/OGLRender.h deleted file mode 120000 index b476b5fca..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/OGLRender.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/OGLRender.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/OGLRender_3_2.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/OGLRender_3_2.h deleted file mode 120000 index f47594126..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/OGLRender_3_2.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/OGLRender_3_2.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/PACKED.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/PACKED.h deleted file mode 120000 index 4a391e5fe..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/PACKED.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/PACKED.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/PACKED_END.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/PACKED_END.h deleted file mode 120000 index aae7d33f2..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/PACKED_END.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/PACKED_END.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/ROMReader.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/ROMReader.h deleted file mode 120000 index 9dff8c098..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/ROMReader.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/ROMReader.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/SPU.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/SPU.h deleted file mode 120000 index a1a15b387..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/SPU.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/SPU.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/arm_jit.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/arm_jit.h deleted file mode 120000 index c592aef11..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/arm_jit.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/arm_jit.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/armcpu.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/armcpu.h deleted file mode 120000 index 3b5df4121..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/armcpu.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/armcpu.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/bios.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/bios.h deleted file mode 120000 index 016919533..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/bios.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/bios.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/cheatSystem.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/cheatSystem.h deleted file mode 120000 index 23f989bec..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/cheatSystem.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/cheatSystem.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/commandline.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/commandline.h deleted file mode 120000 index 47fe64a47..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/commandline.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/commandline.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/common.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/common.h deleted file mode 120000 index 10d054fc7..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/common.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/common.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/cp15.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/cp15.h deleted file mode 120000 index 403fb8888..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/cp15.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/cp15.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/debug.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/debug.h deleted file mode 120000 index 4a50ad353..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/debug.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/debug.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/driver.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/driver.h deleted file mode 120000 index b02a7e620..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/driver.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/driver.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/emufile.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/emufile.h deleted file mode 120000 index 3d9f482cb..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/emufile.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/emufile.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/encrypt.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/encrypt.h deleted file mode 120000 index 994d81b32..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/encrypt.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/encrypt.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/firmware.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/firmware.h deleted file mode 120000 index 4ddfe30ce..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/firmware.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/firmware.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/gdbstub.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/gdbstub.h deleted file mode 120000 index 2863204aa..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/gdbstub.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/gdbstub.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/gfx3d.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/gfx3d.h deleted file mode 120000 index 0e7ab5362..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/gfx3d.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/gfx3d.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/instruction_attributes.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/instruction_attributes.h deleted file mode 120000 index 99eaf933a..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/instruction_attributes.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/instruction_attributes.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/instructions.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/instructions.h deleted file mode 120000 index 8ab66755e..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/instructions.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/instructions.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/boolean.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/boolean.h deleted file mode 120000 index 833c90478..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/boolean.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/libretro-common/include/boolean.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/clamping.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/clamping.h deleted file mode 120000 index 64475a0df..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/clamping.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/libretro-common/include/clamping.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/filters.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/filters.h deleted file mode 120000 index c7d8a7ec3..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/filters.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/libretro-common/include/filters.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/libco.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/libco.h deleted file mode 120000 index f2d6a7f8c..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/libco.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/libretro-common/include/libco.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/libretro.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/libretro.h deleted file mode 120000 index 68deba3b9..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/libretro.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/libretro-common/include/libretro.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/libretro_vulkan.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/libretro_vulkan.h deleted file mode 120000 index b37a21a6d..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/libretro_vulkan.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/libretro-common/include/libretro_vulkan.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/math/complex.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/math/complex.h deleted file mode 120000 index 5d501d884..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/math/complex.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/libretro-common/include/math/complex.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/math/fxp.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/math/fxp.h deleted file mode 120000 index cc658f76f..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/math/fxp.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/libretro-common/include/math/fxp.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/memalign.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/memalign.h deleted file mode 120000 index b0d8f7484..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/memalign.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/libretro-common/include/memalign.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/memmap.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/memmap.h deleted file mode 120000 index 43262751c..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/memmap.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/libretro-common/include/memmap.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_assert.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_assert.h deleted file mode 120000 index ae0ec9441..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_assert.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_assert.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_common.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_common.h deleted file mode 120000 index 3f8df4c9d..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_common.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_common.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_common_api.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_common_api.h deleted file mode 120000 index b530d7ccf..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_common_api.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_common_api.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_dirent.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_dirent.h deleted file mode 120000 index bcec7273e..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_dirent.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_dirent.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_endianness.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_endianness.h deleted file mode 120000 index a1c4e8c64..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_endianness.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_endianness.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_environment.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_environment.h deleted file mode 120000 index 00b1e0132..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_environment.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_environment.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_inline.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_inline.h deleted file mode 120000 index c28e8d52c..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_inline.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_inline.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_miscellaneous.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_miscellaneous.h deleted file mode 120000 index b3205591d..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_miscellaneous.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_miscellaneous.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_stat.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_stat.h deleted file mode 120000 index 71e1f425e..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_stat.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/libretro-common/include/retro_stat.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/rhash.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/rhash.h deleted file mode 120000 index eb7598b75..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include/rhash.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/libretro-common/include/rhash.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/lua-engine.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/lua-engine.h deleted file mode 120000 index 3952850d1..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/lua-engine.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/lua-engine.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/matrix.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/matrix.h deleted file mode 120000 index 6a5db56a3..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/matrix.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/matrix.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/mc.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/mc.h deleted file mode 120000 index 0902a8066..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/mc.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/mc.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/mem.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/mem.h deleted file mode 120000 index a516a3f8b..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/mem.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/mem.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SndOut.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SndOut.h deleted file mode 120000 index 59bd9211c..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SndOut.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/metaspu/SndOut.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/AAFilter.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/AAFilter.h deleted file mode 120000 index 1f714bc27..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/AAFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/AAFilter.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/BPMDetect.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/BPMDetect.h deleted file mode 120000 index 4bb3ca69e..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/BPMDetect.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/BPMDetect.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/FIFOSampleBuffer.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/FIFOSampleBuffer.h deleted file mode 120000 index a116d7780..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/FIFOSampleBuffer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/FIFOSampleBuffer.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/FIFOSamplePipe.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/FIFOSamplePipe.h deleted file mode 120000 index 8e1361a12..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/FIFOSamplePipe.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/FIFOSamplePipe.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/FIRFilter.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/FIRFilter.h deleted file mode 120000 index d6361f547..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/FIRFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/FIRFilter.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/RateTransposer.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/RateTransposer.h deleted file mode 120000 index cfcc42729..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/RateTransposer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/RateTransposer.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/STTypes.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/STTypes.h deleted file mode 120000 index 37585e74f..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/STTypes.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/STTypes.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/SoundTouch.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/SoundTouch.h deleted file mode 120000 index d5d953e20..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/SoundTouch.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/SoundTouch.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/TDStretch.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/TDStretch.h deleted file mode 120000 index 366f018d3..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/TDStretch.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/TDStretch.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/WavFile.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/WavFile.h deleted file mode 120000 index 3e35cf6ee..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/WavFile.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/WavFile.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/cpu_detect.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/cpu_detect.h deleted file mode 120000 index 18fd162a6..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/cpu_detect.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/metaspu/SoundTouch/cpu_detect.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/metaspu.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/metaspu.h deleted file mode 120000 index e08f158d3..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/metaspu.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/metaspu/metaspu.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/win32/Dialogs.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/win32/Dialogs.h deleted file mode 120000 index 5633e038d..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/metaspu/win32/Dialogs.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/metaspu/win32/Dialogs.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/mic.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/mic.h deleted file mode 120000 index feb76f24f..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/mic.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/mic.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/movie.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/movie.h deleted file mode 120000 index 87befc015..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/movie.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/movie.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/path.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/path.h deleted file mode 120000 index e20ad1db8..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/path.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/path.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/rasterize.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/rasterize.h deleted file mode 120000 index 2648ac431..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/rasterize.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/rasterize.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/readwrite.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/readwrite.h deleted file mode 120000 index daee9aedf..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/readwrite.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/readwrite.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/registers.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/registers.h deleted file mode 120000 index c14b5d8a0..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/registers.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/registers.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/render3D.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/render3D.h deleted file mode 120000 index 41e6d49a6..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/render3D.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/render3D.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/rtc.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/rtc.h deleted file mode 120000 index 46d31bb44..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/rtc.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/rtc.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/saves.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/saves.h deleted file mode 120000 index 93017a957..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/saves.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/saves.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/scmrev.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/scmrev.h deleted file mode 120000 index 411f5853a..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/scmrev.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/scmrev.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/slot1.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/slot1.h deleted file mode 120000 index 574ea8ee9..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/slot1.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/slot1.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/slot2.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/slot2.h deleted file mode 120000 index 7f200b1c3..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/slot2.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/slot2.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/texcache.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/texcache.h deleted file mode 120000 index 3de872562..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/texcache.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/texcache.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/types.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/types.h deleted file mode 120000 index 7131ec1ee..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/types.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/types.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/version.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/version.h deleted file mode 120000 index d119e6e74..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/version.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/version.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/wifi.h b/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/wifi.h deleted file mode 120000 index 64ea60bba..000000000 --- a/Pods/Headers/Private/DSDeltaCore/desmume/desmume/src/wifi.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/DSDeltaCore/desmume/desmume/src/wifi.h \ No newline at end of file diff --git a/Pods/Headers/Private/DSDeltaCore/libDeSmuME/pcap.h b/Pods/Headers/Private/DSDeltaCore/libDeSmuME/pcap.h deleted file mode 120000 index 9c31d32d2..000000000 --- a/Pods/Headers/Private/DSDeltaCore/libDeSmuME/pcap.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/DSDeltaCore/libDeSmuME/pcap.h \ No newline at end of file diff --git a/Pods/Headers/Private/DeltaCore/DLTAMuteSwitchMonitor.h b/Pods/Headers/Private/DeltaCore/DLTAMuteSwitchMonitor.h deleted file mode 120000 index 6ae371ca6..000000000 --- a/Pods/Headers/Private/DeltaCore/DLTAMuteSwitchMonitor.h +++ /dev/null @@ -1 +0,0 @@ -../../../../Cores/DeltaCore/DeltaCore/Emulator Core/Audio/DLTAMuteSwitchMonitor.h \ No newline at end of file diff --git a/Pods/Headers/Private/DeltaCore/DeltaCore.h b/Pods/Headers/Private/DeltaCore/DeltaCore.h deleted file mode 120000 index 3db301761..000000000 --- a/Pods/Headers/Private/DeltaCore/DeltaCore.h +++ /dev/null @@ -1 +0,0 @@ -../../../../Cores/DeltaCore/DeltaCore/DeltaCore.h \ No newline at end of file diff --git a/Pods/Headers/Private/DeltaCore/DeltaTypes.h b/Pods/Headers/Private/DeltaCore/DeltaTypes.h deleted file mode 120000 index e1aa22f7d..000000000 --- a/Pods/Headers/Private/DeltaCore/DeltaTypes.h +++ /dev/null @@ -1 +0,0 @@ -../../../../Cores/DeltaCore/DeltaCore/DeltaTypes.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/GBADeltaCore/Bridge/GBAEmulatorBridge.h b/Pods/Headers/Private/GBADeltaCore/GBADeltaCore/Bridge/GBAEmulatorBridge.h deleted file mode 120000 index 8d4c629f0..000000000 --- a/Pods/Headers/Private/GBADeltaCore/GBADeltaCore/Bridge/GBAEmulatorBridge.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/GBADeltaCore/GBADeltaCore/Bridge/GBAEmulatorBridge.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/GBADeltaCore/Bridge/GBASoundDriver.h b/Pods/Headers/Private/GBADeltaCore/GBADeltaCore/Bridge/GBASoundDriver.h deleted file mode 120000 index 0216d2a35..000000000 --- a/Pods/Headers/Private/GBADeltaCore/GBADeltaCore/Bridge/GBASoundDriver.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/GBADeltaCore/GBADeltaCore/Bridge/GBASoundDriver.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/GBADeltaCore/GBADeltaCore.h b/Pods/Headers/Private/GBADeltaCore/GBADeltaCore/GBADeltaCore.h deleted file mode 120000 index a9dfee292..000000000 --- a/Pods/Headers/Private/GBADeltaCore/GBADeltaCore/GBADeltaCore.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/GBADeltaCore/GBADeltaCore/GBADeltaCore.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/GBADeltaCore/Types/GBATypes.h b/Pods/Headers/Private/GBADeltaCore/GBADeltaCore/Types/GBATypes.h deleted file mode 120000 index 02bec4b28..000000000 --- a/Pods/Headers/Private/GBADeltaCore/GBADeltaCore/Types/GBATypes.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/GBADeltaCore/GBADeltaCore/Types/GBATypes.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio.hpp deleted file mode 120000 index 1b9d46e73..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Audio.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/AlResource.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/AlResource.hpp deleted file mode 120000 index 523a751c7..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/AlResource.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Audio/AlResource.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/Export.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/Export.hpp deleted file mode 120000 index d1f28c985..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/Export.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Audio/Export.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/InputSoundFile.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/InputSoundFile.hpp deleted file mode 120000 index ce79dbd06..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/InputSoundFile.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Audio/InputSoundFile.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/Listener.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/Listener.hpp deleted file mode 120000 index 37496e0d3..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/Listener.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Audio/Listener.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/Music.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/Music.hpp deleted file mode 120000 index b6ade58d6..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/Music.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Audio/Music.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/OutputSoundFile.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/OutputSoundFile.hpp deleted file mode 120000 index 773abcef0..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/OutputSoundFile.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Audio/OutputSoundFile.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/Sound.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/Sound.hpp deleted file mode 120000 index 31a871883..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/Sound.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Audio/Sound.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/SoundBuffer.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/SoundBuffer.hpp deleted file mode 120000 index c3794455e..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/SoundBuffer.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Audio/SoundBuffer.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/SoundBufferRecorder.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/SoundBufferRecorder.hpp deleted file mode 120000 index 311511c5b..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/SoundBufferRecorder.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Audio/SoundBufferRecorder.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/SoundFileFactory.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/SoundFileFactory.hpp deleted file mode 120000 index ce0e303a6..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/SoundFileFactory.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Audio/SoundFileFactory.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/SoundFileFactory.inl b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/SoundFileFactory.inl deleted file mode 120000 index 4b8e5a5d7..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/SoundFileFactory.inl +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Audio/SoundFileFactory.inl \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/SoundFileReader.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/SoundFileReader.hpp deleted file mode 120000 index 658cca342..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/SoundFileReader.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Audio/SoundFileReader.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/SoundFileWriter.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/SoundFileWriter.hpp deleted file mode 120000 index 9b8ba706f..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/SoundFileWriter.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Audio/SoundFileWriter.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/SoundRecorder.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/SoundRecorder.hpp deleted file mode 120000 index a201fb106..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/SoundRecorder.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Audio/SoundRecorder.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/SoundSource.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/SoundSource.hpp deleted file mode 120000 index de69e370f..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/SoundSource.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Audio/SoundSource.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/SoundStream.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/SoundStream.hpp deleted file mode 120000 index 9d07819bc..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Audio/SoundStream.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Audio/SoundStream.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Config.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Config.hpp deleted file mode 120000 index 33c196bab..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Config.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Config.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics.hpp deleted file mode 120000 index f309e6c28..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/BlendMode.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/BlendMode.hpp deleted file mode 120000 index 0e55736d4..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/BlendMode.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/BlendMode.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/CircleShape.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/CircleShape.hpp deleted file mode 120000 index 016bf8931..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/CircleShape.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/CircleShape.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Color.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Color.hpp deleted file mode 120000 index 53e252953..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Color.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/Color.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/ConvexShape.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/ConvexShape.hpp deleted file mode 120000 index 14fc539bc..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/ConvexShape.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/ConvexShape.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Drawable.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Drawable.hpp deleted file mode 120000 index 08c4a421a..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Drawable.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/Drawable.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Export.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Export.hpp deleted file mode 120000 index 61d7cc5fd..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Export.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/Export.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Font.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Font.hpp deleted file mode 120000 index e193d5e3b..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Font.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/Font.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Glsl.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Glsl.hpp deleted file mode 120000 index 088854faf..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Glsl.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/Glsl.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Glsl.inl b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Glsl.inl deleted file mode 120000 index 7fae97b13..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Glsl.inl +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/Glsl.inl \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Glyph.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Glyph.hpp deleted file mode 120000 index c22851a21..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Glyph.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/Glyph.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Image.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Image.hpp deleted file mode 120000 index 84e11a88b..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Image.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/Image.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/PrimitiveType.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/PrimitiveType.hpp deleted file mode 120000 index 28762fc9d..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/PrimitiveType.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/PrimitiveType.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Rect.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Rect.hpp deleted file mode 120000 index 04047ddc8..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Rect.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/Rect.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Rect.inl b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Rect.inl deleted file mode 120000 index 4f75e29ba..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Rect.inl +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/Rect.inl \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/RectangleShape.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/RectangleShape.hpp deleted file mode 120000 index a63e69726..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/RectangleShape.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/RectangleShape.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/RenderStates.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/RenderStates.hpp deleted file mode 120000 index 1178fce9e..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/RenderStates.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/RenderStates.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/RenderTarget.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/RenderTarget.hpp deleted file mode 120000 index 6519c58fc..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/RenderTarget.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/RenderTarget.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/RenderTexture.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/RenderTexture.hpp deleted file mode 120000 index 7ae3c39ad..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/RenderTexture.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/RenderTexture.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/RenderWindow.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/RenderWindow.hpp deleted file mode 120000 index 6b38b8285..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/RenderWindow.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/RenderWindow.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Shader.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Shader.hpp deleted file mode 120000 index 7d36f2ca9..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Shader.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/Shader.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Shape.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Shape.hpp deleted file mode 120000 index d677cbe3d..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Shape.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/Shape.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Sprite.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Sprite.hpp deleted file mode 120000 index 9549fffce..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Sprite.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/Sprite.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Text.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Text.hpp deleted file mode 120000 index 2a1822ce2..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Text.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/Text.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Texture.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Texture.hpp deleted file mode 120000 index 547bf3da7..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Texture.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/Texture.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Transform.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Transform.hpp deleted file mode 120000 index 609415820..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Transform.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/Transform.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Transformable.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Transformable.hpp deleted file mode 120000 index f9dd9b8ac..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Transformable.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/Transformable.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Vertex.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Vertex.hpp deleted file mode 120000 index 36023e58b..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/Vertex.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/Vertex.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/VertexArray.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/VertexArray.hpp deleted file mode 120000 index a90da609b..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/VertexArray.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/VertexArray.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/View.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/View.hpp deleted file mode 120000 index e9b6c1a80..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Graphics/View.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Graphics/View.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Main.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Main.hpp deleted file mode 120000 index 1b83ae8cc..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Main.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Main.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network.hpp deleted file mode 120000 index dfe27830a..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Network.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/Export.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/Export.hpp deleted file mode 120000 index 6275321aa..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/Export.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Network/Export.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/Ftp.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/Ftp.hpp deleted file mode 120000 index a3b36b922..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/Ftp.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Network/Ftp.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/Http.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/Http.hpp deleted file mode 120000 index bff047d84..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/Http.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Network/Http.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/IpAddress.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/IpAddress.hpp deleted file mode 120000 index 7fa55097c..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/IpAddress.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Network/IpAddress.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/Packet.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/Packet.hpp deleted file mode 120000 index 484cea1e0..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/Packet.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Network/Packet.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/Socket.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/Socket.hpp deleted file mode 120000 index c7b1e0153..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/Socket.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Network/Socket.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/SocketHandle.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/SocketHandle.hpp deleted file mode 120000 index 45159949e..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/SocketHandle.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Network/SocketHandle.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/SocketSelector.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/SocketSelector.hpp deleted file mode 120000 index 442d56320..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/SocketSelector.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Network/SocketSelector.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/TcpListener.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/TcpListener.hpp deleted file mode 120000 index f09f8f597..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/TcpListener.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Network/TcpListener.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/TcpSocket.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/TcpSocket.hpp deleted file mode 120000 index 9cc18768c..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/TcpSocket.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Network/TcpSocket.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/UdpSocket.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/UdpSocket.hpp deleted file mode 120000 index 722cf9506..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Network/UdpSocket.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Network/UdpSocket.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/OpenGL.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/OpenGL.hpp deleted file mode 120000 index 731ccc1cc..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/OpenGL.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/OpenGL.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System.hpp deleted file mode 120000 index 76d11943c..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/System.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Clock.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Clock.hpp deleted file mode 120000 index 3d41e6afa..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Clock.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/System/Clock.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Err.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Err.hpp deleted file mode 120000 index f317d75cc..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Err.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/System/Err.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Export.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Export.hpp deleted file mode 120000 index c420fae85..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Export.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/System/Export.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/FileInputStream.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/FileInputStream.hpp deleted file mode 120000 index b2004d8b6..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/FileInputStream.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/System/FileInputStream.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/InputStream.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/InputStream.hpp deleted file mode 120000 index e12071e29..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/InputStream.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/System/InputStream.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Lock.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Lock.hpp deleted file mode 120000 index ec4416835..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Lock.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/System/Lock.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/MemoryInputStream.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/MemoryInputStream.hpp deleted file mode 120000 index b375f8fce..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/MemoryInputStream.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/System/MemoryInputStream.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Mutex.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Mutex.hpp deleted file mode 120000 index 429c40569..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Mutex.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/System/Mutex.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/NativeActivity.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/NativeActivity.hpp deleted file mode 120000 index b993b5c0b..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/NativeActivity.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/System/NativeActivity.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/NonCopyable.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/NonCopyable.hpp deleted file mode 120000 index 69d8bb0b6..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/NonCopyable.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/System/NonCopyable.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Sleep.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Sleep.hpp deleted file mode 120000 index 6a4703ea7..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Sleep.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/System/Sleep.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/String.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/String.hpp deleted file mode 120000 index 2c0e18a74..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/String.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/System/String.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/String.inl b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/String.inl deleted file mode 120000 index 7f28dfc3d..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/String.inl +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/System/String.inl \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Thread.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Thread.hpp deleted file mode 120000 index e8cea5ebe..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Thread.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/System/Thread.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Thread.inl b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Thread.inl deleted file mode 120000 index db70c6450..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Thread.inl +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/System/Thread.inl \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/ThreadLocal.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/ThreadLocal.hpp deleted file mode 120000 index 68fd8c867..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/ThreadLocal.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/System/ThreadLocal.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/ThreadLocalPtr.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/ThreadLocalPtr.hpp deleted file mode 120000 index d426fec8d..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/ThreadLocalPtr.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/System/ThreadLocalPtr.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/ThreadLocalPtr.inl b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/ThreadLocalPtr.inl deleted file mode 120000 index 405a62f41..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/ThreadLocalPtr.inl +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/System/ThreadLocalPtr.inl \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Time.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Time.hpp deleted file mode 120000 index 8779c7858..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Time.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/System/Time.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Utf.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Utf.hpp deleted file mode 120000 index b95657b7f..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Utf.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/System/Utf.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Utf.inl b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Utf.inl deleted file mode 120000 index aed82fd47..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Utf.inl +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/System/Utf.inl \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Vector2.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Vector2.hpp deleted file mode 120000 index e0d297cd3..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Vector2.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/System/Vector2.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Vector2.inl b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Vector2.inl deleted file mode 120000 index c6b43a12f..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Vector2.inl +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/System/Vector2.inl \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Vector3.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Vector3.hpp deleted file mode 120000 index bbd899836..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Vector3.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/System/Vector3.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Vector3.inl b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Vector3.inl deleted file mode 120000 index 8ef0dd4f2..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/System/Vector3.inl +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/System/Vector3.inl \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window.hpp deleted file mode 120000 index 58d81dcea..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Window.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/Context.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/Context.hpp deleted file mode 120000 index 4ba44b574..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/Context.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Window/Context.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/ContextSettings.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/ContextSettings.hpp deleted file mode 120000 index dc2c2b6c5..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/ContextSettings.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Window/ContextSettings.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/Event.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/Event.hpp deleted file mode 120000 index 5bc3f53c5..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/Event.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Window/Event.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/Export.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/Export.hpp deleted file mode 120000 index 15f302683..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/Export.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Window/Export.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/GlResource.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/GlResource.hpp deleted file mode 120000 index e7c2eadf4..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/GlResource.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Window/GlResource.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/Joystick.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/Joystick.hpp deleted file mode 120000 index 456335b9d..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/Joystick.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Window/Joystick.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/Keyboard.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/Keyboard.hpp deleted file mode 120000 index c3cc7386c..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/Keyboard.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Window/Keyboard.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/Mouse.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/Mouse.hpp deleted file mode 120000 index 59424f4a8..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/Mouse.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Window/Mouse.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/Sensor.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/Sensor.hpp deleted file mode 120000 index 17c56ea97..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/Sensor.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Window/Sensor.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/Touch.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/Touch.hpp deleted file mode 120000 index 1e1633d4f..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/Touch.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Window/Touch.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/VideoMode.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/VideoMode.hpp deleted file mode 120000 index b96150c5d..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/VideoMode.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Window/VideoMode.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/Window.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/Window.hpp deleted file mode 120000 index a2af89118..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/Window.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Window/Window.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/WindowHandle.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/WindowHandle.hpp deleted file mode 120000 index 191d72404..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/WindowHandle.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Window/WindowHandle.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/WindowStyle.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/WindowStyle.hpp deleted file mode 120000 index 5483c6a0c..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/include/SFML/Window/WindowStyle.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/GBADeltaCore/SFML/include/SFML/Window/WindowStyle.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/SFML/src/SFML/System/Unix/ThreadImpl.hpp b/Pods/Headers/Private/GBADeltaCore/SFML/src/SFML/System/Unix/ThreadImpl.hpp deleted file mode 120000 index e4fb99c60..000000000 --- a/Pods/Headers/Private/GBADeltaCore/SFML/src/SFML/System/Unix/ThreadImpl.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/GBADeltaCore/SFML/src/SFML/System/Unix/ThreadImpl.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/AutoBuild.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/AutoBuild.h deleted file mode 120000 index 436b69afc..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/AutoBuild.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/AutoBuild.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/NLS.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/NLS.h deleted file mode 120000 index db89a3100..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/NLS.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/NLS.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/System.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/System.h deleted file mode 120000 index bf4506576..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/System.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/System.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/Util.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/Util.h deleted file mode 120000 index c8303679a..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/Util.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/Util.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/ConfigManager.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/ConfigManager.h deleted file mode 120000 index bd1bb0cea..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/ConfigManager.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/common/ConfigManager.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/Patch.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/Patch.h deleted file mode 120000 index 0d674a281..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/Patch.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/common/Patch.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/Port.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/Port.h deleted file mode 120000 index 20cb11980..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/Port.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/common/Port.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/SoundDriver.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/SoundDriver.h deleted file mode 120000 index d22c89862..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/SoundDriver.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/common/SoundDriver.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/SoundSDL.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/SoundSDL.h deleted file mode 120000 index 37ee04a35..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/SoundSDL.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/common/SoundSDL.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/Types.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/Types.h deleted file mode 120000 index 932f3f52e..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/Types.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/common/Types.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/array.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/array.h deleted file mode 120000 index 233390854..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/array.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/common/array.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/cstdint.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/cstdint.h deleted file mode 120000 index 63b5e2443..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/cstdint.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/common/cstdint.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/dictionary.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/dictionary.h deleted file mode 120000 index d1c4015fa..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/dictionary.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/common/dictionary.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/ffmpeg.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/ffmpeg.h deleted file mode 120000 index aab4ed694..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/ffmpeg.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/common/ffmpeg.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/iniparser.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/iniparser.h deleted file mode 120000 index 7bb4deb7c..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/iniparser.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/common/iniparser.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/memgzio.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/memgzio.h deleted file mode 120000 index bdeeb75ad..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/memgzio.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/common/memgzio.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/ringbuffer.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/ringbuffer.h deleted file mode 120000 index f8f0bee94..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/common/ringbuffer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/common/ringbuffer.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/BreakpointStructures.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/BreakpointStructures.h deleted file mode 120000 index ff607cc0f..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/BreakpointStructures.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/gba/BreakpointStructures.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/CheatSearch.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/CheatSearch.h deleted file mode 120000 index e7a510b89..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/CheatSearch.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/gba/CheatSearch.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/Cheats.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/Cheats.h deleted file mode 120000 index b9f27f35e..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/Cheats.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/gba/Cheats.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/EEprom.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/EEprom.h deleted file mode 120000 index cb5b2a3af..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/EEprom.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/gba/EEprom.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/Flash.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/Flash.h deleted file mode 120000 index 4a4518c8d..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/Flash.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/gba/Flash.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/GBA.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/GBA.h deleted file mode 120000 index 6cb09e7a7..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/GBA.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/gba/GBA.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/GBAGfx.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/GBAGfx.h deleted file mode 120000 index ef2ddbb31..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/GBAGfx.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/gba/GBAGfx.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/GBALink.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/GBALink.h deleted file mode 120000 index 0fcd3625b..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/GBALink.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/gba/GBALink.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/GBASockClient.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/GBASockClient.h deleted file mode 120000 index 2359b0466..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/GBASockClient.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/gba/GBASockClient.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/GBAcpu.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/GBAcpu.h deleted file mode 120000 index fb18df252..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/GBAcpu.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/gba/GBAcpu.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/GBAinline.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/GBAinline.h deleted file mode 120000 index c289166ba..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/GBAinline.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/gba/GBAinline.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/Globals.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/Globals.h deleted file mode 120000 index bf0ea3b26..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/Globals.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/gba/Globals.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/RTC.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/RTC.h deleted file mode 120000 index 4792c1aae..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/RTC.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/gba/RTC.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/Sound.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/Sound.h deleted file mode 120000 index 3f663959e..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/Sound.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/gba/Sound.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/Sram.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/Sram.h deleted file mode 120000 index 28f942743..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/Sram.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/gba/Sram.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/agbprint.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/agbprint.h deleted file mode 120000 index 4c73c4aa4..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/agbprint.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/gba/agbprint.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/armdis.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/armdis.h deleted file mode 120000 index d7571f7df..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/armdis.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/gba/armdis.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/bios.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/bios.h deleted file mode 120000 index 503fa4f91..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/bios.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/gba/bios.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/elf.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/elf.h deleted file mode 120000 index 7586ea228..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/elf.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/gba/elf.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/ereader.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/ereader.h deleted file mode 120000 index 9dd92590f..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/ereader.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/gba/ereader.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/gbafilter.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/gbafilter.h deleted file mode 120000 index 8940f6cfe..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/gbafilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/gba/gbafilter.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/remote.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/remote.h deleted file mode 120000 index 82b00d857..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/gba/remote.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/gba/remote.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/sdl/debugger.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/sdl/debugger.h deleted file mode 120000 index 567f00999..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/sdl/debugger.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/sdl/debugger.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/sdl/expr.cpp.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/sdl/expr.cpp.h deleted file mode 120000 index 97d4c438e..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/sdl/expr.cpp.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/sdl/expr.cpp.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/sdl/exprNode.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/sdl/exprNode.h deleted file mode 120000 index 89c1ad0eb..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/sdl/exprNode.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/sdl/exprNode.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/sdl/filters.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/sdl/filters.h deleted file mode 120000 index cce53d184..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/sdl/filters.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/sdl/filters.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/sdl/getopt.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/sdl/getopt.h deleted file mode 120000 index 015c5458b..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/sdl/getopt.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/sdl/getopt.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/sdl/inputSDL.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/sdl/inputSDL.h deleted file mode 120000 index 335d0a8af..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/sdl/inputSDL.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/sdl/inputSDL.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/sdl/text.h b/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/sdl/text.h deleted file mode 120000 index 39be6b5a0..000000000 --- a/Pods/Headers/Private/GBADeltaCore/visualboyadvance-m/src/sdl/text.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBADeltaCore/visualboyadvance-m/src/sdl/text.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/GBCDeltaCore/Bridge/GBCEmulatorBridge.h b/Pods/Headers/Private/GBCDeltaCore/GBCDeltaCore/Bridge/GBCEmulatorBridge.h deleted file mode 120000 index b382a5b9b..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/GBCDeltaCore/Bridge/GBCEmulatorBridge.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/GBCDeltaCore/GBCDeltaCore/Bridge/GBCEmulatorBridge.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/GBCDeltaCore/Bridge/GBCInputGetter.h b/Pods/Headers/Private/GBCDeltaCore/GBCDeltaCore/Bridge/GBCInputGetter.h deleted file mode 120000 index 6220037e9..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/GBCDeltaCore/Bridge/GBCInputGetter.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/GBCDeltaCore/GBCDeltaCore/Bridge/GBCInputGetter.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/GBCDeltaCore/GBCDeltaCore.h b/Pods/Headers/Private/GBCDeltaCore/GBCDeltaCore/GBCDeltaCore.h deleted file mode 120000 index 194b074d8..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/GBCDeltaCore/GBCDeltaCore.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/GBCDeltaCore/GBCDeltaCore/GBCDeltaCore.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/GBCDeltaCore/Model/GBCCheat.h b/Pods/Headers/Private/GBCDeltaCore/GBCDeltaCore/Model/GBCCheat.h deleted file mode 120000 index 32f737b63..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/GBCDeltaCore/Model/GBCCheat.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/GBCDeltaCore/GBCDeltaCore/Model/GBCCheat.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/GBCDeltaCore/Types/GBCTypes.h b/Pods/Headers/Private/GBCDeltaCore/GBCDeltaCore/Types/GBCTypes.h deleted file mode 120000 index e3b347ea2..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/GBCDeltaCore/Types/GBCTypes.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/GBCDeltaCore/GBCDeltaCore/Types/GBCTypes.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/common/adaptivesleep.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/common/adaptivesleep.h deleted file mode 120000 index 0a97c068c..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/common/adaptivesleep.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/GBCDeltaCore/gambatte/common/adaptivesleep.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/common/array.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/common/array.h deleted file mode 120000 index c83c460f5..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/common/array.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/GBCDeltaCore/gambatte/common/array.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/common/defined_ptr.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/common/defined_ptr.h deleted file mode 120000 index 514a751a8..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/common/defined_ptr.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/GBCDeltaCore/gambatte/common/defined_ptr.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/common/rateest.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/common/rateest.h deleted file mode 120000 index 32fd4de03..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/common/rateest.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/GBCDeltaCore/gambatte/common/rateest.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/common/ringbuffer.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/common/ringbuffer.h deleted file mode 120000 index bcdb49875..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/common/ringbuffer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/GBCDeltaCore/gambatte/common/ringbuffer.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/common/scoped_ptr.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/common/scoped_ptr.h deleted file mode 120000 index 30974f2ce..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/common/scoped_ptr.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/GBCDeltaCore/gambatte/common/scoped_ptr.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/common/skipsched.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/common/skipsched.h deleted file mode 120000 index 7398b983a..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/common/skipsched.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/GBCDeltaCore/gambatte/common/skipsched.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/common/transfer_ptr.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/common/transfer_ptr.h deleted file mode 120000 index d78735867..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/common/transfer_ptr.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/GBCDeltaCore/gambatte/common/transfer_ptr.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/common/uncopyable.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/common/uncopyable.h deleted file mode 120000 index cca719ed9..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/common/uncopyable.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/GBCDeltaCore/gambatte/common/uncopyable.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/common/usec.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/common/usec.h deleted file mode 120000 index 3905d4484..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/common/usec.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/GBCDeltaCore/gambatte/common/usec.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/include/gambatte.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/include/gambatte.h deleted file mode 120000 index 7490e43b3..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/include/gambatte.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBCDeltaCore/gambatte/libgambatte/include/gambatte.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/include/gbint.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/include/gbint.h deleted file mode 120000 index 266606b3f..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/include/gbint.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBCDeltaCore/gambatte/libgambatte/include/gbint.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/include/inputgetter.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/include/inputgetter.h deleted file mode 120000 index 84d2b5f0b..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/include/inputgetter.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBCDeltaCore/gambatte/libgambatte/include/inputgetter.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/include/loadres.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/include/loadres.h deleted file mode 120000 index 6fa59de20..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/include/loadres.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBCDeltaCore/gambatte/libgambatte/include/loadres.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/include/pakinfo.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/include/pakinfo.h deleted file mode 120000 index de4bc1e58..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/include/pakinfo.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBCDeltaCore/gambatte/libgambatte/include/pakinfo.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/bitmap_font.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/bitmap_font.h deleted file mode 120000 index f5242315a..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/bitmap_font.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBCDeltaCore/gambatte/libgambatte/src/bitmap_font.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/counterdef.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/counterdef.h deleted file mode 120000 index 23c117bdd..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/counterdef.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBCDeltaCore/gambatte/libgambatte/src/counterdef.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/cpu.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/cpu.h deleted file mode 120000 index bddb90e64..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/cpu.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBCDeltaCore/gambatte/libgambatte/src/cpu.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/initstate.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/initstate.h deleted file mode 120000 index 823373f87..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/initstate.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBCDeltaCore/gambatte/libgambatte/src/initstate.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/insertion_sort.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/insertion_sort.h deleted file mode 120000 index 679e05e9b..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/insertion_sort.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBCDeltaCore/gambatte/libgambatte/src/insertion_sort.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/interrupter.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/interrupter.h deleted file mode 120000 index 54e843774..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/interrupter.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBCDeltaCore/gambatte/libgambatte/src/interrupter.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/interruptrequester.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/interruptrequester.h deleted file mode 120000 index 3d0dc1f95..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/interruptrequester.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBCDeltaCore/gambatte/libgambatte/src/interruptrequester.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/memory.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/memory.h deleted file mode 120000 index 0813f5bb6..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/memory.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBCDeltaCore/gambatte/libgambatte/src/memory.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/minkeeper.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/minkeeper.h deleted file mode 120000 index d31280aac..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/minkeeper.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBCDeltaCore/gambatte/libgambatte/src/minkeeper.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/osd_element.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/osd_element.h deleted file mode 120000 index e50a48f55..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/osd_element.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBCDeltaCore/gambatte/libgambatte/src/osd_element.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/savestate.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/savestate.h deleted file mode 120000 index aa0349192..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/savestate.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBCDeltaCore/gambatte/libgambatte/src/savestate.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/sound.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/sound.h deleted file mode 120000 index 39099971c..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/sound.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBCDeltaCore/gambatte/libgambatte/src/sound.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/state_osd_elements.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/state_osd_elements.h deleted file mode 120000 index fbe13f90c..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/state_osd_elements.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBCDeltaCore/gambatte/libgambatte/src/state_osd_elements.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/statesaver.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/statesaver.h deleted file mode 120000 index 8319705d6..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/statesaver.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBCDeltaCore/gambatte/libgambatte/src/statesaver.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/tima.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/tima.h deleted file mode 120000 index 7176055e2..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/tima.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBCDeltaCore/gambatte/libgambatte/src/tima.h \ No newline at end of file diff --git a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/video.h b/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/video.h deleted file mode 120000 index 87cde48e2..000000000 --- a/Pods/Headers/Private/GBCDeltaCore/gambatte/libgambatte/src/video.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/GBCDeltaCore/gambatte/libgambatte/src/video.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/MelonDSDeltaCore/Bridge/MelonDSEmulatorBridge.h b/Pods/Headers/Private/MelonDSDeltaCore/MelonDSDeltaCore/Bridge/MelonDSEmulatorBridge.h deleted file mode 120000 index 6e84fee97..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/MelonDSDeltaCore/Bridge/MelonDSEmulatorBridge.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/MelonDSDeltaCore/Bridge/MelonDSEmulatorBridge.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/MelonDSDeltaCore/MelonDSDeltaCore.h b/Pods/Headers/Private/MelonDSDeltaCore/MelonDSDeltaCore/MelonDSDeltaCore.h deleted file mode 120000 index 852a84edc..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/MelonDSDeltaCore/MelonDSDeltaCore.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/MelonDSDeltaCore/MelonDSDeltaCore/MelonDSDeltaCore.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/MelonDSDeltaCore/Types/MelonDSTypes.h b/Pods/Headers/Private/MelonDSDeltaCore/MelonDSDeltaCore/Types/MelonDSTypes.h deleted file mode 120000 index 5a3884dfc..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/MelonDSDeltaCore/Types/MelonDSTypes.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/MelonDSDeltaCore/Types/MelonDSTypes.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARCodeFile.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARCodeFile.h deleted file mode 120000 index 1b1c60f25..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARCodeFile.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/ARCodeFile.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/AREngine.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/AREngine.h deleted file mode 120000 index 0a453e9e9..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/AREngine.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/AREngine.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARM.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARM.h deleted file mode 120000 index 8b77d3f0a..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARM.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/ARM.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMInterpreter.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMInterpreter.h deleted file mode 120000 index 97d2275d6..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMInterpreter.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/ARMInterpreter.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMInterpreter_ALU.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMInterpreter_ALU.h deleted file mode 120000 index 4c87f769c..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMInterpreter_ALU.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/ARMInterpreter_ALU.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMInterpreter_Branch.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMInterpreter_Branch.h deleted file mode 120000 index be3a2c456..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMInterpreter_Branch.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/ARMInterpreter_Branch.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMInterpreter_LoadStore.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMInterpreter_LoadStore.h deleted file mode 120000 index 8688d174c..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMInterpreter_LoadStore.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/ARMInterpreter_LoadStore.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMJIT.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMJIT.h deleted file mode 120000 index 9a4001e95..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMJIT.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/ARMJIT.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMJIT_A64/ARMJIT_Compiler.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMJIT_A64/ARMJIT_Compiler.h deleted file mode 120000 index 222ff1926..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMJIT_A64/ARMJIT_Compiler.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/MelonDSDeltaCore/melonDS/src/ARMJIT_A64/ARMJIT_Compiler.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMJIT_Compiler.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMJIT_Compiler.h deleted file mode 120000 index 7c88a387b..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMJIT_Compiler.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/ARMJIT_Compiler.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMJIT_Internal.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMJIT_Internal.h deleted file mode 120000 index 026b48d89..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMJIT_Internal.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/ARMJIT_Internal.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMJIT_Memory.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMJIT_Memory.h deleted file mode 120000 index cae09ffa7..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMJIT_Memory.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/ARMJIT_Memory.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMJIT_RegisterCache.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMJIT_RegisterCache.h deleted file mode 120000 index 61f0a7646..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARMJIT_RegisterCache.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/ARMJIT_RegisterCache.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARM_InstrInfo.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARM_InstrInfo.h deleted file mode 120000 index e3068bd9e..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARM_InstrInfo.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/ARM_InstrInfo.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARM_InstrTable.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARM_InstrTable.h deleted file mode 120000 index a52b7e899..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ARM_InstrTable.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/ARM_InstrTable.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/CRC32.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/CRC32.h deleted file mode 120000 index c4e07b90e..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/CRC32.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/CRC32.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/Config.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/Config.h deleted file mode 120000 index e735ddbf7..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/Config.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/Config.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DMA.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DMA.h deleted file mode 120000 index 4cb063acf..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DMA.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/DMA.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DSi.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DSi.h deleted file mode 120000 index 4b70e54ba..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DSi.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/DSi.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DSiCrypto.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DSiCrypto.h deleted file mode 120000 index ab94bb9aa..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DSiCrypto.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/DSiCrypto.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DSi_AES.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DSi_AES.h deleted file mode 120000 index 0a082e18c..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DSi_AES.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/DSi_AES.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DSi_Camera.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DSi_Camera.h deleted file mode 120000 index 3471cfe87..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DSi_Camera.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/DSi_Camera.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DSi_I2C.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DSi_I2C.h deleted file mode 120000 index 9699db1a9..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DSi_I2C.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/DSi_I2C.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DSi_NDMA.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DSi_NDMA.h deleted file mode 120000 index 610f42fd0..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DSi_NDMA.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/DSi_NDMA.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DSi_NWifi.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DSi_NWifi.h deleted file mode 120000 index c11011aa0..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DSi_NWifi.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/DSi_NWifi.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DSi_SD.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DSi_SD.h deleted file mode 120000 index 30326f16f..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DSi_SD.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/DSi_SD.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DSi_SPI_TSC.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DSi_SPI_TSC.h deleted file mode 120000 index 8a7a89f34..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/DSi_SPI_TSC.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/DSi_SPI_TSC.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/FIFO.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/FIFO.h deleted file mode 120000 index fa97e2383..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/FIFO.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/FIFO.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/GBACart.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/GBACart.h deleted file mode 120000 index 0a8a2ddb7..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/GBACart.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/GBACart.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/GPU.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/GPU.h deleted file mode 120000 index bf377a5cc..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/GPU.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/GPU.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/GPU2D.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/GPU2D.h deleted file mode 120000 index 5f8dfb124..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/GPU2D.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/GPU2D.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/GPU3D.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/GPU3D.h deleted file mode 120000 index 46f8a21b6..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/GPU3D.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/GPU3D.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/GPU3D_OpenGL_shaders.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/GPU3D_OpenGL_shaders.h deleted file mode 120000 index bee07632c..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/GPU3D_OpenGL_shaders.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/GPU3D_OpenGL_shaders.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/GPU_OpenGL_shaders.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/GPU_OpenGL_shaders.h deleted file mode 120000 index 0e94cefbe..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/GPU_OpenGL_shaders.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/GPU_OpenGL_shaders.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/NDS.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/NDS.h deleted file mode 120000 index b89946d13..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/NDS.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/NDS.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/NDSCart.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/NDSCart.h deleted file mode 120000 index e14b8c1ef..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/NDSCart.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/NDSCart.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/OpenGLSupport.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/OpenGLSupport.h deleted file mode 120000 index 3af4dfcff..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/OpenGLSupport.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/OpenGLSupport.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/Platform.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/Platform.h deleted file mode 120000 index 1e98d7c11..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/Platform.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/Platform.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ROMList.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ROMList.h deleted file mode 120000 index 72f437c18..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/ROMList.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/ROMList.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/RTC.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/RTC.h deleted file mode 120000 index 3ea4956bf..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/RTC.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/RTC.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/SPI.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/SPI.h deleted file mode 120000 index d2e60adbe..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/SPI.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/SPI.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/SPU.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/SPU.h deleted file mode 120000 index 9e0410fe7..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/SPU.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/SPU.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/Savestate.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/Savestate.h deleted file mode 120000 index 852abc116..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/Savestate.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/Savestate.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/Wifi.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/Wifi.h deleted file mode 120000 index 272230586..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/Wifi.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/Wifi.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/WifiAP.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/WifiAP.h deleted file mode 120000 index 0de481461..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/WifiAP.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/WifiAP.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/dolphin/Arm64Emitter.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/dolphin/Arm64Emitter.h deleted file mode 120000 index 13cf30272..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/dolphin/Arm64Emitter.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/MelonDSDeltaCore/melonDS/src/dolphin/Arm64Emitter.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/frontend/qt_sdl/PlatformConfig.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/frontend/qt_sdl/PlatformConfig.h deleted file mode 120000 index ff9248786..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/frontend/qt_sdl/PlatformConfig.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/MelonDSDeltaCore/melonDS/src/frontend/qt_sdl/PlatformConfig.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/melonDLDI.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/melonDLDI.h deleted file mode 120000 index 55ab9686e..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/melonDLDI.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/melonDLDI.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/tiny-AES-c/aes.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/tiny-AES-c/aes.h deleted file mode 120000 index d72078bff..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/tiny-AES-c/aes.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/MelonDSDeltaCore/melonDS/src/tiny-AES-c/aes.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/tiny-AES-c/aes.hpp b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/tiny-AES-c/aes.hpp deleted file mode 120000 index 1fcd52b26..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/tiny-AES-c/aes.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/MelonDSDeltaCore/melonDS/src/tiny-AES-c/aes.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/types.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/types.h deleted file mode 120000 index 3c447943d..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/types.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/types.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/version.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/version.h deleted file mode 120000 index c5e29fda8..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/version.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/melonDS/src/version.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/xxhash/xxh3.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/xxhash/xxh3.h deleted file mode 120000 index add6f6d06..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/xxhash/xxh3.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/MelonDSDeltaCore/melonDS/src/xxhash/xxh3.h \ No newline at end of file diff --git a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/xxhash/xxhash.h b/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/xxhash/xxhash.h deleted file mode 120000 index 8427e5b25..000000000 --- a/Pods/Headers/Private/MelonDSDeltaCore/melonDS/src/xxhash/xxhash.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/MelonDSDeltaCore/melonDS/src/xxhash/xxhash.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/3DMath.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/3DMath.h deleted file mode 120000 index bb165aaee..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/3DMath.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/3DMath.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/BufferCopy/ColorBufferToRDRAM.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/BufferCopy/ColorBufferToRDRAM.h deleted file mode 120000 index 3f7bc7b17..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/BufferCopy/ColorBufferToRDRAM.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/BufferCopy/ColorBufferToRDRAM.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/BufferCopy/ColorBufferToRDRAMStub.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/BufferCopy/ColorBufferToRDRAMStub.h deleted file mode 120000 index fda9800b8..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/BufferCopy/ColorBufferToRDRAMStub.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/BufferCopy/ColorBufferToRDRAMStub.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/BufferCopy/DepthBufferToRDRAM.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/BufferCopy/DepthBufferToRDRAM.h deleted file mode 120000 index 3cc0c9bfa..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/BufferCopy/DepthBufferToRDRAM.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/BufferCopy/DepthBufferToRDRAM.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/BufferCopy/RDRAMtoColorBuffer.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/BufferCopy/RDRAMtoColorBuffer.h deleted file mode 120000 index a3fa94ac9..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/BufferCopy/RDRAMtoColorBuffer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/BufferCopy/RDRAMtoColorBuffer.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/BufferCopy/WriteToRDRAM.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/BufferCopy/WriteToRDRAM.h deleted file mode 120000 index 393713d4d..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/BufferCopy/WriteToRDRAM.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/BufferCopy/WriteToRDRAM.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/CRC.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/CRC.h deleted file mode 120000 index 03bb006b8..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/CRC.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/CRC.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Combiner.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Combiner.h deleted file mode 120000 index be0ff6c6c..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Combiner.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Combiner.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/CombinerKey.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/CombinerKey.h deleted file mode 120000 index 2936fe7bd..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/CombinerKey.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/CombinerKey.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Config.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Config.h deleted file mode 120000 index 8efa52cfa..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Config.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Config.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/DebugDump.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/DebugDump.h deleted file mode 120000 index 6d2cdac53..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/DebugDump.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/DebugDump.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Debugger.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Debugger.h deleted file mode 120000 index 94c8e1696..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Debugger.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Debugger.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/DepthBuffer.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/DepthBuffer.h deleted file mode 120000 index c86233687..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/DepthBuffer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/DepthBuffer.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/DepthBufferRender/ClipPolygon.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/DepthBufferRender/ClipPolygon.h deleted file mode 120000 index 94c5c2cfb..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/DepthBufferRender/ClipPolygon.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/DepthBufferRender/ClipPolygon.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/DepthBufferRender/DepthBufferRender.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/DepthBufferRender/DepthBufferRender.h deleted file mode 120000 index 1699dd76c..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/DepthBufferRender/DepthBufferRender.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/DepthBufferRender/DepthBufferRender.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/DisplayLoadProgress.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/DisplayLoadProgress.h deleted file mode 120000 index a60ad88d7..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/DisplayLoadProgress.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/DisplayLoadProgress.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/DisplayWindow.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/DisplayWindow.h deleted file mode 120000 index 14411743d..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/DisplayWindow.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/DisplayWindow.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/FrameBuffer.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/FrameBuffer.h deleted file mode 120000 index 2254c9a7e..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/FrameBuffer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/FrameBuffer.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/FrameBufferInfo.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/FrameBufferInfo.h deleted file mode 120000 index 0a597488c..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/FrameBufferInfo.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/FrameBufferInfo.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/FrameBufferInfoAPI.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/FrameBufferInfoAPI.h deleted file mode 120000 index d703b6cc3..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/FrameBufferInfoAPI.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/FrameBufferInfoAPI.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GBI.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GBI.h deleted file mode 120000 index 3f7438d20..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GBI.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GBI.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideN64.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideN64.h deleted file mode 120000 index 141d519df..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideN64.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideN64.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/Ext_TxFilter.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/Ext_TxFilter.h deleted file mode 120000 index 8c51b39ca..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/Ext_TxFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/Ext_TxFilter.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TextureFilters.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TextureFilters.h deleted file mode 120000 index 084710234..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TextureFilters.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TextureFilters.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TextureFilters_2xsai.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TextureFilters_2xsai.h deleted file mode 120000 index b9efc2dc3..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TextureFilters_2xsai.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TextureFilters_2xsai.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TextureFilters_hq2x.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TextureFilters_hq2x.h deleted file mode 120000 index c41051793..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TextureFilters_hq2x.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TextureFilters_hq2x.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TextureFilters_hq4x.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TextureFilters_hq4x.h deleted file mode 120000 index e2a2cd098..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TextureFilters_hq4x.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TextureFilters_hq4x.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TextureFilters_lq2x.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TextureFilters_lq2x.h deleted file mode 120000 index b1da56cd8..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TextureFilters_lq2x.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TextureFilters_lq2x.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TextureFilters_xbrz.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TextureFilters_xbrz.h deleted file mode 120000 index 36d8368c5..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TextureFilters_xbrz.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TextureFilters_xbrz.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxCache.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxCache.h deleted file mode 120000 index 66ec94d89..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxCache.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxCache.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxDbg.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxDbg.h deleted file mode 120000 index 0def0cb79..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxDbg.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxDbg.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxFilter.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxFilter.h deleted file mode 120000 index 152849cd0..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxFilter.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxFilter.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxHiResCache.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxHiResCache.h deleted file mode 120000 index abae1fd95..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxHiResCache.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxHiResCache.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxImage.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxImage.h deleted file mode 120000 index f1b2e0d37..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxImage.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxImage.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxInternal.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxInternal.h deleted file mode 120000 index 660230377..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxInternal.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxInternal.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxQuantize.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxQuantize.h deleted file mode 120000 index 6aa5e2648..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxQuantize.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxQuantize.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxReSample.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxReSample.h deleted file mode 120000 index 7f21a5cdb..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxReSample.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxReSample.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxTexCache.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxTexCache.h deleted file mode 120000 index e0bf768dd..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxTexCache.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxTexCache.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxUtil.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxUtil.h deleted file mode 120000 index 87a2ef098..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxUtil.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/TxUtil.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/bldno.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/bldno.h deleted file mode 120000 index 5f684fd79..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/bldno.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/bldno.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/inc/png.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/inc/png.h deleted file mode 120000 index 87f64885b..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/inc/png.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/inc/png.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/inc/pngconf.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/inc/pngconf.h deleted file mode 120000 index 02286ccac..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/inc/pngconf.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/inc/pngconf.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/inc/pnglibconf.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/inc/pnglibconf.h deleted file mode 120000 index 66dc20109..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/inc/pnglibconf.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/inc/pnglibconf.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/inc/pngstruct.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/inc/pngstruct.h deleted file mode 120000 index 039a53de8..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/inc/pngstruct.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/inc/pngstruct.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/inc/zconf.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/inc/zconf.h deleted file mode 120000 index 5f229164b..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/inc/zconf.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/inc/zconf.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/inc/zlib.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/inc/zlib.h deleted file mode 120000 index 81ac1d831..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/inc/zlib.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/inc/zlib.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/txWidestringWrapper.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/txWidestringWrapper.h deleted file mode 120000 index fad157f35..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/txWidestringWrapper.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNHQ/txWidestringWrapper.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNUI/AboutDialog.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNUI/AboutDialog.h deleted file mode 120000 index 02b5984cd..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNUI/AboutDialog.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNUI/AboutDialog.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNUI/ConfigDialog.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNUI/ConfigDialog.h deleted file mode 120000 index b603e19b0..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNUI/ConfigDialog.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNUI/ConfigDialog.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNUI/FullscreenResolutions.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNUI/FullscreenResolutions.h deleted file mode 120000 index d730166bc..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNUI/FullscreenResolutions.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNUI/FullscreenResolutions.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNUI/GLideNUI.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNUI/GLideNUI.h deleted file mode 120000 index c153d5ec5..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNUI/GLideNUI.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNUI/GLideNUI.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNUI/Settings.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNUI/Settings.h deleted file mode 120000 index 9c0f7c142..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNUI/Settings.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GLideNUI/Settings.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/ColorBufferReader.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/ColorBufferReader.h deleted file mode 120000 index 27906a345..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/ColorBufferReader.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/ColorBufferReader.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/CombinerProgram.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/CombinerProgram.h deleted file mode 120000 index 0014f96b4..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/CombinerProgram.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/CombinerProgram.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/Context.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/Context.h deleted file mode 120000 index 385d42c7c..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/Context.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/Context.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/ContextImpl.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/ContextImpl.h deleted file mode 120000 index d9506eccc..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/ContextImpl.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/ContextImpl.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/FramebufferTextureFormats.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/FramebufferTextureFormats.h deleted file mode 120000 index 9bfb557df..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/FramebufferTextureFormats.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/FramebufferTextureFormats.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/ObjectHandle.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/ObjectHandle.h deleted file mode 120000 index 55f035b1c..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/ObjectHandle.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/ObjectHandle.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLFunctions.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLFunctions.h deleted file mode 120000 index 7ca9ea315..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLFunctions.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLFunctions.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_CombinerInputs.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_CombinerInputs.h deleted file mode 120000 index 2e656b148..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_CombinerInputs.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_CombinerInputs.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_CombinerProgramBuilder.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_CombinerProgramBuilder.h deleted file mode 120000 index 3aedbdcc2..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_CombinerProgramBuilder.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_CombinerProgramBuilder.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_CombinerProgramImpl.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_CombinerProgramImpl.h deleted file mode 120000 index 648db31ca..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_CombinerProgramImpl.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_CombinerProgramImpl.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_CombinerProgramUniformFactory.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_CombinerProgramUniformFactory.h deleted file mode 120000 index e1046a6e3..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_CombinerProgramUniformFactory.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_CombinerProgramUniformFactory.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_FXAA.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_FXAA.h deleted file mode 120000 index 41fe4b367..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_FXAA.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_FXAA.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_ShaderPart.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_ShaderPart.h deleted file mode 120000 index e7da72cc6..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_ShaderPart.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_ShaderPart.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_ShaderStorage.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_ShaderStorage.h deleted file mode 120000 index b0a14819c..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_ShaderStorage.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_ShaderStorage.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_SpecialShadersFactory.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_SpecialShadersFactory.h deleted file mode 120000 index b2927b881..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_SpecialShadersFactory.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_SpecialShadersFactory.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_Utils.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_Utils.h deleted file mode 120000 index 6a81e8e20..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_Utils.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GLSL/glsl_Utils.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GraphicBuffer/GraphicBufferWrapper.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GraphicBuffer/GraphicBufferWrapper.h deleted file mode 120000 index ceca52248..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GraphicBuffer/GraphicBufferWrapper.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GraphicBuffer/GraphicBufferWrapper.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GraphicBuffer/PrivateApi/GraphicBuffer.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GraphicBuffer/PrivateApi/GraphicBuffer.h deleted file mode 120000 index bb17ee7ec..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GraphicBuffer/PrivateApi/GraphicBuffer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GraphicBuffer/PrivateApi/GraphicBuffer.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GraphicBuffer/PrivateApi/gralloc.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GraphicBuffer/PrivateApi/gralloc.h deleted file mode 120000 index fc22b0eef..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GraphicBuffer/PrivateApi/gralloc.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GraphicBuffer/PrivateApi/gralloc.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GraphicBuffer/PrivateApi/libhardware.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GraphicBuffer/PrivateApi/libhardware.h deleted file mode 120000 index d69c7d9bb..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GraphicBuffer/PrivateApi/libhardware.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GraphicBuffer/PrivateApi/libhardware.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GraphicBuffer/PublicApi/android_hardware_buffer_compat.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GraphicBuffer/PublicApi/android_hardware_buffer_compat.h deleted file mode 120000 index 447660139..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GraphicBuffer/PublicApi/android_hardware_buffer_compat.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GraphicBuffer/PublicApi/android_hardware_buffer_compat.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GraphicBuffer/PublicApi/check.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GraphicBuffer/PublicApi/check.h deleted file mode 120000 index 796dd7b8b..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GraphicBuffer/PublicApi/check.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GraphicBuffer/PublicApi/check.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GraphicBuffer/PublicApi/dcheck.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GraphicBuffer/PublicApi/dcheck.h deleted file mode 120000 index cb6ab27de..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GraphicBuffer/PublicApi/dcheck.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/GraphicBuffer/PublicApi/dcheck.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_Attributes.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_Attributes.h deleted file mode 120000 index e4a46a8ff..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_Attributes.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_Attributes.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_BufferManipulationObjectFactory.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_BufferManipulationObjectFactory.h deleted file mode 120000 index b1f728703..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_BufferManipulationObjectFactory.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_BufferManipulationObjectFactory.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_BufferedDrawer.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_BufferedDrawer.h deleted file mode 120000 index f5d2b9cea..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_BufferedDrawer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_BufferedDrawer.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_CachedFunctions.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_CachedFunctions.h deleted file mode 120000 index 06842311d..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_CachedFunctions.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_CachedFunctions.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_ColorBufferReaderWithBufferStorage.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_ColorBufferReaderWithBufferStorage.h deleted file mode 120000 index 6f085b9a9..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_ColorBufferReaderWithBufferStorage.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_ColorBufferReaderWithBufferStorage.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_ColorBufferReaderWithEGLImage.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_ColorBufferReaderWithEGLImage.h deleted file mode 120000 index c6ebd4b78..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_ColorBufferReaderWithEGLImage.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_ColorBufferReaderWithEGLImage.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_ColorBufferReaderWithPixelBuffer.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_ColorBufferReaderWithPixelBuffer.h deleted file mode 120000 index 99a6a9601..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_ColorBufferReaderWithPixelBuffer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_ColorBufferReaderWithPixelBuffer.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_ColorBufferReaderWithReadPixels.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_ColorBufferReaderWithReadPixels.h deleted file mode 120000 index 5758117c3..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_ColorBufferReaderWithReadPixels.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_ColorBufferReaderWithReadPixels.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_ContextImpl.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_ContextImpl.h deleted file mode 120000 index d5ec81bba..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_ContextImpl.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_ContextImpl.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_GLInfo.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_GLInfo.h deleted file mode 120000 index 2a9861326..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_GLInfo.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_GLInfo.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_GraphicsDrawer.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_GraphicsDrawer.h deleted file mode 120000 index 1e7ae39ad..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_GraphicsDrawer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_GraphicsDrawer.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_TextureManipulationObjectFactory.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_TextureManipulationObjectFactory.h deleted file mode 120000 index 61c89f831..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_TextureManipulationObjectFactory.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_TextureManipulationObjectFactory.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_UnbufferedDrawer.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_UnbufferedDrawer.h deleted file mode 120000 index 0a125b308..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_UnbufferedDrawer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_UnbufferedDrawer.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_Utils.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_Utils.h deleted file mode 120000 index a5027a676..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_Utils.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/OpenGLContext/opengl_Utils.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/Parameter.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/Parameter.h deleted file mode 120000 index 10b62cd6a..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/Parameter.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/Parameter.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/Parameters.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/Parameters.h deleted file mode 120000 index 68178807f..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/Parameters.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/Parameters.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/PixelBuffer.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/PixelBuffer.h deleted file mode 120000 index d04f71b23..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/PixelBuffer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/PixelBuffer.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/ShaderProgram.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/ShaderProgram.h deleted file mode 120000 index 58d2eb388..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/ShaderProgram.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Graphics/ShaderProgram.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GraphicsDrawer.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GraphicsDrawer.h deleted file mode 120000 index 8ce4d4590..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/GraphicsDrawer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/GraphicsDrawer.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Keys.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Keys.h deleted file mode 120000 index 6cb12f22b..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Keys.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Keys.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Log.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Log.h deleted file mode 120000 index 634c44283..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Log.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Log.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/MemoryStatus.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/MemoryStatus.h deleted file mode 120000 index 34b1f4be0..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/MemoryStatus.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/MemoryStatus.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/N64.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/N64.h deleted file mode 120000 index 734958f44..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/N64.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/N64.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/NoiseTexture.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/NoiseTexture.h deleted file mode 120000 index 3ba5940af..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/NoiseTexture.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/NoiseTexture.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/PaletteTexture.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/PaletteTexture.h deleted file mode 120000 index f5bb812cd..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/PaletteTexture.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/PaletteTexture.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Performance.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Performance.h deleted file mode 120000 index 2864d3179..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Performance.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Performance.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Platform.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Platform.h deleted file mode 120000 index 2ffaf0427..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Platform.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Platform.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/PluginAPI.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/PluginAPI.h deleted file mode 120000 index c96e40f19..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/PluginAPI.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/PluginAPI.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/PostProcessor.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/PostProcessor.h deleted file mode 120000 index 6b3ea73fc..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/PostProcessor.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/PostProcessor.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/RDP.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/RDP.h deleted file mode 120000 index 84ed71978..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/RDP.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/RDP.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/RSP.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/RSP.h deleted file mode 120000 index 51540fe11..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/RSP.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/RSP.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Revision.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Revision.h deleted file mode 120000 index 23b511f5f..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Revision.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Revision.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/SoftwareRender.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/SoftwareRender.h deleted file mode 120000 index fd659f272..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/SoftwareRender.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/SoftwareRender.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/TexrectDrawer.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/TexrectDrawer.h deleted file mode 120000 index a22a12d08..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/TexrectDrawer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/TexrectDrawer.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/TextDrawer.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/TextDrawer.h deleted file mode 120000 index b20dd82cb..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/TextDrawer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/TextDrawer.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/TextureFilterHandler.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/TextureFilterHandler.h deleted file mode 120000 index c9c33a039..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/TextureFilterHandler.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/TextureFilterHandler.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Textures.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Textures.h deleted file mode 120000 index 09cfdec47..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Textures.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Textures.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Types.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Types.h deleted file mode 120000 index 66adf5cc6..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/Types.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/Types.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/VI.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/VI.h deleted file mode 120000 index 4b50e271f..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/VI.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/VI.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/ZilmarGFX_1_3.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/ZilmarGFX_1_3.h deleted file mode 120000 index a7e717823..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/ZilmarGFX_1_3.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/ZilmarGFX_1_3.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/ZlutTexture.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/ZlutTexture.h deleted file mode 120000 index 6fc36f308..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/ZlutTexture.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/ZlutTexture.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/convert.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/convert.h deleted file mode 120000 index 72cdc1da4..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/convert.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/convert.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/gDP.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/gDP.h deleted file mode 120000 index f5f5fcdc5..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/gDP.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/gDP.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/gSP.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/gSP.h deleted file mode 120000 index 205541d79..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/gSP.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/gSP.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/GL/glcorearb.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/GL/glcorearb.h deleted file mode 120000 index 3cb6adde6..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/GL/glcorearb.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/GL/glcorearb.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/GL/glext.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/GL/glext.h deleted file mode 120000 index ac87348b7..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/GL/glext.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/GL/glext.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/GL/glxext.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/GL/glxext.h deleted file mode 120000 index 5c3fe0a50..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/GL/glxext.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/GL/glxext.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/GL/wglext.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/GL/wglext.h deleted file mode 120000 index 214620736..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/GL/wglext.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/GL/wglext.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/callbacks.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/callbacks.h deleted file mode 120000 index 37f1506ae..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/callbacks.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/callbacks.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/debugger.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/debugger.h deleted file mode 120000 index 4fd52f40a..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/debugger.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/debugger.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/config/ftconfig.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/config/ftconfig.h deleted file mode 120000 index db2183dc4..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/config/ftconfig.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/config/ftconfig.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/config/ftheader.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/config/ftheader.h deleted file mode 120000 index a3b5e2e97..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/config/ftheader.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/config/ftheader.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/config/ftmodule.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/config/ftmodule.h deleted file mode 120000 index c3d78fbd3..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/config/ftmodule.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/config/ftmodule.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/config/ftoption.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/config/ftoption.h deleted file mode 120000 index 9c5540cd9..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/config/ftoption.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/config/ftoption.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/config/ftstdlib.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/config/ftstdlib.h deleted file mode 120000 index 32fe3b07c..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/config/ftstdlib.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/config/ftstdlib.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/freetype.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/freetype.h deleted file mode 120000 index 10eaff1c4..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/freetype.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/freetype.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ft2build.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ft2build.h deleted file mode 120000 index cd6bea5fa..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ft2build.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ft2build.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftadvanc.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftadvanc.h deleted file mode 120000 index 8cd2b825f..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftadvanc.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftadvanc.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftautoh.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftautoh.h deleted file mode 120000 index 998184d60..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftautoh.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftautoh.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftbbox.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftbbox.h deleted file mode 120000 index d8418eef3..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftbbox.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftbbox.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftbdf.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftbdf.h deleted file mode 120000 index 63bacbecd..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftbdf.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftbdf.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftbitmap.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftbitmap.h deleted file mode 120000 index 20024dc47..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftbitmap.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftbitmap.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftbzip2.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftbzip2.h deleted file mode 120000 index 79af64e43..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftbzip2.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftbzip2.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftcache.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftcache.h deleted file mode 120000 index 7542a6ed1..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftcache.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftcache.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftcffdrv.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftcffdrv.h deleted file mode 120000 index 30b258875..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftcffdrv.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftcffdrv.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftchapters.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftchapters.h deleted file mode 120000 index df549a497..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftchapters.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftchapters.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftcid.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftcid.h deleted file mode 120000 index 2f67d94b2..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftcid.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftcid.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/fterrdef.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/fterrdef.h deleted file mode 120000 index d413ce40e..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/fterrdef.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/fterrdef.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/fterrors.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/fterrors.h deleted file mode 120000 index 11617b8df..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/fterrors.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/fterrors.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftgasp.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftgasp.h deleted file mode 120000 index ac6430553..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftgasp.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftgasp.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftglyph.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftglyph.h deleted file mode 120000 index 49ad2a944..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftglyph.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftglyph.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftgxval.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftgxval.h deleted file mode 120000 index 5e3142f1a..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftgxval.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftgxval.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftgzip.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftgzip.h deleted file mode 120000 index 9dd3ea406..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftgzip.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftgzip.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftimage.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftimage.h deleted file mode 120000 index ae7f46b45..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftimage.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftimage.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftincrem.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftincrem.h deleted file mode 120000 index 98045a638..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftincrem.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftincrem.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftlcdfil.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftlcdfil.h deleted file mode 120000 index 37f42bd9b..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftlcdfil.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftlcdfil.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftlist.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftlist.h deleted file mode 120000 index 9df95b055..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftlist.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftlist.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftlzw.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftlzw.h deleted file mode 120000 index 1b8bef429..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftlzw.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftlzw.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftmac.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftmac.h deleted file mode 120000 index 3b5bee807..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftmac.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftmac.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftmm.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftmm.h deleted file mode 120000 index 6717ce39e..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftmm.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftmm.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftmodapi.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftmodapi.h deleted file mode 120000 index fa49cdebf..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftmodapi.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftmodapi.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftmoderr.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftmoderr.h deleted file mode 120000 index da09e62f0..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftmoderr.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftmoderr.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftotval.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftotval.h deleted file mode 120000 index cea4acc92..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftotval.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftotval.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftoutln.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftoutln.h deleted file mode 120000 index dae390db4..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftoutln.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftoutln.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftpfr.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftpfr.h deleted file mode 120000 index c02811897..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftpfr.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftpfr.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftrender.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftrender.h deleted file mode 120000 index 92a8d6f1c..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftrender.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftrender.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftsizes.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftsizes.h deleted file mode 120000 index 600fcb851..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftsizes.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftsizes.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftsnames.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftsnames.h deleted file mode 120000 index da608e639..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftsnames.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftsnames.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftstroke.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftstroke.h deleted file mode 120000 index e2cb92194..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftstroke.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftstroke.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftsynth.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftsynth.h deleted file mode 120000 index eaa64c733..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftsynth.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftsynth.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftsystem.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftsystem.h deleted file mode 120000 index 557484270..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftsystem.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftsystem.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/fttrigon.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/fttrigon.h deleted file mode 120000 index 8dbede4bf..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/fttrigon.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/fttrigon.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftttdrv.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftttdrv.h deleted file mode 120000 index 73b98092d..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftttdrv.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftttdrv.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/fttypes.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/fttypes.h deleted file mode 120000 index e92b6956d..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/fttypes.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/fttypes.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftwinfnt.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftwinfnt.h deleted file mode 120000 index d8c61aacf..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftwinfnt.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftwinfnt.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftxf86.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftxf86.h deleted file mode 120000 index 1aedad645..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftxf86.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ftxf86.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/autohint.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/autohint.h deleted file mode 120000 index 50bc8d629..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/autohint.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/autohint.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftcalc.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftcalc.h deleted file mode 120000 index 95c667e6c..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftcalc.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftcalc.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftdebug.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftdebug.h deleted file mode 120000 index ba90a9bca..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftdebug.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftdebug.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftdriver.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftdriver.h deleted file mode 120000 index c336816df..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftdriver.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftdriver.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftgloadr.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftgloadr.h deleted file mode 120000 index 6e618a877..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftgloadr.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftgloadr.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftmemory.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftmemory.h deleted file mode 120000 index a527419d0..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftmemory.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftmemory.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftobjs.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftobjs.h deleted file mode 120000 index c2fa455fd..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftobjs.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftobjs.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftpic.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftpic.h deleted file mode 120000 index 87e7f8d67..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftpic.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftpic.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftrfork.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftrfork.h deleted file mode 120000 index 4ed786c26..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftrfork.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftrfork.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftserv.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftserv.h deleted file mode 120000 index 2c4b78615..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftserv.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftserv.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftstream.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftstream.h deleted file mode 120000 index 19ac7cd43..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftstream.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftstream.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/fttrace.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/fttrace.h deleted file mode 120000 index 785058958..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/fttrace.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/fttrace.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftvalid.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftvalid.h deleted file mode 120000 index 0dbab9dfb..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftvalid.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/ftvalid.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/internal.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/internal.h deleted file mode 120000 index 663c4e6ae..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/internal.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/internal.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/psaux.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/psaux.h deleted file mode 120000 index d2d72d201..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/psaux.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/psaux.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/pshints.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/pshints.h deleted file mode 120000 index 6eefe4866..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/pshints.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/pshints.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svbdf.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svbdf.h deleted file mode 120000 index 60aa2ba9f..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svbdf.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svbdf.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svcid.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svcid.h deleted file mode 120000 index 9c7d1319b..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svcid.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svcid.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svgldict.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svgldict.h deleted file mode 120000 index 29c49ec96..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svgldict.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svgldict.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svgxval.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svgxval.h deleted file mode 120000 index bf3609bb1..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svgxval.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svgxval.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svkern.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svkern.h deleted file mode 120000 index 3814e577c..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svkern.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svkern.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svmm.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svmm.h deleted file mode 120000 index 87c4737fb..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svmm.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svmm.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svotval.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svotval.h deleted file mode 120000 index 13e1d5690..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svotval.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svotval.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svpfr.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svpfr.h deleted file mode 120000 index 01064940f..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svpfr.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svpfr.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svpostnm.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svpostnm.h deleted file mode 120000 index 745ffa510..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svpostnm.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svpostnm.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svprop.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svprop.h deleted file mode 120000 index 88389fa01..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svprop.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svprop.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svpscmap.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svpscmap.h deleted file mode 120000 index a3bcc3062..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svpscmap.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svpscmap.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svpsinfo.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svpsinfo.h deleted file mode 120000 index da4072820..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svpsinfo.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svpsinfo.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svsfnt.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svsfnt.h deleted file mode 120000 index 5956d1487..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svsfnt.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svsfnt.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svttcmap.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svttcmap.h deleted file mode 120000 index d7422df77..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svttcmap.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svttcmap.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svtteng.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svtteng.h deleted file mode 120000 index d0653918c..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svtteng.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svtteng.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svttglyf.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svttglyf.h deleted file mode 120000 index f3bb48bf4..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svttglyf.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svttglyf.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svwinfnt.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svwinfnt.h deleted file mode 120000 index 5ec831206..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svwinfnt.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svwinfnt.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svxf86nm.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svxf86nm.h deleted file mode 120000 index e4230c5ab..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svxf86nm.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/services/svxf86nm.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/sfnt.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/sfnt.h deleted file mode 120000 index 2851b0625..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/sfnt.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/sfnt.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/t1types.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/t1types.h deleted file mode 120000 index dc9249403..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/t1types.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/t1types.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/tttypes.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/tttypes.h deleted file mode 120000 index 22d1210ef..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/tttypes.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/internal/tttypes.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/t1tables.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/t1tables.h deleted file mode 120000 index c2f207897..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/t1tables.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/t1tables.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ttnameid.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ttnameid.h deleted file mode 120000 index a87dc005b..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ttnameid.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ttnameid.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/tttables.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/tttables.h deleted file mode 120000 index 03053b8be..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/tttables.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/tttables.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/tttags.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/tttags.h deleted file mode 120000 index c8ccfaeb9..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/tttags.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/tttags.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ttunpat.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ttunpat.h deleted file mode 120000 index 7af08b822..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ttunpat.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/freetype/include/ttunpat.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/m64p_common.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/m64p_common.h deleted file mode 120000 index c605f7be3..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/m64p_common.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/m64p_common.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/m64p_config.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/m64p_config.h deleted file mode 120000 index 5cd638eae..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/m64p_config.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/m64p_config.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/m64p_debugger.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/m64p_debugger.h deleted file mode 120000 index 7a4531c47..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/m64p_debugger.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/m64p_debugger.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/m64p_frontend.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/m64p_frontend.h deleted file mode 120000 index df9243e34..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/m64p_frontend.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/m64p_frontend.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/m64p_plugin.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/m64p_plugin.h deleted file mode 120000 index 9efd17989..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/m64p_plugin.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/m64p_plugin.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/m64p_types.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/m64p_types.h deleted file mode 120000 index ca333387f..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/m64p_types.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/m64p_types.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/m64p_vidext.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/m64p_vidext.h deleted file mode 120000 index 31e642acc..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/m64p_vidext.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/inc/m64p_vidext.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/mupenplus/GLideN64_mupenplus.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/mupenplus/GLideN64_mupenplus.h deleted file mode 120000 index fcf9b8dd0..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/mupenplus/GLideN64_mupenplus.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/mupenplus/GLideN64_mupenplus.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/osal/osal_files.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/osal/osal_files.h deleted file mode 120000 index 549075da0..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/osal/osal_files.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/osal/osal_files.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/sdl2_compat.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/sdl2_compat.h deleted file mode 120000 index 470809b18..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/sdl2_compat.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/sdl2_compat.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3D.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3D.h deleted file mode 120000 index a7d759930..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3D.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3D.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DAM.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DAM.h deleted file mode 120000 index 9a9481e65..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DAM.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DAM.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DBETA.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DBETA.h deleted file mode 120000 index a76fef6e3..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DBETA.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DBETA.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DDKR.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DDKR.h deleted file mode 120000 index 8ad148c71..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DDKR.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DDKR.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DEX.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DEX.h deleted file mode 120000 index 01850e5e6..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DEX.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DEX.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DEX2.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DEX2.h deleted file mode 120000 index f29576905..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DEX2.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DEX2.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DEX2ACCLAIM.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DEX2ACCLAIM.h deleted file mode 120000 index 7119e83ca..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DEX2ACCLAIM.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DEX2ACCLAIM.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DEX2CBFD.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DEX2CBFD.h deleted file mode 120000 index 15de8d96d..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DEX2CBFD.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DEX2CBFD.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DFLX2.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DFLX2.h deleted file mode 120000 index cef89e19c..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DFLX2.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DFLX2.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DGOLDEN.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DGOLDEN.h deleted file mode 120000 index 154b16dc8..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DGOLDEN.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DGOLDEN.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DPD.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DPD.h deleted file mode 120000 index be209decc..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DPD.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DPD.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DSETA.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DSETA.h deleted file mode 120000 index 6622b0eff..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DSETA.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DSETA.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DTEXA.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DTEXA.h deleted file mode 120000 index d3de2b243..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DTEXA.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DTEXA.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DZEX2.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DZEX2.h deleted file mode 120000 index d06d5ccaa..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DZEX2.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F3DZEX2.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F5Indi_Naboo.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F5Indi_Naboo.h deleted file mode 120000 index ee8607358..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F5Indi_Naboo.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F5Indi_Naboo.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F5Rogue.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F5Rogue.h deleted file mode 120000 index bfbd159d1..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F5Rogue.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/F5Rogue.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/L3D.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/L3D.h deleted file mode 120000 index 253a57ecb..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/L3D.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/L3D.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/L3DEX.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/L3DEX.h deleted file mode 120000 index 02e71265e..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/L3DEX.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/L3DEX.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/L3DEX2.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/L3DEX2.h deleted file mode 120000 index 42df01683..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/L3DEX2.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/L3DEX2.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/S2DEX.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/S2DEX.h deleted file mode 120000 index 4c60849c7..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/S2DEX.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/S2DEX.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/S2DEX2.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/S2DEX2.h deleted file mode 120000 index 7b70d6ef0..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/S2DEX2.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/S2DEX2.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/T3DUX.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/T3DUX.h deleted file mode 120000 index 13ece2980..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/T3DUX.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/T3DUX.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/Turbo3D.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/Turbo3D.h deleted file mode 120000 index 2b3b4dec7..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/Turbo3D.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/Turbo3D.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/ZSort.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/ZSort.h deleted file mode 120000 index 5b180a948..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/ZSort.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/ZSort.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/ZSortBOSS.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/ZSortBOSS.h deleted file mode 120000 index cd42a9ec7..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/ZSortBOSS.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/uCodes/ZSortBOSS.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/winlnxdefs.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/winlnxdefs.h deleted file mode 120000 index 6703fc46e..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/winlnxdefs.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/winlnxdefs.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/wst.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/wst.h deleted file mode 120000 index 99ad64678..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/wst.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/wst.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/xxHash/xxhash.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/xxHash/xxhash.h deleted file mode 120000 index a1fca91cf..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/xxHash/xxhash.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/GLideN64/src/xxHash/xxhash.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/gregbook/readpng.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/gregbook/readpng.h deleted file mode 120000 index f695499d5..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/gregbook/readpng.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/libpng/contrib/gregbook/readpng.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/gregbook/readpng2.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/gregbook/readpng2.h deleted file mode 120000 index 9b2e4fdbc..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/gregbook/readpng2.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/libpng/contrib/gregbook/readpng2.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/gregbook/writepng.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/gregbook/writepng.h deleted file mode 120000 index e0cf8cc93..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/gregbook/writepng.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/libpng/contrib/gregbook/writepng.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/libtests/pngstest-errors.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/libtests/pngstest-errors.h deleted file mode 120000 index 4eba3060e..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/libtests/pngstest-errors.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/libpng/contrib/libtests/pngstest-errors.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/pngminim/decoder/pngusr.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/pngminim/decoder/pngusr.h deleted file mode 120000 index 88013b7fc..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/pngminim/decoder/pngusr.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/libpng/contrib/pngminim/decoder/pngusr.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/pngminim/encoder/pngusr.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/pngminim/encoder/pngusr.h deleted file mode 120000 index d2ba11729..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/pngminim/encoder/pngusr.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/libpng/contrib/pngminim/encoder/pngusr.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/pngminim/preader/pngusr.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/pngminim/preader/pngusr.h deleted file mode 120000 index 9e93facd9..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/pngminim/preader/pngusr.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/libpng/contrib/pngminim/preader/pngusr.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/tools/sRGB.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/tools/sRGB.h deleted file mode 120000 index 20a29a7fd..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/tools/sRGB.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/libpng/contrib/tools/sRGB.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/visupng/PngFile.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/visupng/PngFile.h deleted file mode 120000 index a6232c979..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/visupng/PngFile.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/libpng/contrib/visupng/PngFile.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/visupng/cexcept.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/visupng/cexcept.h deleted file mode 120000 index edac7e52e..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/visupng/cexcept.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/libpng/contrib/visupng/cexcept.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/visupng/resource.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/visupng/resource.h deleted file mode 120000 index 22caa860b..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/contrib/visupng/resource.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/libpng/contrib/visupng/resource.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/png.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/png.h deleted file mode 120000 index b47f113bb..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/png.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/N64DeltaCore/Mupen64Plus/libpng/png.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/pngconf.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/pngconf.h deleted file mode 120000 index 2a63d0feb..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/pngconf.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/N64DeltaCore/Mupen64Plus/libpng/pngconf.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/pngdebug.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/pngdebug.h deleted file mode 120000 index 8cd254d7b..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/pngdebug.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/N64DeltaCore/Mupen64Plus/libpng/pngdebug.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/pnginfo.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/pnginfo.h deleted file mode 120000 index 6e0285f50..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/pnginfo.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/N64DeltaCore/Mupen64Plus/libpng/pnginfo.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/pngpriv.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/pngpriv.h deleted file mode 120000 index 89fd99fdb..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/pngpriv.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/N64DeltaCore/Mupen64Plus/libpng/pngpriv.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/pngstruct.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/pngstruct.h deleted file mode 120000 index 8c4d09130..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/libpng/pngstruct.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/N64DeltaCore/Mupen64Plus/libpng/pngstruct.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/callbacks.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/callbacks.h deleted file mode 120000 index f761e2c0b..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/callbacks.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/callbacks.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/debugger.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/debugger.h deleted file mode 120000 index d2ab1502a..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/debugger.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/debugger.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/m64p_common.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/m64p_common.h deleted file mode 120000 index b4e5fbfba..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/m64p_common.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/m64p_common.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/m64p_config.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/m64p_config.h deleted file mode 120000 index 8bc5ce8eb..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/m64p_config.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/m64p_config.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/m64p_debugger.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/m64p_debugger.h deleted file mode 120000 index 6a5b268e1..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/m64p_debugger.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/m64p_debugger.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/m64p_frontend.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/m64p_frontend.h deleted file mode 120000 index f8b3922f6..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/m64p_frontend.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/m64p_frontend.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/m64p_plugin.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/m64p_plugin.h deleted file mode 120000 index 36734f91f..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/m64p_plugin.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/m64p_plugin.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/m64p_types.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/m64p_types.h deleted file mode 120000 index d71abed94..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/m64p_types.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/m64p_types.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/m64p_vidext.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/m64p_vidext.h deleted file mode 120000 index c0b71aaa0..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/m64p_vidext.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/m64p_vidext.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/vidext.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/vidext.h deleted file mode 120000 index ae10b4527..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/vidext.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/vidext.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/vidext_sdl2_compat.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/vidext_sdl2_compat.h deleted file mode 120000 index 81856367f..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/vidext_sdl2_compat.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api/vidext_sdl2_compat.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/api/audio_out_backend.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/api/audio_out_backend.h deleted file mode 120000 index 401f4676a..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/api/audio_out_backend.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/api/audio_out_backend.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/api/clock_backend.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/api/clock_backend.h deleted file mode 120000 index 8cc3af6b1..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/api/clock_backend.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/api/clock_backend.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/api/controller_input_backend.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/api/controller_input_backend.h deleted file mode 120000 index 06e1eae7e..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/api/controller_input_backend.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/api/controller_input_backend.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/api/joybus.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/api/joybus.h deleted file mode 120000 index e4b6a7984..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/api/joybus.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/api/joybus.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/api/rumble_backend.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/api/rumble_backend.h deleted file mode 120000 index 08f9a7748..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/api/rumble_backend.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/api/rumble_backend.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/api/storage_backend.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/api/storage_backend.h deleted file mode 120000 index b754de248..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/api/storage_backend.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/api/storage_backend.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/api/video_capture_backend.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/api/video_capture_backend.h deleted file mode 120000 index 4369c70f1..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/api/video_capture_backend.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/api/video_capture_backend.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/clock_ctime_plus_delta.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/clock_ctime_plus_delta.h deleted file mode 120000 index 553a83462..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/clock_ctime_plus_delta.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/clock_ctime_plus_delta.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/file_storage.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/file_storage.h deleted file mode 120000 index fa8a9035b..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/file_storage.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/file_storage.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/plugins_compat/plugins_compat.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/plugins_compat/plugins_compat.h deleted file mode 120000 index 8259435fc..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/plugins_compat/plugins_compat.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/backends/plugins_compat/plugins_compat.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/cart/af_rtc.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/cart/af_rtc.h deleted file mode 120000 index 59d8b9074..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/cart/af_rtc.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/cart/af_rtc.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/cart/cart.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/cart/cart.h deleted file mode 120000 index 81b9ed465..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/cart/cart.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/cart/cart.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/cart/cart_rom.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/cart/cart_rom.h deleted file mode 120000 index f345d8f6c..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/cart/cart_rom.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/cart/cart_rom.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/cart/eeprom.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/cart/eeprom.h deleted file mode 120000 index 3298328a7..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/cart/eeprom.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/cart/eeprom.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/cart/flashram.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/cart/flashram.h deleted file mode 120000 index 930765639..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/cart/flashram.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/cart/flashram.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/cart/sram.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/cart/sram.h deleted file mode 120000 index c4d57c7c9..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/cart/sram.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/cart/sram.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/controllers/game_controller.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/controllers/game_controller.h deleted file mode 120000 index 012bc5663..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/controllers/game_controller.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/controllers/game_controller.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/controllers/paks/biopak.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/controllers/paks/biopak.h deleted file mode 120000 index 63a214e71..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/controllers/paks/biopak.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/controllers/paks/biopak.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/controllers/paks/mempak.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/controllers/paks/mempak.h deleted file mode 120000 index ff63e5786..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/controllers/paks/mempak.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/controllers/paks/mempak.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/controllers/paks/rumblepak.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/controllers/paks/rumblepak.h deleted file mode 120000 index c771a64a7..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/controllers/paks/rumblepak.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/controllers/paks/rumblepak.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/controllers/paks/transferpak.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/controllers/paks/transferpak.h deleted file mode 120000 index 053eb894d..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/controllers/paks/transferpak.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/controllers/paks/transferpak.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/dd/dd_controller.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/dd/dd_controller.h deleted file mode 120000 index 1265d301c..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/dd/dd_controller.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/dd/dd_controller.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/device.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/device.h deleted file mode 120000 index 0c7fffc32..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/device.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/device.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/gb/gb_cart.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/gb/gb_cart.h deleted file mode 120000 index cc004d33c..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/gb/gb_cart.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/gb/gb_cart.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/gb/m64282fp.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/gb/m64282fp.h deleted file mode 120000 index 96333abdc..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/gb/m64282fp.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/gb/m64282fp.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/gb/mbc3_rtc.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/gb/mbc3_rtc.h deleted file mode 120000 index 593ee24ab..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/gb/mbc3_rtc.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/gb/mbc3_rtc.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/memory/memory.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/memory/memory.h deleted file mode 120000 index 3cd89055a..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/memory/memory.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/memory/memory.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/pif/bootrom_hle.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/pif/bootrom_hle.h deleted file mode 120000 index 5d7d751c1..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/pif/bootrom_hle.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/pif/bootrom_hle.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/pif/cic.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/pif/cic.h deleted file mode 120000 index 05eefd2ff..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/pif/cic.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/pif/cic.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/pif/n64_cic_nus_6105.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/pif/n64_cic_nus_6105.h deleted file mode 120000 index 678b4d843..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/pif/n64_cic_nus_6105.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/pif/n64_cic_nus_6105.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/pif/pif.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/pif/pif.h deleted file mode 120000 index 4036597b9..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/pif/pif.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/pif/pif.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/cached_interp.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/cached_interp.h deleted file mode 120000 index c49ea9708..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/cached_interp.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/cached_interp.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/cp0.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/cp0.h deleted file mode 120000 index b4601b2ca..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/cp0.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/cp0.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/cp1.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/cp1.h deleted file mode 120000 index 4d937b820..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/cp1.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/cp1.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/fpu.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/fpu.h deleted file mode 120000 index a8a52f297..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/fpu.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/fpu.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/idec.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/idec.h deleted file mode 120000 index bd7a53ceb..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/idec.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/idec.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/instr_counters.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/instr_counters.h deleted file mode 120000 index 1965d1267..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/instr_counters.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/instr_counters.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/interrupt.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/interrupt.h deleted file mode 120000 index d41b1c321..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/interrupt.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/interrupt.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/new_dynarec/arm/arm_cpu_features.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/new_dynarec/arm/arm_cpu_features.h deleted file mode 120000 index 9a93562fa..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/new_dynarec/arm/arm_cpu_features.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/new_dynarec/arm/arm_cpu_features.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/new_dynarec/arm/assem_arm.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/new_dynarec/arm/assem_arm.h deleted file mode 120000 index 4670ed72b..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/new_dynarec/arm/assem_arm.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/new_dynarec/arm/assem_arm.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/new_dynarec/arm64/assem_arm64.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/new_dynarec/arm64/assem_arm64.h deleted file mode 120000 index 2242a3e51..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/new_dynarec/arm64/assem_arm64.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/new_dynarec/arm64/assem_arm64.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/new_dynarec/new_dynarec.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/new_dynarec/new_dynarec.h deleted file mode 120000 index 48e778b86..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/new_dynarec/new_dynarec.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/new_dynarec/new_dynarec.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/new_dynarec/x64/assem_x64.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/new_dynarec/x64/assem_x64.h deleted file mode 120000 index 192e88fd7..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/new_dynarec/x64/assem_x64.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/new_dynarec/x64/assem_x64.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/new_dynarec/x86/assem_x86.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/new_dynarec/x86/assem_x86.h deleted file mode 120000 index 91cde7b91..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/new_dynarec/x86/assem_x86.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/new_dynarec/x86/assem_x86.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/pure_interp.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/pure_interp.h deleted file mode 120000 index b98c58467..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/pure_interp.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/pure_interp.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/r4300_core.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/r4300_core.h deleted file mode 120000 index f91a9160c..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/r4300_core.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/r4300_core.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/recomp.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/recomp.h deleted file mode 120000 index 0ec54416a..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/recomp.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/recomp.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/recomp_types.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/recomp_types.h deleted file mode 120000 index cacc86dce..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/recomp_types.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/recomp_types.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/tlb.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/tlb.h deleted file mode 120000 index efd048893..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/tlb.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/tlb.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86/assemble.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86/assemble.h deleted file mode 120000 index 237d7d730..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86/assemble.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86/assemble.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86/assemble_struct.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86/assemble_struct.h deleted file mode 120000 index 794473013..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86/assemble_struct.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86/assemble_struct.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86/interpret.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86/interpret.h deleted file mode 120000 index 4548f3e99..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86/interpret.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86/interpret.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86/regcache.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86/regcache.h deleted file mode 120000 index acb88a386..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86/regcache.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86/regcache.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86_64/assemble.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86_64/assemble.h deleted file mode 120000 index c35d2ed78..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86_64/assemble.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86_64/assemble.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86_64/assemble_struct.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86_64/assemble_struct.h deleted file mode 120000 index 3c9a3d028..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86_64/assemble_struct.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86_64/assemble_struct.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86_64/interpret.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86_64/interpret.h deleted file mode 120000 index 17e6167a0..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86_64/interpret.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86_64/interpret.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86_64/regcache.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86_64/regcache.h deleted file mode 120000 index 4bef9d134..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86_64/regcache.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/r4300/x86_64/regcache.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/ai/ai_controller.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/ai/ai_controller.h deleted file mode 120000 index b7779874d..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/ai/ai_controller.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/ai/ai_controller.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/mi/mi_controller.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/mi/mi_controller.h deleted file mode 120000 index be965e885..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/mi/mi_controller.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/mi/mi_controller.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/pi/pi_controller.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/pi/pi_controller.h deleted file mode 120000 index 9007daaaa..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/pi/pi_controller.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/pi/pi_controller.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/rdp/fb.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/rdp/fb.h deleted file mode 120000 index e0b3b0040..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/rdp/fb.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/rdp/fb.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/rdp/rdp_core.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/rdp/rdp_core.h deleted file mode 120000 index 1a4ad47a9..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/rdp/rdp_core.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/rdp/rdp_core.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/ri/ri_controller.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/ri/ri_controller.h deleted file mode 120000 index ae97982b5..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/ri/ri_controller.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/ri/ri_controller.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/rsp/rsp_core.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/rsp/rsp_core.h deleted file mode 120000 index af6061eb0..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/rsp/rsp_core.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/rsp/rsp_core.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/si/si_controller.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/si/si_controller.h deleted file mode 120000 index c588ea2d1..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/si/si_controller.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/si/si_controller.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/vi/vi_controller.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/vi/vi_controller.h deleted file mode 120000 index 1faf55f43..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/vi/vi_controller.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rcp/vi/vi_controller.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rdram/rdram.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rdram/rdram.h deleted file mode 120000 index aaa30e53b..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rdram/rdram.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/device/rdram/rdram.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/cheat.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/cheat.h deleted file mode 120000 index 4ba081cfa..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/cheat.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/cheat.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/eventloop.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/eventloop.h deleted file mode 120000 index e96cad754..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/eventloop.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/eventloop.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/lirc.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/lirc.h deleted file mode 120000 index c6e08b812..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/lirc.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/lirc.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/list.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/list.h deleted file mode 120000 index 111b67b01..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/list.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/list.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/main.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/main.h deleted file mode 120000 index 99bced2fa..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/main.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/main.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/profile.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/profile.h deleted file mode 120000 index a494eda42..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/profile.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/profile.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/rom.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/rom.h deleted file mode 120000 index 228cdb889..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/rom.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/rom.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/savestates.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/savestates.h deleted file mode 120000 index d1ad5dd67..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/savestates.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/savestates.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/screenshot.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/screenshot.h deleted file mode 120000 index 33833595d..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/screenshot.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/screenshot.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/sdl_key_converter.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/sdl_key_converter.h deleted file mode 120000 index 424994a8e..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/sdl_key_converter.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/sdl_key_converter.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/util.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/util.h deleted file mode 120000 index 76517dd73..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/util.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/util.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/version.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/version.h deleted file mode 120000 index 9aecfd6d5..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/version.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/version.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/workqueue.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/workqueue.h deleted file mode 120000 index 9d25dee35..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/workqueue.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/main/workqueue.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osal/dynamiclib.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osal/dynamiclib.h deleted file mode 120000 index 73d4b9292..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osal/dynamiclib.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osal/dynamiclib.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osal/files.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osal/files.h deleted file mode 120000 index 7a2531447..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osal/files.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osal/files.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osal/preproc.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osal/preproc.h deleted file mode 120000 index 29ddd151a..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osal/preproc.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osal/preproc.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osd/oglft_c.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osd/oglft_c.h deleted file mode 120000 index dbf052a6f..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osd/oglft_c.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osd/oglft_c.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osd/osd.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osd/osd.h deleted file mode 120000 index 059d445f3..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osd/osd.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osd/osd.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/plugin/dummy_audio.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/plugin/dummy_audio.h deleted file mode 120000 index b9b39265a..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/plugin/dummy_audio.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/plugin/dummy_audio.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/plugin/dummy_input.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/plugin/dummy_input.h deleted file mode 120000 index 92b8bfba8..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/plugin/dummy_input.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/plugin/dummy_input.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/plugin/dummy_rsp.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/plugin/dummy_rsp.h deleted file mode 120000 index cbcbadb44..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/plugin/dummy_rsp.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/plugin/dummy_rsp.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/plugin/dummy_video.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/plugin/dummy_video.h deleted file mode 120000 index 18f3536c1..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/plugin/dummy_video.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/plugin/dummy_video.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/plugin/plugin.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/plugin/plugin.h deleted file mode 120000 index 1a9b5466b..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/plugin/plugin.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/plugin/plugin.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/md5/md5.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/md5/md5.h deleted file mode 120000 index f6d31591f..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/md5/md5.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/md5/md5.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/minizip/crypt.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/minizip/crypt.h deleted file mode 120000 index d56c5e0de..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/minizip/crypt.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/minizip/crypt.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/minizip/ioapi.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/minizip/ioapi.h deleted file mode 120000 index c21af5ed6..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/minizip/ioapi.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/minizip/ioapi.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/minizip/unzip.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/minizip/unzip.h deleted file mode 120000 index b8793e6cc..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/minizip/unzip.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/minizip/unzip.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/minizip/zip.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/minizip/zip.h deleted file mode 120000 index 955cb6c46..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/minizip/zip.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/minizip/zip.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/oglft/OGLFT.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/oglft/OGLFT.h deleted file mode 120000 index 55fb7b605..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/oglft/OGLFT.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/oglft/OGLFT.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/xxhash/xxhash.h b/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/xxhash/xxhash.h deleted file mode 120000 index 851b50f00..000000000 --- a/Pods/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/xxhash/xxhash.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/xxhash/xxhash.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/N64DeltaCore/Bridge/N64EmulatorBridge.h b/Pods/Headers/Private/N64DeltaCore/N64DeltaCore/Bridge/N64EmulatorBridge.h deleted file mode 120000 index d1cd9c0c8..000000000 --- a/Pods/Headers/Private/N64DeltaCore/N64DeltaCore/Bridge/N64EmulatorBridge.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/N64DeltaCore/N64DeltaCore/Bridge/N64EmulatorBridge.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/N64DeltaCore/N64DeltaCore.h b/Pods/Headers/Private/N64DeltaCore/N64DeltaCore/N64DeltaCore.h deleted file mode 120000 index 05ec03f0d..000000000 --- a/Pods/Headers/Private/N64DeltaCore/N64DeltaCore/N64DeltaCore.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/N64DeltaCore/N64DeltaCore/N64DeltaCore.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/N64DeltaCore/Types/N64Types.h b/Pods/Headers/Private/N64DeltaCore/N64DeltaCore/Types/N64Types.h deleted file mode 120000 index 3d771d7d9..000000000 --- a/Pods/Headers/Private/N64DeltaCore/N64DeltaCore/Types/N64Types.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/N64DeltaCore/N64DeltaCore/Types/N64Types.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/libMupen64Plus/SDL/SDL.h b/Pods/Headers/Private/N64DeltaCore/libMupen64Plus/SDL/SDL.h deleted file mode 120000 index 98b89ed87..000000000 --- a/Pods/Headers/Private/N64DeltaCore/libMupen64Plus/SDL/SDL.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/N64DeltaCore/libMupen64Plus/SDL/SDL.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/libMupen64Plus/SDL/SDL_config.h b/Pods/Headers/Private/N64DeltaCore/libMupen64Plus/SDL/SDL_config.h deleted file mode 120000 index 87522a10e..000000000 --- a/Pods/Headers/Private/N64DeltaCore/libMupen64Plus/SDL/SDL_config.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/N64DeltaCore/libMupen64Plus/SDL/SDL_config.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/libMupen64Plus/SDL/SDL_opengl.h b/Pods/Headers/Private/N64DeltaCore/libMupen64Plus/SDL/SDL_opengl.h deleted file mode 120000 index 2b17d2390..000000000 --- a/Pods/Headers/Private/N64DeltaCore/libMupen64Plus/SDL/SDL_opengl.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/N64DeltaCore/libMupen64Plus/SDL/SDL_opengl.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/libMupen64Plus/SDL/SDL_opengles2.h b/Pods/Headers/Private/N64DeltaCore/libMupen64Plus/SDL/SDL_opengles2.h deleted file mode 120000 index 3bbc8d71d..000000000 --- a/Pods/Headers/Private/N64DeltaCore/libMupen64Plus/SDL/SDL_opengles2.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/N64DeltaCore/libMupen64Plus/SDL/SDL_opengles2.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/libMupen64Plus/SDL/SDL_thread.h b/Pods/Headers/Private/N64DeltaCore/libMupen64Plus/SDL/SDL_thread.h deleted file mode 120000 index 6b9639ae4..000000000 --- a/Pods/Headers/Private/N64DeltaCore/libMupen64Plus/SDL/SDL_thread.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/N64DeltaCore/libMupen64Plus/SDL/SDL_thread.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/mupen64plus-rsp-hle/src/alist.h b/Pods/Headers/Private/N64DeltaCore/mupen64plus-rsp-hle/src/alist.h deleted file mode 120000 index 5b158a549..000000000 --- a/Pods/Headers/Private/N64DeltaCore/mupen64plus-rsp-hle/src/alist.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-rsp-hle/src/alist.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/mupen64plus-rsp-hle/src/arithmetics.h b/Pods/Headers/Private/N64DeltaCore/mupen64plus-rsp-hle/src/arithmetics.h deleted file mode 120000 index e9e7b4d3f..000000000 --- a/Pods/Headers/Private/N64DeltaCore/mupen64plus-rsp-hle/src/arithmetics.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-rsp-hle/src/arithmetics.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/mupen64plus-rsp-hle/src/audio.h b/Pods/Headers/Private/N64DeltaCore/mupen64plus-rsp-hle/src/audio.h deleted file mode 120000 index 09f02e4aa..000000000 --- a/Pods/Headers/Private/N64DeltaCore/mupen64plus-rsp-hle/src/audio.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-rsp-hle/src/audio.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/mupen64plus-rsp-hle/src/common.h b/Pods/Headers/Private/N64DeltaCore/mupen64plus-rsp-hle/src/common.h deleted file mode 120000 index 5f5539200..000000000 --- a/Pods/Headers/Private/N64DeltaCore/mupen64plus-rsp-hle/src/common.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-rsp-hle/src/common.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/mupen64plus-rsp-hle/src/hle.h b/Pods/Headers/Private/N64DeltaCore/mupen64plus-rsp-hle/src/hle.h deleted file mode 120000 index 3c5990cd0..000000000 --- a/Pods/Headers/Private/N64DeltaCore/mupen64plus-rsp-hle/src/hle.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-rsp-hle/src/hle.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/mupen64plus-rsp-hle/src/hle_external.h b/Pods/Headers/Private/N64DeltaCore/mupen64plus-rsp-hle/src/hle_external.h deleted file mode 120000 index e0f0938f4..000000000 --- a/Pods/Headers/Private/N64DeltaCore/mupen64plus-rsp-hle/src/hle_external.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-rsp-hle/src/hle_external.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/mupen64plus-rsp-hle/src/hle_internal.h b/Pods/Headers/Private/N64DeltaCore/mupen64plus-rsp-hle/src/hle_internal.h deleted file mode 120000 index 79be11935..000000000 --- a/Pods/Headers/Private/N64DeltaCore/mupen64plus-rsp-hle/src/hle_internal.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-rsp-hle/src/hle_internal.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/mupen64plus-rsp-hle/src/osal_dynamiclib.h b/Pods/Headers/Private/N64DeltaCore/mupen64plus-rsp-hle/src/osal_dynamiclib.h deleted file mode 120000 index 07744673b..000000000 --- a/Pods/Headers/Private/N64DeltaCore/mupen64plus-rsp-hle/src/osal_dynamiclib.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-rsp-hle/src/osal_dynamiclib.h \ No newline at end of file diff --git a/Pods/Headers/Private/N64DeltaCore/mupen64plus-rsp-hle/src/ucodes.h b/Pods/Headers/Private/N64DeltaCore/mupen64plus-rsp-hle/src/ucodes.h deleted file mode 120000 index c4c0e44c0..000000000 --- a/Pods/Headers/Private/N64DeltaCore/mupen64plus-rsp-hle/src/ucodes.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/N64DeltaCore/Mupen64Plus/mupen64plus-rsp-hle/src/ucodes.h \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/NESDeltaCore/NESDeltaCore.h b/Pods/Headers/Private/NESDeltaCore/NESDeltaCore/NESDeltaCore.h deleted file mode 120000 index 9bda193b0..000000000 --- a/Pods/Headers/Private/NESDeltaCore/NESDeltaCore/NESDeltaCore.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/NESDeltaCore/NESDeltaCore/NESDeltaCore.h \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstApu.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstApu.hpp deleted file mode 120000 index 809624724..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstApu.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstApu.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstAssert.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstAssert.hpp deleted file mode 120000 index 2e2e3a13a..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstAssert.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstAssert.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstBarcodeReader.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstBarcodeReader.hpp deleted file mode 120000 index 73fcdb887..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstBarcodeReader.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstBarcodeReader.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstBase.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstBase.hpp deleted file mode 120000 index 45edea491..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstBase.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstBase.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstCartridge.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstCartridge.hpp deleted file mode 120000 index 39b0895f5..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstCartridge.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstCartridge.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstCartridgeInes.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstCartridgeInes.hpp deleted file mode 120000 index 31003be9d..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstCartridgeInes.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstCartridgeInes.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstCartridgeRomset.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstCartridgeRomset.hpp deleted file mode 120000 index fb788c42e..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstCartridgeRomset.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstCartridgeRomset.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstCartridgeUnif.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstCartridgeUnif.hpp deleted file mode 120000 index 49571b509..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstCartridgeUnif.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstCartridgeUnif.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstCheats.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstCheats.hpp deleted file mode 120000 index 6660cb67c..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstCheats.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstCheats.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstChecksum.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstChecksum.hpp deleted file mode 120000 index bda09d020..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstChecksum.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstChecksum.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstChips.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstChips.hpp deleted file mode 120000 index 5d7c94b88..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstChips.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstChips.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstCore.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstCore.hpp deleted file mode 120000 index d33dde643..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstCore.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstCore.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstCpu.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstCpu.hpp deleted file mode 120000 index b677ed512..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstCpu.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstCpu.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstCrc32.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstCrc32.hpp deleted file mode 120000 index a38ffccc4..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstCrc32.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstCrc32.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstDipSwitches.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstDipSwitches.hpp deleted file mode 120000 index 25cd344f3..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstDipSwitches.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstDipSwitches.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstFds.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstFds.hpp deleted file mode 120000 index d26832215..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstFds.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstFds.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstFile.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstFile.hpp deleted file mode 120000 index d6adc3448..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstFile.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstFile.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstFpuPrecision.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstFpuPrecision.hpp deleted file mode 120000 index 06801ad67..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstFpuPrecision.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstFpuPrecision.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstHook.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstHook.hpp deleted file mode 120000 index 2b573ae3f..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstHook.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstHook.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstImage.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstImage.hpp deleted file mode 120000 index 159ad0341..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstImage.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstImage.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstImageDatabase.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstImageDatabase.hpp deleted file mode 120000 index 78722e3cf..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstImageDatabase.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstImageDatabase.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstIoAccessor.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstIoAccessor.hpp deleted file mode 120000 index 26702ff9f..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstIoAccessor.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstIoAccessor.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstIoLine.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstIoLine.hpp deleted file mode 120000 index f53064749..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstIoLine.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstIoLine.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstIoMap.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstIoMap.hpp deleted file mode 120000 index 0cedbf07f..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstIoMap.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstIoMap.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstIoPort.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstIoPort.hpp deleted file mode 120000 index edc9f03c2..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstIoPort.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstIoPort.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstLog.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstLog.hpp deleted file mode 120000 index 37c3fea8c..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstLog.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstLog.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstMachine.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstMachine.hpp deleted file mode 120000 index 3e7a61c72..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstMachine.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstMachine.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstMemory.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstMemory.hpp deleted file mode 120000 index c25297b4b..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstMemory.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstMemory.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstNsf.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstNsf.hpp deleted file mode 120000 index 865d6b8c8..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstNsf.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstNsf.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstPatcher.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstPatcher.hpp deleted file mode 120000 index 5452ae066..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstPatcher.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstPatcher.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstPatcherIps.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstPatcherIps.hpp deleted file mode 120000 index ab2f6a753..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstPatcherIps.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstPatcherIps.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstPatcherUps.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstPatcherUps.hpp deleted file mode 120000 index ae15ac2ec..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstPatcherUps.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstPatcherUps.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstPins.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstPins.hpp deleted file mode 120000 index 70a8806f7..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstPins.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstPins.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstPpu.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstPpu.hpp deleted file mode 120000 index 589dab377..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstPpu.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstPpu.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstProperties.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstProperties.hpp deleted file mode 120000 index 354354c2f..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstProperties.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstProperties.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstRam.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstRam.hpp deleted file mode 120000 index 5c1241794..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstRam.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstRam.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstSha1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstSha1.hpp deleted file mode 120000 index fe4bbeab6..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstSha1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstSha1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstSoundPcm.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstSoundPcm.hpp deleted file mode 120000 index 61597a76f..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstSoundPcm.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstSoundPcm.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstSoundPlayer.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstSoundPlayer.hpp deleted file mode 120000 index abb324c71..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstSoundPlayer.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstSoundPlayer.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstSoundRenderer.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstSoundRenderer.hpp deleted file mode 120000 index ba2846bc2..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstSoundRenderer.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstSoundRenderer.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstState.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstState.hpp deleted file mode 120000 index d338cf069..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstState.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstState.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstStream.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstStream.hpp deleted file mode 120000 index dc75e9870..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstStream.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstStream.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstTimer.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstTimer.hpp deleted file mode 120000 index 5373009d6..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstTimer.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstTimer.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstTracker.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstTracker.hpp deleted file mode 120000 index 23418541f..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstTracker.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstTracker.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstTrackerMovie.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstTrackerMovie.hpp deleted file mode 120000 index 5b3694ad8..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstTrackerMovie.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstTrackerMovie.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstTrackerRewinder.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstTrackerRewinder.hpp deleted file mode 120000 index b13ec2a54..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstTrackerRewinder.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstTrackerRewinder.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstVector.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstVector.hpp deleted file mode 120000 index caba6ee1c..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstVector.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstVector.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstVideoFilter2xSaI.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstVideoFilter2xSaI.hpp deleted file mode 120000 index 80abc874c..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstVideoFilter2xSaI.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstVideoFilter2xSaI.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstVideoFilterHqX.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstVideoFilterHqX.hpp deleted file mode 120000 index d8804403a..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstVideoFilterHqX.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstVideoFilterHqX.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstVideoFilterNone.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstVideoFilterNone.hpp deleted file mode 120000 index 7aec95f3b..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstVideoFilterNone.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstVideoFilterNone.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstVideoFilterNtsc.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstVideoFilterNtsc.hpp deleted file mode 120000 index d911e601a..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstVideoFilterNtsc.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstVideoFilterNtsc.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstVideoFilterScaleX.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstVideoFilterScaleX.hpp deleted file mode 120000 index 7c0b1590d..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstVideoFilterScaleX.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstVideoFilterScaleX.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstVideoFilterxBR.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstVideoFilterxBR.hpp deleted file mode 120000 index d60d10219..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstVideoFilterxBR.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstVideoFilterxBR.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstVideoRenderer.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstVideoRenderer.hpp deleted file mode 120000 index b04f377b0..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstVideoRenderer.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstVideoRenderer.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstVideoScreen.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstVideoScreen.hpp deleted file mode 120000 index 21295d6df..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstVideoScreen.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstVideoScreen.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstXml.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstXml.hpp deleted file mode 120000 index 3090beb1a..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstXml.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstXml.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstZlib.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstZlib.hpp deleted file mode 120000 index a5d23e870..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/NstZlib.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../Cores/NESDeltaCore/nestopia/source/core/NstZlib.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApi.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApi.hpp deleted file mode 120000 index 3c1d76870..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApi.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/api/NstApi.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiBarcodeReader.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiBarcodeReader.hpp deleted file mode 120000 index d608835d3..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiBarcodeReader.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/api/NstApiBarcodeReader.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiCartridge.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiCartridge.hpp deleted file mode 120000 index 9c8ba202c..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiCartridge.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/api/NstApiCartridge.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiCheats.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiCheats.hpp deleted file mode 120000 index 88ca32589..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiCheats.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/api/NstApiCheats.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiConfig.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiConfig.hpp deleted file mode 120000 index bc5ff68fc..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiConfig.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/api/NstApiConfig.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiDipSwitches.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiDipSwitches.hpp deleted file mode 120000 index 2e35eaff4..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiDipSwitches.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/api/NstApiDipSwitches.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiEmulator.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiEmulator.hpp deleted file mode 120000 index f82b4067e..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiEmulator.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/api/NstApiEmulator.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiFds.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiFds.hpp deleted file mode 120000 index 0071921a2..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiFds.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/api/NstApiFds.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiInput.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiInput.hpp deleted file mode 120000 index c9a55b6d4..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiInput.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/api/NstApiInput.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiMachine.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiMachine.hpp deleted file mode 120000 index 76c2125d0..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiMachine.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/api/NstApiMachine.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiMovie.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiMovie.hpp deleted file mode 120000 index 64504c110..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiMovie.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/api/NstApiMovie.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiNsf.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiNsf.hpp deleted file mode 120000 index f9d85e0e9..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiNsf.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/api/NstApiNsf.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiRewinder.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiRewinder.hpp deleted file mode 120000 index f221965c8..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiRewinder.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/api/NstApiRewinder.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiSound.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiSound.hpp deleted file mode 120000 index b3be42d93..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiSound.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/api/NstApiSound.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiTapeRecorder.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiTapeRecorder.hpp deleted file mode 120000 index e4a51e95c..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiTapeRecorder.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/api/NstApiTapeRecorder.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiUser.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiUser.hpp deleted file mode 120000 index 9e532a494..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiUser.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/api/NstApiUser.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiVideo.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiVideo.hpp deleted file mode 120000 index afe72a664..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/api/NstApiVideo.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/api/NstApiVideo.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoard.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoard.hpp deleted file mode 120000 index a62d9c293..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoard.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoard.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardAcclaim.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardAcclaim.hpp deleted file mode 120000 index a5cdc3918..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardAcclaim.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardAcclaim.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardAcclaimMcAcc.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardAcclaimMcAcc.hpp deleted file mode 120000 index cc08e63fb..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardAcclaimMcAcc.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardAcclaimMcAcc.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardAe.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardAe.hpp deleted file mode 120000 index 593b2400f..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardAe.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardAe.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardAgci.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardAgci.hpp deleted file mode 120000 index 2ac6063ce..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardAgci.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardAgci.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardAve.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardAve.hpp deleted file mode 120000 index 5eff31dc7..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardAve.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardAve.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardAveD1012.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardAveD1012.hpp deleted file mode 120000 index 5201cdfe1..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardAveD1012.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardAveD1012.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardAveNina.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardAveNina.hpp deleted file mode 120000 index c6fa1ebcf..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardAveNina.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardAveNina.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardAxRom.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardAxRom.hpp deleted file mode 120000 index d0c1b615e..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardAxRom.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardAxRom.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBandai.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBandai.hpp deleted file mode 120000 index e81ae6aa6..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBandai.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBandai.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBandai24c0x.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBandai24c0x.hpp deleted file mode 120000 index bca5e3a37..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBandai24c0x.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBandai24c0x.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBandaiAerobicsStudio.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBandaiAerobicsStudio.hpp deleted file mode 120000 index bf8a5a0f4..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBandaiAerobicsStudio.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBandaiAerobicsStudio.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBandaiDatach.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBandaiDatach.hpp deleted file mode 120000 index 55767f91b..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBandaiDatach.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBandaiDatach.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBandaiKaraokeStudio.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBandaiKaraokeStudio.hpp deleted file mode 120000 index f1ba42b91..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBandaiKaraokeStudio.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBandaiKaraokeStudio.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBandaiLz93d50.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBandaiLz93d50.hpp deleted file mode 120000 index 5ffaac8d1..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBandaiLz93d50.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBandaiLz93d50.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBandaiLz93d50ex.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBandaiLz93d50ex.hpp deleted file mode 120000 index 81a941a20..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBandaiLz93d50ex.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBandaiLz93d50ex.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBandaiOekaKids.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBandaiOekaKids.hpp deleted file mode 120000 index 7d8d77f96..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBandaiOekaKids.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBandaiOekaKids.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBenshengBs5.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBenshengBs5.hpp deleted file mode 120000 index dc036ed17..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBenshengBs5.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBenshengBs5.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc110in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc110in1.hpp deleted file mode 120000 index 6893f5401..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc110in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmc110in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc1200in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc1200in1.hpp deleted file mode 120000 index 24f6f1c67..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc1200in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmc1200in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc150in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc150in1.hpp deleted file mode 120000 index baae16c3e..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc150in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmc150in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc15in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc15in1.hpp deleted file mode 120000 index 2a13ebf9b..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc15in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmc15in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc20in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc20in1.hpp deleted file mode 120000 index 48d2e13b1..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc20in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmc20in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc21in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc21in1.hpp deleted file mode 120000 index 97a222a98..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc21in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmc21in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc22Games.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc22Games.hpp deleted file mode 120000 index 56b8e1677..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc22Games.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmc22Games.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc31in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc31in1.hpp deleted file mode 120000 index 14090d564..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc31in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmc31in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc35in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc35in1.hpp deleted file mode 120000 index 57038006d..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc35in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmc35in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc36in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc36in1.hpp deleted file mode 120000 index 2529c34ed..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc36in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmc36in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc64in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc64in1.hpp deleted file mode 120000 index 7e2bc8959..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc64in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmc64in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc72in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc72in1.hpp deleted file mode 120000 index f45848aa1..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc72in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmc72in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc76in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc76in1.hpp deleted file mode 120000 index a94051f0e..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc76in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmc76in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc800in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc800in1.hpp deleted file mode 120000 index 266292b74..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc800in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmc800in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc8157.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc8157.hpp deleted file mode 120000 index 399de8db8..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc8157.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmc8157.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc9999999in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc9999999in1.hpp deleted file mode 120000 index 9a6b6ac87..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmc9999999in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmc9999999in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcA65as.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcA65as.hpp deleted file mode 120000 index 4d9831429..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcA65as.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcA65as.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcBallgames11in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcBallgames11in1.hpp deleted file mode 120000 index 23bfde388..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcBallgames11in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcBallgames11in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcCh001.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcCh001.hpp deleted file mode 120000 index 1e51f1b42..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcCh001.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcCh001.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcCtc65.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcCtc65.hpp deleted file mode 120000 index 7e6f1a271..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcCtc65.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcCtc65.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcFamily4646B.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcFamily4646B.hpp deleted file mode 120000 index beb7e37b7..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcFamily4646B.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcFamily4646B.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcFk23c.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcFk23c.hpp deleted file mode 120000 index 188cf0de0..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcFk23c.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcFk23c.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcGamestarA.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcGamestarA.hpp deleted file mode 120000 index 2a8e55692..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcGamestarA.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcGamestarA.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcGamestarB.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcGamestarB.hpp deleted file mode 120000 index 36e126939..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcGamestarB.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcGamestarB.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcGolden190in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcGolden190in1.hpp deleted file mode 120000 index f8c7bd4db..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcGolden190in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcGolden190in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcGoldenCard6in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcGoldenCard6in1.hpp deleted file mode 120000 index 9c19a7832..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcGoldenCard6in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcGoldenCard6in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcGoldenGame260in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcGoldenGame260in1.hpp deleted file mode 120000 index 87571bb42..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcGoldenGame260in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcGoldenGame260in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcHero.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcHero.hpp deleted file mode 120000 index 4fa30bd76..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcHero.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcHero.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcMarioParty7in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcMarioParty7in1.hpp deleted file mode 120000 index e09be7117..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcMarioParty7in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcMarioParty7in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcNovelDiamond.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcNovelDiamond.hpp deleted file mode 120000 index f448f7294..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcNovelDiamond.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcNovelDiamond.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcPowerjoy84in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcPowerjoy84in1.hpp deleted file mode 120000 index be8420b8a..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcPowerjoy84in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcPowerjoy84in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcResetBased4in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcResetBased4in1.hpp deleted file mode 120000 index 018d92ba7..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcResetBased4in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcResetBased4in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuper22Games.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuper22Games.hpp deleted file mode 120000 index 5f95d5356..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuper22Games.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuper22Games.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuper24in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuper24in1.hpp deleted file mode 120000 index e759a10c3..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuper24in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuper24in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuper40in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuper40in1.hpp deleted file mode 120000 index 88117a046..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuper40in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuper40in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuper700in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuper700in1.hpp deleted file mode 120000 index f0727c44b..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuper700in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuper700in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuperBig7in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuperBig7in1.hpp deleted file mode 120000 index 80f375016..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuperBig7in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuperBig7in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuperGun20in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuperGun20in1.hpp deleted file mode 120000 index 7de2b24e7..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuperGun20in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuperGun20in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuperHiK300in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuperHiK300in1.hpp deleted file mode 120000 index 13c3a0746..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuperHiK300in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuperHiK300in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuperHiK4in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuperHiK4in1.hpp deleted file mode 120000 index f71c2726f..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuperHiK4in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuperHiK4in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuperVision16in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuperVision16in1.hpp deleted file mode 120000 index 9165fe483..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuperVision16in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcSuperVision16in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcT262.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcT262.hpp deleted file mode 120000 index 723142c65..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcT262.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcT262.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcVrc4.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcVrc4.hpp deleted file mode 120000 index 13a449642..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcVrc4.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcVrc4.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcVt5201.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcVt5201.hpp deleted file mode 120000 index 3aca4d308..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcVt5201.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcVt5201.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcY2k64in1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcY2k64in1.hpp deleted file mode 120000 index c76dec966..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBmcY2k64in1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBmcY2k64in1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtl2708.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtl2708.hpp deleted file mode 120000 index eb0c9b8ef..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtl2708.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBtl2708.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtl6035052.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtl6035052.hpp deleted file mode 120000 index 318e901c6..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtl6035052.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBtl6035052.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlAx5705.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlAx5705.hpp deleted file mode 120000 index 2c7ceae67..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlAx5705.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBtlAx5705.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlDragonNinja.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlDragonNinja.hpp deleted file mode 120000 index 2bf9489db..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlDragonNinja.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBtlDragonNinja.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlGeniusMerioBros.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlGeniusMerioBros.hpp deleted file mode 120000 index d30d55d4f..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlGeniusMerioBros.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBtlGeniusMerioBros.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlMarioBaby.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlMarioBaby.hpp deleted file mode 120000 index 65dc51532..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlMarioBaby.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBtlMarioBaby.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlPikachuY2k.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlPikachuY2k.hpp deleted file mode 120000 index f489fd67d..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlPikachuY2k.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBtlPikachuY2k.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlShuiGuanPipe.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlShuiGuanPipe.hpp deleted file mode 120000 index d6e65e455..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlShuiGuanPipe.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBtlShuiGuanPipe.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlSmb2a.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlSmb2a.hpp deleted file mode 120000 index ada6a8daa..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlSmb2a.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBtlSmb2a.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlSmb2b.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlSmb2b.hpp deleted file mode 120000 index b5503aafc..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlSmb2b.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBtlSmb2b.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlSmb2c.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlSmb2c.hpp deleted file mode 120000 index 68adf2e25..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlSmb2c.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBtlSmb2c.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlSmb3.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlSmb3.hpp deleted file mode 120000 index 8e0a1ec6e..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlSmb3.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBtlSmb3.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlSuperBros11.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlSuperBros11.hpp deleted file mode 120000 index 2363aa05e..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlSuperBros11.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBtlSuperBros11.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlT230.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlT230.hpp deleted file mode 120000 index b0a053b83..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlT230.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBtlT230.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlTobidaseDaisakusen.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlTobidaseDaisakusen.hpp deleted file mode 120000 index c7688603d..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBtlTobidaseDaisakusen.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBtlTobidaseDaisakusen.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBxRom.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBxRom.hpp deleted file mode 120000 index 251c42d27..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardBxRom.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardBxRom.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardCaltron.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardCaltron.hpp deleted file mode 120000 index f538df17f..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardCaltron.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardCaltron.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardCamerica.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardCamerica.hpp deleted file mode 120000 index 3982247c4..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardCamerica.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardCamerica.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardCne.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardCne.hpp deleted file mode 120000 index 85b731053..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardCne.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardCne.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardCneDecathlon.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardCneDecathlon.hpp deleted file mode 120000 index 95de3e239..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardCneDecathlon.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardCneDecathlon.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardCnePsb.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardCnePsb.hpp deleted file mode 120000 index ceeb87ca7..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardCnePsb.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardCnePsb.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardCneShlz.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardCneShlz.hpp deleted file mode 120000 index a1988584e..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardCneShlz.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardCneShlz.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardCony.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardCony.hpp deleted file mode 120000 index 4dd7e465d..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardCony.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardCony.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardCxRom.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardCxRom.hpp deleted file mode 120000 index d8deb491b..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardCxRom.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardCxRom.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardDiscrete.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardDiscrete.hpp deleted file mode 120000 index 2f084ea40..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardDiscrete.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardDiscrete.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardDreamtech.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardDreamtech.hpp deleted file mode 120000 index ff06adeb1..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardDreamtech.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardDreamtech.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardDxRom.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardDxRom.hpp deleted file mode 120000 index dda3aed6f..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardDxRom.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardDxRom.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardEvent.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardEvent.hpp deleted file mode 120000 index 7ce553946..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardEvent.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardEvent.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardExRom.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardExRom.hpp deleted file mode 120000 index f8c8cc617..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardExRom.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardExRom.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardFb.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardFb.hpp deleted file mode 120000 index ecac6bd01..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardFb.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardFb.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardFfe.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardFfe.hpp deleted file mode 120000 index 0593c98c3..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardFfe.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardFfe.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardFujiya.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardFujiya.hpp deleted file mode 120000 index 78132d0f8..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardFujiya.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardFujiya.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardFukutake.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardFukutake.hpp deleted file mode 120000 index 2bed732b4..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardFukutake.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardFukutake.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardFutureMedia.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardFutureMedia.hpp deleted file mode 120000 index 086a497cd..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardFutureMedia.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardFutureMedia.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardFxRom.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardFxRom.hpp deleted file mode 120000 index d503b059d..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardFxRom.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardFxRom.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardGouder.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardGouder.hpp deleted file mode 120000 index c7b1c643c..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardGouder.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardGouder.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardGxRom.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardGxRom.hpp deleted file mode 120000 index 8d84a7d41..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardGxRom.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardGxRom.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardHenggedianzi.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardHenggedianzi.hpp deleted file mode 120000 index 432150cee..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardHenggedianzi.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardHenggedianzi.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardHes.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardHes.hpp deleted file mode 120000 index f865596bc..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardHes.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardHes.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardHosenkan.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardHosenkan.hpp deleted file mode 120000 index 81c5e7c32..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardHosenkan.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardHosenkan.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardHxRom.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardHxRom.hpp deleted file mode 120000 index a71408d8e..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardHxRom.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardHxRom.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardIrem.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardIrem.hpp deleted file mode 120000 index 147092869..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardIrem.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardIrem.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardIremG101.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardIremG101.hpp deleted file mode 120000 index 02d33798d..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardIremG101.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardIremG101.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardIremH3001.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardIremH3001.hpp deleted file mode 120000 index 54e43159f..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardIremH3001.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardIremH3001.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardIremHolyDiver.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardIremHolyDiver.hpp deleted file mode 120000 index 55ed831df..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardIremHolyDiver.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardIremHolyDiver.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardIremKaiketsu.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardIremKaiketsu.hpp deleted file mode 120000 index d518a2c33..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardIremKaiketsu.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardIremKaiketsu.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardIremLrog017.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardIremLrog017.hpp deleted file mode 120000 index 0f60d387f..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardIremLrog017.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardIremLrog017.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardJaleco.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardJaleco.hpp deleted file mode 120000 index 8b0ef8d9c..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardJaleco.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardJaleco.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardJalecoJf11.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardJalecoJf11.hpp deleted file mode 120000 index 7e5dfae0d..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardJalecoJf11.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardJalecoJf11.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardJalecoJf13.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardJalecoJf13.hpp deleted file mode 120000 index e62488332..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardJalecoJf13.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardJalecoJf13.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardJalecoJf16.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardJalecoJf16.hpp deleted file mode 120000 index 1d7ce7b06..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardJalecoJf16.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardJalecoJf16.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardJalecoJf17.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardJalecoJf17.hpp deleted file mode 120000 index 5238e31d9..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardJalecoJf17.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardJalecoJf17.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardJalecoJf19.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardJalecoJf19.hpp deleted file mode 120000 index 889dec292..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardJalecoJf19.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardJalecoJf19.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardJalecoSs88006.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardJalecoSs88006.hpp deleted file mode 120000 index 60a1b692e..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardJalecoSs88006.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardJalecoSs88006.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardJxRom.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardJxRom.hpp deleted file mode 120000 index 4bf7209d6..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardJxRom.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardJxRom.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardJyCompany.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardJyCompany.hpp deleted file mode 120000 index 8b708bc85..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardJyCompany.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardJyCompany.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKaiser.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKaiser.hpp deleted file mode 120000 index 94da31983..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKaiser.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardKaiser.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKasing.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKasing.hpp deleted file mode 120000 index faf87a055..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKasing.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardKasing.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKay.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKay.hpp deleted file mode 120000 index c56abf44d..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKay.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardKay.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKayH2288.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKayH2288.hpp deleted file mode 120000 index 6a2b9b7cf..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKayH2288.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardKayH2288.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKayPandaPrince.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKayPandaPrince.hpp deleted file mode 120000 index 0cc15b228..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKayPandaPrince.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardKayPandaPrince.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKonami.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKonami.hpp deleted file mode 120000 index a27f1f059..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKonami.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardKonami.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKonamiVrc1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKonamiVrc1.hpp deleted file mode 120000 index a959b9d69..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKonamiVrc1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardKonamiVrc1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKonamiVrc2.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKonamiVrc2.hpp deleted file mode 120000 index 0792a35a1..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKonamiVrc2.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardKonamiVrc2.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKonamiVrc3.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKonamiVrc3.hpp deleted file mode 120000 index b0a3593e6..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKonamiVrc3.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardKonamiVrc3.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKonamiVrc4.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKonamiVrc4.hpp deleted file mode 120000 index 76f16fbfc..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKonamiVrc4.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardKonamiVrc4.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKonamiVrc6.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKonamiVrc6.hpp deleted file mode 120000 index 02f1b6b7b..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKonamiVrc6.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardKonamiVrc6.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKonamiVrc7.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKonamiVrc7.hpp deleted file mode 120000 index 0e3977883..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKonamiVrc7.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardKonamiVrc7.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKonamiVsSystem.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKonamiVsSystem.hpp deleted file mode 120000 index 5dd62b940..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardKonamiVsSystem.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardKonamiVsSystem.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardMagicSeries.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardMagicSeries.hpp deleted file mode 120000 index 496eb8ed2..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardMagicSeries.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardMagicSeries.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardMmc1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardMmc1.hpp deleted file mode 120000 index 5b830e033..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardMmc1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardMmc1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardMmc2.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardMmc2.hpp deleted file mode 120000 index 925b697e4..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardMmc2.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardMmc2.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardMmc3.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardMmc3.hpp deleted file mode 120000 index 44d837be4..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardMmc3.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardMmc3.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardMmc4.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardMmc4.hpp deleted file mode 120000 index 03f24e29a..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardMmc4.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardMmc4.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardMmc5.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardMmc5.hpp deleted file mode 120000 index 8b16517f8..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardMmc5.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardMmc5.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardMmc6.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardMmc6.hpp deleted file mode 120000 index e83af24d9..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardMmc6.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardMmc6.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardMxRom.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardMxRom.hpp deleted file mode 120000 index 4dfb6c422..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardMxRom.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardMxRom.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNRom.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNRom.hpp deleted file mode 120000 index 7a555c117..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNRom.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardNRom.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNamcot.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNamcot.hpp deleted file mode 120000 index dc0d64388..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNamcot.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardNamcot.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNamcot163.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNamcot163.hpp deleted file mode 120000 index 696b01d2b..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNamcot163.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardNamcot163.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNamcot175.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNamcot175.hpp deleted file mode 120000 index d27620995..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNamcot175.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardNamcot175.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNamcot34xx.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNamcot34xx.hpp deleted file mode 120000 index 6f3a97910..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNamcot34xx.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardNamcot34xx.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNanjing.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNanjing.hpp deleted file mode 120000 index ccb4eb81e..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNanjing.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardNanjing.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNihon.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNihon.hpp deleted file mode 120000 index 76143ec33..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNihon.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardNihon.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNitra.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNitra.hpp deleted file mode 120000 index 950ab749d..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNitra.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardNitra.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNtdec.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNtdec.hpp deleted file mode 120000 index f5e542d80..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNtdec.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardNtdec.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNxRom.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNxRom.hpp deleted file mode 120000 index cebe0d7cd..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardNxRom.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardNxRom.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardOpenCorp.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardOpenCorp.hpp deleted file mode 120000 index fefb9b612..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardOpenCorp.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardOpenCorp.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardPxRom.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardPxRom.hpp deleted file mode 120000 index b0df8db5a..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardPxRom.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardPxRom.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardQj.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardQj.hpp deleted file mode 120000 index fb0c58435..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardQj.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardQj.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardRcm.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardRcm.hpp deleted file mode 120000 index cc045b0c5..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardRcm.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardRcm.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardRexSoft.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardRexSoft.hpp deleted file mode 120000 index 54211b91b..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardRexSoft.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardRexSoft.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardRexSoftDb5z.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardRexSoftDb5z.hpp deleted file mode 120000 index 117b478ed..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardRexSoftDb5z.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardRexSoftDb5z.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardRexSoftSl1632.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardRexSoftSl1632.hpp deleted file mode 120000 index fe4979ab2..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardRexSoftSl1632.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardRexSoftSl1632.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardRumbleStation.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardRumbleStation.hpp deleted file mode 120000 index 3662e4866..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardRumbleStation.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardRumbleStation.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachen.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachen.hpp deleted file mode 120000 index 24955d155..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachen.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardSachen.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachen74x374.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachen74x374.hpp deleted file mode 120000 index c885d493c..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachen74x374.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardSachen74x374.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachenS8259.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachenS8259.hpp deleted file mode 120000 index 526d66634..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachenS8259.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardSachenS8259.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachenSa0036.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachenSa0036.hpp deleted file mode 120000 index 68cd26127..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachenSa0036.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardSachenSa0036.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachenSa0037.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachenSa0037.hpp deleted file mode 120000 index cfb8a6350..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachenSa0037.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardSachenSa0037.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachenSa72007.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachenSa72007.hpp deleted file mode 120000 index fc1fa3b05..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachenSa72007.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardSachenSa72007.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachenSa72008.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachenSa72008.hpp deleted file mode 120000 index 17d4d9f59..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachenSa72008.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardSachenSa72008.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachenStreetHeroes.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachenStreetHeroes.hpp deleted file mode 120000 index f5d0ef77e..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachenStreetHeroes.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardSachenStreetHeroes.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachenTca01.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachenTca01.hpp deleted file mode 120000 index 1a2c128ec..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachenTca01.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardSachenTca01.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachenTcu.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachenTcu.hpp deleted file mode 120000 index 90c1b8bc7..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSachenTcu.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardSachenTcu.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSomeriTeam.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSomeriTeam.hpp deleted file mode 120000 index b4f372901..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSomeriTeam.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardSomeriTeam.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSomeriTeamSl12.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSomeriTeamSl12.hpp deleted file mode 120000 index 1a69c6134..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSomeriTeamSl12.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardSomeriTeamSl12.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSubor.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSubor.hpp deleted file mode 120000 index 58944fc9e..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSubor.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardSubor.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoft.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoft.hpp deleted file mode 120000 index 8e1b6f077..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoft.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoft.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoft1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoft1.hpp deleted file mode 120000 index 168217046..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoft1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoft1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoft2.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoft2.hpp deleted file mode 120000 index 150a393ee..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoft2.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoft2.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoft3.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoft3.hpp deleted file mode 120000 index 91dc3ba1c..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoft3.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoft3.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoft4.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoft4.hpp deleted file mode 120000 index 48340711c..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoft4.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoft4.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoft5b.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoft5b.hpp deleted file mode 120000 index 3e633bede..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoft5b.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoft5b.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoftDcs.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoftDcs.hpp deleted file mode 120000 index b0e1a216b..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoftDcs.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoftDcs.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoftFme7.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoftFme7.hpp deleted file mode 120000 index 6821ad808..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoftFme7.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardSunsoftFme7.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSuperGame.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSuperGame.hpp deleted file mode 120000 index 84c5b3465..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSuperGame.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardSuperGame.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSuperGameBoogerman.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSuperGameBoogerman.hpp deleted file mode 120000 index 398725016..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSuperGameBoogerman.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardSuperGameBoogerman.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSuperGameLionKing.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSuperGameLionKing.hpp deleted file mode 120000 index b7594ec8a..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSuperGameLionKing.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardSuperGameLionKing.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSuperGamePocahontas2.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSuperGamePocahontas2.hpp deleted file mode 120000 index 904d4fc8c..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSuperGamePocahontas2.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardSuperGamePocahontas2.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSxRom.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSxRom.hpp deleted file mode 120000 index 75455341f..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardSxRom.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardSxRom.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTaito.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTaito.hpp deleted file mode 120000 index bf7863bef..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTaito.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardTaito.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTaitoTc0190fmc.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTaitoTc0190fmc.hpp deleted file mode 120000 index ac65a3ea1..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTaitoTc0190fmc.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardTaitoTc0190fmc.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTaitoTc0190fmcPal16r4.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTaitoTc0190fmcPal16r4.hpp deleted file mode 120000 index 751696060..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTaitoTc0190fmcPal16r4.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardTaitoTc0190fmcPal16r4.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTaitoX1005.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTaitoX1005.hpp deleted file mode 120000 index de1e60db5..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTaitoX1005.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardTaitoX1005.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTaitoX1017.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTaitoX1017.hpp deleted file mode 120000 index fa62a8b07..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTaitoX1017.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardTaitoX1017.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTengen.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTengen.hpp deleted file mode 120000 index 2bf638390..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTengen.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardTengen.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTengenRambo1.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTengenRambo1.hpp deleted file mode 120000 index 5c6f110b1..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTengenRambo1.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardTengenRambo1.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTxRom.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTxRom.hpp deleted file mode 120000 index ae7a1672c..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTxRom.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardTxRom.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTxc.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTxc.hpp deleted file mode 120000 index 7565e7e5c..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTxc.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardTxc.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTxcMxmdhtwo.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTxcMxmdhtwo.hpp deleted file mode 120000 index 89ab35ed6..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTxcMxmdhtwo.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardTxcMxmdhtwo.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTxcPoliceman.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTxcPoliceman.hpp deleted file mode 120000 index 8f2570c1e..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTxcPoliceman.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardTxcPoliceman.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTxcTw.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTxcTw.hpp deleted file mode 120000 index 6d02e245e..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardTxcTw.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardTxcTw.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlA9746.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlA9746.hpp deleted file mode 120000 index f94e4e817..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlA9746.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardUnlA9746.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlCc21.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlCc21.hpp deleted file mode 120000 index 0429fbb0a..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlCc21.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardUnlCc21.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlEdu2000.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlEdu2000.hpp deleted file mode 120000 index 3dff9d3e7..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlEdu2000.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardUnlEdu2000.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlKingOfFighters96.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlKingOfFighters96.hpp deleted file mode 120000 index ba841efce..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlKingOfFighters96.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardUnlKingOfFighters96.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlKingOfFighters97.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlKingOfFighters97.hpp deleted file mode 120000 index dcbed75c3..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlKingOfFighters97.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardUnlKingOfFighters97.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlMortalKombat2.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlMortalKombat2.hpp deleted file mode 120000 index 638c4a241..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlMortalKombat2.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardUnlMortalKombat2.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlN625092.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlN625092.hpp deleted file mode 120000 index 8336a8015..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlN625092.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardUnlN625092.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlSuperFighter3.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlSuperFighter3.hpp deleted file mode 120000 index bb3077415..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlSuperFighter3.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardUnlSuperFighter3.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlTf1201.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlTf1201.hpp deleted file mode 120000 index 383a76690..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlTf1201.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardUnlTf1201.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlWorldHero.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlWorldHero.hpp deleted file mode 120000 index 99f2de2eb..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlWorldHero.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardUnlWorldHero.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlXzy.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlXzy.hpp deleted file mode 120000 index e8d49bc38..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUnlXzy.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardUnlXzy.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUxRom.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUxRom.hpp deleted file mode 120000 index a19e67d5c..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardUxRom.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardUxRom.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardVsSystem.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardVsSystem.hpp deleted file mode 120000 index 5e7665a98..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardVsSystem.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardVsSystem.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardWaixing.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardWaixing.hpp deleted file mode 120000 index fda0fa104..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardWaixing.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardWaixing.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardWaixingFfv.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardWaixingFfv.hpp deleted file mode 120000 index 5a45eca3a..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardWaixingFfv.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardWaixingFfv.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardWaixingPs2.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardWaixingPs2.hpp deleted file mode 120000 index 47ca82682..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardWaixingPs2.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardWaixingPs2.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardWaixingSecurity.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardWaixingSecurity.hpp deleted file mode 120000 index 1e8577502..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardWaixingSecurity.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardWaixingSecurity.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardWaixingSgz.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardWaixingSgz.hpp deleted file mode 120000 index 60ecac89f..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardWaixingSgz.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardWaixingSgz.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardWaixingSgzlz.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardWaixingSgzlz.hpp deleted file mode 120000 index d95f40dd3..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardWaixingSgzlz.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardWaixingSgzlz.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardWaixingSh2.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardWaixingSh2.hpp deleted file mode 120000 index 990940e19..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardWaixingSh2.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardWaixingSh2.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardWaixingZs.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardWaixingZs.hpp deleted file mode 120000 index b809bb8d2..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardWaixingZs.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardWaixingZs.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardWhirlwind.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardWhirlwind.hpp deleted file mode 120000 index d78c27bff..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardWhirlwind.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardWhirlwind.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardZz.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardZz.hpp deleted file mode 120000 index 4f6688334..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/board/NstBoardZz.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/board/NstBoardZz.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpAdapter.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpAdapter.hpp deleted file mode 120000 index a29802991..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpAdapter.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/input/NstInpAdapter.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpBandaiHyperShot.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpBandaiHyperShot.hpp deleted file mode 120000 index 90a800c33..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpBandaiHyperShot.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/input/NstInpBandaiHyperShot.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpBarcodeWorld.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpBarcodeWorld.hpp deleted file mode 120000 index 58a2df29f..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpBarcodeWorld.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/input/NstInpBarcodeWorld.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpCrazyClimber.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpCrazyClimber.hpp deleted file mode 120000 index a1cd0ce86..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpCrazyClimber.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/input/NstInpCrazyClimber.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpDevice.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpDevice.hpp deleted file mode 120000 index c3f15f7df..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpDevice.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/input/NstInpDevice.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpDoremikkoKeyboard.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpDoremikkoKeyboard.hpp deleted file mode 120000 index c45a78824..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpDoremikkoKeyboard.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/input/NstInpDoremikkoKeyboard.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpExcitingBoxing.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpExcitingBoxing.hpp deleted file mode 120000 index 2605d2819..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpExcitingBoxing.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/input/NstInpExcitingBoxing.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpFamilyKeyboard.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpFamilyKeyboard.hpp deleted file mode 120000 index d80a6c2ad..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpFamilyKeyboard.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/input/NstInpFamilyKeyboard.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpFamilyTrainer.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpFamilyTrainer.hpp deleted file mode 120000 index 8d4082e9f..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpFamilyTrainer.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/input/NstInpFamilyTrainer.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpHoriTrack.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpHoriTrack.hpp deleted file mode 120000 index 9b532c4c8..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpHoriTrack.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/input/NstInpHoriTrack.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpKonamiHyperShot.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpKonamiHyperShot.hpp deleted file mode 120000 index d928d3f46..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpKonamiHyperShot.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/input/NstInpKonamiHyperShot.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpMahjong.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpMahjong.hpp deleted file mode 120000 index c6d1ade26..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpMahjong.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/input/NstInpMahjong.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpMouse.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpMouse.hpp deleted file mode 120000 index 6251a31de..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpMouse.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/input/NstInpMouse.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpOekaKidsTablet.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpOekaKidsTablet.hpp deleted file mode 120000 index 60157e377..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpOekaKidsTablet.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/input/NstInpOekaKidsTablet.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpPachinko.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpPachinko.hpp deleted file mode 120000 index 581ec0a4b..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpPachinko.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/input/NstInpPachinko.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpPad.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpPad.hpp deleted file mode 120000 index b475545c5..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpPad.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/input/NstInpPad.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpPaddle.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpPaddle.hpp deleted file mode 120000 index 2fd351d7a..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpPaddle.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/input/NstInpPaddle.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpPartyTap.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpPartyTap.hpp deleted file mode 120000 index 8a5b5c426..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpPartyTap.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/input/NstInpPartyTap.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpPokkunMoguraa.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpPokkunMoguraa.hpp deleted file mode 120000 index 8ce65d7b8..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpPokkunMoguraa.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/input/NstInpPokkunMoguraa.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpPowerGlove.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpPowerGlove.hpp deleted file mode 120000 index c8d7896d8..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpPowerGlove.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/input/NstInpPowerGlove.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpPowerPad.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpPowerPad.hpp deleted file mode 120000 index 424456a90..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpPowerPad.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/input/NstInpPowerPad.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpRob.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpRob.hpp deleted file mode 120000 index 746905113..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpRob.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/input/NstInpRob.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpSuborKeyboard.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpSuborKeyboard.hpp deleted file mode 120000 index a7778a852..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpSuborKeyboard.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/input/NstInpSuborKeyboard.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpTopRider.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpTopRider.hpp deleted file mode 120000 index 71864ce9b..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpTopRider.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/input/NstInpTopRider.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpTurboFile.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpTurboFile.hpp deleted file mode 120000 index aea061b44..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpTurboFile.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/input/NstInpTurboFile.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpZapper.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpZapper.hpp deleted file mode 120000 index a404df101..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/input/NstInpZapper.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/input/NstInpZapper.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/vssystem/NstVsRbiBaseball.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/vssystem/NstVsRbiBaseball.hpp deleted file mode 120000 index 3be4bbcbb..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/vssystem/NstVsRbiBaseball.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/vssystem/NstVsRbiBaseball.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/vssystem/NstVsSuperXevious.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/vssystem/NstVsSuperXevious.hpp deleted file mode 120000 index f1f22aed1..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/vssystem/NstVsSuperXevious.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/vssystem/NstVsSuperXevious.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/vssystem/NstVsSystem.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/vssystem/NstVsSystem.hpp deleted file mode 120000 index a69806268..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/vssystem/NstVsSystem.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/vssystem/NstVsSystem.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/vssystem/NstVsTkoBoxing.hpp b/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/vssystem/NstVsTkoBoxing.hpp deleted file mode 120000 index 221f34a2d..000000000 --- a/Pods/Headers/Private/NESDeltaCore/nestopia/source/core/vssystem/NstVsTkoBoxing.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../../../../Cores/NESDeltaCore/nestopia/source/core/vssystem/NstVsTkoBoxing.hpp \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/SNESDeltaCore/Bridge/SNESEmulatorBridge.h b/Pods/Headers/Private/SNESDeltaCore/SNESDeltaCore/Bridge/SNESEmulatorBridge.h deleted file mode 120000 index 57b314788..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/SNESDeltaCore/Bridge/SNESEmulatorBridge.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/SNESDeltaCore/SNESDeltaCore/Bridge/SNESEmulatorBridge.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/SNESDeltaCore/SNESDeltaCore.h b/Pods/Headers/Private/SNESDeltaCore/SNESDeltaCore/SNESDeltaCore.h deleted file mode 120000 index 9a14c0b1a..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/SNESDeltaCore/SNESDeltaCore.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/SNESDeltaCore/SNESDeltaCore.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/SNESDeltaCore/Types/SNESTypes.h b/Pods/Headers/Private/SNESDeltaCore/SNESDeltaCore/Types/SNESTypes.h deleted file mode 120000 index 771fc98eb..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/SNESDeltaCore/Types/SNESTypes.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/SNESDeltaCore/SNESDeltaCore/Types/SNESTypes.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/65c816.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/65c816.h deleted file mode 120000 index 6fe3dc42a..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/65c816.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/65c816.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/apu/apu.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/apu/apu.h deleted file mode 120000 index e71bba18c..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/apu/apu.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/SNESDeltaCore/snes9x/apu/apu.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/apu/hermite_resampler.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/apu/hermite_resampler.h deleted file mode 120000 index 26c619af5..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/apu/hermite_resampler.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/SNESDeltaCore/snes9x/apu/hermite_resampler.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/apu/resampler.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/apu/resampler.h deleted file mode 120000 index 04377d821..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/apu/resampler.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/SNESDeltaCore/snes9x/apu/resampler.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/apu/ring_buffer.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/apu/ring_buffer.h deleted file mode 120000 index dc310997c..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/apu/ring_buffer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/SNESDeltaCore/snes9x/apu/ring_buffer.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/bsx.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/bsx.h deleted file mode 120000 index a994601e0..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/bsx.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/bsx.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/c4.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/c4.h deleted file mode 120000 index 8c8116e28..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/c4.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/c4.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/cheats.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/cheats.h deleted file mode 120000 index a1219dbfb..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/cheats.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/cheats.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/conffile.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/conffile.h deleted file mode 120000 index dd673510d..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/conffile.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/conffile.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/controls.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/controls.h deleted file mode 120000 index 4b905b82e..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/controls.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/controls.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/cpuaddr.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/cpuaddr.h deleted file mode 120000 index f080b2dd7..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/cpuaddr.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/cpuaddr.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/cpuexec.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/cpuexec.h deleted file mode 120000 index e33cfb028..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/cpuexec.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/cpuexec.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/cpumacro.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/cpumacro.h deleted file mode 120000 index dc48dcaed..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/cpumacro.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/cpumacro.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/cpuops.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/cpuops.h deleted file mode 120000 index 96c93e897..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/cpuops.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/cpuops.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/crosshairs.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/crosshairs.h deleted file mode 120000 index 232a00d2a..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/crosshairs.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/crosshairs.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/debug.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/debug.h deleted file mode 120000 index dac945048..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/debug.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/debug.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/display.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/display.h deleted file mode 120000 index 43e227bcd..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/display.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/display.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/dma.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/dma.h deleted file mode 120000 index e32aa05b1..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/dma.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/dma.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/dsp.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/dsp.h deleted file mode 120000 index 705299947..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/dsp.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/dsp.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/font.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/font.h deleted file mode 120000 index 12869351d..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/font.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/font.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/fxemu.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/fxemu.h deleted file mode 120000 index 6ffe862f2..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/fxemu.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/fxemu.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/fxinst.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/fxinst.h deleted file mode 120000 index aef0cc528..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/fxinst.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/fxinst.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/getset.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/getset.h deleted file mode 120000 index d655de8c7..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/getset.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/getset.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/gfx.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/gfx.h deleted file mode 120000 index 473666298..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/gfx.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/gfx.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/language.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/language.h deleted file mode 120000 index 0b425685d..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/language.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/language.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/logger.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/logger.h deleted file mode 120000 index 0a1c5dafd..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/logger.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/logger.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/memmap.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/memmap.h deleted file mode 120000 index 311f4113d..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/memmap.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/memmap.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/messages.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/messages.h deleted file mode 120000 index 4370083e2..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/messages.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/messages.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/missing.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/missing.h deleted file mode 120000 index 1876a5036..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/missing.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/missing.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/movie.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/movie.h deleted file mode 120000 index 10912d305..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/movie.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/movie.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/msu1.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/msu1.h deleted file mode 120000 index dc80e2961..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/msu1.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/msu1.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/netplay.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/netplay.h deleted file mode 120000 index 7895ad684..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/netplay.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/netplay.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/obc1.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/obc1.h deleted file mode 120000 index 6a1e143a2..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/obc1.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/obc1.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/pixform.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/pixform.h deleted file mode 120000 index 30dd2c914..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/pixform.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/pixform.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/port.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/port.h deleted file mode 120000 index 123c1f93e..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/port.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/port.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/ppu.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/ppu.h deleted file mode 120000 index f3c8a0cb9..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/ppu.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/ppu.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/sa1.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/sa1.h deleted file mode 120000 index 1f80b64b0..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/sa1.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/sa1.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/sar.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/sar.h deleted file mode 120000 index d9a453d2c..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/sar.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/sar.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/screenshot.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/screenshot.h deleted file mode 120000 index 9af2460c8..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/screenshot.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/screenshot.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/sdd1.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/sdd1.h deleted file mode 120000 index c19bd6add..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/sdd1.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/sdd1.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/sdd1emu.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/sdd1emu.h deleted file mode 120000 index 37df0bef0..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/sdd1emu.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/sdd1emu.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/seta.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/seta.h deleted file mode 120000 index 3527588a4..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/seta.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/seta.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/snapshot.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/snapshot.h deleted file mode 120000 index 24d8fdf5d..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/snapshot.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/snapshot.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/snes9x.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/snes9x.h deleted file mode 120000 index 4f83c62a5..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/snes9x.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/snes9x.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/spc7110.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/spc7110.h deleted file mode 120000 index bd2113f9c..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/spc7110.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/spc7110.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/spc7110dec.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/spc7110dec.h deleted file mode 120000 index a054bc0d7..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/spc7110dec.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/spc7110dec.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/spc7110emu.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/spc7110emu.h deleted file mode 120000 index a75f24e9d..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/spc7110emu.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/spc7110emu.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/srtc.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/srtc.h deleted file mode 120000 index c60445c74..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/srtc.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/srtc.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/srtcemu.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/srtcemu.h deleted file mode 120000 index 291929657..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/srtcemu.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/srtcemu.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/statemanager.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/statemanager.h deleted file mode 120000 index 5f4fd3d95..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/statemanager.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/statemanager.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/stream.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/stream.h deleted file mode 120000 index 8e98d1eb1..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/stream.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/stream.h \ No newline at end of file diff --git a/Pods/Headers/Private/SNESDeltaCore/snes9x/tile.h b/Pods/Headers/Private/SNESDeltaCore/snes9x/tile.h deleted file mode 120000 index fe29c96e9..000000000 --- a/Pods/Headers/Private/SNESDeltaCore/snes9x/tile.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/SNESDeltaCore/snes9x/tile.h \ No newline at end of file diff --git a/Pods/Headers/Public/DSDeltaCore/DSDeltaCore-umbrella.h b/Pods/Headers/Public/DSDeltaCore/DSDeltaCore-umbrella.h deleted file mode 120000 index c797a7c3c..000000000 --- a/Pods/Headers/Public/DSDeltaCore/DSDeltaCore-umbrella.h +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/DSDeltaCore/DSDeltaCore-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/DSDeltaCore/DSDeltaCore.modulemap b/Pods/Headers/Public/DSDeltaCore/DSDeltaCore.modulemap deleted file mode 120000 index 09427dd94..000000000 --- a/Pods/Headers/Public/DSDeltaCore/DSDeltaCore.modulemap +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/DSDeltaCore/DSDeltaCore.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/DSDeltaCore/DSDeltaCore/Bridge/DSEmulatorBridge.h b/Pods/Headers/Public/DSDeltaCore/DSDeltaCore/Bridge/DSEmulatorBridge.h deleted file mode 120000 index 82bf8f237..000000000 --- a/Pods/Headers/Public/DSDeltaCore/DSDeltaCore/Bridge/DSEmulatorBridge.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/DSDeltaCore/DSDeltaCore/Bridge/DSEmulatorBridge.h \ No newline at end of file diff --git a/Pods/Headers/Public/DSDeltaCore/DSDeltaCore/Types/DSTypes.h b/Pods/Headers/Public/DSDeltaCore/DSDeltaCore/Types/DSTypes.h deleted file mode 120000 index 1e4119313..000000000 --- a/Pods/Headers/Public/DSDeltaCore/DSDeltaCore/Types/DSTypes.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/DSDeltaCore/DSDeltaCore/Types/DSTypes.h \ No newline at end of file diff --git a/Pods/Headers/Public/DeltaCore/DLTAMuteSwitchMonitor.h b/Pods/Headers/Public/DeltaCore/DLTAMuteSwitchMonitor.h deleted file mode 120000 index 6ae371ca6..000000000 --- a/Pods/Headers/Public/DeltaCore/DLTAMuteSwitchMonitor.h +++ /dev/null @@ -1 +0,0 @@ -../../../../Cores/DeltaCore/DeltaCore/Emulator Core/Audio/DLTAMuteSwitchMonitor.h \ No newline at end of file diff --git a/Pods/Headers/Public/DeltaCore/DeltaCore-umbrella.h b/Pods/Headers/Public/DeltaCore/DeltaCore-umbrella.h deleted file mode 120000 index ec74f59c9..000000000 --- a/Pods/Headers/Public/DeltaCore/DeltaCore-umbrella.h +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/DeltaCore/DeltaCore-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/DeltaCore/DeltaCore.modulemap b/Pods/Headers/Public/DeltaCore/DeltaCore.modulemap deleted file mode 120000 index 3cd1b088f..000000000 --- a/Pods/Headers/Public/DeltaCore/DeltaCore.modulemap +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/DeltaCore/DeltaCore.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/DeltaCore/DeltaTypes.h b/Pods/Headers/Public/DeltaCore/DeltaTypes.h deleted file mode 120000 index e1aa22f7d..000000000 --- a/Pods/Headers/Public/DeltaCore/DeltaTypes.h +++ /dev/null @@ -1 +0,0 @@ -../../../../Cores/DeltaCore/DeltaCore/DeltaTypes.h \ No newline at end of file diff --git a/Pods/Headers/Public/GBADeltaCore/GBADeltaCore-umbrella.h b/Pods/Headers/Public/GBADeltaCore/GBADeltaCore-umbrella.h deleted file mode 120000 index 8fd7cffac..000000000 --- a/Pods/Headers/Public/GBADeltaCore/GBADeltaCore-umbrella.h +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/GBADeltaCore/GBADeltaCore-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/GBADeltaCore/GBADeltaCore.modulemap b/Pods/Headers/Public/GBADeltaCore/GBADeltaCore.modulemap deleted file mode 120000 index 8cae996d7..000000000 --- a/Pods/Headers/Public/GBADeltaCore/GBADeltaCore.modulemap +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/GBADeltaCore/GBADeltaCore.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/GBADeltaCore/GBADeltaCore/Bridge/GBAEmulatorBridge.h b/Pods/Headers/Public/GBADeltaCore/GBADeltaCore/Bridge/GBAEmulatorBridge.h deleted file mode 120000 index 8d4c629f0..000000000 --- a/Pods/Headers/Public/GBADeltaCore/GBADeltaCore/Bridge/GBAEmulatorBridge.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/GBADeltaCore/GBADeltaCore/Bridge/GBAEmulatorBridge.h \ No newline at end of file diff --git a/Pods/Headers/Public/GBADeltaCore/GBADeltaCore/Types/GBATypes.h b/Pods/Headers/Public/GBADeltaCore/GBADeltaCore/Types/GBATypes.h deleted file mode 120000 index 02bec4b28..000000000 --- a/Pods/Headers/Public/GBADeltaCore/GBADeltaCore/Types/GBATypes.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/GBADeltaCore/GBADeltaCore/Types/GBATypes.h \ No newline at end of file diff --git a/Pods/Headers/Public/GBCDeltaCore/GBCDeltaCore-umbrella.h b/Pods/Headers/Public/GBCDeltaCore/GBCDeltaCore-umbrella.h deleted file mode 120000 index be84950d9..000000000 --- a/Pods/Headers/Public/GBCDeltaCore/GBCDeltaCore-umbrella.h +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/GBCDeltaCore/GBCDeltaCore-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/GBCDeltaCore/GBCDeltaCore.modulemap b/Pods/Headers/Public/GBCDeltaCore/GBCDeltaCore.modulemap deleted file mode 120000 index f7853205b..000000000 --- a/Pods/Headers/Public/GBCDeltaCore/GBCDeltaCore.modulemap +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/GBCDeltaCore/GBCDeltaCore.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/GBCDeltaCore/GBCDeltaCore/Bridge/GBCEmulatorBridge.h b/Pods/Headers/Public/GBCDeltaCore/GBCDeltaCore/Bridge/GBCEmulatorBridge.h deleted file mode 120000 index b382a5b9b..000000000 --- a/Pods/Headers/Public/GBCDeltaCore/GBCDeltaCore/Bridge/GBCEmulatorBridge.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/GBCDeltaCore/GBCDeltaCore/Bridge/GBCEmulatorBridge.h \ No newline at end of file diff --git a/Pods/Headers/Public/GBCDeltaCore/GBCDeltaCore/Types/GBCTypes.h b/Pods/Headers/Public/GBCDeltaCore/GBCDeltaCore/Types/GBCTypes.h deleted file mode 120000 index e3b347ea2..000000000 --- a/Pods/Headers/Public/GBCDeltaCore/GBCDeltaCore/Types/GBCTypes.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/GBCDeltaCore/GBCDeltaCore/Types/GBCTypes.h \ No newline at end of file diff --git a/Pods/Headers/Public/MelonDSDeltaCore/MelonDSDeltaCore-umbrella.h b/Pods/Headers/Public/MelonDSDeltaCore/MelonDSDeltaCore-umbrella.h deleted file mode 120000 index 8d004be81..000000000 --- a/Pods/Headers/Public/MelonDSDeltaCore/MelonDSDeltaCore-umbrella.h +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/MelonDSDeltaCore/MelonDSDeltaCore-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/MelonDSDeltaCore/MelonDSDeltaCore.modulemap b/Pods/Headers/Public/MelonDSDeltaCore/MelonDSDeltaCore.modulemap deleted file mode 120000 index 2e84e0987..000000000 --- a/Pods/Headers/Public/MelonDSDeltaCore/MelonDSDeltaCore.modulemap +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/MelonDSDeltaCore/MelonDSDeltaCore.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/MelonDSDeltaCore/MelonDSDeltaCore/Bridge/MelonDSEmulatorBridge.h b/Pods/Headers/Public/MelonDSDeltaCore/MelonDSDeltaCore/Bridge/MelonDSEmulatorBridge.h deleted file mode 120000 index 6e84fee97..000000000 --- a/Pods/Headers/Public/MelonDSDeltaCore/MelonDSDeltaCore/Bridge/MelonDSEmulatorBridge.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/MelonDSDeltaCore/Bridge/MelonDSEmulatorBridge.h \ No newline at end of file diff --git a/Pods/Headers/Public/MelonDSDeltaCore/MelonDSDeltaCore/MelonDSDeltaCore.h b/Pods/Headers/Public/MelonDSDeltaCore/MelonDSDeltaCore/MelonDSDeltaCore.h deleted file mode 120000 index 852a84edc..000000000 --- a/Pods/Headers/Public/MelonDSDeltaCore/MelonDSDeltaCore/MelonDSDeltaCore.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/MelonDSDeltaCore/MelonDSDeltaCore/MelonDSDeltaCore.h \ No newline at end of file diff --git a/Pods/Headers/Public/MelonDSDeltaCore/MelonDSDeltaCore/Types/MelonDSTypes.h b/Pods/Headers/Public/MelonDSDeltaCore/MelonDSDeltaCore/Types/MelonDSTypes.h deleted file mode 120000 index 5a3884dfc..000000000 --- a/Pods/Headers/Public/MelonDSDeltaCore/MelonDSDeltaCore/Types/MelonDSTypes.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/MelonDSDeltaCore/MelonDSDeltaCore/Types/MelonDSTypes.h \ No newline at end of file diff --git a/Pods/Headers/Public/N64DeltaCore/N64DeltaCore-umbrella.h b/Pods/Headers/Public/N64DeltaCore/N64DeltaCore-umbrella.h deleted file mode 120000 index e5edfe29b..000000000 --- a/Pods/Headers/Public/N64DeltaCore/N64DeltaCore-umbrella.h +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/N64DeltaCore/N64DeltaCore-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/N64DeltaCore/N64DeltaCore.modulemap b/Pods/Headers/Public/N64DeltaCore/N64DeltaCore.modulemap deleted file mode 120000 index b6ff0b2cd..000000000 --- a/Pods/Headers/Public/N64DeltaCore/N64DeltaCore.modulemap +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/N64DeltaCore/N64DeltaCore.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/N64DeltaCore/N64DeltaCore/Bridge/N64EmulatorBridge.h b/Pods/Headers/Public/N64DeltaCore/N64DeltaCore/Bridge/N64EmulatorBridge.h deleted file mode 120000 index d1cd9c0c8..000000000 --- a/Pods/Headers/Public/N64DeltaCore/N64DeltaCore/Bridge/N64EmulatorBridge.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/N64DeltaCore/N64DeltaCore/Bridge/N64EmulatorBridge.h \ No newline at end of file diff --git a/Pods/Headers/Public/N64DeltaCore/N64DeltaCore/N64DeltaCore.h b/Pods/Headers/Public/N64DeltaCore/N64DeltaCore/N64DeltaCore.h deleted file mode 120000 index 05ec03f0d..000000000 --- a/Pods/Headers/Public/N64DeltaCore/N64DeltaCore/N64DeltaCore.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/N64DeltaCore/N64DeltaCore/N64DeltaCore.h \ No newline at end of file diff --git a/Pods/Headers/Public/N64DeltaCore/N64DeltaCore/Types/N64Types.h b/Pods/Headers/Public/N64DeltaCore/N64DeltaCore/Types/N64Types.h deleted file mode 120000 index 3d771d7d9..000000000 --- a/Pods/Headers/Public/N64DeltaCore/N64DeltaCore/Types/N64Types.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/N64DeltaCore/N64DeltaCore/Types/N64Types.h \ No newline at end of file diff --git a/Pods/Headers/Public/NESDeltaCore/NESDeltaCore-umbrella.h b/Pods/Headers/Public/NESDeltaCore/NESDeltaCore-umbrella.h deleted file mode 120000 index 61c106335..000000000 --- a/Pods/Headers/Public/NESDeltaCore/NESDeltaCore-umbrella.h +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/NESDeltaCore/NESDeltaCore-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/NESDeltaCore/NESDeltaCore.modulemap b/Pods/Headers/Public/NESDeltaCore/NESDeltaCore.modulemap deleted file mode 120000 index 300d54ea6..000000000 --- a/Pods/Headers/Public/NESDeltaCore/NESDeltaCore.modulemap +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/NESDeltaCore/NESDeltaCore.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/NESDeltaCore/NestopiaJS/NESEmulatorBridge.hpp b/Pods/Headers/Public/NESDeltaCore/NestopiaJS/NESEmulatorBridge.hpp deleted file mode 120000 index 708a3238c..000000000 --- a/Pods/Headers/Public/NESDeltaCore/NestopiaJS/NESEmulatorBridge.hpp +++ /dev/null @@ -1 +0,0 @@ -../../../../../Cores/NESDeltaCore/NestopiaJS/NESEmulatorBridge.hpp \ No newline at end of file diff --git a/Pods/Headers/Public/SNESDeltaCore/SNESDeltaCore-umbrella.h b/Pods/Headers/Public/SNESDeltaCore/SNESDeltaCore-umbrella.h deleted file mode 120000 index 3ca6da7fb..000000000 --- a/Pods/Headers/Public/SNESDeltaCore/SNESDeltaCore-umbrella.h +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/SNESDeltaCore/SNESDeltaCore-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/SNESDeltaCore/SNESDeltaCore.modulemap b/Pods/Headers/Public/SNESDeltaCore/SNESDeltaCore.modulemap deleted file mode 120000 index 5ad95c6bd..000000000 --- a/Pods/Headers/Public/SNESDeltaCore/SNESDeltaCore.modulemap +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/SNESDeltaCore/SNESDeltaCore.modulemap \ No newline at end of file diff --git a/Pods/Headers/Public/SNESDeltaCore/SNESDeltaCore/Bridge/SNESEmulatorBridge.h b/Pods/Headers/Public/SNESDeltaCore/SNESDeltaCore/Bridge/SNESEmulatorBridge.h deleted file mode 120000 index 57b314788..000000000 --- a/Pods/Headers/Public/SNESDeltaCore/SNESDeltaCore/Bridge/SNESEmulatorBridge.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/SNESDeltaCore/SNESDeltaCore/Bridge/SNESEmulatorBridge.h \ No newline at end of file diff --git a/Pods/Headers/Public/SNESDeltaCore/SNESDeltaCore/Types/SNESTypes.h b/Pods/Headers/Public/SNESDeltaCore/SNESDeltaCore/Types/SNESTypes.h deleted file mode 120000 index 771fc98eb..000000000 --- a/Pods/Headers/Public/SNESDeltaCore/SNESDeltaCore/Types/SNESTypes.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../../Cores/SNESDeltaCore/SNESDeltaCore/Types/SNESTypes.h \ No newline at end of file diff --git a/Pods/Headers/Public/ZIPFoundation/ZIPFoundation-umbrella.h b/Pods/Headers/Public/ZIPFoundation/ZIPFoundation-umbrella.h deleted file mode 120000 index e30b5836a..000000000 --- a/Pods/Headers/Public/ZIPFoundation/ZIPFoundation-umbrella.h +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/ZIPFoundation/ZIPFoundation-umbrella.h \ No newline at end of file diff --git a/Pods/Headers/Public/ZIPFoundation/ZIPFoundation.modulemap b/Pods/Headers/Public/ZIPFoundation/ZIPFoundation.modulemap deleted file mode 120000 index 6f5bc3dad..000000000 --- a/Pods/Headers/Public/ZIPFoundation/ZIPFoundation.modulemap +++ /dev/null @@ -1 +0,0 @@ -../../../Target Support Files/ZIPFoundation/ZIPFoundation.modulemap \ No newline at end of file diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index d1aadc3d0..6a3818326 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -2,15 +2,7 @@ PODS: - Alamofire (4.7.3) - Crashlytics (3.8.6): - Fabric (~> 1.6.3) - - DeltaCore (0.1): - - ZIPFoundation - - DSDeltaCore (0.1): - - DeltaCore - Fabric (1.6.13) - - GBADeltaCore (0.1): - - DeltaCore - - GBCDeltaCore (0.1): - - DeltaCore - GoogleAPIClientForREST/Core (1.3.11): - GTMSessionFetcher (>= 1.1.7) - GoogleAPIClientForREST/Drive (1.3.11): @@ -44,47 +36,24 @@ PODS: - Harmony/Harmony-Dropbox (0.1): - Roxas - SwiftyDropbox (~> 5.0.0) - - MelonDSDeltaCore (0.1): - - DeltaCore - - N64DeltaCore (0.1): - - DeltaCore - - N64DeltaCore/RSP (= 0.1) - - N64DeltaCore/Video (= 0.1) - - N64DeltaCore/RSP (0.1): - - DeltaCore - - N64DeltaCore/Video (0.1): - - DeltaCore - - NESDeltaCore (0.1): - - DeltaCore - Roxas (0.1) - SDWebImage (3.8.3): - SDWebImage/Core (= 3.8.3) - SDWebImage/Core (3.8.3) - SMCalloutView (2.1.5) - - SNESDeltaCore (0.1): - - DeltaCore - SQLite.swift (0.12.2): - SQLite.swift/standard (= 0.12.2) - SQLite.swift/standard (0.12.2) - SwiftyDropbox (5.0.0): - Alamofire (~> 4.7.3) - - ZIPFoundation (0.9.11) DEPENDENCIES: - Crashlytics (~> 3.8.0) - - DeltaCore (from `Cores/DeltaCore`) - - DSDeltaCore (from `Cores/DSDeltaCore`) - Fabric (~> 1.6.0) - - GBADeltaCore (from `Cores/GBADeltaCore`) - - GBCDeltaCore (from `Cores/GBCDeltaCore`) - Harmony (from `External/Harmony`) - - MelonDSDeltaCore (from `Cores/MelonDSDeltaCore`) - - N64DeltaCore (from `Cores/N64DeltaCore`) - - NESDeltaCore (from `Cores/NESDeltaCore`) - Roxas (from `External/Roxas`) - SDWebImage (~> 3.8) - SMCalloutView (~> 2.1.0) - - SNESDeltaCore (from `Cores/SNESDeltaCore`) - SQLite.swift (~> 0.12.0) SPEC REPOS: @@ -100,54 +69,28 @@ SPEC REPOS: - SMCalloutView - SQLite.swift - SwiftyDropbox - - ZIPFoundation EXTERNAL SOURCES: - DeltaCore: - :path: Cores/DeltaCore - DSDeltaCore: - :path: Cores/DSDeltaCore - GBADeltaCore: - :path: Cores/GBADeltaCore - GBCDeltaCore: - :path: Cores/GBCDeltaCore Harmony: :path: External/Harmony - MelonDSDeltaCore: - :path: Cores/MelonDSDeltaCore - N64DeltaCore: - :path: Cores/N64DeltaCore - NESDeltaCore: - :path: Cores/NESDeltaCore Roxas: :path: External/Roxas - SNESDeltaCore: - :path: Cores/SNESDeltaCore SPEC CHECKSUMS: Alamofire: c7287b6e5d7da964a70935e5db17046b7fde6568 Crashlytics: e156f27e43abaa331f9b7afed091bda37e1052cc - DeltaCore: be1ed931bf8dba0bd1d9f85310dcc99eeae10517 - DSDeltaCore: 7dc6a18e25d8036a5022a34c1ffb4062af9eed3d Fabric: be0459577cee96fe21f68de24588be2dd71482b8 - GBADeltaCore: 10ff8fde89ed95c99888a9b7102b3d3e45d7458d - GBCDeltaCore: 7468dff742927139a14f6fc909e810f253b6293c GoogleAPIClientForREST: 0f19a8280dfe6471f76016645d26eb5dae305101 GoogleSignIn: 7ff245e1a7b26d379099d3243a562f5747e23d39 GoogleToolboxForMac: 1350d40e86a76f7863928d63bcb0b89c84c521c5 GTMSessionFetcher: b3503b20a988c4e20cc189aa798fd18220133f52 Harmony: cea514db17c41c22f78f54b17d2135935b5e9b96 - MelonDSDeltaCore: 3de2a2e2ebcd630a6dd756818b5a26dde7afa726 - N64DeltaCore: 7d176e01443fa138bdfc79ad908c78f271f3e0a7 - NESDeltaCore: 41ab438dd78d51d4636aacb7d9a7336ea3d4728c Roxas: 1990039f843f5dc284918dc82375feb80020ef62 SDWebImage: a72e880a8fe0f7fc31efe15aaed443c074d2a80c SMCalloutView: 5c0ee363dc8e7204b2fda17dfad38c93e9e23481 - SNESDeltaCore: eb7053f45204f9a6ceb426d53649e6ee35b97684 SQLite.swift: d2b4642190917051ce6bd1d49aab565fe794eea3 SwiftyDropbox: 378b4425a2e8d0cb24c7b0f2e3af72bfbaaf1e73 - ZIPFoundation: b1f0de4eed33e74a676f76e12559ab6b75990197 -PODFILE CHECKSUM: 287d91605195bb5ea894269c53b979ee2b07c9f8 +PODFILE CHECKSUM: 2487516050003c48dd3d8f00a6d1a81f69a27042 COCOAPODS: 1.10.0 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index 27a8a0e53..7c8769e66 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -3,13 +3,13 @@ archiveVersion = 1; classes = { }; - objectVersion = 46; + objectVersion = 52; objects = { /* Begin PBXAggregateTarget section */ ABB048B191245233986A7CD75FE412A5 /* Fabric */ = { isa = PBXAggregateTarget; - buildConfigurationList = 93D0E009BD5EBD93EE11F4838E2145D3 /* Build configuration list for PBXAggregateTarget "Fabric" */; + buildConfigurationList = 36D9322EAB7F7F9C092EBE25EA3AF412 /* Build configuration list for PBXAggregateTarget "Fabric" */; buildPhases = ( ); dependencies = ( @@ -22,7 +22,7 @@ buildPhases = ( ); dependencies = ( - EAA7405A96A86B7E77549127A86EE492 /* PBXTargetDependency */, + FE3596A7924270A84D82A7774374280C /* PBXTargetDependency */, ); name = Crashlytics; }; @@ -32,4077 +32,994 @@ buildPhases = ( ); dependencies = ( - A6899D64C7875C8420CF4BE58A8F9683 /* PBXTargetDependency */, - A3BCEC5546916AB67AB16562C2AE43CE /* PBXTargetDependency */, + F38158E67ABCBF41D6DB9288F772F850 /* PBXTargetDependency */, + F40EEA1B62CDEBFDCA2AE921B18C9DA1 /* PBXTargetDependency */, ); name = GoogleSignIn; }; /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 0007BB4AEE9BB717F23ACB29EB48DF8D /* arm_jit.h in Headers */ = {isa = PBXBuildFile; fileRef = 04B2AF5D701B0D23097F0DEE8A870933 /* arm_jit.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 002E08C1773659AF7A99924FCA06C3E0 /* NSUserDefaults+DynamicProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = D97A30CDCA2EE5F0A46DC7E3DF87E796 /* NSUserDefaults+DynamicProperties.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 003DA77373EA7A6C58230A3B5C8BD2C9 /* GTLRBatchQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = BE678FC4DC246B0D19DC3F53975AFFA0 /* GTLRBatchQuery.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 005DF598B7B2F5EC9A13068E688B9755 /* NstBoardSunsoft.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 608A5557EE5C1ABACC1B811CC16319EA /* NstBoardSunsoft.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 00621950AF035546BDA1B34136CF5829 /* NstApiTapeRecorder.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2E80F033B66109666D4F9EEE71E6C2B0 /* NstApiTapeRecorder.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 00808122820CCB7D640A23AF2F851D96 /* Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03368477B0F9F367CC8C9443F31F2918 /* Notifications.swift */; }; - 0097F9A8EE386B4446A0DF58B665B621 /* GameView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C8852338AFC9400512894B23FD07DFF /* GameView.swift */; }; - 009FF47B462F5016482A2EF8A0796667 /* UICollectionViewCell+Nibs.h in Headers */ = {isa = PBXBuildFile; fileRef = DD5DC51035BAC483EBAB6BD224394546 /* UICollectionViewCell+Nibs.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 00C40ABCE897AAF7CD0FBD8393625D36 /* F3DAM.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B6C58DBDB290E47F12CC1074D395C26 /* F3DAM.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 00CEE4E02C6D213E9AFAA1BC64BB2CCC /* RecordOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51207E9A3C7454213B51E256308C8CBB /* RecordOperation.swift */; }; - 0161528947F76B4CA2C920D7363A1B5E /* UICollectionView+CellContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 41DD9A08F62AAB32A0CBE59D30E7671E /* UICollectionView+CellContent.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 019A7DC0638AE9DB69EBCF4678FAFD12 /* readwrite.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FB4BB99FC8FCE6E7BDCD8CFD99B1318 /* readwrite.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 01C614E6A5EFB33F09479A6E347BFB76 /* FrameBufferInfoAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = D122ED1B6CF59DF49BFB5F3708D5534F /* FrameBufferInfoAPI.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 01E485015AED35853FC7FC8512BEEA49 /* StandardGameControllerInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = F76E0CFC8475B8821C6FB3C2660544DD /* StandardGameControllerInput.swift */; }; - 01E5ECB02F979E8AEA6F2DA1339CDC9B /* NstBoardKayH2288.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 60EC1FFA54B3CB9610A26D47F7FABB34 /* NstBoardKayH2288.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 01E82C5FA448150B1381F28C6D30C39C /* DepthBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 423CF889D534C377432C9CF4B4C9D5BC /* DepthBuffer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0202229A8043A0523AB4F8F06E12B10E /* Debugger.h in Headers */ = {isa = PBXBuildFile; fileRef = A5DE0B1C0467C130DD9CC22C1D122EDC /* Debugger.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 020F883CD6692524572847AC844D9DA7 /* DeltaCore-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = BF13532696017B18EE5ACF4225924349 /* DeltaCore-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 03146DC9C125A54D6AB7C96172AAFE96 /* F3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B874304CF42693BC245EEFD1ECE4AEDA /* F3D.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 031DA8B8880B46B9236CFA9F45A03FC6 /* svotval.h in Headers */ = {isa = PBXBuildFile; fileRef = 696393FF8398B97B4AE77FDD717BCE6D /* svotval.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 032EB974A1B5C52F0173C27AC2A86932 /* GoogleToolboxForMac-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C7A9D7E3EC589A75AD2405C76234F641 /* GoogleToolboxForMac-dummy.m */; }; - 0360256BB22485A1DF7BB664A16998AD /* AutoBuild.h in Headers */ = {isa = PBXBuildFile; fileRef = 0312E07CD0E5CAE789530BCEE9193CF9 /* AutoBuild.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0378326511EF17F3987E8794A7F9BC7A /* NstApiNsf.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 19BDE821F69D4EED1DE355E465F11DC0 /* NstApiNsf.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 03CA6B2E803218676A5865F6899E0E5A /* ZilmarGFX_1_3.h in Headers */ = {isa = PBXBuildFile; fileRef = 114EDBAF94C431C6683F8FB874F521F0 /* ZilmarGFX_1_3.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 03F1E87FFD717C20F6BEB1C94B610C55 /* Paper.swift in Sources */ = {isa = PBXBuildFile; fileRef = A97DFE65ECE733F3876CF13306D4C68B /* Paper.swift */; }; - 049999669AA6DDE06F469094EF4FC23D /* svcid.h in Headers */ = {isa = PBXBuildFile; fileRef = 317B88402DB12FDB873F4186C2C36DE8 /* svcid.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 049BC1B479F9F0BF40FC2598D8FF8C51 /* DropboxService+Records.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4FCE6CDCA42B06EE0F325B6800001633 /* DropboxService+Records.swift */; }; - 049C84B5B2F82497AE0065B6402F02FF /* tttables.h in Headers */ = {isa = PBXBuildFile; fileRef = 326C18DCCA9E4564F2B41EAF145F3947 /* tttables.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 04F8299D725F89424FC6267E0243344F /* assemble.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A0F202FAF19801B8E53A77AE636FB69 /* assemble.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 055010A944F0FAD455EE1B86505AB309 /* VideoMode.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F41A2B09C72776BA6B5C0BC4B688C9FF /* VideoMode.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 0559206519929E651DBE5D57A53A07AD /* Version+Dropbox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 400FD1065DA525FF7593C6190E7DB593 /* Version+Dropbox.swift */; }; - 057F9A9513ADF19B4E485BF4C4E6A586 /* NstBoardMmc4.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C89942340BAE2264EC7E57948B2C55A8 /* NstBoardMmc4.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 0587BEF520D1494D56F30937F4EACB9B /* movie.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DB763486903A82BC9B03EBE994F8276 /* movie.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 059827DE66365F8E2B036035FFBEEDDE /* GBCTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = B3498CD97929F748AC14046B1A226AA7 /* GBCTypes.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 05A635D0BF12909379EEBA9F5E6D7506 /* NstBoardHes.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 63BE33E737F365DA6A02C5EC800FEFDA /* NstBoardHes.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 0609EA41DCEC5A061ACF2EDF79C5C7CD /* ARCodeFile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1818A7C734B0F7FA3464C894DE1B3418 /* ARCodeFile.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 060AB9649E07EF050A063BEE203E324B /* FIFO.h in Headers */ = {isa = PBXBuildFile; fileRef = 11DFF9C52A3266701AE7649642EF1E85 /* FIFO.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 063726E021E3FF7384D6CB87D1B541C7 /* opengl_Utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 84F897EBE76A1FDAD4E64AC50CF7138F /* opengl_Utils.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 0668FCC7EA8113812C27E68057AC979E /* SoftwareRender.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 05B2997054DBA44DF1B57E3CDD3C472C /* SoftwareRender.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 068AF0C9685778FAD48D70FFC911506F /* NstBoardRexSoftSl1632.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D834A7F4976AEDBB55317196D3E8BD3B /* NstBoardRexSoftSl1632.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 0696B0B4458352653EA35662B6291F5B /* NstInpKonamiHyperShot.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F19D62D579ACE00507690054AA366BD9 /* NstInpKonamiHyperShot.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 06AFB6649115CA75ED94B9581FAFB0D0 /* assem_x86.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FC61E19871FEA3703E55822D0376AE0 /* assem_x86.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 06B35061755FDC2D7A853EEE6FDC6CDB /* DSi_Camera.h in Headers */ = {isa = PBXBuildFile; fileRef = AE8FF7894487C1699C9C8BE1F0D8B3D5 /* DSi_Camera.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 06C952556FA9F911482EC585FD6A41D8 /* memory.c in Sources */ = {isa = PBXBuildFile; fileRef = A99A7A7B9FB77409F4575F8FB00A0574 /* memory.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 076D0E4C781D0DCE65683DC57050A0D3 /* CombinerProgram.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5372B3163E9573C6D5D374AB075EDCEF /* CombinerProgram.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 0790C5F2A94753F3FCD5869C76335956 /* opengl_ColorBufferReaderWithPixelBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C578CF97F78BF8C15358F430AA30D615 /* opengl_ColorBufferReaderWithPixelBuffer.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 079E89E983F800F6FCB0C3B19D33E403 /* GPU_OpenGL_shaders.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DECA64287BA359B6B4E40FBBC0D3895 /* GPU_OpenGL_shaders.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 07B72F73238E13380783702567009406 /* 3DMath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 860719187CBE960AF789BB9FF22F6C14 /* 3DMath.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 07BB377F31975D34EB8CCC8C3E05597F /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = A024A97ADEDE582E9EDA110E6B1AF889 /* SDWebImageDownloaderOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 07D64DAA33339208D12AEC710280E3E6 /* NstBoardKonamiVrc3.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0570E12C39DA7D48B666617DB5662E12 /* NstBoardKonamiVrc3.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 07FF36873953529F0EC30AC8989372A2 /* DSi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 078B47798F4714CA00EC913C77AFE765 /* DSi.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 08AD48790FD939562E761126858A791C /* opengl_BufferManipulationObjectFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 594730077EE56666BFA076748A7727BF /* opengl_BufferManipulationObjectFactory.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 093095188EFCF06BC6E50BB12D9BD797 /* dynamiclib.h in Headers */ = {isa = PBXBuildFile; fileRef = D6950D50E9695976359606938A73508D /* dynamiclib.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 095B6EDC7213ED4CE6F325020145872A /* melonDLDI.h in Headers */ = {isa = PBXBuildFile; fileRef = 9547FE6CD4373B25D13B8B2E6EB613B9 /* melonDLDI.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 09618A0F2D94696A379F26463625FD20 /* UIKit+ActivityIndicating.m in Sources */ = {isa = PBXBuildFile; fileRef = 311ED734D1D039BFD75B4EE89CD9835B /* UIKit+ActivityIndicating.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 09673D8B9CD0C50E0708224966C3A0D9 /* Sound.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7EA0070E428C8FC47BE2AB57F71D09C0 /* Sound.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 09CDF05BD019F9FA2A87BD55DFB8204B /* hle.c in Sources */ = {isa = PBXBuildFile; fileRef = 092BF1E4E202CF281CFDBE78FDBB43DA /* hle.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 09E985251676F5C402F180F2BF3803C2 /* Arm64Emitter.h in Headers */ = {isa = PBXBuildFile; fileRef = 45B2FAE49683908828C8F53DDE48A790 /* Arm64Emitter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 09FC226C3ADAAAEAD1BA430E8EC96CFB /* PrimitiveType.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 03453E71D56AD80B009C9115E50535E5 /* PrimitiveType.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 0A599F9C0D150C29B68E5AAD2F6E6376 /* ManagedRecord+Predicates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 551B991A9910D6231DE6094D5CD3843A /* ManagedRecord+Predicates.swift */; }; - 0A7DBA589468B58D063CE892596EBE04 /* ColorBufferReader.h in Headers */ = {isa = PBXBuildFile; fileRef = 78248727BCE6BF8A4103526F1DD2CF55 /* ColorBufferReader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0A96B147078C8A1D424DF53189CB7736 /* GTMDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 629F6A26E346FCCB87CF068FC152224D /* GTMDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0A98B4B956619FB5C162039DA3C5A465 /* retro_stat.h in Headers */ = {isa = PBXBuildFile; fileRef = 445C183225EFC758533D7B90AEC6A60B /* retro_stat.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0AD3412A7088529EDFF612776C0AC698 /* dummy_audio.h in Headers */ = {isa = PBXBuildFile; fileRef = FA4AEA75EC63BEFEF18086DCDB401648 /* dummy_audio.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0B29201F78D9554A2BD079C6FA2FFF94 /* NstBoardBmcCtc65.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E3FF0CCAB2579FB3AFDE9E9E74A8CCA6 /* NstBoardBmcCtc65.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 0B7EE208877E3763B8283CA69B28BE2A /* GlResource.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 64EE117D0C5FCCD7418F14B2F66F8DA1 /* GlResource.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 0B89DF33DB7EE5AFC3F8271B3E0D733E /* NstVsTkoBoxing.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 744D3216390476216DCF11BE485E9B7B /* NstVsTkoBoxing.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 0BA39A0A432DF411F877FD526A61BE4D /* T3DUX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 080BAE04D1C3F4FBE4B0C76AF2092F86 /* T3DUX.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 0BC29A4D141721CED777951AFB6285DC /* GTMSessionFetcher-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A960DE0A973CA5A4D413E15076178C57 /* GTMSessionFetcher-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0BCCEB711BF05FD789E2A708E0ABF1FF /* NstInpOekaKidsTablet.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0076E431BB930E51DBC57C8AEFD62756 /* NstInpOekaKidsTablet.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 0BD415BFF46DF39F0B0A9B24530D540A /* NstBoardBmcFk23c.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B21CEF422138419213CDA51B12B7D724 /* NstBoardBmcFk23c.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 0BE00FF617AC001DB99B08ACDAD91379 /* 65c816.h in Headers */ = {isa = PBXBuildFile; fileRef = 26E9093D38BC9C8CC9DF4D72731AC2B1 /* 65c816.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0BE99AA8F65539D655BF070810A15CBA /* RenderStates.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 79E016DBE78B56C94199CFAF25741154 /* RenderStates.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 0C1E5944242DFF3A99C96FD2017C7C05 /* dummy_video.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B78842984D068D0DB4702EC9F9438F7 /* dummy_video.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0C3E22A6F73CEA47ED2EB2DCDF17D3FC /* NstBoardAxRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B76DD920CDBACABC13B3026F71CCE1EA /* NstBoardAxRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 0C7F4768121EBCC0C8EBD0D94855ADC2 /* Result+Dropbox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13B48701B89DA51AEFCB1189DD06B7B5 /* Result+Dropbox.swift */; }; - 0C86E660A94A5F25BA229C364FAFEDE6 /* RSTTintedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 14EE139D9368B6A33F60729F41BD17CE /* RSTTintedImageView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0C8FF990FDED020992A42D4A07646CA5 /* NstBoardWhirlwind.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3251209BECAF282E0DCE499F9AD02385 /* NstBoardWhirlwind.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 0C997CA9DCE0C7A6051627776CD4E0C2 /* fxinst.h in Headers */ = {isa = PBXBuildFile; fileRef = FDE6D1B2F355A9CF0CF9790DABCFBF10 /* fxinst.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0CBD673E8665D22FFAFD4A695BE9BB5D /* NstBoardUnlTf1201.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B838FF4D494014F467183E5F8652A99B /* NstBoardUnlTf1201.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 0CE3655689BAC53ACB8E9FB2319697B5 /* ftoutln.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CFCF1DB3C261E9BFAB2C58E1EF33E65 /* ftoutln.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0CE4EFD0F678E158D8B880D106BE0CD2 /* TxImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1B9C12C74DF9350F294A3E0A86E79688 /* TxImage.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 0D17D9EBD944E772A2C90951CE28D7B4 /* FilesRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = E26FEBA64D2374DAC135277E88C048E7 /* FilesRoutes.swift */; }; - 0D19F1EB3F884DF4201B3F99DC4C3178 /* xxh3.h in Headers */ = {isa = PBXBuildFile; fileRef = CDB8946D38B7595F8B990F42E4831438 /* xxh3.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0D27C8611CDC04CA85AF28DE9D138E3F /* DSi_SD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 144070FBE1B4F02DA8ACA800A4973DC6 /* DSi_SD.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 0D4C93443A97214C10CCC7A5C891E8E3 /* language.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B6A11A1E9804A2ACDF0C6729DCBA4EE /* language.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0D4E95328CD9428A4A59FFD53A28D0CF /* ftstroke.h in Headers */ = {isa = PBXBuildFile; fileRef = 4763DEBE73DBBA8B553A7B98D5B7CCE7 /* ftstroke.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0D4FA3A4EEB3354A23594E529C087DBA /* MelonDSTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B45E63BD8B6C5862B91606D0270E31A /* MelonDSTypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0D778215DD1239900E9C2568317A7D34 /* SDL_opengl.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F72DFF72A7603776855C1953DA931FE /* SDL_opengl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0DC48C8F7B3B823DA7FD84E0866B41D3 /* NstBoardAcclaim.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F3184A4B6B59C416EF7CBD384DF644AF /* NstBoardAcclaim.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 0DE68EC2F51A9D65CB6F3DE545B89B23 /* NstFpuPrecision.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2C2F671219B5C8A4155CFC50FF35CE74 /* NstFpuPrecision.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 0DF3091B2BEA6F68C30A9F70E0C34EBD /* GTLRFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = 0911CB832D9A4864180F2DCFB13BCC10 /* GTLRFramework.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0DFEB41AEEDB9AE280CF106CC55D2376 /* OpenGLSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F9DF75921EC3BB1DE00EF33B7A96319 /* OpenGLSupport.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0E0FB801425F82F7FA0748CB3BF3C4AA /* NstCartridgeUnif.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 15E96F458A9FF48D4761260EE9CC09C1 /* NstCartridgeUnif.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 0E293400D01A16665B16721FA5CD1324 /* expr.cpp.h in Headers */ = {isa = PBXBuildFile; fileRef = 143669DF461A16A9179177725827248D /* expr.cpp.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0E3ABF1FC812924C32FC507F2711C2D5 /* Database.h in Headers */ = {isa = PBXBuildFile; fileRef = E55F80EF7FF9BB234E4AA9B4D06F1C15 /* Database.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0E44874FC2DB440879A39D12CB250947 /* png.c in Sources */ = {isa = PBXBuildFile; fileRef = 54C6E1198BF287B9429793065F9DE54B /* png.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 0EB2F649B561C2B846CD6374F5351AF8 /* ARMJIT_Branch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 197AB7559D7FCC3DEA076C76F04A7D7B /* ARMJIT_Branch.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 0EC7038684BB7212DCE8D45DB1D6AFF0 /* CharacterSet+Hexadecimals.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5220D87AAC76334A81776593C96297A3 /* CharacterSet+Hexadecimals.swift */; }; - 0EFBF425A16E64D3A9A84347BD72DFB1 /* CheatFormat.swift in Sources */ = {isa = PBXBuildFile; fileRef = A17DF16EB61E5ED813980444D9917B0C /* CheatFormat.swift */; }; - 0F54EBE4D42DEF7F223F9C19A0BB596F /* ARM_InstrTable.h in Headers */ = {isa = PBXBuildFile; fileRef = D05E62B590D16E32DAA922D7272E54BE /* ARM_InstrTable.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 0F82BC9EEB80790539E81F78E45C0886 /* NstBoardSachenS8259.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 39159273D372AC23A0B301B651647A48 /* NstBoardSachenS8259.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 0F972BB084DCDD4DB1A4895017D655AC /* DSTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = D95BAC0F2D7AD6A2E990D3390C7331B8 /* DSTypes.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 0F9F3A6ED74C186E0EB56FDAE4B1B40E /* WindowStyle.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 88D429F6DEDE30C6156DAD5A8D9402CA /* WindowStyle.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 0FF0F4ACB1A1D964089325CEF368C7D8 /* NstBoardBtlMarioBaby.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D4908C00AB651611F3D7B3F87D1DB074 /* NstBoardBtlMarioBaby.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 101A15CF34E5E8ECC203BEC92668B14E /* RemoteRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = F463B69847F43B25F137A1213A0A0F9E /* RemoteRecord.swift */; }; - 10685419FB4E5582BAD361B2B1AE95F1 /* stream.h in Headers */ = {isa = PBXBuildFile; fileRef = FBE558ED21912B2EE34190ECEADDE26E /* stream.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1075C0BF05B5F1DFD3331537AEF56082 /* RecordRepresentation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93A9285617980163E2A30BF8523D50B7 /* RecordRepresentation.swift */; }; - 1085A7C928E5C935C9FB98DD68DEB5B8 /* m64p_plugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 044383445DA33997C0572B2EC796AF21 /* m64p_plugin.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 10CE35FCE6B6E703FE2C749C57179361 /* GLideN64_mupenplus.h in Headers */ = {isa = PBXBuildFile; fileRef = 4ED50A9D084C1B30671775C625A024C9 /* GLideN64_mupenplus.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 10D7CB0C2B7CD3CA8944DDC050580815 /* NstTimer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 45203999A84E8BC466D11878D26EB94B /* NstTimer.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 10F55312D62AB36FDEDF9328BB28ACE4 /* NES.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25991D07DD8D96C5AAA906563DBDDC97 /* NES.swift */; }; - 11386E1065D5A9869B85C998782FB4C3 /* RSTCellContentChange.m in Sources */ = {isa = PBXBuildFile; fileRef = D23B0ACC1D905B07F7FC8240AB76D54A /* RSTCellContentChange.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 119C8DEDED32E68C51CD917AC8A89863 /* ftobjs.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D7706E78AF395B0BF7A33A65155FE3D /* ftobjs.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 11ECD6EE8E00787B6A0FB4F42C7E1401 /* gambatte.h in Headers */ = {isa = PBXBuildFile; fileRef = BFE33B2BC2B5DA3FAFA0EF4052914B10 /* gambatte.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1208A8D5F730C34E30C232AE86C100C3 /* Bundle+Resources.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC9179BF930FDFF527CAA3A561F000AF /* Bundle+Resources.swift */; }; - 122A53C6A8CE37059A0CF1D111472CDD /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 921AD788C442F823555202B44D3AF160 /* SDImageCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 12580C444BE3C5C61607EE3DCD49002A /* opengl_ContextImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C722FD717A34AA13B10C03AC368B1A00 /* opengl_ContextImpl.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 1273507BDC30C800A089FC50EF44AEDF /* NstBoardKasing.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9F8650AEEA339AE2603DE32411A2A066 /* NstBoardKasing.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 12864062CBC98F7BA252FE74A3696794 /* SoundFileFactory.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 29F95C4455432D889D0D66C71EA6F3B5 /* SoundFileFactory.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 1286D341CF94010B4C132ED80FB9FFFD /* glsl_FXAA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E2338F64347F1DE69B72D9080A4F89F0 /* glsl_FXAA.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 12AEC0B4C35E8BDE4366D57CE6805481 /* Blob.swift in Sources */ = {isa = PBXBuildFile; fileRef = 586B03C24E0DFB57820EDB31B86EFDC1 /* Blob.swift */; }; - 12AF882E44F744B09C53A8FF7FD8F3DB /* NstXml.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 84F0ADD65E108164F9714F7992472ABE /* NstXml.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 12B40A0306C97D8568A617CC03C6A5E9 /* GBA.h in Headers */ = {isa = PBXBuildFile; fileRef = 72928BD1EC814259B5C12FB7891C8143 /* GBA.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 12B7A6EBF04A2FAD6924212A88EC5DC8 /* ftgasp.h in Headers */ = {isa = PBXBuildFile; fileRef = 1120279C7F510A700C88E61A835EF714 /* ftgasp.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 12DB6C107F74B673AD48F9C617481829 /* ARCodeFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 5963EF23BB4D8842315DE6AAA0E21625 /* ARCodeFile.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 12DB8843F8BA5958D3581B2AB5B5CCF0 /* AudioManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB24C7CDE3A7F0607B919C5070452FEC /* AudioManager.swift */; }; - 12E7E29296BC9DBADF17D4F7689D28AB /* GPU3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C4E7BA0D5AC9F82D2F7154C4C7B1C153 /* GPU3D.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 12EB6F66719644A22679C7B30EA4F9DA /* GTMSessionUploadFetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 94F5D89236B344C4DD052FE9AB17ACC3 /* GTMSessionUploadFetcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1304AC58C0918DF5312B15723652359A /* SDL_config.h in Headers */ = {isa = PBXBuildFile; fileRef = E8AA1863B27BDEB42873D3218BAE286B /* SDL_config.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1313754B2D42C885DE2600FD977992F8 /* crosshairs.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C7DD892516958A03B638903F7351808 /* crosshairs.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 13A63F87C4E54BDA1EBE594BB4C46942 /* TeamLogRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CD8779AE248D2A01EAEB45063005C71 /* TeamLogRoutes.swift */; }; - 13F36D3513002DEDD357305D3242AE7C /* NstBoardCneDecathlon.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4BF3A8BBCEC6D8B433214DF1CD244933 /* NstBoardCneDecathlon.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 1421F930058D5B2FE466EFA3AE740406 /* ARMJIT_RegisterCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 74370705578A20E60CAC4693D6AA6FA6 /* ARMJIT_RegisterCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1449CEC6CEEA29AE8135E1ED68E54851 /* cart_rom.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B4FABA9D9901362C87EB1E8D05ED709 /* cart_rom.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 146578F3D3701A630303E3BD9EA7D22E /* NstBoardSunsoft1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A8ED0088CB2FADEB504C3D5066A2A331 /* NstBoardSunsoft1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 149C41DFD366FE8D2F8D1F17694E71EB /* DeltaTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 313E672F1EB9448940936DB36A67FCF2 /* DeltaTypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 149C695914FB174F117C0DF1211FC709 /* NstBoardBtlSmb2b.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 716BA9F3B51C44F2249E901BDCAEE818 /* NstBoardBtlSmb2b.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 14C0F0BEDA910011A59D708F63A92BC5 /* wglext.h in Headers */ = {isa = PBXBuildFile; fileRef = C7FDCAA2C2AE2F7710AFCA420D4D4BBF /* wglext.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 14DA99887720A03BAD2325ADC9FE3359 /* rsp_core.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B4F5E9F6D351ACA4ED2773D5967D0B8 /* rsp_core.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 14FEE316C195D5CBF5201EDBBBA86AD2 /* NstSoundRenderer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4D1FA0EBBF5F6CF83EED39B0A6232946 /* NstSoundRenderer.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 1527DE7805C03B75EB03E10D49937548 /* TexrectDrawer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 59AF7DF04CB48EA607FA8D40E439C999 /* TexrectDrawer.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 1541CD75ED87DD98D3FB227978648F92 /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = 131DE5B5A662F4982F678A6226865295 /* NSData+ImageContentType.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 15528403D3D54996EBEF35561A6CEE66 /* ftcache.h in Headers */ = {isa = PBXBuildFile; fileRef = E009A3CEF1D9267D9497C6C4C42A1DDF /* ftcache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 15634A4D50405AC11B0EC8D8F3BCCF87 /* audio_out_backend.h in Headers */ = {isa = PBXBuildFile; fileRef = 394FDA370F48D26EA3EF604C1CFC33BC /* audio_out_backend.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 158FDD03EAFCBF29A8F54F06177C10B0 /* NstApiEmulator.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 518DB5C5187A3B396F541FAA09FAC646 /* NstApiEmulator.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 164BAC914BBAA929ADDE2137EA9543B9 /* JSONDecoder+ManagedObjectContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5688AC534E934DF9CFDBC41CCDCC2B07 /* JSONDecoder+ManagedObjectContext.swift */; }; - 16741BA68E8D631D618B7272A358E813 /* bios.h in Headers */ = {isa = PBXBuildFile; fileRef = EB35FBF3BF9B38329D908A949EF02A97 /* bios.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 168FF602FF2B2EBD5AF4DD5E203F1A54 /* gfx.h in Headers */ = {isa = PBXBuildFile; fileRef = 7880158DD63D22405EA70C3616145A3B /* gfx.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 169BD797475549B0DCB3334A81FF252B /* SyncRecordsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 884CD3140F6990A9C51BAAE8CDC81537 /* SyncRecordsOperation.swift */; }; - 16A68FB1B307D638E071FB294F22C231 /* DropboxTeamClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F9F113CDF0897B7162BDC16B4BEEA31 /* DropboxTeamClient.swift */; }; - 16B59496C8A16AEF81564E7702C25EB5 /* opengl_ColorBufferReaderWithReadPixels.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A847A9F7AACCBECC646C5B42B6CF314 /* opengl_ColorBufferReaderWithReadPixels.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 16BA02E314DD1557E7856374C52DA346 /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = ED98D3CDD8B67DE813123392E2953CE8 /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 16C67AE79DA3AD25667EAF0834CD9A3E /* inputSDL.h in Headers */ = {isa = PBXBuildFile; fileRef = 91A8104A8577AC41EB121AEA616EA3E6 /* inputSDL.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 16D4F64A1BAFBE66FEAEFC750274BBCF /* NstBoardIremKaiketsu.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 705E5C1967661B00DE5A61BFC7EB6DB9 /* NstBoardIremKaiketsu.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 16FCF1751F26D732C2D3E41C900231CD /* GraphicBufferWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F439BA0EF4EE1A0246D267E6567EA27 /* GraphicBufferWrapper.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1791742A738830C47703F19535E5DC75 /* texcache.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E92E2C982AE53605508C9330424A1A4 /* texcache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 17BD8AF8A6C48BE056BBC3EDFA922862 /* GBI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AA7A4A8121BD105CCF35B3A9439144CB /* GBI.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 17DEFDFD261555FC8E0FC5D13CEC4D3D /* NstBoardBtlSmb2c.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E09088CC17E0FE2F8507057759ED8495 /* NstBoardBtlSmb2c.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 1851DD0E0E320FE72121810548058B3F /* RSTHasher.m in Sources */ = {isa = PBXBuildFile; fileRef = 4154C8125893A215BDBB6750B27BF5F1 /* RSTHasher.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 185ED64DF2422D89CF3717BE4ABEEF5A /* missing.h in Headers */ = {isa = PBXBuildFile; fileRef = 90A3FE5B2140BA3DAE5D3FEABAA60BE7 /* missing.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 188E5EA95EFD8C83E26389E2A2B52234 /* NstBoardFfe.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6347BA8D5567D3CC98AB327590B8EDDB /* NstBoardFfe.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 1891303BAECC823B7338FC7259627F32 /* NstBoardWaixingSh2.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A7BCE04E1ED27734F5F2FFB57E444B07 /* NstBoardWaixingSh2.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 195D3DFC963C30BC7BB3212ABF8F90EA /* NstBoardWaixingSecurity.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E092E67243EB5F2C7AA220780125DA0F /* NstBoardWaixingSecurity.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 1961892EA0CBFA10EDD2667D2BA99483 /* memmap.h in Headers */ = {isa = PBXBuildFile; fileRef = A706591632D0DD389D06A2E63F9B603A /* memmap.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 19A13473851B5012E8193BCA2A724A54 /* internal.h in Headers */ = {isa = PBXBuildFile; fileRef = D1A222E7AD9B04C4081BD98E461CB8DD /* internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 19A43143885ECF943EEBFFF79A6032AD /* pngusr.h in Headers */ = {isa = PBXBuildFile; fileRef = 0266BC5A5AEA109DBA257B1168D3B572 /* pngusr.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 19D276C92F7EE28FC5A5F571ABB669E0 /* GLideN64.ini in Resources */ = {isa = PBXBuildFile; fileRef = AA7AF49EDDC668587A726F59CAAE70DA /* GLideN64.ini */; }; - 19EC881AAD885E63F07969590CFB6FF4 /* preproc.h in Headers */ = {isa = PBXBuildFile; fileRef = EC10C1D9D6A74227024D832707016D1C /* preproc.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 19ED82D0227A8DC834FED9DC364357A0 /* InputSoundFile.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4CE7A665B6FEEE6CB7D5AF994E4687CD /* InputSoundFile.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 1A10E26FFAC51F8DFBED8473A9F96523 /* Flash.h in Headers */ = {isa = PBXBuildFile; fileRef = 17D454191F3B342960C868B8F442F1C9 /* Flash.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1A6588A793FD184669CC4A7899448EE9 /* pif.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C76D76ED7F98CCF93BF79937C57766B /* pif.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1AAB4E66BB2F67D75ED31A969FB90445 /* Alamofire-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 38A54DE3848C6830CA6D438BCCE65D81 /* Alamofire-dummy.m */; }; - 1BBECCBD01F0043D7DEDAB0B09E8EAA5 /* driver.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B95FB2C3FC8B2A397359CB1368E031E /* driver.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1C578CEDA6D488D9D67852CEC8094F99 /* Data+Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = E064EB97821DE1B8BFCC21E48F3D5BA0 /* Data+Serialization.swift */; }; - 1C5BC2D61D565A6BE435ABA142946B18 /* assem_arm64.h in Headers */ = {isa = PBXBuildFile; fileRef = 66FB69307E96C7CD8ACCF5D63C2853CB /* assem_arm64.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1C79414F5ADFDACC8FB8328DB3B0EB87 /* Clock.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4BB4A497541BD689341DCD03FCA3CA38 /* Clock.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 1C9DC5C326AAC27191E138D07DC82761 /* TextureFilters_lq2x.h in Headers */ = {isa = PBXBuildFile; fileRef = A60275570183365454F240C304CB5477 /* TextureFilters_lq2x.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1CD016445F82859700FAF07167B30D75 /* alist_nead.c in Sources */ = {isa = PBXBuildFile; fileRef = 5F5B4DF63E5FFCA2F6CE8D450D8820AF /* alist_nead.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 1CF0BA6AEF75A59CCB8E2C317364FDDB /* pnglibconf.h in Headers */ = {isa = PBXBuildFile; fileRef = CA7154ABE8E0B943BBE44F6E93DA1720 /* pnglibconf.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1D291E557C6AD115AF7BE7738B687FBD /* NstBoardTaitoTc0190fmcPal16r4.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 27125390BE455FB3FC94E986AE8B5EBC /* NstBoardTaitoTc0190fmcPal16r4.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 1D693CA5460C4407B1B6C6C9D936F6B4 /* glsl_Utils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 21F08D379C51FB95B3A2007AC1555313 /* glsl_Utils.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 1DAFA92D053CAA64ABBB982C41B60B07 /* array.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E0B065D9F78196FA831FEB44937FFCA /* array.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1DDF054791D7C01B53FC98F16990E27D /* svwinfnt.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A361316A00767E4447E32728D710E69 /* svwinfnt.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1DF8B44BB83651F1D127FA0CAE424F8C /* NstBoardFxRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F7BC33DDA3BE006651A2F49C655123F8 /* NstBoardFxRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 1E03EC6139CCC4410F54BD3D7D143F1B /* RemoteRecord+Dropbox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13ED6773C3785C3EEFA54FC5AF0BEB9B /* RemoteRecord+Dropbox.swift */; }; - 1E17A47AF0A3EB70EC345D746F60BFBD /* check.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B4F51183AC9E8A568E66894754B3C3B /* check.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1E3EAC0AB8A289FF21A1A1521705D471 /* crypt.h in Headers */ = {isa = PBXBuildFile; fileRef = 61D84B9A9E573FA8C296E6692CA599DA /* crypt.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1E3F228CAF09DBD5DA4EBF52818EC3B1 /* opengl_ColorBufferReaderWithBufferStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = D92F10A78D9A6F3A1C2BEE1030BB59F6 /* opengl_ColorBufferReaderWithBufferStorage.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1E942C12731C8DBA55B57763F824B79F /* memgzio.h in Headers */ = {isa = PBXBuildFile; fileRef = A01BF8A0B070CCDA516A64A4C89CD25A /* memgzio.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1E9E143853CC198C077EB1CC3BB95BE3 /* TeamPolicies.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAE7CC5E61AD10E58132106C64073663 /* TeamPolicies.swift */; }; - 1EBC4EE371A7CF6C8F53DAFB86A2E616 /* Window.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0CB94305FF6AF5CFEF88C30CFB622E72 /* Window.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 1ED420FE07EC467E67CBC85B5A8FD4F6 /* NstInpPowerPad.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F85AC4CB7A35809FF805833CACD153C0 /* NstInpPowerPad.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 1F3E3764837A7D6E5D1D83D637ADB674 /* ftstream.h in Headers */ = {isa = PBXBuildFile; fileRef = D3556B3B3C0BA74D240B42AF0934D7CC /* ftstream.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1F5A882A6D96FB43C6744AA1333B3CDE /* arm_cpu_features.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C09C3D1334AECB063BC1FD83DF8C448 /* arm_cpu_features.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1F5BE7F91BB7A872AD4D3E27FAEBB4E6 /* RSTCompositeDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 146F91901EB4D4897CEB5F05C1DFC621 /* RSTCompositeDataSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1F87213605923853D20CFD645B1D97FC /* NstBoardBmcGoldenCard6in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FC8658703FB896059E27A58D32C6B0C5 /* NstBoardBmcGoldenCard6in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 1F96F86656E4EAED0BBD6121CA9C48E2 /* ARMJIT.h in Headers */ = {isa = PBXBuildFile; fileRef = 856A3A60CAA4C68D36EAE9CFBA9545A7 /* ARMJIT.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 1F9B48059C83E448BFFAFE0936D7A981 /* NstInpSuborKeyboard.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C0DB902F7F0B1CF4561E695E22CC5DAD /* NstInpSuborKeyboard.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 1FAD4210A41D40AED8BD9FB8D0930017 /* GBASoundDriver.h in Headers */ = {isa = PBXBuildFile; fileRef = 96D01A6211DFD9C25AF356CB28F74829 /* GBASoundDriver.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2005711A191AD7E50B6C7099F66A13D2 /* fterrors.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A2029B01D666F7328468AC09DA067F2 /* fterrors.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2017E7E9EC1FD668E6BD83E6583FB779 /* OGLRender_3_2.h in Headers */ = {isa = PBXBuildFile; fileRef = 790609C487C0DE4A1E6385276B1FD602 /* OGLRender_3_2.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2018FF4D62325B043230D6349CC61A27 /* fttrace.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BB6746A6A1D9BA44003CF2F72104128 /* fttrace.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 202F41F5ABBEA502DC45CAA113EC60BA /* glsl_CombinerInputs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 243DF18DBEC0030F64A72ECE9661C05A /* glsl_CombinerInputs.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 203C97818219C7286FF47E4BF6CA7891 /* NstInpPokkunMoguraa.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4D1FFAF53C44FFA11AC01AACBF26DE9B /* NstInpPokkunMoguraa.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 20573943D2786C8BD9D1C2DFF06ECB72 /* NstInpPartyTap.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C7D39EC0390EEA5EC08E4661DF2C8BD2 /* NstInpPartyTap.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 207B4C476365DA9C6682F71691FA6851 /* dummy_input.h in Headers */ = {isa = PBXBuildFile; fileRef = B764EC210FA0F420D6494B25D25FFDE2 /* dummy_input.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 208A93A45127BFAF822FE56E378927C9 /* NstBoardBmc21in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0598CBE3ED6664991B6C32DEF333DE72 /* NstBoardBmc21in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 20983A4E2B0967B542119114AB073BB7 /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 288F0A8E1830BC9A6DEE1E4E0D082A8D /* SDImageCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 20E554631FAA80A055D206AF4CD5AFAC /* F3DEX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8EDC4DC75F87EDD99128DAD5E72F2E01 /* F3DEX.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 2120032F00AB9FE24A107F4C3AD6487E /* Pods-Delta-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 37221D699E77B16EA4FE6C376B827730 /* Pods-Delta-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 215259A1F7D06CC7F5153FB1AD8784D4 /* NstBoardBmc22Games.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 325EDE94F2AAA53B3F132A5F1C792A9A /* NstBoardBmc22Games.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 21AA4BB6EC1BA9595FFF73B6D9DA2BA4 /* pngpriv.h in Headers */ = {isa = PBXBuildFile; fileRef = 7835E3451DFC672514F4E6B3EC909995 /* pngpriv.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 21C9A64B737F5EB5EA72FB846F18D9FD /* F3DAM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC6E7572622F53C9063BA36BA8EA48A0 /* F3DAM.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 21EC8E4FFDDB86D7F78C6F7BC23FE9AE /* rumblepak.h in Headers */ = {isa = PBXBuildFile; fileRef = DE616F927E6B6D55A9594C411E6872A0 /* rumblepak.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 221951BBCCD4E24CCFB9EB1486B700F4 /* sdd1.h in Headers */ = {isa = PBXBuildFile; fileRef = 4882BE90EEF397C5CB150356BABD6589 /* sdd1.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 221D42284E794E06F3F19D65C07FF9A6 /* Standard.deltamapping in Resources */ = {isa = PBXBuildFile; fileRef = F8CF8BE812823CA459587DFFF0F9B0DF /* Standard.deltamapping */; }; - 2221EFF52D3896B9A85672B1149182B6 /* Log_ios.mm in Sources */ = {isa = PBXBuildFile; fileRef = 163215F017360C0783BDE216E2383177 /* Log_ios.mm */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 224F1BD0B5F06DC2DE277E29ABE95FE2 /* DeltaCore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 353752D35D9CE2E270057B7B1D0F9609 /* DeltaCore-dummy.m */; }; - 2277F45169AD4DA00EC99C693A48022D /* TxUtil.h in Headers */ = {isa = PBXBuildFile; fileRef = AECE8E892CF20B68ACDC4FD0AEDF3B14 /* TxUtil.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2279896B50A50B4C9A000CAE3BBC2DD1 /* GTLRUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = F94637A21D42A1D3D7F8F0AF2786C782 /* GTLRUtilities.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 22A78366CBB436B85244FD941553521C /* UIDevice+Vibration.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1C79F685717D6A72816DDF8AF27113F /* UIDevice+Vibration.swift */; }; - 22E52C36BF5BE2C7DD600E9B435807F7 /* writepng.h in Headers */ = {isa = PBXBuildFile; fileRef = 35F2300F0A4A50AD3C435334DD6D3A93 /* writepng.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 22F4CDA21F32132923062FA08B81CA1C /* pngwutil.c in Sources */ = {isa = PBXBuildFile; fileRef = 1B047FD1BDE657AF7AFC1BB0E425CBA4 /* pngwutil.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 232B73536F582F499728C426B879889C /* pngstruct.h in Headers */ = {isa = PBXBuildFile; fileRef = 257DDF2564EF2EE5CD24E964C9FBFCF9 /* pngstruct.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 236758569C4C8EA07F763EE8EB40C9C5 /* ConflictRecordOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80332D9AFFD7FFF56082A806DBF79F1C /* ConflictRecordOperation.swift */; }; - 237F079F7C4B72E8BBEB4DF1D57209F9 /* SwiftyDropbox.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B90429F17069F50CA065D66C7BA9614 /* SwiftyDropbox.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 23E0799FAE08CC1D26FC688C4082D4B2 /* ZlutTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = B5D0963AEC82F7790AF09E7C8A829348 /* ZlutTexture.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2414D2E769217C186567C5C65EDF6F8F /* Mouse.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F1F7E1A7090C639084C5B1F0FCB87AFF /* Mouse.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 2422D5891C022D12233A75CE6C1C391F /* GBCInputGetter.h in Headers */ = {isa = PBXBuildFile; fileRef = 262A3C5FD00372D13A236F66AD846D0A /* GBCInputGetter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2454DAA17E0D718C7E88C90C3E9A18D2 /* TextureFilters_hq2x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4D1729EA5F00D4A1D4318B501343CA4A /* TextureFilters_hq2x.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 24663AF1810EAA56AFD867FB94355FAB /* NstStream.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FA9F28EAD2B467DF6DA41196DBF9B8E4 /* NstStream.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 24B7C521DEBEFF6FEDE5A739AD245FF7 /* Account.swift in Sources */ = {isa = PBXBuildFile; fileRef = C77A008A6833C24467625CDA9DB340AA /* Account.swift */; }; - 24C60F34E862179CE4B50B8A87A0A1A0 /* glxext.h in Headers */ = {isa = PBXBuildFile; fileRef = 26D2A5D5698537BF5D54176EFAAE1D21 /* glxext.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 24DD85F125A03B7527B45E2136475039 /* L3DEX.h in Headers */ = {isa = PBXBuildFile; fileRef = C62697CDB1C461E116CFCE24721ACFE5 /* L3DEX.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 24F3218F961FC3D4F04E1EF2FCCC1793 /* NstBoardQj.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F65A5389BBD3EAB8C0EAB4FA39D5126E /* NstBoardQj.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 25434156E69DD31A896E663907EE7DEF /* cp15.h in Headers */ = {isa = PBXBuildFile; fileRef = BF75F4882CAD79A98615658198686DD7 /* cp15.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 256EE4F125790FD390FD3F4795B945CE /* CommonAPIImpl_common.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 97A544C5CBC9D92E0315967EFEF1D6E4 /* CommonAPIImpl_common.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 2583C09DC88D03FC4CC3F690445FB4A2 /* regcache.h in Headers */ = {isa = PBXBuildFile; fileRef = E4FFB7DF9BCF6F425B0D5C0C9A86E782 /* regcache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 25BAADDF3143DF57B3BEB5C7A228F21E /* UISpringTimingParameters+Conveniences.m in Sources */ = {isa = PBXBuildFile; fileRef = 982A1762207DCCB41B6F126DFC0E741A /* UISpringTimingParameters+Conveniences.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 25CA4E2AF8C8651ADE358D0E1A3CE3F8 /* NstCartridge.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 57142BF28E3E1A201DA08502346590D0 /* NstCartridge.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 260CDD026A0A9B70FD079E5FEEB38002 /* Err.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8790DC1F754E5B29AE549062EC5965BF /* Err.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 263137320237F90A0285983A0024F302 /* NstBoardKonamiVsSystem.hpp in Headers */ = {isa = PBXBuildFile; fileRef = DF0D847592520B9426DAA5EF56CB4F1F /* NstBoardKonamiVsSystem.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 263F853FEBC0066F66873B0813332A5C /* GBACart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 71CF8F17CF2C8159C4E059520894D5EF /* GBACart.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 26597B356A1B40C3584D56EE30B2E794 /* libretro_vulkan.h in Headers */ = {isa = PBXBuildFile; fileRef = A0B8B2EE833AD41312D3D1F45FEA8F45 /* libretro_vulkan.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 26608F3C3C8445776375375E38EF93E6 /* OutputSoundFile.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 218734C95C38F03799176148123C5A20 /* OutputSoundFile.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 26851206B96DDD8C9EA254B65B4608FC /* glsl_SpecialShadersFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FFBE6231F3C96E0F29DCACC0B2A7765E /* glsl_SpecialShadersFactory.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 268F8874D390CEA0DFDC85F51E677F90 /* NstBoardSomeriTeam.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 96BCD6BE0EB86E1B5F57CD3844166D67 /* NstBoardSomeriTeam.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 26D84D2836C13B2D939D5A5E2B1BD47B /* Schema.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3464E71D1132BB4ECDA6EE3AD5D9C854 /* Schema.swift */; }; - 26E321C349C1EDA1245BE582283491D5 /* SwiftyDropbox-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D145AF0D8138ED303A35F31CC28531D9 /* SwiftyDropbox-dummy.m */; }; - 27270FEF7CF00BAC7CCA3D36B80B4E1A /* NstBoardSuperGameLionKing.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 97234F66C0EE37E07C7A12FE8D652606 /* NstBoardSuperGameLionKing.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 273929BF89BAB80B85E4B0C80A593683 /* CRC32.h in Headers */ = {isa = PBXBuildFile; fileRef = 9750FEC33D895C61AEF436CC327ACFCA /* CRC32.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2749A3EB09A53E051842ACDC0C175AFC /* NstBoardBenshengBs5.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6A961F74ADE61500A3E62672063A3386 /* NstBoardBenshengBs5.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 27937C0ADFF1E6FA3193AAD53A7E0F43 /* NstBoardBxRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3C61A8EC43CC81E91FC288BD7D6390AF /* NstBoardBxRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 27C550701221240B94408E909DC1EB7E /* opengl_ColorBufferReaderWithReadPixels.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CCF3B37039138FDE454BCF2F1D72F9CF /* opengl_ColorBufferReaderWithReadPixels.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 27CFFB50E3DB9123D04EFE77C8B07812 /* NstBoardBandaiLz93d50ex.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 35A600AC8729425CB58B419068B7AF93 /* NstBoardBandaiLz93d50ex.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 27D8B6DBC90EEE05D98941F71C31A63B /* bldno.h in Headers */ = {isa = PBXBuildFile; fileRef = 41DB39ED4A9987FCCAE6804933525696 /* bldno.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 27F3106755B10B1EEF4EFF4AA9C11224 /* NstBoardCony.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3FBE42827351126539CE750010EC25AB /* NstBoardCony.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 27FEBB4B8589E35BAB55A9152AD25EAB /* PaletteTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = DE221800B54D7A157B8C6DA4FA6C36E1 /* PaletteTexture.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2856F55FECBB9FE5B808714FDEDE35D0 /* N64EmulatorBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 341202BB825E444CFFD1E90327ECF6E3 /* N64EmulatorBridge.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 28C60122843E856A47662EC45B95F1EC /* Config.h in Headers */ = {isa = PBXBuildFile; fileRef = EBDD40755140DC9ABADF7939C8DBACE9 /* Config.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 28E8BD38661A1039E236ED7C38CF90BD /* libhardware.h in Headers */ = {isa = PBXBuildFile; fileRef = 0392F4CAEA87D6FE46C313B686D25274 /* libhardware.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 291213DF808D89E1B6D01C4D3E780D52 /* NstBoardUnlEdu2000.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 836A85D3F37DD955B50893B23E16B446 /* NstBoardUnlEdu2000.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 298B446E47DA4AA9F9902F18BD23204F /* NstBoardKonamiVrc6.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 491D48215F2F54CB9D3A315B9995CD71 /* NstBoardKonamiVrc6.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 29962679E9012751AD784D26C64074A6 /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 6497DCF700203B483AC09F89101261EB /* UIView+WebCacheOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 29A685A5D01095121E8261DD0DA16E06 /* readpng2.h in Headers */ = {isa = PBXBuildFile; fileRef = B652670BE43DF580C036F800C9CFA84A /* readpng2.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 29A6FDBF6F90DD82AECE1451C99803A7 /* svprop.h in Headers */ = {isa = PBXBuildFile; fileRef = 970287FEF0704F01287D296CEF107F35 /* svprop.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 29D3854561B700B591D58A989C279365 /* android_hardware_buffer_compat.h in Headers */ = {isa = PBXBuildFile; fileRef = 72C1083AD34F4F2C3F51C52B8BD27F4C /* android_hardware_buffer_compat.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 29DB047352DA13A31AA0C71A1CF26752 /* slot1.h in Headers */ = {isa = PBXBuildFile; fileRef = B70EEB2277D9821CF8654045BFDC9254 /* slot1.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 29F8A06BB846199406BFD61E55B6D55A /* NstVsRbiBaseball.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2FABFE400E3964CCCE1DD3091F585C5C /* NstVsRbiBaseball.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 2A2C45A08602F5996E9A560ECFD7BF55 /* TxTexCache.h in Headers */ = {isa = PBXBuildFile; fileRef = FA293C63A8B24A15F71B9359696C4394 /* TxTexCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2A31E4A8BDA4212ACA4F866B2D9EFC47 /* ttnameid.h in Headers */ = {isa = PBXBuildFile; fileRef = BCA5FCC7A25097011B93E01588B9F652 /* ttnameid.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2A5C42EA4A820CC59D56D3AF3F571422 /* UsersCommon.swift in Sources */ = {isa = PBXBuildFile; fileRef = E296E74D5BB17E065FADEFAB60BF91B5 /* UsersCommon.swift */; }; - 2AFB08ED8A01956E6A3BC1D3D8291214 /* GameControllerInputMappingProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53F2B0E17BC3AC9D7A5FE0A938140BC3 /* GameControllerInputMappingProtocol.swift */; }; - 2AFDBD64E02EF797395B3EF74E0179D9 /* GTLRFramework.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B84D2927A477768BA7A22EB43B0A83 /* GTLRFramework.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 2AFE8583F7E95C60E1DD4FE64E348FF8 /* scoped_ptr.h in Headers */ = {isa = PBXBuildFile; fileRef = A86BBFC8A328FE8113CD7DCAEA82FB55 /* scoped_ptr.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2B20167690BC05580B6B16AF98119BDA /* FramebufferTextureFormats.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B3253523DE4A52CDBFB6532071CF62A /* FramebufferTextureFormats.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2B332EE69BBDB0E3E108FDFF4CA96DEE /* adaptivesleep.h in Headers */ = {isa = PBXBuildFile; fileRef = 8548E2F828F57A9B447EB274E44455C4 /* adaptivesleep.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2B58F319B8E9BF654A4EC197D5F1A4C4 /* Operation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56FF2E7B30B92666AFC8210CC7DF0098 /* Operation.swift */; }; - 2B604C9570E4F0E32F87292123DDB6A7 /* Standard.deltaskin in Resources */ = {isa = PBXBuildFile; fileRef = 297E2444FDCEA0CA8DEE259009AC453D /* Standard.deltaskin */; }; - 2B81A80CB152C7A724DFFEB2CCE2EF2D /* S2DEX2.h in Headers */ = {isa = PBXBuildFile; fileRef = 538E8E8B075647A2A73DB019D234F843 /* S2DEX2.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2BA85D25C4419783AD031FBF59CA8CB6 /* KeyboardGameController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B189DC53FDFE10C190B9FBE91F050B55 /* KeyboardGameController.swift */; }; - 2C149A3935B50021E96372BDD79BB809 /* gSP.h in Headers */ = {isa = PBXBuildFile; fileRef = 568F36EBFBBE28420448B604FDBFEE24 /* gSP.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2C17BFCD74603057D80951EE11116F33 /* UIApplication+AppExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44DB938AD9F0914B6AF9E0B000CC58D4 /* UIApplication+AppExtension.swift */; }; - 2C1F825F0BD978C4467D43DABFBD91EA /* ControllerSkinTraits.swift in Sources */ = {isa = PBXBuildFile; fileRef = C61BD8D70E274ABFA9A9BA6CC11DA6A9 /* ControllerSkinTraits.swift */; }; - 2C2D541DF6046F5A8455E594947526F6 /* NstBoardBmc8157.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5FC0750A805444A39AFBA65B400EF63D /* NstBoardBmc8157.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 2C53E269DB432154A34959FD9111D844 /* rtc.h in Headers */ = {isa = PBXBuildFile; fileRef = 4F005622B9BC67B664A26431CCCC72A4 /* rtc.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2C554E96F31DD93E8F12E8AF170CD236 /* ThumbstickInputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92BF3D469815BCF258E55BDED1A6BB5D /* ThumbstickInputView.swift */; }; - 2C60FD50629B5BC73FCB82527EA899C0 /* filters.h in Headers */ = {isa = PBXBuildFile; fileRef = 88F90D0052D3F80B4BBED7CF58CAFE79 /* filters.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2C7C4070947B0A6B843F9FD37FF9ECFC /* ftmac.h in Headers */ = {isa = PBXBuildFile; fileRef = BDCF481B7CADE27CDA57D025A3C16167 /* ftmac.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2C91154E7F42644A534F65A447C32280 /* ARMInterpreter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CA9525A6B4DD2E5909EF0A2DED9B5B4 /* ARMInterpreter.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 2CBCD36E150F68D7FC054015B4D5E86C /* StoneSerializers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79488326ACD741DA78E6F8BFDA889395 /* StoneSerializers.swift */; }; - 2CC745EFFCA65F28BA363A6511B0A122 /* RSTPersistentContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DB969D2164DC5204825E7F482BFF821 /* RSTPersistentContainer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2CD2365D48A8372A485FA1A97404F94E /* Shape.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5AAF27B93CC50C84527A4CDC44DFBE0F /* Shape.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 2CE807080E104E8FE53BCF0E5B5629C7 /* NstLog.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D514311967AB9AF3A26AC154E058CCD3 /* NstLog.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 2CF1F853C0BFBDAFFD5F6AA6EDDC45A3 /* DSi_NDMA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4539EE42EA9368DA3FC54B00064B5F74 /* DSi_NDMA.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 2CF57337BA2220CF60CF8EF9D637C6DC /* MemoryInputStream.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1846ED4B4BB382D3D7947E931DCA24FD /* MemoryInputStream.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 2CFB7E4AB44C35953034CE00C927B1F8 /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA1C0B3274E804CB44DE0C80AC3E1E9F /* Response.swift */; }; - 2D0C1D6DC71F2E1D4229D57F3DC3F2D8 /* UpdateRecordMetadataOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE94A72C4101C8A8627C17AB51EABF9C /* UpdateRecordMetadataOperation.swift */; }; - 2D1B6F8056D39F5E59900D35E145206E /* TxHiResCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E43C59A5B93F18A57BAB4238BB9EB74 /* TxHiResCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2D87E1AEC45003E3C2203D5A623DB6E1 /* Expression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E2085B3FF507E08C3040D7E3D3C295B /* Expression.swift */; }; - 2D8961BB7D7C3A9BE77821F8B38B9AB2 /* gSP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3D0E5148A5668D50387301D5037D6607 /* gSP.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 2DB7733EC33A8410DC8A8366DFBA8DBC /* ffmpeg.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E1301D5DCEF622F5A8BD8C7EBCB993D /* ffmpeg.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2DE69B570EAA4CD3EF7BDE50417EBF18 /* Cheat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 407496B379E009BB38F5D88F433827EB /* Cheat.swift */; }; - 2DE8BAA4CA5C90C37F62310D873236A8 /* SoundStream.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 50AE80DCB539B14771E2023FB4C50510 /* SoundStream.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 2DF5CD9CA9F8ED14C41711DEFDC39FC8 /* RSTOperation_Subclasses.h in Headers */ = {isa = PBXBuildFile; fileRef = DC6FAF93284C148CBB1E3CD968DFEC92 /* RSTOperation_Subclasses.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2E217A20F7C7C1D7C53B126599B2D971 /* GTLRRuntimeCommon.m in Sources */ = {isa = PBXBuildFile; fileRef = 87BEF86E5D9BA232DF16BE7F774E4D82 /* GTLRRuntimeCommon.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 2E2C9AE2C2634120504DCC7045FA8CBA /* opengl_Attributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 02AD1F679FF728B6511BF017E73D0150 /* opengl_Attributes.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2E3CFA6F2DA0A1958B850E1033E7509D /* SDKConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = A03E19C0995989B6E3E1FFC99B95C5D2 /* SDKConstants.swift */; }; - 2E786F7516894BB5A3F160C69C775F37 /* CGGeometry+Dictionary.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0259D8CA3A04B7E37CABE7D5A3591E5C /* CGGeometry+Dictionary.swift */; }; - 2E7CF2452B84932D8BC4721944148FD4 /* GTLRService.h in Headers */ = {isa = PBXBuildFile; fileRef = F8694E99071ADE337EEEA41E7C2CFD82 /* GTLRService.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2EC23CE58EE7708E622FEE511537C9CA /* ftdriver.h in Headers */ = {isa = PBXBuildFile; fileRef = 8739733EF235CA35583DA8672E19ED27 /* ftdriver.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2F1A6F3FD3C27557955C1DF8DDEE8E86 /* txWidestringWrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 61ED4053EA35D4EEFE0F4F1201CAB911 /* txWidestringWrapper.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 2F4AC9B5807C8699BEA085CD926181A4 /* NstBoardKay.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AB6205A6322E0AB9DB06D727D66FF2CD /* NstBoardKay.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 2F5127CD10D8E2535992773837F4F835 /* PlatformConfig.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CAD2DA398BD46993458E28459856C65 /* PlatformConfig.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 2F53636D1AC55BF95A4DAB146F03BBF0 /* N64EmulatorBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 7137BA5D5A9D9C8100F36AA2BDBE55A0 /* N64EmulatorBridge.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 2F5BFC0603B02754B8E30297B3216928 /* pngrio.c in Sources */ = {isa = PBXBuildFile; fileRef = 975DDCEED3B7F45741E5AEA5A85A0195 /* pngrio.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 303F6BA182244FF198A952C65672B918 /* DebugDump.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 729B8DEC37C5A417626DEBCDB5C13C65 /* DebugDump.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 307FDE527B3BA76D85A5993EDD953DE5 /* svxf86nm.h in Headers */ = {isa = PBXBuildFile; fileRef = F840D02C8835AA39D02B6ABE9681A9AD /* svxf86nm.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 308160BC5F09D63939B996718F5FE77A /* SoftwareRender.h in Headers */ = {isa = PBXBuildFile; fileRef = 77F5D02F675FF6E4F52E24F369CF8D7A /* SoftwareRender.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3093DC6674E12A40F556638EE504824F /* opengl_BufferManipulationObjectFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3B5D17EDC9CD7D8A8AB79211F9C821AF /* opengl_BufferManipulationObjectFactory.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 30E313B3231ED9FBD7886503806B818D /* xxhash.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B0F8366B012EA89F3FA3A0034DD1EE4 /* xxhash.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 30E3FF5DE72D56612993D499EBED8C9B /* AggregateFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B10B38D31A95FF99BBC00DA9C36C8D94 /* AggregateFunctions.swift */; }; - 31B2DBBAFE73651D04E825296D28F297 /* movie.h in Headers */ = {isa = PBXBuildFile; fileRef = 532679A78BA807A935E918B3242DAE24 /* movie.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 31C1F83D5453BE25A69D6F530B1C3485 /* GTLRBatchResult.m in Sources */ = {isa = PBXBuildFile; fileRef = A136EA4F05EDD2CD92B3C8B2884AAFDD /* GTLRBatchResult.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 31CB322B9A061477F6613B85ED844A50 /* NstBoardBmcPowerjoy84in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5C0C33A889F868B983A26B0049957E27 /* NstBoardBmcPowerjoy84in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 31D11404DC7EF94201B044C47C885744 /* EEprom.h in Headers */ = {isa = PBXBuildFile; fileRef = E073803913605D51FA5A80D6AFA5F21A /* EEprom.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 321A8A5DA5032252FAB712DF22162164 /* opengl_ColorBufferReaderWithEGLImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 1DBB96D9A562E2F0DB417F2C9C265840 /* opengl_ColorBufferReaderWithEGLImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 322224A15335E64B548E6BC14BCF2B78 /* ring_buffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 577979F3FAA02788C1868C7CBE2CDB85 /* ring_buffer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3273223DDD0CA6757302612A41139A14 /* NstVideoFilterHqX.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9952547823CAC65BEE64985C660ACB9C /* NstVideoFilterHqX.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 32B45CCB0228F26D882FADFAACA6B5F2 /* DeleteRecordsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1588287F115BFA204CA5E4A5780A8821 /* DeleteRecordsOperation.swift */; }; - 32C5649F56A9F2DE34AC6EF9FCA33323 /* SDWebImage-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D1E150EA94D5A0A5026F379E1681155 /* SDWebImage-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 32F7E2ACCA4602AE9DE680A9D70EE36F /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A926D3355F6CDDC80A17A8A29A62AF05 /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 333B6E61E9ECF93C817A20091296B470 /* VideoRendering.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5511EA930503B498E2FDCA7FE9E5C746 /* VideoRendering.swift */; }; - 3351E9C78786EA760C531C93A9C94A75 /* NstBoardFujiya.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FD926A875D2FBDFA56F862E68AF4755C /* NstBoardFujiya.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 335990730B3D97240BC102E33530C9BE /* ftbitmap.h in Headers */ = {isa = PBXBuildFile; fileRef = 9672B0303F5AE277B3ACBA2384B33261 /* ftbitmap.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 33634A177F147AD56D0D0B5D5C95394C /* getopt.h in Headers */ = {isa = PBXBuildFile; fileRef = 92826FF6C95AEC7E23536C6230E33DFA /* getopt.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 33AC02E4AADC0C7A4F3CB5FB66568B17 /* DSiCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 53F89D9483D4FCD9B6AD70C3BABD0A32 /* DSiCrypto.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 33B82FEB6CAADE21F17322AC467F77C7 /* Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA41416AF760A4579E38926180FB7E98 /* Async.swift */; }; - 3438BF3AB96CCC5A9A4EF8D8FA5D916B /* TxDbg_ios.mm in Sources */ = {isa = PBXBuildFile; fileRef = 73DE9A2DA3844302000F020E82B3907E /* TxDbg_ios.mm */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 3459FBA13F771D8B005B57DFB20A514B /* Thread.inl in Headers */ = {isa = PBXBuildFile; fileRef = 50F439CC928E176156E57AA87FE696E1 /* Thread.inl */; settings = {ATTRIBUTES = (Project, ); }; }; - 345EDD9520CC205CD1FB390D34A53945 /* tima.h in Headers */ = {isa = PBXBuildFile; fileRef = AC2DF45494986B62F7A3E6F8C593811E /* tima.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 34955DD3625BE6223A3DDBC5BCA17AB3 /* DepthBufferToRDRAM.h in Headers */ = {isa = PBXBuildFile; fileRef = D6F197419FA933E40431ABE1A632D6FB /* DepthBufferToRDRAM.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 34B4AB76890CFED50032916F5957C7F2 /* lirc.h in Headers */ = {isa = PBXBuildFile; fileRef = 428337B1D02C02B51CC15106D03FF0DA /* lirc.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 34D9D9587AE2F43B4F63502D38B7A5E2 /* c4.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EF3C8BACE3C7214CCB4EA445F842DA8 /* c4.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3522984A23D0983D50F2F60CD2B9F2C9 /* SMCalloutView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5209BE954A7C39272EDD3AEE95066684 /* SMCalloutView-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 35291E58E7238CD13D2E865807183244 /* F3DZEX2.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B78E7619C1EF2E22D6D66466D28CA5C /* F3DZEX2.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3542124A0438B48658C4A6141BEF83CC /* sdd1emu.h in Headers */ = {isa = PBXBuildFile; fileRef = 578CFF4C7810495DFD481CD17F1C31C2 /* sdd1emu.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3558897AA95B62F80A08F6BB2050A356 /* NstBoardAveNina.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7EBD31893D413B13A5423B498193DD47 /* NstBoardAveNina.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 357DF9EE19ECB06C535CCCB807F420AF /* NstInpCrazyClimber.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 568598CD538601D8444402BA45158972 /* NstInpCrazyClimber.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 35810F28A76BA871BB25E6F932D177D4 /* NstBoardMmc6.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B263B5B7D35ACDCD3A0F476C52C958E8 /* NstBoardMmc6.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 35BC9FAE9686F85098FBE1AB8EA0B3DF /* ThreadImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 25917FDD71079A0F43811D467EC6CC40 /* ThreadImpl.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 35C94BF99402C7B96380CF7DF8A4C261 /* ereader.h in Headers */ = {isa = PBXBuildFile; fileRef = 6BE39081BB452BD5A1ED6F8D2A9E2783 /* ereader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 35FE7B5266819E5E2007B2A11432653C /* pure_interp.h in Headers */ = {isa = PBXBuildFile; fileRef = 370CCAFA9A85F11C84A26CCC1747C687 /* pure_interp.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 362793F2A796177DC74B3B9F64E25130 /* NstBoardCne.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 179B3F52FCBDACDFD58910B37E4E0805 /* NstBoardCne.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 3643AF9772C52697A5E027B1DD70D895 /* DSi_I2C.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 796084063277FF52CC987CFFC579DEEB /* DSi_I2C.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 3649D0A5F600F50C72717C56C40D595A /* NstInpBandaiHyperShot.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CDB89D2DC9692722221DCE91A98ABF63 /* NstInpBandaiHyperShot.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 364D452F7CE09D453DE81D1440FFD211 /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C53AFC7C3E9CB17543D6DAA0BC85DC0 /* version.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 36A71964872AC8FDE8E020463DE88F83 /* Standard.deltaskin in Resources */ = {isa = PBXBuildFile; fileRef = 90750F17E4FE1687675390836DF8A844 /* Standard.deltaskin */; }; - 36B445E011FE7FC22B0749DD25BE63D8 /* cstdint.h in Headers */ = {isa = PBXBuildFile; fileRef = B609F94FF19E3C589A8FABD70BA44393 /* cstdint.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3702FB2A7D108F1C298275E49589B637 /* F3DEX2ACCLAIM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B9DA21EF87A522A040A130E53DCC3258 /* F3DEX2ACCLAIM.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 370E393479F996C1044E4D79CA03EB29 /* DeltaTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DE7B55C25EE9E9892BCABEE74C0311A /* DeltaTypes.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 3721263F244DE0949485AA6D697EE083 /* render3D.h in Headers */ = {isa = PBXBuildFile; fileRef = 27972C0F459B8A35484EEEFEB34D2439 /* render3D.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3740A255E76A8BF8C335371B87CE13CF /* SharingRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D8FC7A21B622E0C6CA1737C2DBD7EE2 /* SharingRoutes.swift */; }; - 375EB482B73194EF5C4EC2FEDFB5F767 /* gbint.h in Headers */ = {isa = PBXBuildFile; fileRef = 301E160410CC65E23A409444566E5122 /* gbint.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 376BFFBC1328C0C152BF3E26C5C3AAAE /* DSi_NDMA.h in Headers */ = {isa = PBXBuildFile; fileRef = EEDA2ECC059F3543D89E74A08C12E140 /* DSi_NDMA.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 378A4E0BA1BFF16A35F865640B2581F3 /* NstBoardGouder.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C211F03F09C2912EFA66F80B077FE66E /* NstBoardGouder.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 37E4DE948E05079FAA44C05D68F80FF6 /* GBAcpu.h in Headers */ = {isa = PBXBuildFile; fileRef = F332361824DFCFC2AB5EB91B30975F82 /* GBAcpu.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 383C286F607F63AFDE5F7C1B6BB5B3A5 /* m64p_common.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D633EBBEE9DD8266E21025C31FB5CF2 /* m64p_common.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 384CAB43016F83797CE5DEB9A7583054 /* FileRequests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF1AA4BB7C7EA9D745AEBF944DC944BA /* FileRequests.swift */; }; - 3858A5E7345359ABE491B3BAD5011E5B /* bios.h in Headers */ = {isa = PBXBuildFile; fileRef = 57C2AF90F5D25906D579D1BD54E1894D /* bios.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 38DAD7B3FA10E0A8997E3828BA5D6B13 /* Ftp.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0DF09F5AC56C013F55C64308E54A7FAB /* Ftp.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 38FB27B8FF342CA5E41C42414A41C524 /* MemoryStatus.h in Headers */ = {isa = PBXBuildFile; fileRef = C636BE691B0B5DBF12D3F61CF9E86972 /* MemoryStatus.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 38FC10CE5E21386929D89F7E8CD03056 /* SNESDeltaCore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F843E73027A5BE68E6CA51088F469B2 /* SNESDeltaCore-dummy.m */; }; - 3902C5B92026004C73A38722D712E665 /* TextureFilters_hq4x.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 157D57C1EE8530CB6DD38493ACCD624B /* TextureFilters_hq4x.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 3902D16F92C794D06EB83F8B5068A520 /* DMA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26BA52E11E63B3D60A0CFCE4C371772A /* DMA.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 391F2172A9C3C815A4BA42E5D2ECF0C0 /* memmap.h in Headers */ = {isa = PBXBuildFile; fileRef = 62E7F9741F9B8BABE8B88494215167D3 /* memmap.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 394AE33B38323C76A9B8FE3B59ED459C /* NstBoardBtlSuperBros11.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BBF68C9FA5BA309DF08CDED46313E187 /* NstBoardBtlSuperBros11.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 394D71AE48F3EBEDEA27A6E034D2A972 /* mem.h in Headers */ = {isa = PBXBuildFile; fileRef = 5020C256BF6AA1E14A6F7333CC1DF504 /* mem.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 39E36E16FF2FAB77065F3E24D90D594B /* GTMGatherInputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AEEEEBC25EAA4D178CE03F03D008923 /* GTMGatherInputStream.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 39F38972460CD199439B125BDF9E085E /* ControllerSkin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54528B8321960A24E37B5ACDBBC4E842 /* ControllerSkin.swift */; }; - 3A035F1208587744FCE79BAA40FED441 /* ColorBufferToRDRAM.h in Headers */ = {isa = PBXBuildFile; fileRef = 602E22953C1047191A4952E0E7D831F7 /* ColorBufferToRDRAM.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3A25B99D756D928C89261CB6889AAB96 /* RSTCellContentDataSource_Subclasses.h in Headers */ = {isa = PBXBuildFile; fileRef = CAA72D7234A0B208E0C7AC4CCE7B3873 /* RSTCellContentDataSource_Subclasses.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3A53AC93258951A2C91E606250A6A148 /* cic.h in Headers */ = {isa = PBXBuildFile; fileRef = 401540A57A1384B5E8EE6E0E120864A6 /* cic.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3A61176BC3353F1CBBA3A411006BA8CF /* Dialogs.h in Headers */ = {isa = PBXBuildFile; fileRef = A32E44B26076FC3AD91BC42EC4BCDB70 /* Dialogs.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3AEC0111F268CD81B435536F8693BCDF /* NSPredicate+Search.h in Headers */ = {isa = PBXBuildFile; fileRef = F449670F55A999CFE1769E48D2557E1C /* NSPredicate+Search.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3AF2AC0F6CD2FCF90A72FF402FF396B5 /* NstBoardBandaiOekaKids.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1157E342C2B03EE058136AE3F2A86A66 /* NstBoardBandaiOekaKids.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 3AF8C64F61ED8696423A082EAD71334C /* GTLRObject.h in Headers */ = {isa = PBXBuildFile; fileRef = F1D0E74F872B2D64D94DDEE42849F609 /* GTLRObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3B17C335707C9337295A65EEEBDD8C32 /* DropboxClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD38FECB05322CFA65D8B297F68349F8 /* DropboxClient.swift */; }; - 3B5E90D41DA051B6B170AD0A9F86A766 /* RSTRelationshipPreservingMergePolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 09D17B1A4E6711C38BB3E0CEF87E4B69 /* RSTRelationshipPreservingMergePolicy.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 3B6100F0FB1BCC2ADC81EB5CF7B95186 /* NstHook.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BCC5E70F6FBADBDE73B80CDF3668D546 /* NstHook.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 3B7DB38EC32D13B3F2E0A6AD4482F738 /* opengl_CachedFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 568A2546CA38DCB268734B2B99202A99 /* opengl_CachedFunctions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3BA757B9B9DE8D23F851F57787F03601 /* pngwrite.c in Sources */ = {isa = PBXBuildFile; fileRef = 6D0550F757121A1A87081B1D88E1DDF0 /* pngwrite.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 3BB3304AA1997AB0026B2A5149208B65 /* NstBoardUxRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0925941FA67E8AA00BA0DAD59E31EDB1 /* NstBoardUxRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 3C1920FE64F396F884D43C1B41C471A7 /* Turbo3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 526F4329EA81C96890ED9ECE2F8C7681 /* Turbo3D.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 3CE481B47CF7F65695B4189942BDA90A /* svgldict.h in Headers */ = {isa = PBXBuildFile; fileRef = 4885792B83557D1EEC027BB0F203C247 /* svgldict.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3D0B06B53A5627799E796B10195CE20E /* GameProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 863440A2EA28833532DAD4455C9604FE /* GameProtocol.swift */; }; - 3D32B2343FE47F0A79A27AD1EFC1D5D0 /* GoogleToolboxForMac-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EF06F8F27ABEC737DD25CCD173676AF /* GoogleToolboxForMac-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3D37944BC8D6719455E079D3857C1840 /* NstBoardBmcBallgames11in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 559D85DC3375B82B2C7252ADFA8534A9 /* NstBoardBmcBallgames11in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 3D38D3143F60F22FF8148BA31C508E73 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAF7DAE3D701F9616A709277BAC90365 /* Operators.swift */; }; - 3D627BB299F8F33AEAF091B8F8CB81AD /* path.h in Headers */ = {isa = PBXBuildFile; fileRef = B3AFC502DD1D86B9D684498892D0783A /* path.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3D6D4934F2872048170C4FEEB95245DE /* m64p_debugger.h in Headers */ = {isa = PBXBuildFile; fileRef = 69F6D09E39DCE61200F1255426706BDD /* m64p_debugger.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3DB2ED0C2F430F24757BEC045A1C4641 /* sfnt.h in Headers */ = {isa = PBXBuildFile; fileRef = F20FD15E6B1429D53EA9EECB0B17F55D /* sfnt.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3DF1D16A8A4CC1336A77D4A62D41A3AA /* ContextImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = EC0F16885459523EC97FFA6EC3B324DA /* ContextImpl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3E24520D2052BE16F3E3A3C5CB8DD5F0 /* NSString+Localization.m in Sources */ = {isa = PBXBuildFile; fileRef = 910356BEBB46C3A3795DFE61CA0E7710 /* NSString+Localization.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 3E3176D33CDADD755273657C4A7EECE2 /* font.h in Headers */ = {isa = PBXBuildFile; fileRef = BEC36720A23F7F9D127C45AD31BA84C6 /* font.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3E588F5369CEE639E3114048A114E3AE /* pngrtran.c in Sources */ = {isa = PBXBuildFile; fileRef = F4567E4637DA3B5C60F7318FA9E969AE /* pngrtran.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 3E679A651C223842379C847997E922E6 /* GBCCheat.h in Headers */ = {isa = PBXBuildFile; fileRef = 69E6AFEACD7BEB734D1577E24B12AD23 /* GBCCheat.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3E82C4D5935E02D385D773C59D424ADD /* Validation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 599A968786BB3CEF39D154E679D99110 /* Validation.swift */; }; - 3ED2358FA22A626EB46EB609B6072096 /* matrix.h in Headers */ = {isa = PBXBuildFile; fileRef = 39F57C8AD257C3DD8BC2E22B11EE1356 /* matrix.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3EFCED92EDC9F6F16DC6F4DD6F5768E5 /* NstBoardKonamiVrc2.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2EE9DF9D26033CECBB33A2130F905155 /* NstBoardKonamiVrc2.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 3F0C4452BD4180B1027AB9969A57DF02 /* F3DEX2ACCLAIM.h in Headers */ = {isa = PBXBuildFile; fileRef = 886EFC64C20F8C4DE363F570FCBCA6F0 /* F3DEX2ACCLAIM.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3F30BDC512A1FC7B0424D7F650B7FBC8 /* rdp_core.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C7F4857C4B19B71934451055891D8A1 /* rdp_core.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3F3A41DD7BAC1A62E4318D72E234AE75 /* NstDipSwitches.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6197473267332EA94817882913954E6B /* NstDipSwitches.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 3F6976E4C9D03C8135EAF94CE0866FA7 /* aes.h in Headers */ = {isa = PBXBuildFile; fileRef = 38AE0B5994FF73A6C429B6EBB1313566 /* aes.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3F6A9E89A4B512CAA85E37CBA9D51795 /* FileProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC547021A6C25CAC75D4CBEA991AF3F2 /* FileProperties.swift */; }; - 3F7BB694F840DDA2B7D84DA61B487233 /* RingBuffer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FFD12A0BF77313EA363649EC4149D5D /* RingBuffer.swift */; }; - 3F7FEA770E5356202443C2E10798F0CA /* NstBoardSunsoft5b.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E478395B4DE98AA28B40B0BB0713E520 /* NstBoardSunsoft5b.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 3F85E2BF60A55A0364204FDA07B027BC /* cpuexec.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B6780C53289B9AF9A0CB8BAE83F80FF /* cpuexec.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3FBEC30670787C8E30826F4C08A5EE05 /* GTLRUploadParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = B9599505824F928A644466FC5D89F93C /* GTLRUploadParameters.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3FCDEA74A819AC4D832ED0BA99E512AF /* NstApiCartridge.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4C2B0EF2438B6A4D26AF5ED81619C0B0 /* NstApiCartridge.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 3FE35DA3722A4B4A7CF6612740ECA43D /* AREngine.h in Headers */ = {isa = PBXBuildFile; fileRef = DBA5DD76F54ED88D4BD09E9745D87490 /* AREngine.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 3FECB5D28A30D26ED0DE13289AAEFED5 /* Event.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 93437D2EFA2DF3188772EC34BFBEB1D6 /* Event.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 3FFABA72B0A5D0BC85D32BF55E050DD3 /* NstBoardGxRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C9DBA67E0E17459ADEA92DE98CCFABB5 /* NstBoardGxRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 40730E4E8C81D3D4C1946CFCC4726447 /* SPU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 974A5A80FEF9ADAB76EC64F1ED289A72 /* SPU.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 40C2FE903D7E7E41FE50A490E202A37C /* SNESDeltaCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 01FBA1CC5922D0FF08A2FC8A8CFD16BC /* SNESDeltaCore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 40C6FA3AD390CD7C03DBE9E18D24B870 /* SoundFileFactory.inl in Headers */ = {isa = PBXBuildFile; fileRef = D2601C99EA17D1A82364DFE29F8CD5E0 /* SoundFileFactory.inl */; settings = {ATTRIBUTES = (Project, ); }; }; - 40C716E69BA8D81B57881563AF6B7BD5 /* CustomTasks.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3F1E51AE6F5BE0ACA847F1A9ACE7311 /* CustomTasks.swift */; }; - 40FCC3EB6F141FB2116C1076A5857471 /* DS.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE246301115CDA2A2D69A325D9C15084 /* DS.swift */; }; - 4100248683FD407FEDF308AF2FBC1D71 /* common.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E6091FE660CAF4367DBF5FFF46CC56D /* common.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 411D478938B6BE56A5AEF1D21F148500 /* NstBoardJalecoJf19.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FADAC750C6926F320BE0D25936C925C3 /* NstBoardJalecoJf19.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 4170B33FC4F086E54F30F10FCB1A66EE /* ioapi.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E4F59F003666ECE81B8914D69DB6AF1 /* ioapi.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 418778CBD5952613489F528DB5A0B58F /* xxhash.c in Sources */ = {isa = PBXBuildFile; fileRef = 5A617EF2F76A9BA5753AEDEAD7937E43 /* xxhash.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 418DAE118DA469149BF43D6546A9CA77 /* NstBoardAve.hpp in Headers */ = {isa = PBXBuildFile; fileRef = ED250D313A76B9709F1774AE007A3EA7 /* NstBoardAve.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 41B0C33FB6C186CFF9B6D071B58CD0B7 /* NSLayoutConstraint+Edges.h in Headers */ = {isa = PBXBuildFile; fileRef = 6AF33200C7D32C8EACD8B8539DB45BC2 /* NSLayoutConstraint+Edges.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 41BE84F53570143EA00A6B4E5EFDEAF9 /* RSTToastView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D0F7001B895CE5DC852EF08B9A72594 /* RSTToastView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 41CA4A91CCE1FABA5915CAA4D95E7F4E /* NstVideoScreen.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 43581617364040436E9EE723D0F60BCE /* NstVideoScreen.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 41FC9C70A03B32441576990543BC141B /* NstBoardBmcGamestarB.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7F348EE71D161DF0BF0008D88C55B158 /* NstBoardBmcGamestarB.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 4216808C752A41DEBD20BD33047A6564 /* SyncCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07BE40F2BA50550EABDF951960989A73 /* SyncCoordinator.swift */; }; - 426298A6777CC4B0185E4C214C926D07 /* NstBoardZz.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F0E832BE9925100CCA463EDD16E27F2F /* NstBoardZz.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 426F0F3F8476616E6C16A4FBA696D9A0 /* rdram.h in Headers */ = {isa = PBXBuildFile; fileRef = 43155D80E0BA237C31D4788F6BB7D924 /* rdram.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 428EFC8EA34D19BDE99A1DB7B9ED5511 /* GTLRURITemplate.h in Headers */ = {isa = PBXBuildFile; fileRef = A02D556906FE8C4CFDDB3F8D10DF3E4B /* GTLRURITemplate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 428FB823400B7FB83A5D0990AE0D0435 /* Performance.h in Headers */ = {isa = PBXBuildFile; fileRef = 70B0F2F9BE58862F6DCF466C6E0C14C6 /* Performance.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 429B2E7563F2936BE274999888C81049 /* Transform.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 733F12E405AFBD29E85D0D8B66566F83 /* Transform.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 42C16D31E52CB8B80813BAED0B93DF0C /* musyx.c in Sources */ = {isa = PBXBuildFile; fileRef = 37E46CBAFA8DC113FDF631837622310D /* musyx.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 42D9F3DA982751DCEA61E9068C1473B7 /* RSTCellContentPrefetchingDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = E5A929646CF6948C6DD085FFFDCFEB2A /* RSTCellContentPrefetchingDataSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 42E0A47AC6016A658A24A9ABBB05F2F2 /* display.h in Headers */ = {isa = PBXBuildFile; fileRef = B94E286F3F31AF33D0C10EE54989676E /* display.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 42E5C880BAA5FC52ECF6CAFF22AC3223 /* L3DEX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F361DBAEEABA43BEC6C118A99F58783F /* L3DEX2.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 42E6ED4F76B8A021D89275CFB5A3D26B /* F3DPD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E5EEBBDBFD0865D20C8937D1EBDD4AB6 /* F3DPD.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4300A386B5C98E3E0FAADC47E93A94EF /* counterdef.h in Headers */ = {isa = PBXBuildFile; fileRef = 2167141E4D27BFEEF859D04CC1F29060 /* counterdef.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 430521820BEAAB7C24203C575F20713A /* sar.h in Headers */ = {isa = PBXBuildFile; fileRef = 68018329536A9449BCE127106869F5B4 /* sar.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 430726813EB11B2999126D798EFDE289 /* ftautoh.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E0449EB27DDA97EA184D6B13F251535 /* ftautoh.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 436B412B5F49A5A2C494C62D8BC5E966 /* NSPersistentStore+Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BAC4820CB7E84EEF39B9060D0DCC6AD /* NSPersistentStore+Configuration.swift */; }; - 43A6F36EC82583DFC3F1B2EB25F87C7E /* GTMSessionFetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 9265E3D9F1667F3A362493594E094FAD /* GTMSessionFetcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 43AF887703C63782133E7015994BA038 /* NstBoardBmcSuper22Games.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CCC95DC3146675A3867C7281C91DDA27 /* NstBoardBmcSuper22Games.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 43CA7713A7E71EB9979B2EAC56C39AA9 /* UIScreen+ControllerSkin.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0FA70CD9D6CEE8BCE5E201406829944 /* UIScreen+ControllerSkin.swift */; }; - 43CD04715DCF129AE994EB37DDCCC52A /* NativeActivity.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8690E1547DD78C11D04758E93FE06417 /* NativeActivity.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 4408605E821C7F7A6885E2C1CCE29366 /* RSTCellContentChangeOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = DF652814DA2F4879D0FAAA481F19D537 /* RSTCellContentChangeOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 440F059F5BC73A7D040499DC8C4EE582 /* TxReSample.h in Headers */ = {isa = PBXBuildFile; fileRef = 78AB21416B984D35625ECC2BA9CD8E4A /* TxReSample.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4418860E443905D4D6C861123C58022C /* UISpringTimingParameters+Conveniences.h in Headers */ = {isa = PBXBuildFile; fileRef = F3B086736AAA1DB3E1686132E2D41189 /* UISpringTimingParameters+Conveniences.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 441AB4FFFA1D74ECE59E403B1CAE0957 /* Vector2.inl in Headers */ = {isa = PBXBuildFile; fileRef = 738312A615F845E52FDBD508E66600CC /* Vector2.inl */; settings = {ATTRIBUTES = (Project, ); }; }; - 4439BA65DE7F8274F7E0C49D2703643A /* TxCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 912F269028E7AF5014AC2F20248AA813 /* TxCache.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4453D161230F5B4D5D8AC81E502CC799 /* RSTLoadOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = B4A632384D9C688D434380B6CCE7D1F7 /* RSTLoadOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 458A0EF9B34400A0F717602273B89092 /* opengl_Attributes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 12212BF1052061C6C55854070D63C2EE /* opengl_Attributes.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4599474730B58310809A72D5451B1EB0 /* vi_controller.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B405C81D69384A18E8F08EDB915B086 /* vi_controller.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 45DE2736788412D19B39D2765891543C /* FileRequestsRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52146E42B2E7458AB8F550EAAB719074 /* FileRequestsRoutes.swift */; }; - 45F2B0726C3D59937427243B7241C0CC /* SoundTouch.h in Headers */ = {isa = PBXBuildFile; fileRef = 10444DBFBA879846A3CEEE82FFDFF4C6 /* SoundTouch.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 462094FD752DE1546160C1285399BC0C /* GBA.swift in Sources */ = {isa = PBXBuildFile; fileRef = 169187B6163B3872887502BA489EDDB9 /* GBA.swift */; }; - 46350BC8DFD883F129BC297C9564362A /* gbafilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 86340807BB987EFFF2BFA97977E4B822 /* gbafilter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 46457A06C688BCFEC4586763EA73E11C /* NstBoardUnlXzy.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1601BA61D97D812F7F0409F9B40B1A8E /* NstBoardUnlXzy.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 467EEF732E0C4EE5C77C43E88A4082B0 /* GameControllerStateManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = E17E403846F48ECC1FB5E3ADD15CAF83 /* GameControllerStateManager.swift */; }; - 4682852108E2FAC8F17968AF50306BB2 /* PluginAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 85A0EC10CDB05B59BB67D8B32DADA738 /* PluginAPI.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 469EAF80560362FC2EA1F8545DB6B051 /* GTLRDriveService.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C5F8657F7A40B8346317B773095E039 /* GTLRDriveService.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4707AAEDE63F963FC59B4EB7CE7453AF /* Platform.h in Headers */ = {isa = PBXBuildFile; fileRef = 54689C99B915B2658F5E3CDDF391C225 /* Platform.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4722E4C5A2200870DC4994299C29E13E /* FIRFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 141E1B266EA682B6640983E0A2AA47D7 /* FIRFilter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 477C64259B287EFB2038DA3885B1AB0D /* Custom.swift in Sources */ = {isa = PBXBuildFile; fileRef = FEAA22126ACDA08EE9AC0FA9A9B6EC05 /* Custom.swift */; }; - 477FCA2A0A8F638F66D7E34FC2FB5EC4 /* NstBoardVsSystem.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B5507771F98C954AA584A3AE892FA2E4 /* NstBoardVsSystem.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 47B4DD1ABB9504E1223FC8867A81B652 /* NstBoardUnlMortalKombat2.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8CE14E555F7821AFDC5671E041375AA7 /* NstBoardUnlMortalKombat2.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 47DF3A7FF00C733F489EF93F5ABECF6C /* View.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6464DF7A6164101B5FB673424724943C /* View.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 47ECE3896FA717B2E9A73E7640A63077 /* NSFileManager+URLs.m in Sources */ = {isa = PBXBuildFile; fileRef = 642D1E9C093B844DD73C3012A1D48864 /* NSFileManager+URLs.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 47FA4A6263D719420AA5BE69656C31EC /* NstBoardBandaiLz93d50.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 07492CA726F6504D31BF464E3BA6CF79 /* NstBoardBandaiLz93d50.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 4815EB441ECFCC3EC477EB9A12984FA5 /* MMU_timing.h in Headers */ = {isa = PBXBuildFile; fileRef = A1109774AE36DB58ADFFBB7C828D8C33 /* MMU_timing.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4840CDA5F2B471979C7ABF542033F7CE /* Image.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5D8D98D7B531E3E46BB6AE4A6C935FAA /* Image.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 4843CDED4F0BE8DBB368DFDC5BD36C34 /* Thread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EE94CF3C1A56D0C7DF3C5F9D41A48366 /* Thread.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4878C8EAF675668BF798513EC3D67EAB /* GTMDebugThreadValidation.h in Headers */ = {isa = PBXBuildFile; fileRef = D21720F624B8F46DC74D6175670521F8 /* GTMDebugThreadValidation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 488875F3618617406AB771502A10BE59 /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 3983F1895BAF52B55FBA7C3CA41B9A63 /* SDWebImageDownloader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 48DF70229B8B4F0EBCFB93CB383A0D38 /* SoundSource.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6F47CA53E91124FF1F8F6E6AB50123F0 /* SoundSource.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 4918E84E848470B9A2D0FA19D45CE005 /* NstDatabase.xml in Resources */ = {isa = PBXBuildFile; fileRef = B5334B9A8D1F3E9EB246C2ABC04E2E6C /* NstDatabase.xml */; }; - 4948EB328DD7614DF746912086A18D65 /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 60815A565ED55CD68EB1B67F9D360CFF /* UIButton+WebCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 494BF218C4F917D55808751F21518F3F /* ResponseSerialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 745C7BD034F68630CA1462CB29BF3051 /* ResponseSerialization.swift */; }; - 4968F0A9C7DE546779842BB59F7DA6CF /* RSTCellContentChangeOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 0ABCF5B1CE696822E3D35879D26BA13C /* RSTCellContentChangeOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 49D6B0CF5073DA2E08DF0BB04E616376 /* NstBoardBmcGoldenGame260in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 00863A5438B87F6F408D32AE14DC8C72 /* NstBoardBmcGoldenGame260in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 49D9C73CF5713E0D31C59D418A1126F9 /* Lock.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 681B874515928068B822C055CFADAF60 /* Lock.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 49DEF99A28C96AEFB3171BD4B5484C0C /* Parameters.h in Headers */ = {isa = PBXBuildFile; fileRef = 2064A148CF875274B060142217B611AA /* Parameters.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4A2C51D58D1FC432F3E77CC5EEBE362C /* sRGB.h in Headers */ = {isa = PBXBuildFile; fileRef = 67348E30C729A5B75CDEC762C64536A8 /* sRGB.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4A3E77771AD6643B8A13567B0005842B /* DSEmulatorBridge.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0D333C14DCFA672B937D7D69CEB91B12 /* DSEmulatorBridge.mm */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4A3EBD57F8099F1502FCEF3AF1D4F281 /* spc7110emu.h in Headers */ = {isa = PBXBuildFile; fileRef = 127A16AF48ACA5BDBF1E686BF6664827 /* spc7110emu.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4AA0FD1C9D8AB212ACF66E035AF4ACB8 /* vidext_sdl2_compat.h in Headers */ = {isa = PBXBuildFile; fileRef = 829C35143E7D2B6838F3B70A9F749491 /* vidext_sdl2_compat.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4ADA0EBAE9AA0838C8BB4E1BCB970EF4 /* MelonDSEmulatorBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = E9ABB79C4907847141EE35556B95D962 /* MelonDSEmulatorBridge.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4ADDF3A9BA32D9DAA8B1C0ECB9CF6B57 /* NstBoardWaixingPs2.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AD693DEDED863272C9B25B41DD69C257 /* NstBoardWaixingPs2.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 4B1913647C8C56F75BA326AB79C39960 /* savestates.h in Headers */ = {isa = PBXBuildFile; fileRef = E3781082E784F8730EA460122392ECA2 /* savestates.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4B39C171942B37E5EBB4E1AD7F526F5A /* NstBoardTxcPoliceman.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 35DC0A8D32E14C0B0344081D704501F9 /* NstBoardTxcPoliceman.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 4B491AC014D06B281B769327879C4FE5 /* NstVsSystem.hpp in Headers */ = {isa = PBXBuildFile; fileRef = EA4903C023E7677D54CF9E99C7C36B67 /* NstVsSystem.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 4B4F8654F1E715E4550D464BCD79D078 /* ftwinfnt.h in Headers */ = {isa = PBXBuildFile; fileRef = 45D4C75AC56E110104DCADA137055D6C /* ftwinfnt.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4B5E5859913C0D43A12CBBF5CCC40961 /* L3D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = ADD7C8EFEAF388836613108B496AEB00 /* L3D.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4B63F3F2D83498B437733C310A0E9604 /* S2DEX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08801BA2C31D8CAE35C750FC3E0EDFC6 /* S2DEX.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4B75C4D6CB371DD7EBF0B97BCF19D12C /* UIImage+Manipulation.h in Headers */ = {isa = PBXBuildFile; fileRef = 24173745FD3ED83170E3C0D27045BDA1 /* UIImage+Manipulation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4B75D69424A6B025E9BA0F44F2C189C3 /* ftsynth.h in Headers */ = {isa = PBXBuildFile; fileRef = 211630FF3DC8E93C7BB79421F0894487 /* ftsynth.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4B8C3C6D94DF606A6D387BD2154AEDAC /* lua-engine.h in Headers */ = {isa = PBXBuildFile; fileRef = FE393A787CDB1368A55863B430DDD5C7 /* lua-engine.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4BAD9B59DA032DBBFB94115E444F68BE /* TxDbg.h in Headers */ = {isa = PBXBuildFile; fileRef = DDB1E1F374DA86F155EC6B1D14298EA9 /* TxDbg.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4BE9718C23ED5E715F462A13C1B6BB6F /* GBAinline.h in Headers */ = {isa = PBXBuildFile; fileRef = CCEBBE6CC544087FE52A0A6B44568B0B /* GBAinline.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4C30EA59CFCBD9768F377100C136EFE1 /* ExtensibleEnums.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526503C9D0166487853FEE7E30181783 /* ExtensibleEnums.swift */; }; - 4C4C4EB0D0E0B020D54CE2A8247A50D1 /* NstBoardTxRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 02D064A7B1B32EE0399D71E19B46C190 /* NstBoardTxRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 4C8B73E5D9E48C8C2A6B7EBFDD6124E8 /* jpeg.c in Sources */ = {isa = PBXBuildFile; fileRef = 3A57C4A2E676CA0366D18C05CCDCB841 /* jpeg.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4CB877065DE9EA70F6E26D13817FFB47 /* debugger.h in Headers */ = {isa = PBXBuildFile; fileRef = 6867B0D264A10EDDE036F053E3ED4D34 /* debugger.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4D0160F31CF08CE7DA0B2745431B08A6 /* NstBoardMmc5.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 856D83B78BF97FC7E7AD812C3612DDD2 /* NstBoardMmc5.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 4D288D8AAC3133578BEA01CB5E5D0892 /* NstCrc32.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 467F53FD7271C63510E4CE72A2081426 /* NstCrc32.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 4D4A3CEE436ABFEC318A5920B2B436A3 /* GPU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE93DEE394994F832D334D9E6E12A6A3 /* GPU.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4D56850AE6857416D3DDB94CFFAA1DB7 /* F3DZEX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 43AE2C70BA23A5104C95801EED5A171A /* F3DZEX2.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4DA5C054DB84ABC4C0F7C582A1615228 /* N64Types.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C48FF19B66C43CC61264FDFDA92A9B1 /* N64Types.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4E12691E8FFB6A5D07B1FD18B28A1E3D /* NstBoardEvent.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7B9E6B769CA9E78BEDB08A1DAF5427BF /* NstBoardEvent.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 4EBCB348A3635B2DF72AE15170F5B9EF /* retro_environment.h in Headers */ = {isa = PBXBuildFile; fileRef = C966592CD4157C1D20CE1334FB18D992 /* retro_environment.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4EDA1138B3387957A1923B1167329FD7 /* RSTCollectionViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = E5FEB6D7738FB80B9D922536722BCF7F /* RSTCollectionViewCell.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4EE7EC79E6B9DDD41A65B8DA0DECA621 /* F3DSETA.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B4979E3A36561CF460398CE358B49DD /* F3DSETA.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4EF29A33B127A1626B651E25F6C81B21 /* F3D.h in Headers */ = {isa = PBXBuildFile; fileRef = F74650D4B8781AB8E64A8CA694F1307D /* F3D.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4F06E8B14A298FB8784196CF343DB7AD /* GTLRDateTime.m in Sources */ = {isa = PBXBuildFile; fileRef = 1371A75FE41949E4BA02D89705197634 /* GTLRDateTime.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4F83FE4457BD225A7BF4A13EAD29E480 /* NstBoardBmcCh001.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 26032F2CDCDD25EA1AC74BCB6470AFD6 /* NstBoardBmcCh001.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 4F8B45B633AB1A23C256DC11A467EA71 /* SocketSelector.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 578ED2874A72D2771139C6E86515B236 /* SocketSelector.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 4F95759188192E987337CE840A2A3E66 /* pngget.c in Sources */ = {isa = PBXBuildFile; fileRef = AC5B45A27A13095F80FE8A891D1E5735 /* pngget.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4F97C62307BBBABA0542E8A2D9C82EA9 /* DSi_Camera.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 375C3C3A4475372C4AD36AD0B2842472 /* DSi_Camera.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 4FB08E1BAEF3C66FBCCE044C711EB007 /* TextureFilters_hq2x.h in Headers */ = {isa = PBXBuildFile; fileRef = 57CE43337560DB685A64E57DC336CFCA /* TextureFilters_hq2x.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 4FC7AF896E59B073A3D5A0459B06DB54 /* GBADeltaCore-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 147BC96402CD809FAF20E2C6BFF3ECB7 /* GBADeltaCore-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 504B710D1CD9CCB734546C45C0411454 /* AREngine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 63A44C100EEF3046D44722C99B1F6BFE /* AREngine.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 50AB40817F62717F5085229AC8E5899E /* NstInpFamilyTrainer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B2B8796FD94CC2CADD2AF1B5FC7F0BFA /* NstInpFamilyTrainer.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 50E1E298A636E18863861F0F08A136DA /* GBAEmulatorBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CB58CA4AE908281BA1B91954FF16704 /* GBAEmulatorBridge.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 50FEDFF1ECA9D67217CDAD7559CB2238 /* DownloadRecordsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCC9814536B9DA40A8D7EBE1B1E6CE0E /* DownloadRecordsOperation.swift */; }; - 51236CEB02F62DA7F967A451D1F56F0E /* defined_ptr.h in Headers */ = {isa = PBXBuildFile; fileRef = A3C2952ABBB60A651284DE34817CDD0A /* defined_ptr.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 513A9E46A3C55471BF8A8F6A2A8377F9 /* TxFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = F301E5CE692E47A2ECB5EAFAAB5FA614 /* TxFilter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5141A231A45A79D7E7647583F2D56862 /* F3DGOLDEN.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FEC8E53FAA570C8D081ACFD7722213C /* F3DGOLDEN.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 514A8999003719826853A454089251A9 /* rateest.h in Headers */ = {isa = PBXBuildFile; fileRef = D99BDDF8334E70176E218DC0D4A89A58 /* rateest.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 516C836E155D2ACFABD6CBF02C5BBAF5 /* n64_cic_nus_6105.h in Headers */ = {isa = PBXBuildFile; fileRef = F385FFE64099CB11245634D2B66248FE /* n64_cic_nus_6105.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 51825EB538D21FDFA5B0484503867B43 /* RateTransposer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DE74F67CDAB85D054D711218E1334CA /* RateTransposer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 51882AB1BF2D64307CB26E25DB7A43C2 /* ServerTrustPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87B8D974016F8FF0B7457CF079A700AB /* ServerTrustPolicy.swift */; }; - 51B424365A04DA4BABB30AAA926B9CE5 /* NstInpMahjong.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B19F0AD4ABC47A0641E683A2EBEC2805 /* NstInpMahjong.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 51C657E2290BFA1C359C56A6DB9F6D9C /* GLideN64.custom.ini in Resources */ = {isa = PBXBuildFile; fileRef = 0ABD9F1CCDFA6E2A04D431A1AA997A70 /* GLideN64.custom.ini */; }; - 51CA7B77A9ACD65FB188FF10707AE72B /* NstApiFds.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C7123B0D191661CE2885FB576763F310 /* NstApiFds.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 5217E45B241AEB928B1E0409DC4A6CD6 /* ColorBufferReader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3B19F94B88659C7D37F232351127EABC /* ColorBufferReader.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 521DABC0210CC67A1C6A4965A96A2A4A /* NstBoardOpenCorp.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BCE3D49C34BE975F12EC26CFBD244645 /* NstBoardOpenCorp.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 526269A4AD64156B78E1C0FEEE8C9BE1 /* ThreadLocalPtr.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3BAE81001B3A22535FE02638D962A025 /* ThreadLocalPtr.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 5264F1EBFAC9ED3A6B934E170C9D28FA /* RSTDynamicDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 532D7ED0B8685A85D6778DA70F40CCE4 /* RSTDynamicDataSource.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 526F0C25294137B33C5AB6E9FB49C184 /* MelonDSDeltaCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C6B3BB0BD1C5AB90126FB0F27180451 /* MelonDSDeltaCore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 52722B0030C7E925E9C8304457491FFB /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 26ECC555C3C58DB5AFADDF0AA680057C /* SDWebImageOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 52A3337392118B21810EF16559BC92D8 /* GBASockClient.h in Headers */ = {isa = PBXBuildFile; fileRef = CCCDBB91056DF2425CF5E3A355B295ED /* GBASockClient.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 52E2A37BCF6FD1750888370A49B968FB /* TransportConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 874D46F582C919DAECAE2F7A7A611809 /* TransportConfig.swift */; }; - 52E898F23BB34BA475A1B6364D9A73A6 /* NstIoMap.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B52DCF99725F280D96FEC3B36404D325 /* NstIoMap.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 534D594C357BC78A1E1FB9DA23354C82 /* NstTrackerMovie.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E3FFF2B354F5C1F93C7CE3EF232A44B0 /* NstTrackerMovie.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 534EAC141BC2556ABD60FF51F879E214 /* pngstest-errors.h in Headers */ = {isa = PBXBuildFile; fileRef = 13A74768D1214D8C9ACE6E7A1CF5CC68 /* pngstest-errors.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 537A445A6BD512C2C364A8296E9FE8AC /* NstBoardUnlKingOfFighters96.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B03F08C3C42F47C763E6A4F9BA15FDFB /* NstBoardUnlKingOfFighters96.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 5383B3D07739D95DE423251CB307E221 /* ARMJIT.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BDA60DED9E65EB1430366F1A5F7D45D6 /* ARMJIT.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 5384326D9398733EEA01A98FD28CCB83 /* NstBoardMmc2.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6D100997AEF49344BE7D24310D2FC672 /* NstBoardMmc2.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 53D8D1CF6882A51F6D8047FC1E039924 /* CP15.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2784D28154C321EB45B31ABE7415E7BD /* CP15.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 53EDFFC0F0D36B5725BAB735AD5ABD83 /* video_capture_backend.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A62C9BB8CA481EC37AC2E39EC49D42D /* video_capture_backend.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 53EE1534D25325E34421A9FEEFDB84CA /* F3DTEXA.h in Headers */ = {isa = PBXBuildFile; fileRef = ED21FF34110471A9F0568E2CE0E2248C /* F3DTEXA.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 540B5B5B275257717B549E0137CF3525 /* NstInpHoriTrack.hpp in Headers */ = {isa = PBXBuildFile; fileRef = DDD4F2F2C131066EB84145AC18A138C6 /* NstInpHoriTrack.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 544091F02695D58E423CD8C4F790ADD5 /* ftheader.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DFCA97B33E59049B25A0D843E635862 /* ftheader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5455831F69A7A028F41357210913C16A /* Team.swift in Sources */ = {isa = PBXBuildFile; fileRef = D196E82B652BFF0CF8DD7D134B12120D /* Team.swift */; }; - 5489B7D0BC4A155CA65D8B959975E7BC /* ftrender.h in Headers */ = {isa = PBXBuildFile; fileRef = AC5241947289CF60377457F6EA7D2F58 /* ftrender.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 54A3E6A5E5E5954F8BE1AAA63E0E606E /* GBCDeltaCore-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 31ABC87581C86AA32FF41CEDD6ED1F9E /* GBCDeltaCore-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 54AE98FD1CEB75BBF1E1050705DE0484 /* SndOut.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E068EE6E9B5BA6765CAC8C1DBA5E090 /* SndOut.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 54BE6B863730DFB92F838B8597D48A46 /* RSTCollectionViewGridLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = D4DA42AD554868EE4E35A2197455BF64 /* RSTCollectionViewGridLayout.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 55356E90D4199C170C044E10032616EF /* PostProcessor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D9E9874C984615B07F0284BFA0B7360B /* PostProcessor.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 553DB738A9B78A4B09F667C0B2A71292 /* AuthRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC89D5569A6FBDDE31EC55DBF2F86B2E /* AuthRoutes.swift */; }; - 55466F9A056775E1460BAAF39B297127 /* Config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 83196FEC51C0814A8ABCF0EF4FAE5EB7 /* Config.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 555FB12D5FCF2D3893536E6A5B958962 /* FIFO.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FC0331C8792784F0B18ABC1E76D97EB /* FIFO.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 559D47A87C3DF7593B087592DAF242D2 /* apu.h in Headers */ = {isa = PBXBuildFile; fileRef = C290E38AA00434D6999E4E49F703E086 /* apu.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 55A432BEEBAA4151ED9A571B40C5DEF3 /* opengl_UnbufferedDrawer.h in Headers */ = {isa = PBXBuildFile; fileRef = BCCA1C95FD4883494B6FFD8509D3D035 /* opengl_UnbufferedDrawer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 55A78F9C62B20037E0B83A7E7F4AEBAA /* memalign.h in Headers */ = {isa = PBXBuildFile; fileRef = 562759128EB09E82B9ECE5D393FD8A80 /* memalign.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 55A7F5BFC6817F0ADFAFA890240943B9 /* SPU.h in Headers */ = {isa = PBXBuildFile; fileRef = A7BB2BCF965C0CFF87F6B6493A78DBEC /* SPU.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 56121BF5864707DA661AE1EB82FF5BE3 /* TeamCommon.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8E8726464D823B37E1B6D05F7E27255 /* TeamCommon.swift */; }; - 564303729227D61E62D0C32CD931C04C /* NstBoardSunsoft4.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 82B37B22062D50601B309F8686F80EA9 /* NstBoardSunsoft4.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 565120E3D97F5385407F6F5D2BC4F347 /* VideoManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7C7A53DDC963B2490F956E3FF86722E /* VideoManager.swift */; }; - 566B02F81167FAAB363014E42ED15BFF /* Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23337F04F86774C07156F65B6DF86644 /* Foundation.swift */; }; - 5673E35FE41293804D1FED43C52DAE9A /* mupen64plus.ini in Resources */ = {isa = PBXBuildFile; fileRef = EC4989F2AA541A9B07E4D99182254D4F /* mupen64plus.ini */; }; - 56767AC0F2EBCE23DBB667CAEAD821FF /* Drawable.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B8B0C6977911C21FE4D012F6677A1038 /* Drawable.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 5682281B6898281C5C1ABFA36C3F80A2 /* NstBoardBmcVrc4.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 633DEC5FA3A9C9A21BFDA859C021697A /* NstBoardBmcVrc4.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 56ADF70673BE541664C3CA807DD9CCC0 /* GBCCheat.m in Sources */ = {isa = PBXBuildFile; fileRef = 2930CA273D36A22F50BBB9A5FFA20234 /* GBCCheat.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 56B8E32593E6F5B48B62DC0D29BE5258 /* SoundBuffer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = ADDDC51C343FAF2F99EFEFB0B081E3A4 /* SoundBuffer.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 56CBC9C4E3285B0686CF8E3B10C477ED /* file_storage.h in Headers */ = {isa = PBXBuildFile; fileRef = 95CD9DA178E8F2C3E9F09D0EA74AB12F /* file_storage.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 56EDE990A1AD5367F8B892E863E055FC /* NstBoardCaltron.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C3864406D458455C70ECF31C7CC64D42 /* NstBoardCaltron.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 5709FF7741CEAE524CA58DEFCC26A543 /* DisplayWindow.h in Headers */ = {isa = PBXBuildFile; fileRef = D5060FFC2F442DC6820A90A77A582841 /* DisplayWindow.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 571E310AB109E172C7D5A289AEF10E4B /* NstBoardBandai24c0x.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9E5D25B5C7342ECEF43594F75E916A6A /* NstBoardBandai24c0x.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 5733E9A422DA077AC8CF78367751D3F2 /* UIResponder+FirstResponder.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7624756F2E7D96F00D6BA74A924876A /* UIResponder+FirstResponder.swift */; }; - 57537B3D8E8015A781E8A63574487640 /* NstBoardAe.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5918E695FD4E4ACB917EEEB1508D285D /* NstBoardAe.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 5756F3A828FF9216F3070FFDED69EECE /* NstBoardJxRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7C39EC3D5796C91B27BD3B48652EE7CF /* NstBoardJxRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 576E1D4482F3B7F66CEDEF7E4E51B94F /* GTMNSDictionary+URLArguments.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C84F28BC8941E34DD2FCD83B3BA50C0 /* GTMNSDictionary+URLArguments.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 577F3BB4084F215DDF35DEC3050EBFAD /* Listener.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 56588EA7D5FBE2DA4FBDE668B0CE31D0 /* Listener.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 57B0B49B329F103EA7FADD44100A0643 /* SDL_opengles2.h in Headers */ = {isa = PBXBuildFile; fileRef = C10B0DD77FF57233C2D77462177B023F /* SDL_opengles2.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 57B44C05E0C78DBD3AEB549DD5CE1E6C /* SNESEmulatorBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = D3B1080EAE2B04F4B0C9A9132C3F2A6D /* SNESEmulatorBridge.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 57CDE8F4764A33233874A39A3641B000 /* AboutDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F7FDCCFB6F765E955939AC3412E3FD9 /* AboutDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 57DFE6B206AD7A957D805DEA7B76133B /* idec.h in Headers */ = {isa = PBXBuildFile; fileRef = BBBCDA15DF519AF03646ED3FD16CC4A6 /* idec.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 584A34948FEDEBB330C38D3C1EDA1CE5 /* ftrfork.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C878F2CCB482C22A82B135EDBCB366B /* ftrfork.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 58670BDA59BC1476ECD1AE42A65DEDB4 /* SQLiteObjc.h in Headers */ = {isa = PBXBuildFile; fileRef = F1B7B38160FBB40F6A58CE9397B82088 /* SQLiteObjc.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 586E16FDD5C90F3C191E86B101EC6A25 /* NDSSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = EC72261E388EF6B78FAB023D9CC5D419 /* NDSSystem.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 58984F5CED600749378A3DB48891A393 /* L3DEX2.h in Headers */ = {isa = PBXBuildFile; fileRef = D843AF4955FB13CED7AC2A50E53B88F6 /* L3DEX2.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 58F754A0BEF6C3340CAD4B872029C5BB /* GLFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 35E9790D73322BBCEF673DA489A9D57E /* GLFunctions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 59034D766A2AAD80CF703AAFBA1C1149 /* DSi_NWifi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7E99F915543C72FB60BB5CD12C64429E /* DSi_NWifi.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 592293E2FA96EF64F32B34871BD9A844 /* si_controller.h in Headers */ = {isa = PBXBuildFile; fileRef = 79E0EDA5AC69A3E5E4CB871209E7050A /* si_controller.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5942E81AECD0FE59C671011A08A05146 /* ftpfr.h in Headers */ = {isa = PBXBuildFile; fileRef = A5EDA5B2FBC98C0A7796342C667A915E /* ftpfr.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 594DA9553270D750B893A43C2D6B50F9 /* Sensor.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AF63924ECE87BC1FFA410F95D8F2BF95 /* Sensor.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 59794998A1976F683445F2572A633E23 /* NstAssert.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D6EEE05F6DA53633CA458BFC7773D9EC /* NstAssert.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 59E468A63BB15309FDCC7FDC5D1E24F6 /* Archive+MemoryFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE47B9173973846BA966835EB7C3B4DF /* Archive+MemoryFile.swift */; }; - 59E8ABF034C6D4AC8237C5B47F455BE1 /* SyncProgress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45ADD1597F370D16BB2235D82EFB16A4 /* SyncProgress.swift */; }; - 59F484BC8CF90B57FB39C605F6C64DB1 /* RSTTintedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8120D6CFBB7E4E028442630DE245EA89 /* RSTTintedImageView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 5A2420C5AC228204FEAC2E9782A04EE7 /* SoundRecorder.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6946D483214CA66E8CC3E5647EA18AEF /* SoundRecorder.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 5A2D60AF36AECA12D6B0344E1560FA79 /* svgxval.h in Headers */ = {isa = PBXBuildFile; fileRef = 955B912BE5DE9EC545281531DEA7BF23 /* svgxval.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5A5D20B307D87F0F079AC3EC56EE4D4D /* Roxas.h in Headers */ = {isa = PBXBuildFile; fileRef = 56472B809613E73F5088D9AD78569F17 /* Roxas.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5A9F9AC98262774DD55C7EC10167F5BE /* L3D.h in Headers */ = {isa = PBXBuildFile; fileRef = A270CCA7A4DB147588E240BAB9CE84A7 /* L3D.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5AB7029C187BAF4A973C93335CCE467A /* Parameter.h in Headers */ = {isa = PBXBuildFile; fileRef = FC58D957FD250B9D3EA534C46DE7360D /* Parameter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5AD41E1DDDB28D9FB6EFA28357A8CE30 /* msu1.h in Headers */ = {isa = PBXBuildFile; fileRef = 98E96F11787557393A1214824C033C34 /* msu1.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5B7DEFA571D030A2DFC71BDB5E789BC1 /* GBATypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 9733C7EBAFF0927A8F7A245AE45E8DBB /* GBATypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5BB4BE7146E837F34527E80AD02E1C72 /* NstInpMouse.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E14EF2196DBABDCE807D82AB877627C5 /* NstInpMouse.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 5BBB3C500191EA135841640C6D585BB2 /* PACKED.h in Headers */ = {isa = PBXBuildFile; fileRef = 316682D383C84DADE373A0AF5248B438 /* PACKED.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5BEE50B5D68BDBBB1105822DBB2E17E0 /* callbacks.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C0EA7F202AF8D11BCE267EAC22A4F68 /* callbacks.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5BEF9A474F439E8C6239FA0B3F8C1A8C /* ftgxval.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B51A3520C584D8ABB256211A2A7A8DB /* ftgxval.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5C2D5A16BC3EE7C171BC8AAEB95306BF /* WindowHandle.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FE39951FAEE97B46CF8150651BDCA721 /* WindowHandle.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 5C62773B7C5D9276E3C4604889BABC88 /* retro_assert.h in Headers */ = {isa = PBXBuildFile; fileRef = 7644554091000C52315F1623FF43785C /* retro_assert.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5C7EE40D012F956501C04D247B8E1FAE /* Shader.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F128339585E580A9E234A7EE4076A4BE /* Shader.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 5C80EEAFDA8E90AA114DC25182BC98E6 /* libretro.h in Headers */ = {isa = PBXBuildFile; fileRef = E4BCA6B4ED56A16E766A6B739A0AB217 /* libretro.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5CA3642022F063CA0484DB90E99B6254 /* mic.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DFFB1E8202B4205DB65C0986BE9DE17 /* mic.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5CEC906BA8DDF1AB5098CD1BC743AE0F /* glsl_CombinerProgramBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 584986A5CC4D03A1266EEF01E564FCB4 /* glsl_CombinerProgramBuilder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5D1D745FAB41EB5BDA28F13754DA968C /* plugins_compat.h in Headers */ = {isa = PBXBuildFile; fileRef = AB7F635BCF0402E1F025A3881D64913F /* plugins_compat.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5D4F3A50B7FB921EA83E4F5F2D95FBDA /* Savestate.h in Headers */ = {isa = PBXBuildFile; fileRef = 9171559D6EEC0F5564085AFA32A8CC96 /* Savestate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5D888DC4186E2B49B9B7E952D8ED21C1 /* NstBoardIremLrog017.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 23FF403AF7501E405FCAF240422E16C9 /* NstBoardIremLrog017.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 5D932F3ABA1AFE35D6B14DFE197E316A /* ARMJIT_Memory.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F8B1EF5CBC47463811F0885E43429E4 /* ARMJIT_Memory.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5DEA8F7474732E6C79236F4837258D73 /* NstBoardRumbleStation.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F5E76C4046670A82D2A4B977C8535413 /* NstBoardRumbleStation.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 5DF91E6EAAC076130B2EFA4657BD483F /* RemoteFile+Dropbox.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF4A1EFB2AC9B32C86EF2EBC32CA55E6 /* RemoteFile+Dropbox.swift */; }; - 5E24232FF3FC348A0F6E45E07CAECBD7 /* GBADeltaCore.h in Headers */ = {isa = PBXBuildFile; fileRef = C948F7181BF61F2DFC5F685D88FE30CB /* GBADeltaCore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5E261C0C7D02F06AC4C0940F93BC3664 /* UIImage+Manipulation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5EBCBF05A13053079CD97F27B623EABF /* UIImage+Manipulation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 5F95C438C09768C3FB3F7A195720AFF3 /* opengl_GLInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 87F005CEE9EE7E4C64FA78613A4C7A75 /* opengl_GLInfo.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 5F9F2E02D60939318256712CE9D524EA /* Auth.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10640380C87A1BC9B04007C2A3C1F529 /* Auth.swift */; }; - 5FAF319CD47FBBD5FDF408DA9E5486C3 /* fttrigon.h in Headers */ = {isa = PBXBuildFile; fileRef = C822F4501F86A14953199438EDEAE4CE /* fttrigon.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 5FF9112D3D167900154B7558F13DAB04 /* NstBoardBmc35in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 37D0BABBA376987F2CC8B03FCC78D43C /* NstBoardBmc35in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 6008FBBEEDE31E4AB8D6D104362EE632 /* MFiGameController.deltamapping in Resources */ = {isa = PBXBuildFile; fileRef = 801F19EC04BD80A8CDF669781B0A3F39 /* MFiGameController.deltamapping */; }; - 6026351527CF2B0EC60F7EF6E3BE5C2A /* Textures.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2E1228101B4F23943718649665A9AC0E /* Textures.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 60448A37407D9D39000BAC68C30A4E08 /* NstBoardMagicSeries.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 552496FA7E1F325B9859522705BE8C3B /* NstBoardMagicSeries.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 6084A5F08E94885B9A72BF363F734560 /* DropboxService+Versions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26C1CA5165F63DB19C3707B2831921CD /* DropboxService+Versions.swift */; }; - 60BC657F99AB8AB86516B7C8D67B0996 /* Version.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93AF0E5AB88071086B8030C74B51B509 /* Version.swift */; }; - 610C2DD3DD0BF6DAC7406BC221BC9333 /* SNESTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 54883D2F73AE4EE2DE2C218D4A5DB739 /* SNESTypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 611CD7F88EB81EEF2BE5E8427E6A7BEB /* ftxf86.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F8311A2029FEA937C1C42B5E445E925 /* ftxf86.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 612650EECCA996F5878E62E3FE581A0D /* ControllerSkinProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E824187F69AED458A810430496F8133 /* ControllerSkinProtocol.swift */; }; - 61439C0CC7FC6253A498447EB1449EC1 /* ringbuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = F9E3F8223A04B2A5A32807F8C0F4B2B5 /* ringbuffer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6146D87D5859AD1E8600F38801583FEC /* ftserv.h in Headers */ = {isa = PBXBuildFile; fileRef = 30D5361B1F9F184F5C39F254FC6B9567 /* ftserv.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 615485A6707CC6DA8CA2B65C4E2E040C /* xxhash.h in Headers */ = {isa = PBXBuildFile; fileRef = 8991F8D9FAC3A697B63046BF35BD3FC4 /* xxhash.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 618D67DD0616EEE968E9E403291C104C /* NstBoardKaiser.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 78A47CFC26B9E18F69F6B51E131740AC /* NstBoardKaiser.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 61C3A0E693DC5E1CFD847F0D77C394E0 /* opengl_ColorBufferReaderWithPixelBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = AF8C7CEAE093526F24A7C6CAEF79D94E /* opengl_ColorBufferReaderWithPixelBuffer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 61E67A0DD3F243231506E6B68E9F33D6 /* NstBoardUnlKingOfFighters97.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3F77E3426079D9FF35C4855C3733C861 /* NstBoardUnlKingOfFighters97.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 61EDC1E33EB39E4E89E6B8BC314BC1B2 /* Utf.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 90540DEF7A0BEA009234C3402F2936A8 /* Utf.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 620331F7C6C9988CDFE03ED824696E82 /* Users.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2915B37F1313A778ECAC05BE22A03BC3 /* Users.swift */; }; - 6252AC3C230BC83234C9D7D7F17455E5 /* GTMSessionFetcherLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = 498BEFABF329CA81DB038DAEE4DA86DB /* GTMSessionFetcherLogging.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 626863FBB1F3C943ACB548FFB7A85E8C /* Timeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ECCD45E4DF53FED6DA4A6938B32FD27 /* Timeline.swift */; }; - 6296F6264E028A9BBF60D49CCC363932 /* PlatformConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 44C09EBEC04D075143364B842FD33FA1 /* PlatformConfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 629D990529F872535EB933F8AB2F5A92 /* TextDrawer.h in Headers */ = {isa = PBXBuildFile; fileRef = C180A7FFF5472B31D3BCF75A810DEAEC /* TextDrawer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 62E5BE2DC20A1C2D026BCF73A7AD83B2 /* DeltaCoreProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CE2844DE2F965D57AF2B9A38F4F4B70 /* DeltaCoreProtocol.swift */; }; - 62F18B0609BD1B5FB65F41B8BA0522A1 /* DriveService+Versions.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4E029C6B1502E3C0F74D27B9EECBA1F /* DriveService+Versions.swift */; }; - 630EE3EF292636086AC7E4D8F8CD7CAA /* MelonDSTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = 38E6E1D069F7CEA691074A413DC56ADB /* MelonDSTypes.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 631F3D5AE191DBDF2255566541C456DE /* pixform.h in Headers */ = {isa = PBXBuildFile; fileRef = FF97EFD3A744B8AF2BB6EDBFDBD5E6D8 /* pixform.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6322A14CBDF57EF29695F820A403EDE2 /* SDWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 520D9B2D1F6739C099B2819925297F07 /* SDWebImageManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 632696705E31455785CB9E8AAAFC789F /* RSTFetchedResultsDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 270A6C4B2DD7C3357F8FE302128EA6B9 /* RSTFetchedResultsDataSource.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 6388BF27A5D6E9361F14BDC2E8A91FC4 /* GTLRDriveService.m in Sources */ = {isa = PBXBuildFile; fileRef = 17191C33E01881A9A1CB215D6932040B /* GTLRDriveService.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 6397CE28C0D86E79745F531C11A1831A /* registers.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C6B9BE868EA37768F174927D00C38BB /* registers.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 63BD21E214F2792D4D41CBF0A843443F /* FilePropertiesRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FA1B8883F6CAED73B7A39FB514ECF59 /* FilePropertiesRoutes.swift */; }; - 63DF12F2DE04D063432CE59B0BFDC4EE /* KeyboardGameController.deltamapping in Resources */ = {isa = PBXBuildFile; fileRef = 8E3A59FADC15AFDEC6BB45E8BA0E05AB /* KeyboardGameController.deltamapping */; }; - 6402FD16C9BADCEAA3DCF2A4BF078C9F /* NstBoardIremHolyDiver.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 893F529C934E0F4CA0C682139D54684F /* NstBoardIremHolyDiver.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 640A210E53FC83944F900B2FF2B7E370 /* F5Indi_Naboo.h in Headers */ = {isa = PBXBuildFile; fileRef = AC88DE94FE5CA1A718BDFCEEEEB04A8D /* F5Indi_Naboo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 64C38E04B04DF58F4886509586FC02E4 /* TextureFilters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A91527BD9D489D25E590B32690DD1FD2 /* TextureFilters.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 64CEE5DE93A64F4E59437CDD6E9AEC4F /* DriveService+Files.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12F16DEA29CA98647E7B1B64C4AFEFA1 /* DriveService+Files.swift */; }; - 64FF4E13D2D7995E27432E449E9D2E2B /* NstBoardBtl6035052.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BCB329591B61D72A62086E1CEB91A234 /* NstBoardBtl6035052.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 6504C91CF367A126F9182433FC72CF7B /* svmm.h in Headers */ = {isa = PBXBuildFile; fileRef = FD0BECC89A6590F418BA1CC26D59F237 /* svmm.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 658C06C1385AC9A5C9A5BC454A6894AB /* metaspu.h in Headers */ = {isa = PBXBuildFile; fileRef = D4AB501DA42C0DAAF3C8C5BFDCA835B7 /* metaspu.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 65B469AC11BA5ACCFE69B46D44087EDC /* NstBoardKonamiVrc1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AE9168EADF3CD8BC34051068BDE4F19B /* NstBoardKonamiVrc1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 65D1BCA6B6CDD1B2167B064CE5DDCD68 /* NstInpPad.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BD6AC5484BE6F7AA12DEF9E8E08BC95F /* NstInpPad.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 65E7570C089E49BB028EFE485BDE8D73 /* CheatSearch.h in Headers */ = {isa = PBXBuildFile; fileRef = 8EC39A3749E9EBACB0290ED500AF5A7C /* CheatSearch.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 660AE52794B14DFF3884CD97247F7653 /* Config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D6BC47B1B65C5BC8C50A004A072F8A2B /* Config.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 665E865FC2065BA5FA062F69854724BD /* NstBoardPxRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 44F35ECB9F98A2E0FA83097FDB6C87DF /* NstBoardPxRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 66787E84937972391D4E026AC7B0C69F /* NstBoardBmcGamestarA.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1136B767C9398A2A3AD79E44826DF2CA /* NstBoardBmcGamestarA.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 66989FA070973C0C7C80AA570AAE862E /* N64DeltaCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 9EDB28B68E79CA9174572B03583BAA09 /* N64DeltaCore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 669E4D3F049F7395692FF50D1FAD62E2 /* Rect.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 91B02935A6F9394D3AD6C23B416F1111 /* Rect.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 67284413E779CC6BEAB643D86FD08025 /* GPU3D_Soft.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B214DD9EC77ECFC9421DE91EA0F6D699 /* GPU3D_Soft.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 6779CED26E46AA20EE3C6A22433B35C3 /* Delta.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335295D8D9EA703418C752C19F387C85 /* Delta.swift */; }; - 678BC05A7E2E95B4023A88F8012CF686 /* Debugger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5956E4E49828D43A7B5542CF1E5B4707 /* Debugger.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 67988AEEE8139D3115F6AB0BA347B43C /* NstApiConfig.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2CD07024D87D55F9ADE70163DA7DF8C7 /* NstApiConfig.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 68062A36BE7A038C75B75EEFA4A503EE /* NstBoardKayPandaPrince.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 42DCB88F5D41617CB9F6F1ED41F3709D /* NstBoardKayPandaPrince.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 6853624E43A5EB0CA069A0F55C3C315C /* NetworkReachabilityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C84C3D0F11A5EB1115FFB93D23447AE9 /* NetworkReachabilityManager.swift */; }; - 68633D906C2EC5082F1B8565D31346BA /* Revision.h in Headers */ = {isa = PBXBuildFile; fileRef = 82A288A778CFC76070B7DE528F4262A2 /* Revision.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 68CBD74DE546563D19248B4506516020 /* ftbbox.h in Headers */ = {isa = PBXBuildFile; fileRef = 30BD2AE5598700A110AD39F55A8D4A0C /* ftbbox.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 68F67867EB0CFE30873CD5C0F9FD7199 /* fttypes.h in Headers */ = {isa = PBXBuildFile; fileRef = F2AA6DD879E5DA8688ACC774052AF22E /* fttypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 68F7071AB87ED8CB4B8CF11F7BF9A78E /* Connection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C1E4CF0FFCC19C1AD6905DE817C17EA /* Connection.swift */; }; - 691F81D3F9DE76456A12E36BB54B8692 /* recomp_types.h in Headers */ = {isa = PBXBuildFile; fileRef = B23E65EABA52B43B87725C6E03A5F6DE /* recomp_types.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6921B8F20D59090C40BA055B958C701D /* sram.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F69C54FACCF68A3770D4110941A594E /* sram.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6990B4783840C438F89A217EF5B0626B /* NstBoard.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 652BD506823466AE51AF373E88943D34 /* NstBoard.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 699401724785B6E8BEE16B4010CDF80A /* NstBoardTaitoX1017.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B6A9060BBDEC30B79FCD8A7D0B80BF8B /* NstBoardTaitoX1017.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 69AED621C3B84C3A28A9AE34938B9E6D /* retro_common_api.h in Headers */ = {isa = PBXBuildFile; fileRef = 05349F18D04F62BCDDD9991693C8485D /* retro_common_api.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 69B35CFC60086668EC6538FFA1C78585 /* RSTCompositeDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B0025AC37F3C2C359FCD899F2657855 /* RSTCompositeDataSource.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 69DC5C93A87B3345114F1C82CBA59FA9 /* ftsnames.h in Headers */ = {isa = PBXBuildFile; fileRef = 5259B445D4AD112126EABD5D05F3DDA0 /* ftsnames.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 69EA72FE6D3F8B0C8250B939DA370C6B /* pngtest.c in Sources */ = {isa = PBXBuildFile; fileRef = 8D566940EC6480D561BB9899253782D3 /* pngtest.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 6A245DCAC5A1FD3F8943F4FD3E1473EE /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = 13BAA83DB690C1835AB70FD3FC749AFF /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6A386F883B6F86FCA792C8C1134057CA /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 798D5972AD9FFEB025B0DC380ACFC440 /* Result.swift */; }; - 6A3FEFD8739647A3BF22C30B72456F7A /* commandline.h in Headers */ = {isa = PBXBuildFile; fileRef = A138D602A8841343DB1C84E0E4269422 /* commandline.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6A506469491BF1DED6194FAF21A5CF9E /* NstBoardBtlT230.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 517772731C85405CED9A4E125D581547 /* NstBoardBtlT230.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 6A5AB400788EE8D34047D6060AB7687B /* ftmoderr.h in Headers */ = {isa = PBXBuildFile; fileRef = A8B5032B26105CA4F0428341F62A22CC /* ftmoderr.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6A8547482EDD792016A906E8A4B229E1 /* NstBoardBmc64in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9AC563A650C1757E513BD89868F66EC5 /* NstBoardBmc64in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 6A95D6525601CB5615332A93CDA85E6C /* ARMJIT_Linkage.s in Sources */ = {isa = PBXBuildFile; fileRef = 8DB676A86CDC3E0F880FFFEFE1C8E884 /* ARMJIT_Linkage.s */; }; - 6AAF24829617E878B728E017C4B80667 /* SoundBufferRecorder.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9DB51A53121923A71D5DD76A329E4809 /* SoundBufferRecorder.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 6AF6908C5E85F1F2D7059ACAC9FE9FD1 /* FinishUploadingRecordsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1042E787D1679AEC49E4043D8A845056 /* FinishUploadingRecordsOperation.swift */; }; - 6B0BF194E5EB5E85C5A2205406D9EF43 /* NstBoardBandai.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FF9F20847DEDE22F9482DF5E072188A8 /* NstBoardBandai.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 6B0F97A866F6907B8C28CE4E282E195D /* NstBoardBmcY2k64in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B544AFAD35F7005CA06C8F02672B2757 /* NstBoardBmcY2k64in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 6B1E16E01E4BECED80436FF13D3C979C /* NstBoardTxcMxmdhtwo.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D1FD02EE9A04D0E6FCD95A38B0D7368A /* NstBoardTxcMxmdhtwo.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 6B250465D7E63AB215A663E60D4DF546 /* NstInpPachinko.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 522E10247FC8ACD4BE627867F65F14EE /* NstInpPachinko.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 6B25D672C20F09250D089377336CDF49 /* instruction_attributes.h in Headers */ = {isa = PBXBuildFile; fileRef = BBB2272A01DC6ADE898D9C2687E972B6 /* instruction_attributes.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6B40160636633FCA1C3DBF44CA85D224 /* DropboxTransportClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBCCD8C7C6480A54F79BDBCD6BAFC020 /* DropboxTransportClient.swift */; }; - 6B431A833B3D0A23DF4FDC02EF7E8667 /* UITableViewCell+CellContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 99557512F6F1C9CB9AB24DCF9D1AEAD6 /* UITableViewCell+CellContent.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 6B58E99D3A6C38F9D32B49007A6EE964 /* glcorearb.h in Headers */ = {isa = PBXBuildFile; fileRef = 5705E41354AA6B3ECEF15EF9280D870C /* glcorearb.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6B6921006A589C0CC926482EBA5F824E /* MMU.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B7C4AC83A510BBC0B84764C2FFEAD86 /* MMU.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6B692A0D88CE2B8D487AACF89F40DBAF /* TxUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9BF7FD2B19DF65538E3B5A98731A2AEE /* TxUtil.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 6B82DBF636F53D68C552A63195681206 /* ARM.h in Headers */ = {isa = PBXBuildFile; fileRef = 757B725B95353BE0102B34BCEF7E70A1 /* ARM.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6B8EDD8EB090D6B4406E7D827B8866DF /* Types.h in Headers */ = {isa = PBXBuildFile; fileRef = EC60C36FFBCE93CE35DCC1994E934E51 /* Types.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6BB349E00D1E7685E9246321FB0AA397 /* emufile.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AAEFE6F2984D8240D2B90773A6550F4 /* emufile.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6BD769FFCA459D778DAA6948EE845114 /* tttags.h in Headers */ = {isa = PBXBuildFile; fileRef = 63C50712020BD8781CB13285A7347D60 /* tttags.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6C17CA1AF886C494D9E80A05F4BD2062 /* cheatSystem.h in Headers */ = {isa = PBXBuildFile; fileRef = C51C1DA993826C004368CE57FAA6DB61 /* cheatSystem.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6C2D78CA13104F706375022682F43EBB /* 3DMath.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D0C245236976FA487C742D55853627D /* 3DMath.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6C5F01DCA333DDBB4B6B6AD39ECEF697 /* F5Indi_Naboo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5EF0D93844E56CDB9DAD64F21F90D278 /* F5Indi_Naboo.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 6C6BCC7718A79CF8DE52F8156D37784B /* NstBarcodeReader.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8699788A2F916F63C3E5BC8B912860F4 /* NstBarcodeReader.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 6C94E2E0509043953C5C79AD67E59A6F /* Combiner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5C1680E5AB2930ABB461E4B02FA12370 /* Combiner.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 6CACD7273395DC0CA5018433BD81DCAA /* RecordEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 755132A40834082A80F3E5C61393429B /* RecordEntry.swift */; }; - 6CB272240D983066E0DCCCD4A7676D6E /* NstBoardBmcSuperHiK300in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7230F1D1BDFBD1374C8E106343F7AA93 /* NstBoardBmcSuperHiK300in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 6CE56EB9D620718E5EF18E81B890BF0B /* GBADeltaCore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 570B8665DEC55171C47D8724F8B931AA /* GBADeltaCore-dummy.m */; }; - 6D1166C313089F15D8B49290E5CCE711 /* RSTCellContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 08EDC180A033F4B94CE18522ACAA32A7 /* RSTCellContentView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6D2D3EF4BC0867C07A2EA7170CCD6408 /* RTC.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D16EB8114A53F291EEF976E892B4E8A /* RTC.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6D3540018DB9CFE63C0D34904B4BB7C4 /* RSTFetchedResultsDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 142802887860A760D41945F9E1502AC8 /* RSTFetchedResultsDataSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6D67EDD45BA8B8A3D293F9CB52FE09E9 /* GBCDeltaCore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 68777C729F38ACE487C5E6C1604FAD18 /* GBCDeltaCore-dummy.m */; }; - 6DE2F50B8C45F7F0EF049B2AB98B99CA /* Savestate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 90DD17ABEA9E2CF8EFA5A0640BBF5256 /* Savestate.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 6E435A3888414096AB38942CC2017635 /* GTLRDuration.h in Headers */ = {isa = PBXBuildFile; fileRef = 05EFB60F8ABE052EE4B3C48B77C63D6B /* GTLRDuration.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6E5F9A56CB92CDD84FD48C79BCB71363 /* NstPins.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E01361D50FD2CEB3E55AC9992E8FF8CE /* NstPins.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 6E61805531A78944CC2873D02353BBF5 /* N64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B6FEFF8470EC4FA1F48C9E07912B9B60 /* N64.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 6E652AD2B567A3B22920B5348BBB8752 /* skipsched.h in Headers */ = {isa = PBXBuildFile; fileRef = D3E5F59546B73B9E4E0DDE03CF8B3B55 /* skipsched.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6E91CCEFA778318F8568A9B830B0F8B0 /* ImmediatePanGestureRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F4EF96FD8898C3C730731CBB252D71E /* ImmediatePanGestureRecognizer.swift */; }; - 6EA0A6FE9CCD2699B6BEF34376E9649F /* SDWebImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 187CA309F162A5C8E844D881DBC4B533 /* SDWebImage-dummy.m */; }; - 6EAC3C9446063F09611B9BE55D8D34C1 /* SQLiteObjc.m in Sources */ = {isa = PBXBuildFile; fileRef = 906A51BA9CD5D535CC8438E8AE2856A1 /* SQLiteObjc.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 6EE9ACB0AB0E0CB81A490F499EBEFF29 /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = AD7E8DA1695D9954D559B5D1CB60DE8D /* UIImage+MultiFormat.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 6F2F0A196FDDDBD7C87C9CB541F8B8EF /* NstPpu.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2F13F915B99C517D9153F031465EAC1F /* NstPpu.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 6F336A197EE481699D6098239C2C6764 /* RSTDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = CD2DC61F1E167693CC02BAA00E7715F0 /* RSTDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6F3F95D77CDBAE39AD0DC067F1144FB5 /* NstVideoFilterScaleX.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3F45EBDD3BFEC8ABC543D2F91E639B31 /* NstVideoFilterScaleX.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 6F4861BB275E0E3638EB92079E6836A8 /* ClipPolygon.h in Headers */ = {isa = PBXBuildFile; fileRef = F7DBAD3AB29B6419D008AA8066EDA2C1 /* ClipPolygon.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6F86D3ADF2624EA0AC12E3A04B3DFCCF /* loadres.h in Headers */ = {isa = PBXBuildFile; fileRef = AA19922E3DF9F35E769BAB98CE4E9BA8 /* loadres.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6FC60C937AD09F2578900D5606DE552E /* ZSort.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AC18F7C57EEA5823F6931A4F4DC3D8C2 /* ZSort.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 6FF52E6EC1E107E9BCE842DD1093DCC1 /* RSTHasher.h in Headers */ = {isa = PBXBuildFile; fileRef = E61795F565BA313D631F9C1C0398B85E /* RSTHasher.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 6FFEB57454F82715E5AAEF3CF64079C2 /* ROMList.h in Headers */ = {isa = PBXBuildFile; fileRef = 201A5A32F9006763F07BA5E3581871D0 /* ROMList.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 701F5BCE8C969A8517FDCE019A9EE169 /* ColorBufferToRDRAM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7E219B1C9FDC46CA814F1FCE79246ED1 /* ColorBufferToRDRAM.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7025BA66FF113137E0EAF6A2EECA3688 /* GPU3D.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CC8EA4C118B72A50FD6895AF0901EA0 /* GPU3D.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 703359DEB0D5F4DB8AEFEA78AFC2E8F7 /* NstBoardHenggedianzi.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2FB72E636AC0F6FF43B32798B4DD0881 /* NstBoardHenggedianzi.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 704D76D2B43A52B28CC020096E94A76F /* wifi.h in Headers */ = {isa = PBXBuildFile; fileRef = 16D924FA316C3348F749FFABFBDFCCF4 /* wifi.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 705BA14C7A7B896231AC5BD83914A245 /* N64DeltaCore-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A44F89C6169A0FE46A8371E6FE25915 /* N64DeltaCore-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7154E9B8A334B68E0ADC0ED65BB3F01C /* T3DUX.h in Headers */ = {isa = PBXBuildFile; fileRef = 72FDE1C782E5DEEB2BEEA74E0C910FBC /* T3DUX.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 716BECDA9B8884905F41B41C8128FCC0 /* osal_files.h in Headers */ = {isa = PBXBuildFile; fileRef = CE94E0A2B88BE282A28CEA0301EB7547 /* osal_files.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7185361F22C1B706E313A5EE63D5C100 /* ftmm.h in Headers */ = {isa = PBXBuildFile; fileRef = 41CEE23CCD9B2202EA3DB8407D932735 /* ftmm.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 71AAA5E5828B97500DBE120EDD0BC8BC /* NstBase.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4DC8C2032362A67FFC8D61332A8A5102 /* NstBase.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 71D0E081D32C3B6DA53C040BCE129B44 /* glsl_ShaderStorage.h in Headers */ = {isa = PBXBuildFile; fileRef = 94851A975DEF22A43042DB9E7D71F801 /* glsl_ShaderStorage.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 71E5AB1046881CB07D8740D998F95418 /* array.h in Headers */ = {isa = PBXBuildFile; fileRef = E7D76D8068004B08B3FB0FB93605E4AD /* array.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 720DF9A91524F794F65817402CACB38C /* Globals.h in Headers */ = {isa = PBXBuildFile; fileRef = BCE78AB5A43B5301C404C71A9726679C /* Globals.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 720E6196C8581C600FE20553DC85F1D3 /* zip.h in Headers */ = {isa = PBXBuildFile; fileRef = B52BBFD364EC6A95EAE3BF36428E72CF /* zip.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 72A7ADDF72710CDD99A55D023026DE1B /* Standard.deltaskin in Resources */ = {isa = PBXBuildFile; fileRef = 66BA1FE632C0B1ECE6A8C517A5BA2BFD /* Standard.deltaskin */; }; - 72AA09F7D593E3CDE9556282B79FC8FF /* OpenGL.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0210B8395AFA6316B71DF870E830AED2 /* OpenGL.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 72CF1D8965C236AA53AA10D4FB6D9A79 /* RSTConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C04A35FFE570B909C8AD5A9DB8AF26B /* RSTConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 72CF2FDFF7D2F5073F348FB15ECEAA95 /* NstBoardHosenkan.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 291B51FBCA081F45FC6BADCAFDAA2803 /* NstBoardHosenkan.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 72D94C2843D9BADD993E02DC081F859A /* GBALink.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D53470E41BA15EE30530C3840BE8FCE /* GBALink.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 73135357FA71D3307EC5413332190DB0 /* ControllerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 101EDCA75CA532184BC4BE7E36D0CE4F /* ControllerView.swift */; }; - 7319418CC6D598BF99CC2459C5775A43 /* Settings.h in Headers */ = {isa = PBXBuildFile; fileRef = 09E5B4348EEE6DE2928156FCF07670E8 /* Settings.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 733A75E8ADB9026284939E506EB86A11 /* RSTBlockOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 016137700A393C705D49F7700387559F /* RSTBlockOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 733C93241B2BB3AEC440D8CD9018D1F9 /* SoundDriver.h in Headers */ = {isa = PBXBuildFile; fileRef = 00FF6FEE16F201CDAA6008DA1B3519F9 /* SoundDriver.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 737E71E865A1787DBC95577C9D9E732D /* NSManagedObject+Harmony.swift in Sources */ = {isa = PBXBuildFile; fileRef = 383D238B9AD27238B5FF136875540E61 /* NSManagedObject+Harmony.swift */; }; - 73E3C3B7DE89143D84B9D4B0FFB41102 /* NstBoardWaixingFfv.hpp in Headers */ = {isa = PBXBuildFile; fileRef = DF8BA5722B5506BE400BB4B7092422A6 /* NstBoardWaixingFfv.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 73F334A9ABA8653E7D0F0624BA674C4B /* NstApu.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8583D92D723450970BC33F1F5722C843 /* NstApu.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 745D026C5EF76695AC22E3894B5AB7A3 /* recomp.h in Headers */ = {isa = PBXBuildFile; fileRef = 61EB5BCD79F4DCE7238642BC44E6D1BE /* recomp.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 746E1B50036480139F6F62A2829D6E21 /* NstBoardTengen.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D6DFFB6445DBBD4E7976B80BFB7D6BD7 /* NstBoardTengen.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 746FEFCB95E600E4D0B419B4EFC476BD /* GameViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F34E21A0C7FD050FF58B0015AE0034A /* GameViewController.swift */; }; - 748CD020978A8DE5A19D2AB966DBB1CC /* RSTOperationQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = C66E4CF3747F894C37EEF42EEFFF9721 /* RSTOperationQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 74ADBEA76139C9FA5A3E7309578B481E /* md5.h in Headers */ = {isa = PBXBuildFile; fileRef = F5BA07A2D7780313D79F2443FAA2DF41 /* md5.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 74EF2C94951D03A2DB12E87C8212913C /* NstBoardSachen74x374.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B9742202633EE18C3808232AF7BFDA3A /* NstBoardSachen74x374.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 75272B796DF78D55BA5ED1858E47537C /* DLTAMuteSwitchMonitor.m in Sources */ = {isa = PBXBuildFile; fileRef = FAA16CD6BB856E1F600CC6DC038A6801 /* DLTAMuteSwitchMonitor.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 754299C70FF69587599A5F7060A72D95 /* ROMReader.h in Headers */ = {isa = PBXBuildFile; fileRef = D38B546A30886C0C9A47E36BFF53C9FC /* ROMReader.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7550611B5902CF5767641DED8EC64912 /* GLFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 72896C94A5DD519E2F9AB3E4B5D45DDB /* GLFunctions.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 75651FCB760A9EA993A64D526BE50E86 /* ftoption.h in Headers */ = {isa = PBXBuildFile; fileRef = CA1D9A0FCC95EC0A089280E4EC0A0A8E /* ftoption.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 756FEB30C1EFF1F4BBF818C81BFDCDB8 /* ucodes.h in Headers */ = {isa = PBXBuildFile; fileRef = EB61A68E006842F0E8F0ACF2E779F559 /* ucodes.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 75873DE63C27A133FEB24D1B590CEFE2 /* RSTError.h in Headers */ = {isa = PBXBuildFile; fileRef = A8BFD150AB1327DE01F94CDCC51B3E4C /* RSTError.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 75876AA41D92BB2C68217401F9D81A3F /* m64p_types.h in Headers */ = {isa = PBXBuildFile; fileRef = B26927C64ADD96D6F1857718A8684983 /* m64p_types.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7596881F78C12F93B196E58FC24B9096 /* GBAGfx.h in Headers */ = {isa = PBXBuildFile; fileRef = F6A0E3246B3946FC0EF4B37B8CA993AA /* GBAGfx.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 75CA4ACEC284A235B9F88F769A5A822B /* ExternalGameControllerManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52D9BC065E6BB7A0B1FEB69CEBBF570F /* ExternalGameControllerManager.swift */; }; - 75F80BF43F066C832A5641A55ADFFC28 /* NstMachine.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D15886D5D7DBE8A02EC868EBBE812F20 /* NstMachine.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 761BB00D77FDEA819EC4646C3C7D7045 /* NstBoardBmcResetBased4in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 78280DD54D59D46BBD47EEAEC0544ADB /* NstBoardBmcResetBased4in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 76537961CEB40AD247162874EE6F644F /* NstBoardKonami.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FEF94987AE07AD572EFB75A21E59A063 /* NstBoardKonami.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 766306BF1B7A65F4DD5A68DA683A729B /* GTLRBatchResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E93E4BE7AB127183B96B96E91487DA6 /* GTLRBatchResult.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7684533610B9449A4AA5C3A000E42D09 /* ConfigManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 51330273926D351DE423DA0A6912700D /* ConfigManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 768B2407579BB01F40AEC3A62534841A /* ftglyph.h in Headers */ = {isa = PBXBuildFile; fileRef = D963A8034D348DCEBA1D3691ADEB4E08 /* ftglyph.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 768D4F3E9D26408198D209E239477D00 /* opengl_GraphicsDrawer.h in Headers */ = {isa = PBXBuildFile; fileRef = 286E77C6AFB14927B14098D9B094F2EE /* opengl_GraphicsDrawer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 76B2D0F44E876B3067F43943E0F0DB3A /* iniparser.h in Headers */ = {isa = PBXBuildFile; fileRef = 5533E0BAB4A8B8C7A82F115001CBBFCA /* iniparser.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 76E1F39839AF6321773DB21674854E13 /* game_controller.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A2761218A0E7B7B103613B97A3ABE46 /* game_controller.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 76E9E2EE0252F434781EDFAFE2FAE4EF /* NstInpDevice.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8D9FD7E98122AE3C538E44DAD93660A5 /* NstInpDevice.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 76F6021C0DBFD5106C36F6B51A77F042 /* Wifi.h in Headers */ = {isa = PBXBuildFile; fileRef = 64880C39DADCE43CFC613BD1EEBF6875 /* Wifi.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7711ED08C6604586372424376427DDF9 /* RSTHelperFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 347CC7843D628E9B8272356340CC5194 /* RSTHelperFile.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 771975EAB71C3F761B56B03BC207C0E3 /* GTLRErrorObject.m in Sources */ = {isa = PBXBuildFile; fileRef = A8A39A015FAAB4B02C5DDC94DE475046 /* GTLRErrorObject.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 772784875EA3D1ACB237CDCE7F272288 /* NstChecksum.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 318A8A10BD843993BF6B77BA3E4503D7 /* NstChecksum.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 774C4531614059D12553CA96F3C3803F /* Dictionary+Sequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E97DEFC9165A7CCB6BE870FF57D35B2 /* Dictionary+Sequence.swift */; }; - 779DEC0553EB9A1BFA7850B3324F26A0 /* ftlzw.h in Headers */ = {isa = PBXBuildFile; fileRef = 57AE215B9677AF8BE68A3EEDA7D902AD /* ftlzw.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 77C65952219A8520E8697DAA21A90BA8 /* NstBoardBmcSuper24in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 99A2A534EF6CE4D5F68542D66A356B39 /* NstBoardBmcSuper24in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 77EE048FF5BAD263396AFA2DA2840C73 /* DSDeltaCore-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A14F9CC7939A0403867CFDA1DA17BB98 /* DSDeltaCore-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 77FC70F136D9D8C0046CE8A6BC061307 /* Context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FD1E386D12C53A3A0B1EF7F9E1841B0F /* Context.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7833BD6ADCD1BDB5A9433477C46128AF /* NstBoardSuperGameBoogerman.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0B9FD1831402AB15F5D8EF911049BFF1 /* NstBoardSuperGameBoogerman.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 7834512950AF020BFE17B0D7D3D488EB /* ManagedRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C1A8604278515F1FAEA173BA8B23ACC /* ManagedRecord.swift */; }; - 78AFE3BFF1B4EBE9045B54029B21844E /* ThreadLocal.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 903F29A93503BCB112A51EA2744B678C /* ThreadLocal.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 78B915CAAE730E6D1A2BAEE42A08C778 /* glsl_CombinerProgramUniformFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DA605E65AD3BBD74F1D83EA92DC0236C /* glsl_CombinerProgramUniformFactory.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 78D2E75C0491A0D6B297612A409ED6AB /* TextureFilters_xbrz.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E3F8B5910C2A131F5DCC163AFEC5A94F /* TextureFilters_xbrz.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 78D47356C4569C5475AE2F2AA41FE25B /* MelonDSDeltaCore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 409552CF37EE4A6C9432067647521E81 /* MelonDSDeltaCore-dummy.m */; }; - 794F6AC0CF38023AD6DCFCC7E7BD11EB /* NstBoardNamcot163.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1C4ACD563722F3A385772CBF168AE707 /* NstBoardNamcot163.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 7956664E559494A8375D87E02B8D2FD3 /* NstBoardBmcHero.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1F559D0FF821293E41F2B18444C1B6FB /* NstBoardBmcHero.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 795F699DA63A00577A87DC8152823A7A /* Standard.deltamapping in Resources */ = {isa = PBXBuildFile; fileRef = 6E823A056BD3AEE7D63E8782256F4F4A /* Standard.deltamapping */; }; - 797C23538D091C26376FD6F70882DE0C /* NstBoardSachenSa0036.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F3B9A34A308C1DACD3B00CBA4D04F41F /* NstBoardSachenSa0036.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 798BA471794119D9D54180758B08F24A /* ControllerDebugView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B8DA727418B14CBE20A104C19B4022D /* ControllerDebugView.swift */; }; - 79A3E3514A701A36340BFFB2576391CE /* DSi_AES.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4E1DE9F1DDEDBEE5D971B5D9F255C9D7 /* DSi_AES.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 79A741CA31797FDB34CC4DB705D3F286 /* NstBoardJalecoJf17.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BA694E5052500D363828649B87D607DB /* NstBoardJalecoJf17.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 79CEEEC5DBF057C477B24FF082B978E4 /* agbprint.h in Headers */ = {isa = PBXBuildFile; fileRef = F7F9371F009683A283C1E8EF6EE2393B /* agbprint.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 79E327F0144AE7EFB5A21F61F72DAD91 /* NSConstraintConflict+Conveniences.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EB03D7F307B30D54D56BB45569E0F91 /* NSConstraintConflict+Conveniences.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7A2BBF7EFCC9195A4706C0ACA68AB4FE /* DSi_SPI_TSC.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B227874CD4B76D36C22095809680FA3 /* DSi_SPI_TSC.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7A4154C454C150A5E53C40EA98CE5DC3 /* N64Types.h in Headers */ = {isa = PBXBuildFile; fileRef = E099575E112559BF97F5D20E9E8630D0 /* N64Types.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7A6CAF49CF47A9977827BCFF70D25885 /* screenshot.h in Headers */ = {isa = PBXBuildFile; fileRef = 984F66A44670774FAEAB1733FDCC4480 /* screenshot.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7A875F8A99DCA50B4972D6DD681250A8 /* SNESTypes.m in Sources */ = {isa = PBXBuildFile; fileRef = 10278A245A36FD880F3207EA5EF9E82E /* SNESTypes.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7A9811DEC0DE4EB371C3AE659D8B9961 /* pngerror.c in Sources */ = {isa = PBXBuildFile; fileRef = 0BE46DDC7E9A5CC5A5A52D10012ECA55 /* pngerror.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7AACB3F5A4C1F1CBFE5E3BE70D808352 /* NstBoardBmc800in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A8ED31574ED6705EB82A344C14221E7C /* NstBoardBmc800in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 7ADC9692AD74A1526DAFC5C6C2D0121E /* GPU2D.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A3D65EB1B51D2762008ABC7E328FB4E6 /* GPU2D.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7ADF9BDD0E8518276F48D162577CDEE0 /* Standard.deltamapping in Resources */ = {isa = PBXBuildFile; fileRef = EC196E2AD3733D249167F1AC9B30712E /* Standard.deltamapping */; }; - 7AF79670D3D8DA82A962384A2ECA969F /* snes9x.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D803FA2CC59F06C610F12C7FE0AF5C6 /* snes9x.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7B1384F82FEEE338B12E8162676251E5 /* af_rtc.h in Headers */ = {isa = PBXBuildFile; fileRef = D1C42F98DA98FD0CD5BA3471E4ADD289 /* af_rtc.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7B1FF6D4F5A574D85C380DFB363FA484 /* RSP_LoadMatrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FEBA7E7855661C30CCD1E95CA29FDB1 /* RSP_LoadMatrix.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7B4833CE4E7CF0FA2B833DBD8D891E4E /* NonCopyable.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 00A09F4C70B59DC758835D157CBD6C7F /* NonCopyable.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 7B96C895E386D15669F9CC752685F42F /* Patch.h in Headers */ = {isa = PBXBuildFile; fileRef = B76EFA7CCAC454819F26F621EF37AC11 /* Patch.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7B9C140E614A1064F78AAC5AB7A1A804 /* obc1.h in Headers */ = {isa = PBXBuildFile; fileRef = 799DEF3E6A60124A7322E3ED095506F7 /* obc1.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7BD1724634AE1EC1531330430E1D8BAD /* RSTOperationQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 4894D3FB33675CE3D668287298DD06EA /* RSTOperationQueue.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7BF7434D7425D61B72D0C890EC2D462F /* srtcemu.h in Headers */ = {isa = PBXBuildFile; fileRef = 1854A07E7A3BF031FA3AA0AAB5EDD78B /* srtcemu.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7C1C37158A9FB1AC4A3056E1BCFD15C2 /* NSLayoutConstraint+Edges.m in Sources */ = {isa = PBXBuildFile; fileRef = B44B12EC0A8A9CA8A8DB401C721C0548 /* NSLayoutConstraint+Edges.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7C223CCCA8FDA2AFC24233CF2C80D507 /* fts3_tokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = E74A96020ABE2A48563D951985291B19 /* fts3_tokenizer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7C2DC7402E76D1E1F0436ACFDF29FEF2 /* TxReSample.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 82671B748A7E74AAEE8C91F00CD2BC98 /* TxReSample.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7C38999ED57B52E939C2956FD9EB4047 /* NSPredicate+Search.m in Sources */ = {isa = PBXBuildFile; fileRef = E6C0288667DD509927209D6381F60306 /* NSPredicate+Search.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7C9B8104635D79985F4D611888549D4C /* DLTAMuteSwitchMonitor.h in Headers */ = {isa = PBXBuildFile; fileRef = F35D8BC06AE7631CD983FB1019C80DCF /* DLTAMuteSwitchMonitor.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7CA316633B16EDCC0466389DEB733A93 /* cexcept.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D873208E11BEAED6C0FC47AA55653E1 /* cexcept.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7CA633671E644576D5572406B6EEEF1A /* video_capture_backend.c in Sources */ = {isa = PBXBuildFile; fileRef = DF9A0397B9040D8B612F61D4171FB406 /* video_capture_backend.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7CEB79F98C23C3B429CC3545D30DD529 /* UploadRecordOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80E5FA9A1C688ECDCB3DD69B330B5FCE /* UploadRecordOperation.swift */; }; - 7D286BF16064224F74C649587D743F05 /* CombinerProgram.h in Headers */ = {isa = PBXBuildFile; fileRef = F7084BF822C7A0087A22DBD99CA5F50B /* CombinerProgram.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7D30EC269440BFF4FDA5A609A00C2CB6 /* NstBoardWaixingSgz.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9C8920E8DED2BF5AE5A7D8740EDA32DC /* NstBoardWaixingSgz.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 7D49E904E8A86421BCF231941862728C /* VI.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D8E8059BB188FA2A51AA0D760767324 /* VI.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7D5F2E44C957759CF4BA707BB1415827 /* NstVideoFilterxBR.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9C3D8F92D8501FC968C6E29C8CDE5588 /* NstVideoFilterxBR.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 7D6722F603BB1F8505DC05D19CBDC6DC /* PaperRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 344175CF76093086EA58BEBC8AD0E014 /* PaperRoutes.swift */; }; - 7D70A6B16D8508273D87C920D5FE6CC6 /* VideoFormat.swift in Sources */ = {isa = PBXBuildFile; fileRef = F61A7ADB7BA7193FE87B124A2230E8B7 /* VideoFormat.swift */; }; - 7DA01274751E51DC493188B9C6378787 /* RDP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A9E0566BD9FE840B89D179FC1DE98762 /* RDP.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7DA7A538308E8271781EC9161DEB0330 /* NstBoardBmc9999999in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FAE24C1E39D633454B1C309D12775BC5 /* NstBoardBmc9999999in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 7DA905AAE6136DA0E5A5C0BB241A8E17 /* ARMInterpreter_LoadStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FDE830520F0426AC88848116BF92100 /* ARMInterpreter_LoadStore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7DC3BDCA815B0FFE5B9FF2EFCED03A31 /* BaseTeam.swift in Sources */ = {isa = PBXBuildFile; fileRef = CAB0449592C0DCA8414A2D8785033227 /* BaseTeam.swift */; }; - 7DDF39DB820144428F1551840399BCF3 /* RSP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C509EB92ABE121E822A092CA6A457763 /* RSP.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 7DE20D6E63872C290AB47D434EC373E9 /* NSUserDefaults+DynamicProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = F13C7569E12A88F1E1ED5596F3479744 /* NSUserDefaults+DynamicProperties.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7DF96A3D83398BDAB83CC0C4F1EE36DC /* Archive+Reading.swift in Sources */ = {isa = PBXBuildFile; fileRef = 602A09D764BF391459201D3C894EE108 /* Archive+Reading.swift */; }; - 7EB2E4958669F6F7D47F906325F848C6 /* ftstdlib.h in Headers */ = {isa = PBXBuildFile; fileRef = F785ADB3D15DFFCE14F3E3E225AD962C /* ftstdlib.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7EC7A9AF518DABF8BADC18295F5C2B45 /* NstInpAdapter.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2060BEC6373E7074778796B2882427C6 /* NstInpAdapter.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 7EEE416BA7B775A959EB2F784B28196A /* ringbuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 62B2D0722AA443F0E94D3013076DE1D7 /* ringbuffer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7F0E24ADF538BD3EB34CD7F269692746 /* opengl_GLInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 937B73F8FBAE7506CA34734C3D196DA3 /* opengl_GLInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7F216D5FB95EDB617B5A766FD90EB7D7 /* winlnxdefs.h in Headers */ = {isa = PBXBuildFile; fileRef = 478DF5F42EBCD65023A3109A637FC3FD /* winlnxdefs.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7F49542B776367C95FE631E4E832D5E8 /* NstBoardBtlTobidaseDaisakusen.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BDB57DA469C8E283DC56CC0282A9DA80 /* NstBoardBtlTobidaseDaisakusen.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 7F5CEDB3A6EB261E02C020FE84B1AD52 /* debug.h in Headers */ = {isa = PBXBuildFile; fileRef = 093735AEE369C11535CD28A29C719205 /* debug.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7F61936380ADF05890106F5265176FFC /* bsx.h in Headers */ = {isa = PBXBuildFile; fileRef = BE545AA1D1852AA8D0B5F0754FFA13B5 /* bsx.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7F6B18DE54E8AB9904A8060DC634A114 /* Thread.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 54670F461677A40B2E94824A5C998AE8 /* Thread.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 7FCCF5D4A89009DE069B7FA02CEF1578 /* ftconfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 862818885E4A3970FBC4F00ED5C43436 /* ftconfig.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7FE81A81BDC980ECFB463EBCD56BD5C4 /* fterrdef.h in Headers */ = {isa = PBXBuildFile; fileRef = 219053C1325BB6D1B9487B652A3E1F43 /* fterrdef.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7FE870D909E4EBDA3A98A8782C2FDCF8 /* RSTSeparatorView.h in Headers */ = {isa = PBXBuildFile; fileRef = DA903654F5B5F89E74DAEDF6DDFE77D6 /* RSTSeparatorView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7FEA98DF5443CBD5D13C061FD58B982C /* svsfnt.h in Headers */ = {isa = PBXBuildFile; fileRef = B1668AC0D087551532B76ABF47AF6895 /* svsfnt.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 7FF4970DAA2DF80136DBDEE1140E0868 /* NstBoardBmcT262.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 210DF52D3BDE4D618799B6FC3A8A4AAE /* NstBoardBmcT262.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 801EABE2D287BC8F76E2D60E97A8A7C3 /* osd_element.h in Headers */ = {isa = PBXBuildFile; fileRef = 801D06493D0A4FDBEBD0B4D257BAC5A3 /* osd_element.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 802621F23B63CD8AB4FEFED307D978B3 /* RenderTexture.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 485A4F25E48D04C70FE5F69AB8CA4E92 /* RenderTexture.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 8027ABC72ED101B8DCB63DF851A64305 /* cart.h in Headers */ = {isa = PBXBuildFile; fileRef = CE5AA35EFFDA1B4E8AC02451AA774E76 /* cart.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8043A7E0B334D03CF18AF57B63B8B407 /* CoreFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81FAD8256834DC35886EFCF3F5F2715E /* CoreFunctions.swift */; }; - 804406B9137B455C59CDD15878E8DB63 /* ServiceOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6200787FB3973D69521DD9BA7B3E09D1 /* ServiceOperation.swift */; }; - 8072A010724983CD7E104EE24B7D0414 /* LocalRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82650D769E277B9C3FD6AC694C6B03E4 /* LocalRecord.swift */; }; - 809B26B30FAF7F81DD7EAAF6F42B1D01 /* CheatProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E1362D6590872B3446A7C9C52AC059F /* CheatProtocol.swift */; }; - 80A47DE555C32503E0777897E5FA0B44 /* plugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 74C8A5BDD2CBB1549A0AF5DD8B86AE36 /* plugin.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 80ACC65141ED1E3F6594237F54D439A6 /* svpfr.h in Headers */ = {isa = PBXBuildFile; fileRef = DFAFB6B7696267B9382EF7B0C076DF4F /* svpfr.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 80C587D5DF5C337C3DFEAC8C4F1CFB22 /* TxInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 382AEC1D29962D722D89667A4472393D /* TxInternal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8113DDF5CDB4F895160C61278BE420F7 /* System.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2D7834312949A2FBE54E8269384FD6E1 /* System.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 8134CD8F7427A51B0BE78646D8EE1BD7 /* audio.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D71031AFDF4C2A2A4A7F9623C8263C3 /* audio.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8148DECEC2D5F7185108FAD9DA8E2EAA /* dma.h in Headers */ = {isa = PBXBuildFile; fileRef = 61B20BEC2E96819BBA770F85AEF1F731 /* dma.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 81EC836E31FEAC3369ABA292E6816A88 /* svpostnm.h in Headers */ = {isa = PBXBuildFile; fileRef = 454C8212A9EA068C8FB926E200CAFA57 /* svpostnm.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 81F938B3995632DB31A0EE9B58F2E09A /* mempak.h in Headers */ = {isa = PBXBuildFile; fileRef = 57C9A208489979480CC1B74420A1477C /* mempak.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 820053AC54DA4AA301015DB7680E456D /* CircleShape.hpp in Headers */ = {isa = PBXBuildFile; fileRef = EE0265AE025CC84336D2F23AB70FF51C /* CircleShape.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 822E2BAE00E8B2C1C3622B40DF5D45B2 /* NDS.h in Headers */ = {isa = PBXBuildFile; fileRef = 08338820A73BD47EAB39BD931E037973 /* NDS.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8231FAFF8A6AB534D944CD6B41093BC6 /* NoiseTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F0580B25207404969BA5267604ADBEFE /* NoiseTexture.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 82358E5D6BD3619459349C68D2DA45DD /* SaveStateProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F44618E11608446BE1A156B606343A8 /* SaveStateProtocol.swift */; }; - 823C41CED9D49E9D276050A10B570E85 /* RSTNavigationController.h in Headers */ = {isa = PBXBuildFile; fileRef = A2868D67456C98A05671BCD211FF9F38 /* RSTNavigationController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 82437F35B250786A48AC50A30CB1E703 /* controller_input_backend.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D6356DD5E0F82DF844E098F33714D4A /* controller_input_backend.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 824DDBB4A4A1F8B360A6FC23D83CCCF9 /* NstCartridgeInes.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AA9541EE30BB71FCCD4C17C22A48E84D /* NstCartridgeInes.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 8252CD5963E6264A2C53AE79EB3381FD /* NSError+LocalizedFailureDescription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3396C683FAA03430577E635BCF62F26A /* NSError+LocalizedFailureDescription.swift */; }; - 825DD7DD6A0901499A3C2EB50154DA33 /* DSi_NWifi.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A816119B4F74725D1C6ADB8F10B4AC8 /* DSi_NWifi.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 827F3AAAEF71FE695F50EECE3F3EDDC1 /* GPU.h in Headers */ = {isa = PBXBuildFile; fileRef = B2B9C1195CF19CBAB858C293A5A512CE /* GPU.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 82A505571F76C37B2C97E7FFA18B9CF0 /* files.h in Headers */ = {isa = PBXBuildFile; fileRef = 2525F0080E1D579ED304839BC0840B29 /* files.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 82C7E61050A45D1CDF3BD1A56D8D8FD4 /* SDL.h in Headers */ = {isa = PBXBuildFile; fileRef = F23F7AF28ACDC0A938F8FB795D8EF871 /* SDL.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 82D8E676AFCB80B254E73F367F46D501 /* NstApiInput.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D5D8FCC4E6844265B7C603660F589A79 /* NstApiInput.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 8310901E730FB822677EDAAF25893BE6 /* DispatchQueue+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61EE3CF1533FE896277A8399AB5697AE /* DispatchQueue+Alamofire.swift */; }; - 834110DF6765DAF5F084507876D69BDF /* OGLFT.h in Headers */ = {isa = PBXBuildFile; fileRef = 30F6CAA659D4D94BBF65DF1CE1D40AB8 /* OGLFT.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8371B7BA33DBD0F4441605F731E635AA /* F3DEX2CBFD.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B0047D3E45496267DC35BAFA423C7A92 /* F3DEX2CBFD.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 838218B7AFEC3207ECC70633EE2C4501 /* Config.h in Headers */ = {isa = PBXBuildFile; fileRef = F10C0DF3E69DA0FDB0A55164F835A6B9 /* Config.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8387865C36E4A16D5BC2B8B601FA0DA0 /* gdbstub.h in Headers */ = {isa = PBXBuildFile; fileRef = DF6EA5934525711986F6816A1E10B4E9 /* gdbstub.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 83A2FC4315F0BB44536D9A141414F008 /* AudioRendering.swift in Sources */ = {isa = PBXBuildFile; fileRef = F727CF06AC29D239338AF25D01A38243 /* AudioRendering.swift */; }; - 83C6358C817B52080EB16DD386159C52 /* NstBoardMxRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D081B4DEFA5B2B6ED41073152390B9BD /* NstBoardMxRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 83C650F72F2F0C4ED5B2477BD06700DD /* ftbdf.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DFEFF26687627684C117D75CEC98DD /* ftbdf.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 83E48116F936533ED355910C357F234B /* Network.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A20561CBEF0349CDEDA9CE05847510FB /* Network.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 83F6461D78547A5588C070E6B410A693 /* GTLRUploadParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FB01D09B653BA294A2E5E980D435892 /* GTLRUploadParameters.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 842DB44B1E2B96AC001A2FB189EBF332 /* GTMNSDictionary+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = 8638968DC3BD54DEE2C5F9056D50F226 /* GTMNSDictionary+URLArguments.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 8498F4C5EAD79C3C685866FB12408964 /* NstBoardCneShlz.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5305479BCD5C09A431DF19FBA089DFBC /* NstBoardCneShlz.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 849C57C4098F72FDEF8A7E4E1B153570 /* filters.h in Headers */ = {isa = PBXBuildFile; fileRef = CEF6999D9AC220EEF9CDCF5DC198B857 /* filters.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 84A18EE31EB84B819BC68EA40D72E898 /* readpng.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BC0A7E7D462F731C717C1500217AE22 /* readpng.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 84BD979D406285B94223FD3F23A1C46C /* SoundSDL.h in Headers */ = {isa = PBXBuildFile; fileRef = 8507F39645E5ABFF0C41AC54EC5033C1 /* SoundSDL.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 850D5C7C923A94C8671AF5CDDB05F3D8 /* sound.h in Headers */ = {isa = PBXBuildFile; fileRef = 712309395CD5253158D97121E47F79D0 /* sound.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 851B93477C1089CF6762C8C2F6455E31 /* spc7110.h in Headers */ = {isa = PBXBuildFile; fileRef = A3CF93A75B3CFB18713CD89293600FB8 /* spc7110.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8528A146050750BCDC4A0CB19DAD13CC /* Export.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C15DC539AE9009D8DE1A22B7FDCA5FF1 /* Export.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 85290514199956D820FB90C92DBD0002 /* Collation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D7F02896E229D7D3C9C8484A39D3F5A /* Collation.swift */; }; - 853D8B601854B36DA9B412E40B8BC26E /* exprNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 7683944BD0D3CE9190CEC886A484F91A /* exprNode.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 854703FABD25941F13B94521A30F1AA4 /* KeyboardResponder.swift in Sources */ = {isa = PBXBuildFile; fileRef = F52CFA0D8CB9C39E3A30CC1BFEF5E12B /* KeyboardResponder.swift */; }; - 85855C64A1527B0A8C022CCEF2D1FB64 /* Texture.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 11554AB04BFF1801C106090854AC67EB /* Texture.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 8592839E8B8E8195029A7C7DF067EF7A /* NstPatcherIps.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A6A79C754A41EC8EACF9E49A64F066B6 /* NstPatcherIps.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 860B015438B349EB0A7EE064B62AE7B3 /* GBCTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 21C17C6276F45AA0020623DBD9A51E94 /* GBCTypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 865F3297146120D14490BA4F5B33C767 /* Standard.deltamapping in Resources */ = {isa = PBXBuildFile; fileRef = 158E8A68318036DF5BDF9D8C5088B15B /* Standard.deltamapping */; }; - 8690D51F2D770401E9171AD39DEEF516 /* Rect.inl in Headers */ = {isa = PBXBuildFile; fileRef = F6B3A96C95DE502A6A601D2CF680FFDA /* Rect.inl */; settings = {ATTRIBUTES = (Project, ); }; }; - 8744D481D32BE256F4845EE035F31808 /* DSi_AES.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DB3F6685D0926B7D45B4A6DF4CB7567 /* DSi_AES.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 879297BDAEA628C006E5D173FFABD5B4 /* RenderWindow.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 74B045D25124BB876E6586B6145E1B2C /* RenderWindow.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 87B8D6E0F2D41313388430436F88B571 /* cpu.h in Headers */ = {isa = PBXBuildFile; fileRef = F162A0151520364D914D677343BC081E /* cpu.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 87CC24C4FE328303848BBC21D8DDC2D9 /* WavFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EFDA177554BE503A74EED13D07C6F88 /* WavFile.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 87EA3E5481140782F5A43805D4ACBBDC /* ARMInterpreter_Branch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA1CFA44D4D6E92F65BC911088DBFAB8 /* ARMInterpreter_Branch.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 87FF732498425558E0C3382A05794972 /* NstBoardDxRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6FB1E466233B447E59EF69EB695E2E30 /* NstBoardDxRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 8842435BF154BF72C8C6BCC99220801C /* glsl_CombinerProgramUniformFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 4956246BBBEA8A6AD42BC92B809DD51D /* glsl_CombinerProgramUniformFactory.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 885444AE65E65028DFFF703506BCF3E6 /* assem_arm.h in Headers */ = {isa = PBXBuildFile; fileRef = E5B244600E07D5FD3AADCF7D31EF42A9 /* assem_arm.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8855BB02185CEC2E350D46106537154D /* Roxas-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AD85E83FD0CC9D3EB4D4FCB8037F091 /* Roxas-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8857A4EDB3D6675E9E1079D204713861 /* svpscmap.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C1A0B8A722E9E636C72E8A570382A4A /* svpscmap.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 88D0FB6855DF889BF0C5BE417F016C3E /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = D01B5BDC517C52E34E8E81885DDA7BC9 /* SDWebImageCompat.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 88D5DE97CC32DC640972CA79B345ECCF /* eeprom.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DD22189C4F71FFD1596B0827A6F70AF /* eeprom.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 88F744CA6F65066BED8B09ADA135306D /* GBI.h in Headers */ = {isa = PBXBuildFile; fileRef = 34E8EDC1F667C75B98DF6B517C4D190B /* GBI.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 88FD7451A4B536C0D3E824EEB3F0BCB8 /* GLideNUI.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F1515158687796190C1EF96243E6A9E /* GLideNUI.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8925BFF1C8F3A79575D41DDD0E8712E3 /* RSTLaunchViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E0F5180476B30D192E39DFD70423E9F /* RSTLaunchViewController.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 896A074FC915F0FBE87E9DE25A8F8A56 /* GLideN64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65C2DDEB846BC71435BB61A42D079728 /* GLideN64.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 896F143F977FB4B3AA4DDF36781436D3 /* NstBoardRexSoft.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C8903E4660C304885FB98A73B44961D8 /* NstBoardRexSoft.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 898A2D3198495B99A42BFC20CF2BE656 /* RSTHelperFile.h in Headers */ = {isa = PBXBuildFile; fileRef = C19B79D50E568B8585CEF38DDE067613 /* RSTHelperFile.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 89950BA96461CB15146E9C194E414F2A /* Roxas-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DC7742AD8CD0CF5DD664E882BAE856B /* Roxas-dummy.m */; }; - 89A02136AB2E7F4338C6E57339DA6204 /* NstFds.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 530AF83C27378A750E91268E5BC0BB92 /* NstFds.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 89A8040C509B73569560CC871AFB0DA3 /* mupen64plus_DisplayWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F2746FFD43797BF0D3EA9D6E2A28CB9E /* mupen64plus_DisplayWindow.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 89AF875734B9B4995619E5EC431687DD /* interpret.h in Headers */ = {isa = PBXBuildFile; fileRef = A7B8B5DA4434C64E0E25E63723B73B0A /* interpret.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 89C6A72BD755E0F060B11BF9134041C6 /* zlib.h in Headers */ = {isa = PBXBuildFile; fileRef = 687DDD5F49284502650169241BB52820 /* zlib.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 89D653C77C91B94070C7D3F06D6387DE /* GraphicsDrawer.h in Headers */ = {isa = PBXBuildFile; fileRef = EDB3D9DADFFA3C477901718D67DCB5CE /* GraphicsDrawer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 89DBEF18B9EED15232C28ACA49912590 /* ManagedAccount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 363DEF338B382D949239646D27C8B705 /* ManagedAccount.swift */; }; - 89F637B6A72C84461E7E5E6395896B4B /* GTMReadMonitorInputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 56C4158DD79B8800FDBEF6D1FD40BEBE /* GTMReadMonitorInputStream.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8A4475A0D8D410B658674E016C84C6B7 /* assemble_struct.h in Headers */ = {isa = PBXBuildFile; fileRef = 89F36C2AA5330EF25066707DB208553A /* assemble_struct.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8A4BB0CF425B083ADBFBD6B4627559FC /* gb_cart.h in Headers */ = {isa = PBXBuildFile; fileRef = F486ACA4D64E794BD29DD65E3D3638BB /* gb_cart.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8A5C78F24179E67B011B0E729881840B /* NstBoardKonamiVrc7.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 25F655585E934D6DD3B75AD1A4E714AD /* NstBoardKonamiVrc7.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 8A79B2B2001392BA5DF8E5F010A98DE1 /* F3DEX2CBFD.h in Headers */ = {isa = PBXBuildFile; fileRef = 7985DB3FC96A17FBF86B4FC18FA4AC5E /* F3DEX2CBFD.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8A93E4462DD79BCD3989DEDBD83CB83F /* Turbo3D.h in Headers */ = {isa = PBXBuildFile; fileRef = F8A7678C2D0250B6A762204476642250 /* Turbo3D.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8AC54A80F823C42D1D5754AD460C9731 /* osd.h in Headers */ = {isa = PBXBuildFile; fileRef = 20C5814112C7FD3018044780D05DE1FA /* osd.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8AC6F20C75D0D6031EDD553A3DA1BF04 /* FetchRemoteRecordsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6D392CE7A577087ED1A339C6C0BBC11 /* FetchRemoteRecordsOperation.swift */; }; - 8AD3B7AB59719794E86F41BA43AA9BB7 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BF527A86BB1F33B31BB0F79626623B7 /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8AD78F774171AE6FCC19467D75E22BF2 /* GBCInputGetter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE1DD0DC6207F06FA49412EF39C53F61 /* GBCInputGetter.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 8AFDE10E850A654C64C54446D32835B0 /* NstInpExcitingBoxing.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 740E7BE309FA13ED2283E325FC79E5E3 /* NstInpExcitingBoxing.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 8B52C54D1C29B576025D4482DBEA37BD /* Sharing.swift in Sources */ = {isa = PBXBuildFile; fileRef = D205F13F881DDD5824256D1FD8747E00 /* Sharing.swift */; }; - 8B6467DEA33995772F7F6B00233CC547 /* TxQuantize.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 64B7CA4681C35B6964EC793BCED8C6C4 /* TxQuantize.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 8BBEB7CBD2DC6BDB53EC1C7F71F82A18 /* AnyCodable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38E017C7FDE637C847376F4854015030 /* AnyCodable.swift */; }; - 8C4FEFBFCC0CADD0E4827A9C3F5A7401 /* AlResource.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5FFAA11B975ADF2D653B7E7145581C16 /* AlResource.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 8C5FB6E515A97B1C218E140DDE966B87 /* common.h in Headers */ = {isa = PBXBuildFile; fileRef = 0064E0DD3AAA63871964A26AA0A8D952 /* common.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8C74AAD5CB4F096C1B25821449685D0F /* NstInpTurboFile.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7593F2C4D1EBF407C79C29024347ED4B /* NstInpTurboFile.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 8CA873D905292236ED1C4D37F8BA2D20 /* Types.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DAC4F6C655170F1792945609E111C63 /* Types.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8D031A69725CEAA587590EC4B7AFC554 /* GBC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82FD9E8B7BF5BE252E26FF5614F77535 /* GBC.swift */; }; - 8D7002BA4BF48E276D34405B85D636DC /* AFError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70B04C9F57267E03F1342083D92F72DD /* AFError.swift */; }; - 8DE442C63575CC1BB47E37716680D206 /* F3DFLX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 57981339AD97798C2EE622F6A4E6AE22 /* F3DFLX2.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 8E0283303AFEBAFB05BE7B75D29EFAF3 /* NstApiMachine.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0DC064148B8ABE064913E82A5953AAD6 /* NstApiMachine.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 8E5E87BD97D5AD2466956F68C3BC5133 /* tlb.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BC1651F3398F95A7546117ED3510535 /* tlb.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8E859D83F6C3578B36A6D6CED24B3EEA /* ARMInterpreter.h in Headers */ = {isa = PBXBuildFile; fileRef = C0E8F6CFDC4D94C86E323AD42D6B74FB /* ARMInterpreter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8F0C99F1FE1F77581B438DC0148E9A33 /* RDRAMtoColorBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 10EBAD36C2ED7A905B9424840A4DCF06 /* RDRAMtoColorBuffer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8F9DE07FB0B100BA997E1B57AA2EE210 /* MergePolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E342E417EC24F205B22FF3D839E0828 /* MergePolicy.swift */; }; - 8FCCB3878C3E1CB40F3CF6B6471AF1A9 /* svtteng.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A286F1433B0665E6746E6D25CDD2F31 /* svtteng.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8FD355BFFBA55AFA633AAAABBDC7C45C /* encrypt.h in Headers */ = {isa = PBXBuildFile; fileRef = 09BB48FFF01B32D25101EAE9D7DC9584 /* encrypt.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8FE643E9E37779FB8CF79631F04FC10E /* ftgzip.h in Headers */ = {isa = PBXBuildFile; fileRef = 2835CF0D5E4AC0B96436BED66036CC25 /* ftgzip.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8FEB47BCCBCCEAB1945DFE73AD3DBB29 /* xxhash.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D955DD7861E1B37BA3C7B1ECB55AACB /* xxhash.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8FF4F1F64AD6389618BA5139BA6827CF /* ftmemory.h in Headers */ = {isa = PBXBuildFile; fileRef = 60EB3614E3542E46227BEDDBFB4808BE /* ftmemory.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 8FFD4AECED831CBCB658A238C5162667 /* ftdebug.h in Headers */ = {isa = PBXBuildFile; fileRef = A484A1B2E22B7365FC565CB1D2CDDF4E /* ftdebug.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 90587EBBAAFBC023F5602BCF40D3F049 /* NESDeltaCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BB11FD20DEECB8B6C10A1E5AB5E3050 /* NESDeltaCore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 907B0C5B1A196BBC3166DB38D7E2919E /* NstBoardBmc36in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8F944213B654D98DA43EE01ACF70AB4D /* NstBoardBmc36in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 9086BE0B6C355410CE0B96054778A491 /* DropboxService+Files.swift in Sources */ = {isa = PBXBuildFile; fileRef = B124B8677E0B9063BDA8D9EABAC8CFAF /* DropboxService+Files.swift */; }; - 90BF35E85A202CC3852637E0372B0996 /* NstFile.hpp in Headers */ = {isa = PBXBuildFile; fileRef = DB04E6CE68116BF5DB7ECFD8E183C1D6 /* NstFile.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 91147717847EAC6C719137EF3F44525E /* Text.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 70ADC0C7F86D3D6EE6794D1AAC94C7CB /* Text.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 915589B5129671F6138C17D52D262174 /* screenshot.h in Headers */ = {isa = PBXBuildFile; fileRef = 91A5E87770C71D3A8C481107060FB395 /* screenshot.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9199A7F7FF91B241ECC8B58DFAC99831 /* opengl_BufferedDrawer.h in Headers */ = {isa = PBXBuildFile; fileRef = B21937C70034B0E22B11F4F417521B94 /* opengl_BufferedDrawer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 91C4550EAC7F3E2FA35D8EB2749A6D2B /* NstInpDoremikkoKeyboard.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C55CAB73D64E01B12F41AE9E1185460A /* NstInpDoremikkoKeyboard.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 91D462D0ED457627F56AD2DE54FBA89D /* SeenState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83BBBD73DC5C5BDA24F97461BDDEA0D7 /* SeenState.swift */; }; - 920D6388A019BAE183B76F28E00899AB /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 0578BFC4BF51617091C2DE4924C3A501 /* SDWebImageDownloader.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 921C1F239586B4E7118399375F45BAB5 /* DateAndTimeFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34B9FC0547132313C6B66562D7FB6FE6 /* DateAndTimeFunctions.swift */; }; - 922177CD81645CEC25D49A8AC0B30D0B /* minkeeper.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E454B0889C6F765CDE3DB450589EE1C /* minkeeper.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 922729E166316817505B1AF9088A1979 /* ftpic.h in Headers */ = {isa = PBXBuildFile; fileRef = F375993EFF03EA6C6482B40DADC6850E /* ftpic.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 92BE00FE1E4605E79A7348DA171983CF /* ftmodapi.h in Headers */ = {isa = PBXBuildFile; fileRef = DF12A2DEC0367BABE830FADACDDC802F /* ftmodapi.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 92DEE421CD7D9438D290895FBC57D575 /* NstBoardFb.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D7F113329CD0D192E2E394BC6F4F3A8E /* NstBoardFb.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 92F48B421FE4B7D563FB78304B45D3DC /* ftincrem.h in Headers */ = {isa = PBXBuildFile; fileRef = 197C2B5C1992F892153FA855D779D3A3 /* ftincrem.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 934CA45537BB8908D8A293EDBB0420C9 /* DisplayWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AB261C44EA772EEDDA15196F06238D47 /* DisplayWindow.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 9372FE77312743779CB691B24C612301 /* VI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BAEDA8D403E529E72121F8EC6A91556E /* VI.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 93A84FA786DAF5ACA8CD46D1C87780F1 /* NDS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BBFF69619A4D7602B5E9CDB34E41A6A2 /* NDS.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 93BD9304E02EDF2D4FE76F8C06E978D3 /* elf.h in Headers */ = {isa = PBXBuildFile; fileRef = D59BB4845689600CF54D0F7796E34EC0 /* elf.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 93BDA5A1EC9B3B59D5D6FAFD93F0D087 /* NstVideoFilterNtsc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 56D000E50D07021FF07AAC165778A791 /* NstVideoFilterNtsc.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 9401A99CC914BB95D46BBCC9BAB2ED93 /* rhash.h in Headers */ = {isa = PBXBuildFile; fileRef = 81A75C53653505A79E3041800AD590E4 /* rhash.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 941554E2FF12E69764224CC64A89FF55 /* RSTSeparatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = DE635479904564D856572E7F742F8855 /* RSTSeparatorView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 9447D1D0BB2829139646E0FCA57AFA22 /* NstBoardNanjing.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E14AA6A495A5CBF04B761FDA07B1F753 /* NstBoardNanjing.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 9464ED60406EDF6313E7A846921946FE /* alist_naudio.c in Sources */ = {isa = PBXBuildFile; fileRef = D191CFB4ED63F845055FB4308E16AE30 /* alist_naudio.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 94696EA0A001067D8812B277FB02326E /* DBChunkInputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 43949B838135A4C9AF88A573B762A429 /* DBChunkInputStream.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 948A99B0CB0D0B198A21DB7B44042786 /* inputgetter.h in Headers */ = {isa = PBXBuildFile; fileRef = 54756783282D97BCFC98529F64C6C44C /* inputgetter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 949EA6C30010EF914C35ACDCB4A6A562 /* ObjectHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AE067DD6EDFB9B28CCAB86DABADC3349 /* ObjectHandle.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 94BA1019522C8546E99C1B9C697E6E0A /* UITableViewCell+CellContent.h in Headers */ = {isa = PBXBuildFile; fileRef = FDA97DF09E3799641D19F3DC6F879DE0 /* UITableViewCell+CellContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 94CFE92CED3E11DA3695C768389196BC /* NstBoardBtlShuiGuanPipe.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2352F7F769B34DBB1B6F8C970C8FFDBE /* NstBoardBtlShuiGuanPipe.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 94D28595353D013C0530A91A7AA81FCF /* Query.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EC698B7882B84A8292DBB86C9F1ECA7 /* Query.swift */; }; - 94E6D6762D8A29BD4C85F386CC8A68CE /* Game.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBEF1B582D9215342B3E1A926501B5AC /* Game.swift */; }; - 950C19517A5D50B23F10106D99CE0213 /* RSTNavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 51CD45974E7379356760ED0390E5B807 /* RSTNavigationController.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 953B0BA08374FEB6F8BA47C9EE30878C /* SMClassicCalloutView.h in Headers */ = {isa = PBXBuildFile; fileRef = ADF793502FD046991EE487F895BA270F /* SMClassicCalloutView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 955812A21F61FBA6E9C2AEF11BF14B02 /* NstBoardUnlCc21.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6049064554B6F5ECC817A62AF2817D4E /* NstBoardUnlCc21.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 9583FA5B757184DE5C086C4CCCD77AD8 /* NstBoardMmc1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8F019EECEDEE94193FB93DF2C97DADEF /* NstBoardMmc1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 959EC09CCE6E1ED12EEB538C67358441 /* Performance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EBF93D07F4B9DAD7347EC63599327763 /* Performance.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 960B24DA9B125F8FAAC2B543D44E6F38 /* F3DTEXA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2BAA7BE16165118C70558D66AC78C004 /* F3DTEXA.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 961CB7DC678EBC5E084382C5CFD8885C /* GTMNSString+URLArguments.h in Headers */ = {isa = PBXBuildFile; fileRef = 269EA2D23CF6BACE160800DAAC54DC94 /* GTMNSString+URLArguments.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 962825C8D2732C541EA53C83058A34A3 /* N64.h in Headers */ = {isa = PBXBuildFile; fileRef = D94C9F0AD0FE08D4EE6CBA57F100804D /* N64.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9681B0FCA87F9122521797F9FD81EE10 /* Log.h in Headers */ = {isa = PBXBuildFile; fileRef = A98C01DAD78582641541607E126B72FB /* Log.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 96EB6181A20B51DFF979A731FDEE8E48 /* AnyKeyPath+StringValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3C364DFE470BB3B632D6815121F80C7 /* AnyKeyPath+StringValue.swift */; }; - 96F4561693770FAD676DD49B01C20269 /* TouchInputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85A20CD7B74FCD22297EDBA79F75A24A /* TouchInputView.swift */; }; - 972245CDE70AFA693B10F04E92F95E91 /* t1tables.h in Headers */ = {isa = PBXBuildFile; fileRef = 06E7BD279F6B1FA895B61355C1EAB07A /* t1tables.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9733344A7F8390615322A3816DC3522B /* UICollectionViewCell+CellContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 384E92393CF9B3934AA1459082E32EEE /* UICollectionViewCell+CellContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 973A780B154776358D85329F4F2D4513 /* SPI.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2136D656956ECA61A97ABEDA06A5FC0F /* SPI.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 978AF63E429EA6BE4A8FF1A0B5496081 /* plugin_delta.cpp in Sources */ = {isa = PBXBuildFile; fileRef = EA7DF9CE0403C3BEFA2EC2A5C29F1CFD /* plugin_delta.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 978BD3E90E940A2B1415D33D2A383F17 /* NSConstraintConflict+Conveniences.h in Headers */ = {isa = PBXBuildFile; fileRef = E1A76606B0545B7E93314B51DC786688 /* NSConstraintConflict+Conveniences.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 979BF68DD04C06A1E5FDE74E4DFF8730 /* GTLRBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = A972E09BA9CC2B4E13DEEC72273122F5 /* GTLRBase64.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 97B88B5221AEC1A6BBC5D54FB62DAC98 /* NstBoardSachenTca01.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E5D97FFBC569CFB91783FD1DC1098F7D /* NstBoardSachenTca01.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 97BA585E32483755C52D679C1CAD6C05 /* NstBoardBmcNovelDiamond.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0A0B32E646BE59A8BE0C72BB1BF1158C /* NstBoardBmcNovelDiamond.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 9833573E6581BB7CBEF9DEFF2B279249 /* Font.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 47B1F503E42D737626E2EA908A16CD96 /* Font.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 9854241DC2EC2E2E20D8F27BE72F7D5E /* biopak.h in Headers */ = {isa = PBXBuildFile; fileRef = D223DCFA57D6B7A3D80C036254D211B8 /* biopak.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 988C0CA31EFE130505B3550036C26E99 /* NstBoardBmc110in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 817726660084D909C839C2AC4F59B79E /* NstBoardBmc110in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 988D404F693390C74ABBA251FBACABAE /* armcpu.h in Headers */ = {isa = PBXBuildFile; fileRef = 59D02EBAC62E4ADEF5A49D60E9C42AEB /* armcpu.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 989228C2A23C3C4BC434B7CA749B34FE /* NstCpu.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8E665A40195D9376CB33914492D8C9F6 /* NstCpu.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 98D13B35CF030A89A93906D7B4E9DDB1 /* ARMJIT_ALU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 092B175C98B8DD1277A2B83BCDEB8E72 /* ARMJIT_ALU.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 98DF0BBA7A414D87E188D57A245953B1 /* DSiCrypto.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2AAA49DF639504DEB3CEE32DA59B05E5 /* DSiCrypto.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 98F29902A3A0D35FA74FE8B9D74C7C7F /* fxemu.h in Headers */ = {isa = PBXBuildFile; fileRef = 826835BE8340A1BC251ECF7FCA9581C2 /* fxemu.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9903014C5A3AAAFF56B946DCCFB190E0 /* CombinerKey.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6380B0D299E0305367127A145786FD9A /* CombinerKey.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 99586D4393F983E6E11A7EB4ACDA25A0 /* mbc3_rtc.h in Headers */ = {isa = PBXBuildFile; fileRef = E62D7ACDAD9AB7541460CDCCF0827B6A /* mbc3_rtc.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 996277B306F4ECC6427CE74B7EE6DB2B /* ftcid.h in Headers */ = {isa = PBXBuildFile; fileRef = 7903BE329F1F1D43823E9EE7CDC9E0B9 /* ftcid.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9992CBFECF410C4D4CB051B68CB1A05B /* FilterChain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D7C8FA406E15F16500B35FF45E35734 /* FilterChain.swift */; }; - 99B29EF5342953D8383990A37EE22C42 /* tttypes.h in Headers */ = {isa = PBXBuildFile; fileRef = B837C755947C65B18A89F3A0BADC7724 /* tttypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 99BDC7E1823551373C83EC1132AFA721 /* eventloop.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F6ECB5AA1057602FCDD4E5786A4B0E5 /* eventloop.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 99F5B9FDBC333B2B230680C0E6F72D7A /* Standard.deltamapping in Resources */ = {isa = PBXBuildFile; fileRef = A993D39512A6DFB0B6BC9868BB99AB8E /* Standard.deltamapping */; }; - 9A6FF72EA927C0701CC40488A259AC67 /* mc.h in Headers */ = {isa = PBXBuildFile; fileRef = 6538E1750A003E112A1253284036FAD7 /* mc.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9AA3E4188A9CAD171601CDB8BBBD9FAD /* Keys.h in Headers */ = {isa = PBXBuildFile; fileRef = EC82FD320A0C3839759EC72B671260F7 /* Keys.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9AAC4FB0FB41BC2C0601AC7515739614 /* TxCache.h in Headers */ = {isa = PBXBuildFile; fileRef = BEB82CFF0DF8F66A85C52D4FE874D373 /* TxCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9B269B99354B7C423C56594196AD2885 /* F5Rogue.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EE8E7F1C3909E4079692F784A1BEC6B /* F5Rogue.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9B3A8D9F32E51A01EB64949DE7F96E40 /* ARM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAB3476277B58FFBDD42805CCE15EB71 /* ARM.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 9B57CCF8BC488FE474E4F1FB71CFF474 /* NstBoardNamcot34xx.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B8EFAAF62D9F6506CF1FFF94ADE1F7B9 /* NstBoardNamcot34xx.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 9B627BC6378528F7AC56DD12018E6F00 /* convert.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 52CF76E5585ABDA5470FFD47A7A884C3 /* convert.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 9B6BA2B10F8550ADEABCF10CC663A505 /* String.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3E14F2824F466613E0B904E85B7F7D90 /* String.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 9B7DAF407569D19502B64585C757EDEC /* NstBoardTxcTw.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6B2B7F80DED1FE8F81ED796983E929F9 /* NstBoardTxcTw.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 9BA44ADE8BE966F9A20880C009B0FEB2 /* TexrectDrawer.h in Headers */ = {isa = PBXBuildFile; fileRef = A3EB9D3D3D24F94909D61899684B7A77 /* TexrectDrawer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9BC38C5981E8362BD3AD9B1CC1609AE2 /* pcap.h in Headers */ = {isa = PBXBuildFile; fileRef = C4D94D5C2C4826A2B2D50690E7E30F1E /* pcap.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9BE185FCAA837451F4D0B4CE269DA095 /* DBChunkInputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F2DBB27BEEB1C9D7D604A978D9DD6B6 /* DBChunkInputStream.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 9C21CC74CE56D97853FC8CC26403FC97 /* profile.h in Headers */ = {isa = PBXBuildFile; fileRef = AC99C95A2973D6876BD5611B8046B243 /* profile.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9C23DF253F333470EDC0326295BDDC40 /* firmware.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E3FA1069F1A405E4462E3D83816F39E /* firmware.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9C88422D60DCED6247C2A5DAD42575BE /* NstBoardBmc76in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 15B023844982AA4873AD8A5647C6E34E /* NstBoardBmc76in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 9C8A0C2204C091124D6C64F86A690F9F /* SMCalloutView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B23526A375A47D4DB7E41CEF2AD61087 /* SMCalloutView-dummy.m */; }; - 9C9548A2393E2C582D89120FE686CF7C /* ThreadImpl.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 49D99B744B7B1A1BEEAC63A74EC018FC /* ThreadImpl.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 9CE15722E73E324E734766FAEED1AD8A /* main.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BB543A3A71829396B263558ABAE1D3B /* main.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9CF692BD464C27BA082BE1DCA7A9D45C /* Alamofire-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FBBCE862E374DE16A6F3E328AA1A1DA /* Alamofire-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9D122B73107D0C5AA17E19BE248A9A93 /* Main.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4065CD95013A44798CC6DD2F2C1FE455 /* Main.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 9D236AD275351F9A5B8DA180F5062B0E /* Thread+RealTime.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8AA8E3FF743A7D7D470B8EDF92A6C00 /* Thread+RealTime.swift */; }; - 9D36135EF268512D3741FD2E84A0A2E1 /* GTLRQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = 6ACCC934BB5FAD4B0A16D654246E21F6 /* GTLRQuery.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 9D463B1E18FE1AE9E9E16A9763730B04 /* Archive+Writing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E950C5201F678049BF12854FA5D327A /* Archive+Writing.swift */; }; - 9D5990198CE8DEF226EA2DB004E55FCC /* Syncable.swift in Sources */ = {isa = PBXBuildFile; fileRef = A10405CD77CC06E92C329D2A7A416975 /* Syncable.swift */; }; - 9D79BE9571D413FC88C72CF55B0F9012 /* GBCEmulatorBridge.mm in Sources */ = {isa = PBXBuildFile; fileRef = 380F35715DCAE202AD5A7B1926282538 /* GBCEmulatorBridge.mm */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 9D8470DABC12465B659B129C8DC17F63 /* Base.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8257136F31A37672447D5F2FCF46FE10 /* Base.swift */; }; - 9D8B731B59689342946A389DC985EC84 /* Config.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 46198453B4E430C9A0F4D46092ABB409 /* Config.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 9DB11AE2F6C45F16A56C643A04B96A32 /* hermite_resampler.h in Headers */ = {isa = PBXBuildFile; fileRef = 79D7ED8877867FB9C7D2E9F9FA848BDA /* hermite_resampler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9DE00EE72CA83C910C9CC63E9C556FB2 /* NstBoardWaixingSgzlz.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 889B56C4CCCB86F23A99D01C2C992852 /* NstBoardWaixingSgzlz.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 9E0565A3155BC2A1BB1CF90E7EFFAED8 /* ARMJIT_LoadStore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 00AED56AB957744DE9F059CB2835BE16 /* ARMJIT_LoadStore.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 9E15FD444D5CD3E1BA09ED2CBFF0DB0F /* GPU2D.h in Headers */ = {isa = PBXBuildFile; fileRef = F4BD93EBB898827AF67732B5398A5020 /* GPU2D.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9E3F14CB99541C1515E25DD0BD942BFA /* hle_internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 310827CCFFF7FE348B9558D4BDFA99B0 /* hle_internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9E45C64EA176F650C72DC908D6CB014A /* NstBoardUnlA9746.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 96EA1B6F86E72E7EE50B4592F4B566BD /* NstBoardUnlA9746.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - 9E7F668C918EC41EE7CB0E8A109A7475 /* opengl_Utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 865A3063B5602032ACECBE1CF2D6C9B8 /* opengl_Utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9ED7E93CE5B713B016E2D09B85EE4EBA /* logger.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CED691600B7BB63850F3BE0D44DA891 /* logger.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9F472B78787D56228652D3FA3BCAF645 /* TxTexCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D11080B8D2F5E38C47C4098BD2FBA5AE /* TxTexCache.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 9F6927C9D40A3247DE9DD8ED778BED19 /* sa1.h in Headers */ = {isa = PBXBuildFile; fileRef = 8832ED97E367CC9B2AE7CF0F2DD8A54F /* sa1.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 9F69EA3D9A3E5311DF5C03E8C2DA2101 /* gDP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C1F370EE6E775263D2F455D399A21A6B /* gDP.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - 9FB04C9EE09E52060ED0F8FE2F358A05 /* OAuthMobile.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4BFB7D39F6CF7F3B3B3BB96C9EAC314 /* OAuthMobile.swift */; }; - 9FF3543268C7DFF3FB5BC94B94B3C1F4 /* SocketHandle.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E68FD43545CD76F9AB1350FD2B577AED /* SocketHandle.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - A006EBEA361DDCFC8A4C0654CDB608AB /* rom.h in Headers */ = {isa = PBXBuildFile; fileRef = 507409135C074E27C66E7015AD354962 /* rom.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A007940F022B62E013F1F7B8E1B12D0A /* NSManagedObject+Conveniences.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CDE7591635439F04D25CB09FFCE239A /* NSManagedObject+Conveniences.swift */; }; - A0380E2F2A50D54040F0805869A74B92 /* TextureFilters_xbrz.h in Headers */ = {isa = PBXBuildFile; fileRef = FED800917E3DBCFA484346FA1DE92AD0 /* TextureFilters_xbrz.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A04438E1C77E968244B281C17FF432ED /* ZSortBOSS.h in Headers */ = {isa = PBXBuildFile; fileRef = 68D4AC5CC44BFF50F55D374F5A256A23 /* ZSortBOSS.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A0FA4FA8DF61909241D2F50F274BCE5A /* RSTCellContentCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 27C74EF552116A38298E8B90B63D8BA7 /* RSTCellContentCell.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A1142BAEA616C14DF2195B07A9638FB5 /* SwiftyDropbox-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D57E07B7CA9C82C9090FC455119B46B /* SwiftyDropbox-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A17D20C132072295C6EFAB9B35C10E1F /* DeltaCore.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B2CB409D92E49580916E562180139A5 /* DeltaCore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A19EC2CB11D42E71D87B67D0820BB294 /* RSTActivityIndicating.h in Headers */ = {isa = PBXBuildFile; fileRef = F809B8CB68A6A28D226F226F8AC25ACB /* RSTActivityIndicating.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A1CBEA7CE26BA052A3FA62F221E7CB39 /* spc7110dec.h in Headers */ = {isa = PBXBuildFile; fileRef = DFABA608C593B4B5CA40C1C7CEDA6927 /* spc7110dec.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A202018DA4DBD353371CEFF8A5B5D402 /* NstNsf.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4D7CA6BBD3A7CE421859CF75E8BBFBC7 /* NstNsf.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - A244936922CE7070F89A938968B32C91 /* ft2build.h in Headers */ = {isa = PBXBuildFile; fileRef = EBA27B0B1C5179248A1E5115709D824F /* ft2build.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A25D6BAE3194DC9C441913CCF678E607 /* NESEmulatorBridge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAECC7C1429A920EDECC14CCF40B8BD7 /* NESEmulatorBridge.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - A283636259F7E772BFA5A74666B3D62A /* NstBoardWaixingZs.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B65032755EE4541256290B57E1CDC9A4 /* NstBoardWaixingZs.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - A2CF9154989980CFC268B66B94713346 /* NstBoardAgci.hpp in Headers */ = {isa = PBXBuildFile; fileRef = DE28AC43CC05A2A18BD33834DAD68546 /* NstBoardAgci.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - A35C729C9323DCF9B1648915EF8D3F91 /* zconf.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F06E96B244C279983A107F0118F85A7 /* zconf.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A369AFBDF285BDF08984557C2B2D035D /* FrameBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D680FE7B2377E367551ADC298B6D1D2 /* FrameBuffer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A3B1E03C696CC77248842655D99E9ABF /* types.h in Headers */ = {isa = PBXBuildFile; fileRef = D1476498A59B49640815E0E82A975A8E /* types.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A3E1264F85AAC4F88A0CE8EBB7BBE371 /* GBATypes.m in Sources */ = {isa = PBXBuildFile; fileRef = B04299FBE484CF4A076EBCBE3D52DA7C /* GBATypes.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - A3E15391601C42CA51EC50140B65CB61 /* NSBundle+Extensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 95EE0A30DD5CF66C076753559A7A9A82 /* NSBundle+Extensions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A3F7BACDF102C175ED506AABE677C2F6 /* insertion_sort.h in Headers */ = {isa = PBXBuildFile; fileRef = 587876311AB9A43EF1E3013A16FA8F9C /* insertion_sort.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A405B8BF29E241841FD8C1F656BDA8B1 /* NstBoardRcm.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A323D3FC096EB17C3AD877ACACBE572A /* NstBoardRcm.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - A40839A9B6D4DB05044ED02F0F9B8B54 /* unzip.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CB6EA18C6E1762E051CBE04D8C7E4BD /* unzip.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A487099212AF614A74B767557D4933BA /* SPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 65A3DF3862EB2C06BE04F217E799F74E /* SPI.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A4C7B1AE134208BB071D3BF3819B3876 /* UIViewController+TransitionState.h in Headers */ = {isa = PBXBuildFile; fileRef = 9ED61F68B6658C6137ADBD037F7D43EF /* UIViewController+TransitionState.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A4CDAB56ED7EA775F1A4AF9BC6C5E712 /* GTMReadMonitorInputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CBFEACE2F6510E0AC190F950DC15702 /* GTMReadMonitorInputStream.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - A52DC13796955798C20BFEFA2007DC4A /* GameControllerInputMapping.swift in Sources */ = {isa = PBXBuildFile; fileRef = 744CDC36A5FA9F4BF452E5F54C93E619 /* GameControllerInputMapping.swift */; }; - A54F2E82882A3475B1C7B5CA20230DBC /* Sram.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C523CCC02512580019DBDA6D94FA69D /* Sram.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A588EDD1F6919192D1E1A1E7F93C896C /* NstBoardBmcGolden190in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F7042EAD352C2910B271E66506CE6D47 /* NstBoardBmcGolden190in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - A5A2579F29E338D8F314BBE07D184F5D /* TextureFilters_hq4x.h in Headers */ = {isa = PBXBuildFile; fileRef = 25EC9E35D1E0371FDC76C142DA25855C /* TextureFilters_hq4x.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A5C0AE4E9AED3A8854E26FC94B2645A0 /* Harmony-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 809C2DE2D00BCE6A6E076592A813FB03 /* Harmony-dummy.m */; }; - A5D2CBA2DD672B6B6B94D66F4CB57CC6 /* SPU.h in Headers */ = {isa = PBXBuildFile; fileRef = 888E286567DA558A37D75C91A18A8003 /* SPU.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A5ED5B0D2305380BE1DBD40FC1FA117E /* NstBoardTxc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0C601C48353B572B239FC3A6CCEDB8A0 /* NstBoardTxc.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - A6036A65FD824FD91DAA7DE88B77BFD7 /* arithmetics.h in Headers */ = {isa = PBXBuildFile; fileRef = AC54B6128FC352974C1A8FF402DCB502 /* arithmetics.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A6173C5A991255ED8E9DF5B7A8B26CA7 /* GTMSessionFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = EFBE30994381264F2445BF70BEE39EE2 /* GTMSessionFetcher.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - A64A31B50F4F5DF94F4CA2984CC50066 /* cached_interp.h in Headers */ = {isa = PBXBuildFile; fileRef = 7427B67B589DE237C8DA6027B77D9486 /* cached_interp.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A65E162047EA24A6306DDB6EB4643634 /* Time.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 18BBE5534A3581E4BA37CEB930381E8F /* Time.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - A68358836B1F32B472477A3FF004E58D /* DisplayLoadProgress.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 324E96E22E51A6E3212EE2F235AB6824 /* DisplayLoadProgress.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - A7068B8F91CA6F048DD3C251BFC07A0A /* resource.h in Headers */ = {isa = PBXBuildFile; fileRef = 547037D8AE9D3557DBC6FCF5EEB2515A /* resource.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A7304011F72D0FCF93C658729161C3D0 /* NstBoardUnlN625092.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F242D59C89F73A5B3BF7834E21E3A571 /* NstBoardUnlN625092.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - A7375F06BB05196E852A7CD1BEB888D8 /* svttcmap.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C47161890D8A6119D7B00B61D034DE0 /* svttcmap.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A758267C940A35AB481E874A1C6F56B8 /* NstSoundPcm.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 148A77A98A1FE40B0594CC4E60C228D3 /* NstSoundPcm.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - A759851535563F1809534B33FB60C29A /* pngmem.c in Sources */ = {isa = PBXBuildFile; fileRef = 98B8FFB08403FFC14B3F37F916E6903D /* pngmem.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - A7AC0EFF7457881D064EC762C2455927 /* RSTCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 72495D65818F9E9082E5D51130B42F8D /* RSTCollectionViewCell.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - A7C696E5E093AEBD9C4CAF3A4C68D70D /* fb.h in Headers */ = {isa = PBXBuildFile; fileRef = D7BEDF5B516A1B0C298DFAE1D232DBB3 /* fb.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A7D032EB950914E52D99251BFF5E4B0E /* retro_miscellaneous.h in Headers */ = {isa = PBXBuildFile; fileRef = 19F3233296ECF54009C07D09EFA3CD62 /* retro_miscellaneous.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A81C06D102C335814B9A8E8C7AC4269D /* NstBoardBtlAx5705.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6EEA2D28001AC05E9EFB187853B6CD71 /* NstBoardBtlAx5705.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - A832378493279C1E0AD917340C7EFCE0 /* NstBoardBmcSuperHiK4in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 94100AFE450517301A8346E816B27917 /* NstBoardBmcSuperHiK4in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - A83423193F02D6719C4F7C6049F53226 /* memory.h in Headers */ = {isa = PBXBuildFile; fileRef = CF90FA724655A486BEA6C173143364AC /* memory.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A834C5412EE4F8573AC5107DA4DC7A0F /* opengl_BufferedDrawer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D3156A703D60028628632452506690B /* opengl_BufferedDrawer.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - A88D1A07695BF9A29D620D4A6C8C26CD /* EmulatorCore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5224985FFC1BAE799009B16684F7FA41 /* EmulatorCore.swift */; }; - A8AA1BCBB2ACAB2855788C5F0A04A93C /* NstBoardTaitoTc0190fmc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E95EEA8B8765EBE1C1BBA81D951B9C66 /* NstBoardTaitoTc0190fmc.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - A8B3741D77D827CC484A5E2552B5C0F4 /* NstBoardBmc72in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 300B81B7400D637EF3E0F11DA2B20A50 /* NstBoardBmc72in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - A8C9F1FF546858336F5865B4ABEBD5A7 /* MelonDSDeltaCore-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 405AE5BB47C904F85227A7D7E3D69897 /* MelonDSDeltaCore-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A8F6AAE56D6DCA37A05C12496324C114 /* ControllerInputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC5BA75262977CCE52E0E8BA86D4CCC7 /* ControllerInputView.swift */; }; - A902E94BC79F6FA99E9BB0300EA305B3 /* CustomFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F67C72AC639FF2FE8B8682CBADFEA91 /* CustomFunctions.swift */; }; - A9186FE549242461E52526AE5C43500B /* NstBoardCxRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E3571A8F7620CB66A3CD66284D754F86 /* NstBoardCxRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - A930FE4E4EE70AD6AABF715E42DB4C04 /* interruptrequester.h in Headers */ = {isa = PBXBuildFile; fileRef = BFBCE321AA4691CCAD5F6DFE0A431A0B /* interruptrequester.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A933899E5077A378C302DC41EEBD7453 /* workqueue.h in Headers */ = {isa = PBXBuildFile; fileRef = B4596D2D0AE2DB378A700A506C25739D /* workqueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A93BBC426AF08A453D180C909550DEA3 /* NstBoardTaito.hpp in Headers */ = {isa = PBXBuildFile; fileRef = EBA3E6C841874984E34D25098CCFA20F /* NstBoardTaito.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - A94BB6CD398BCFEB40892D92B97CBFD1 /* Input.swift in Sources */ = {isa = PBXBuildFile; fileRef = 523F0E989B05847985E89FFE04B20FF3 /* Input.swift */; }; - A94D6595A758E675DD83C93E78570450 /* retro_endianness.h in Headers */ = {isa = PBXBuildFile; fileRef = 58F784152DF099B1A4B2C9C883708880 /* retro_endianness.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A956F9D11B84CC1C8097FEB2EDA2E716 /* rumble_backend.h in Headers */ = {isa = PBXBuildFile; fileRef = B76B12510BE2B141AE4835C5EF4036BC /* rumble_backend.h */; settings = {ATTRIBUTES = (Project, ); }; }; - A95C0AB4438EBC7DCEDC28E01BE05196 /* NstBoardBandaiKaraokeStudio.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4D504D25811EFE16E14FCE0763D758F7 /* NstBoardBandaiKaraokeStudio.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - A961C257A4DEE7A1EFBD982ED018F2F5 /* ARMJIT_Compiler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F5DEB059629A947D90A58EBA2CAA95D0 /* ARMJIT_Compiler.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - A9AF082F678A28DB8B079C8028E45B2C /* RSTPlaceholderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A45A0771D00FB91CCC82B95621F18F1 /* RSTPlaceholderView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - A9AFE05A693A5A114D4910F83EB24148 /* WriteToRDRAM.h in Headers */ = {isa = PBXBuildFile; fileRef = DF219081F2A7A82C574232E188237FBC /* WriteToRDRAM.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AA6E8748785546BE632543550E49D772 /* ConvexShape.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4F6CBBBE0FC5A1BB0CEFDE577C32F89D /* ConvexShape.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - AA8D88A6F5F153C9A596E98939148749 /* ARM_InstrInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 688B090AE1C49E5CCF89A0205D82DF55 /* ARM_InstrInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AAA538F221917E4F4074007EAD3A1A6B /* TxFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F9CB51830A19D7845E7B996477CD3A7E /* TxFilter.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - AAE9E5AF6721DB19659EE62B95A58528 /* NstBoardJalecoJf13.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1CADEE479AF35E2F20B5FC8613605E71 /* NstBoardJalecoJf13.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - AAFBD5083974287DA2A227D4114E7446 /* TxQuantize.h in Headers */ = {isa = PBXBuildFile; fileRef = 92EAC7CE772F5EEE8CA0E1D5CC0DF8DA /* TxQuantize.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AAFDF632C307AF4214EA482F4613353C /* ContextSettings.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FCA6104ED07A1CCFFB1B9709D453474 /* ContextSettings.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - AB597C077E8463E0144D7F7A11B210AD /* NstApi.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 26D4C43C09D79EF32F5F974C5A89B879 /* NstApi.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - AB80F07342C3BDD018E24A6B7F52840A /* NstBoardTaitoX1005.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3B304C6B796AC11108B515F010477479 /* NstBoardTaitoX1005.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - AB8998AD5CB59964628DAA4A14F9E423 /* NstIoAccessor.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B1CBBA370D9778B19123EFE9F6E17F58 /* NstIoAccessor.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - ABA42FCE8A0DA468F54BC37535A3D56A /* Port.h in Headers */ = {isa = PBXBuildFile; fileRef = EFEDF761A5B66736CF55093CB6485C6A /* Port.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ABADD5F65AF9E428F53EBC6B7325FC75 /* NstVideoRenderer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 00BD1BC7C8465752CB8C9BBBE279E1FB /* NstVideoRenderer.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - ABAFD1E7905BC7A5D926CEED925B6CFA /* CustomRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9428B8A7A37F792EB00157F40ED883BB /* CustomRoutes.swift */; }; - ABEA0FA8AC93EF7D2A0517E6B23A2B32 /* Touch.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8770DD274E5027F1A733F36969F16FD9 /* Touch.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - AC6AA8B613D868D4880BFBA22EC89C10 /* F5Rogue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 571EC049651D9B776F745DC16B28D706 /* F5Rogue.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - AC73E7F27DE8847C168F65BA16572DE2 /* svbdf.h in Headers */ = {isa = PBXBuildFile; fileRef = 37E6416FF8041B0018F081486F5DA69C /* svbdf.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AC768394D25191956405BCDE5EE17BBE /* retro_common.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C573C73FAF77126C47AACABCE05AB30 /* retro_common.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AC9942ECD09D7F3BD665160223B9EEEE /* UIImage+PDF.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3AD6D0701243C84DED62E7BE82A98D9 /* UIImage+PDF.swift */; }; - ACCEB8C56459BE4E695A1853A6C6AA6B /* NstBoardBmc31in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BDA27BC884354F2D08D2AA05968914C7 /* NstBoardBmc31in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - ACEEC71563EFD5FC1366E48A03F44ECA /* RemoteRecord+File.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8CE42F012549C258EDB2C3B537921E0 /* RemoteRecord+File.swift */; }; - ACEF93CE9D87EC6C299FEFD03CCE8F37 /* Music.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5642A014AB6854D5C0608BAEF6A00401 /* Music.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - ACFAA48C06C21CD196DC49DAC80CE637 /* ppu.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DFF22813A5E66C19ECD0F24DE112112 /* ppu.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AD119D199F5C9847D209962A3F5E2E2F /* Http.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2C1EF76242FE6AA83C45F46051B60B6B /* Http.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - AD260393C86B5A7406A42E719C17F577 /* RSTCellContentChange.h in Headers */ = {isa = PBXBuildFile; fileRef = D2BE8D3C7C22716378ACD8F7845D1027 /* RSTCellContentChange.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AD33946723D392386CA42DB2966CFCBE /* messages.h in Headers */ = {isa = PBXBuildFile; fileRef = 33C9E9FF569783D800DD1761E4380AAB /* messages.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AD36FE9904AE82872D28F6680C5DC874 /* NstVideoFilterNone.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 128FABE87B95008533D496EE889613EA /* NstVideoFilterNone.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - AD48DE59F39C10DEDC26F657C255CAB7 /* ARMInterpreter_ALU.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7DD4EB5CFFADB4D68D550C2A9FD0CB52 /* ARMInterpreter_ALU.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - AD629989680A89AB95B94A1FFF6F3E91 /* instr_counters.h in Headers */ = {isa = PBXBuildFile; fileRef = B9F0DFCB779B9AF6CD5701965ECDFDDC /* instr_counters.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AD6656B872B98CDE4BAC39B6E10CF595 /* GTMMIMEDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 053CC9F79B24C95D4BA1804F4282EC93 /* GTMMIMEDocument.h */; settings = {ATTRIBUTES = (Project, ); }; }; - AD69D226F5C37B753A0F186D989D00C7 /* NstBoardJyCompany.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4280888EFBE38CD9BA1722AA8B5E21D7 /* NstBoardJyCompany.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - AD984E73AE3CA54645320EAB0C257FC5 /* NstCore.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D3739D93DFAC472E38C99F784BFDBEA0 /* NstCore.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - ADBD39D7A6389DEF2E811ECB3FCE112E /* NSString+Localization.h in Headers */ = {isa = PBXBuildFile; fileRef = E7A235EA31E0C5186C5FE456732B87C9 /* NSString+Localization.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ADD98E14DC11A6AC4A234688F3BF8A2C /* NstBoardSunsoft3.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B16D65599391107B17547743504F3F09 /* NstBoardSunsoft3.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - AE289061B7A8809C0715E72CFE9FCDC8 /* NstProperties.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1D1F31A13F1FBF95445EA192197633DE /* NstProperties.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - AE400DBA536300A4152D031CE31DB09C /* ARMJIT_Memory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 216A6A3C34E1B0D2B37AF0F69445B3B0 /* ARMJIT_Memory.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - AE78386F0A31EFD0246D2D68C6E69844 /* RSTPersistentContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = A54DF285E6ACE0FD412D98A086B82B96 /* RSTPersistentContainer.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - AEABFD71EFDEE3030A083079CB103A4F /* cicx105.c in Sources */ = {isa = PBXBuildFile; fileRef = 3B00EFBA37F600E32A24246B7A597850 /* cicx105.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - AEB1E8FCF72D57CFDF567E3F17B41E4B /* SaveState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BC872B7044AA807CA7EBB604D434866 /* SaveState.swift */; }; - AECB1619CFCEF7A7234852F00CB0C5C0 /* SMCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = CB0111AD916628D17DBE1C3F2FED3100 /* SMCalloutView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - AF02EA0DAD3FAC51CB5E859F81786EC6 /* SessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48A7DBA86C0D8564FAED27D377B220EC /* SessionDelegate.swift */; }; - AF31CF135DF1323682C58D3B124E7727 /* RectangleShape.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C3EB10DDF80E759F5ABDC3B03239F8C0 /* RectangleShape.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - AF51B60F90BDABD26AE53E2294FFA0E1 /* RemoteFile+File.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52B8EEAB10DB9698731B5793936A672F /* RemoteFile+File.swift */; }; - AF64225EC16BFF6125E73EB4128C62E4 /* NstBoardBmcSuperBig7in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D1DB056A6C494B4F71B95CDE5D8A8D2C /* NstBoardBmcSuperBig7in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - AF954599D3C9E31F3BD7AC4DEAD66A55 /* RSTToastView.h in Headers */ = {isa = PBXBuildFile; fileRef = F63203C30119ECDD3B34CFDEFE95164C /* RSTToastView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B0083CBB6EE8F32AAF041C4D8B1FB88B /* F3DSETA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 881946A97328B48666124F0EF376FC0E /* F3DSETA.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - B00CBB6A581E7D28860CA36877B7FC17 /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC8F75C1ECFF600FD8638F60D9896A26 /* Errors.swift */; }; - B00FDFED7CB707A022473CE88A1FFF76 /* DepthBufferToRDRAM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 52ADDAAB32E3E424FF10779C91A60F3B /* DepthBufferToRDRAM.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - B04191632CC7C0142617EAC747809131 /* SNESDeltaCore-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E202E5A6E4DD5B83A861BDABCE981EB2 /* SNESDeltaCore-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B07BD3D4703D69593319ADA97B3524E9 /* FrameBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1DD2C5713EAF063A8C397A183A28D39F /* FrameBuffer.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - B0D35D84B9DFCA6E0CEFB98B82D8364B /* sdl2_compat.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D6B6F32ED9A76A6D328F910F3A57B70 /* sdl2_compat.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B0EC94D836CD8CF41073B4AB9B3B37E0 /* TextureFilterHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 076946BC07F0C6BD8CA86E1B64137C33 /* TextureFilterHandler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B0F3832F2127CA64A7C753D856A7001D /* controls.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CE6F51BC66DB2E3015550E3FB2B453D /* controls.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B11551B5758E80B42AEA1D197777B68B /* MelonDS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EBCB963DFF67E5AE40BA13ED1A01887 /* MelonDS.swift */; }; - B124288C0243AE94540C2439CFEEC07E /* m64p_config.h in Headers */ = {isa = PBXBuildFile; fileRef = 688AA690103545651BEA6FC225889217 /* m64p_config.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B14A66BEC0CE13A1DED4A61CEF1A7C62 /* NstInpBarcodeWorld.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 880BCBB221781A1D9A6709B5E32370AF /* NstInpBarcodeWorld.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - B1A25C4CF064BC19A30DE30E15595403 /* ftsystem.h in Headers */ = {isa = PBXBuildFile; fileRef = D55A1BA5813E4F75369459BAEC6308D4 /* ftsystem.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B1F0B2FCE7FB204E1BBCC520C779088B /* AAFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 96E188C108DEE0C4CDF36B16B432DEE5 /* AAFilter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B2413D48BE65FF8FD294A53D5C5B760D /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 568BC6B386F0E084601CBF273D6953BA /* UIImage+MultiFormat.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B2478D23172EDB2510133ACF37B0DD8C /* F3DFLX2.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E1FF47BDDB001374C97096ED762AAC7 /* F3DFLX2.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B256392AFE33E2C71B09243E8CD78C6C /* libco.h in Headers */ = {isa = PBXBuildFile; fileRef = F344EE5A9EBF490A69CDCA61BB37D194 /* libco.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B29D063BC415BA5AE475CFE6D7557133 /* NstInpRob.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 20F16E20EF20C537D00F04D36BF7621E /* NstInpRob.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - B2A2EA96230E42C9DACDEAE5125E70A8 /* Glyph.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 17FBBA801F9904108D40D6A38C38A7E6 /* Glyph.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - B2D6D37E2883FFAEFA026065C9EC7A74 /* transferpak.h in Headers */ = {isa = PBXBuildFile; fileRef = 59B129A50A11DD8DA172A571557AC9EE /* transferpak.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B2EB8D4FFEC6DC5D343DFE0CB523C720 /* File.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FB44FFA4D02A1F2C432FD1A64C9A3C0 /* File.swift */; }; - B2FBBF04AE5C71DBD33F94ACE111E887 /* png.h in Headers */ = {isa = PBXBuildFile; fileRef = A374908C0C4755AE6E7BA5BC3FE0165A /* png.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B3308C76229116C1A7088F42A818C067 /* TextDrawerStub.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A0DD78048033AA404C173A30426FD703 /* TextDrawerStub.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - B3376637DC88B52CCDCE40DD855FA4C7 /* ObjectHandle.h in Headers */ = {isa = PBXBuildFile; fileRef = F50917A4D4B27777FE66FE1D8F23BD24 /* ObjectHandle.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B3B9EA229B410CB5EF72C771A3F5F7DF /* m64p_vidext.h in Headers */ = {isa = PBXBuildFile; fileRef = 73CEB369FBA056E331F0DC448A726D0E /* m64p_vidext.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B404FD64B862A39E9D9E0E032907BEF8 /* NstApiUser.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 27BD06691828D334895C216BFE8EE776 /* NstApiUser.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - B408C23C295D9B635EC3D246968A93D1 /* DSTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = A10E14C0CAF47227861648B77555BF32 /* DSTypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B41438D51C14F27B5C8295FB75EF39BB /* DepthBufferRender.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BBB5D600AC9C95A64296B6A4B1CEAECF /* DepthBufferRender.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - B422DCB989FF675D287C579D280F8253 /* TaskDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDAEDE6317A2C17D4DB07ED6E3982F55 /* TaskDelegate.swift */; }; - B47C861F95112C613F72B9CAF4784FC4 /* BatchRecordOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93CF7202730B19C9887B59D40AC2C856 /* BatchRecordOperation.swift */; }; - B480924D98DE2163DFF9F9AE65528FC0 /* NstBoardBmc15in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B60D5BFD804E4CAE6D1316C0FB20DC96 /* NstBoardBmc15in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - B4A39E493B818C8DEFEB6843E7FB3A2E /* m64282fp.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C15A4C716F94FC120B8A44EE878A850 /* m64282fp.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B4AE02BED30D27986CA69644B97C477C /* CRC32.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C5467F3A301E5ABC6E4E314092284C44 /* CRC32.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - B4BB17C7542092C2B7C35AF65CBDED4F /* psaux.h in Headers */ = {isa = PBXBuildFile; fileRef = 547D76089FF424DC84616A35ACD84FF0 /* psaux.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B4C52BEFE7B616BDEF5CCE5CB26A7272 /* TextureFilters_2xsai.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1CD471C7753A26A428B594E2A77FBEDD /* TextureFilters_2xsai.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - B50F332EA56118DF53A98ED3265BEFC9 /* Common.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41719ACD881D756B29502E6C40D1DBA6 /* Common.swift */; }; - B54BE351A907BE9B0B2B592B894B0FED /* NstBoardNamcot.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AF9799175C20C8B2FCE36FED74E47B01 /* NstBoardNamcot.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - B560A089A1D47EC1F0B26533258C7317 /* SessionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D480F6ED4062D534F79485C9C8C741A /* SessionManager.swift */; }; - B560E458E433DDCF624D34FE1E40087C /* RecordController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ACEC14D6FB9D130B1AA90332A47685F /* RecordController.swift */; }; - B567AC9D14E7A8B5ED0F49D6A271148C /* Transformable.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1368CB59650BD7265E79FE33C2A10149 /* Transformable.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - B588B4C4C276D0350E74F83ED36DDC37 /* DriveService+Records.swift in Sources */ = {isa = PBXBuildFile; fileRef = 041D9AF191E8EDD43E963D7D217446D1 /* DriveService+Records.swift */; }; - B592BEA6F00B6CB2A68FF21EE18DCCE5 /* FTS4.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2887F0AA90E8BCE5770880C29DE7A352 /* FTS4.swift */; }; - B5BD23A986AE4105F69C2B55D33E7C16 /* NstBoardIremH3001.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D590C9367D4C2F143D62824E62B38A22 /* NstBoardIremH3001.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - B5D6CE0D394758534DD7E34A47403E48 /* storage_backend.h in Headers */ = {isa = PBXBuildFile; fileRef = AF7E5DD1EC29C39C5361D565B80B1F4A /* storage_backend.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B607E92215B251862E89FC61EBED9DE7 /* DepthBufferRender.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EB97E3AEF3926985796B7557459FF17 /* DepthBufferRender.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B60859CB163787381D4232E0D2B21D89 /* NstBoardBmcMarioParty7in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0214CC9FB94D7F62C618FF6E2B0545AF /* NstBoardBmcMarioParty7in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - B681EDCAAD1B7F9C2AB1CA93C9CDDF76 /* N64.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAFD8C47B27463105661192057489529 /* N64.swift */; }; - B68B1008E56F059A8E9F9595DED94888 /* GTMDebugSelectorValidation.h in Headers */ = {isa = PBXBuildFile; fileRef = 573983B379A6F917F1D0E630D5F87BC0 /* GTMDebugSelectorValidation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B6A2F3D339E12B281DC38B44891BD887 /* Data+Compression.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2794F0E81271A9277E8D45290A0CFD7 /* Data+Compression.swift */; }; - B6A58C39953291EF95ABD670C2BB7567 /* boolean.h in Headers */ = {isa = PBXBuildFile; fileRef = 2446F97C02AA807C685688B670B100E0 /* boolean.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B6D7D63A6DAB7D28925A83B78BFB5BD2 /* NstBoardFutureMedia.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 80755B82AF70446405D291677D326580 /* NstBoardFutureMedia.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - B70B0A8F42AACEA9D13F8ED6B0B9294B /* joybus.h in Headers */ = {isa = PBXBuildFile; fileRef = 82F7DDA0B0454BF03B850DCA4B50D958 /* joybus.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B7580E5FB600540A81EFBBD92F4D2481 /* Standard.deltamapping in Resources */ = {isa = PBXBuildFile; fileRef = BA5A911460257B649D548DEC2743EBAC /* Standard.deltamapping */; }; - B7700BAC19F020CB40453186DF9849FD /* opengl_Parameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C3F5F7CFA10B9A59EC34BF55C18409D4 /* opengl_Parameters.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - B7A2DF9E7F64B35ED47772FD30D0F895 /* NstImageDatabase.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 63554737D96E02FD0ADBE502A0DF7F70 /* NstImageDatabase.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - B7A6299173F20D58894FD1D37AEB61B5 /* glsl_SpecialShadersFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A442C84EE462C5C259BB612927BDB81 /* glsl_SpecialShadersFactory.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B7B8341765D2037E50BED119E92D0D21 /* ftlcdfil.h in Headers */ = {isa = PBXBuildFile; fileRef = 159E762F2DEA7F0461C30023E534AE64 /* ftlcdfil.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B7DC017F28355161119F4FA3C4E91F4F /* S2DEX.h in Headers */ = {isa = PBXBuildFile; fileRef = 02A3B26221034C420A16AB2FF912AEF2 /* S2DEX.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B7F2829D5E615C9FE9BA9DDEEB6E5792 /* opengl_TextureManipulationObjectFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 83E1AEBAC7522B8885FDC3AB45444BBA /* opengl_TextureManipulationObjectFactory.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - B80581C8966E8B7BC0F259879A30BA03 /* armdis.h in Headers */ = {isa = PBXBuildFile; fileRef = EE78344F8EBA8AC77023F528A9B6884B /* armdis.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B82B79CE34A62F9D81402B0A3E3750A3 /* seta.h in Headers */ = {isa = PBXBuildFile; fileRef = DE8BBEE21041E1DDC6767E1CF2E08A2B /* seta.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B8D038096F0DBDE518092569E0E0F24B /* STTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A985E790712C4FBE9D43545565A765F /* STTypes.h */; settings = {ATTRIBUTES = (Project, ); }; }; - B9F000B4DF36077EA8624B868840FE62 /* NstBoardBtlPikachuY2k.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D5750EF90778F9C6487BCBA814D242A9 /* NstBoardBtlPikachuY2k.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - BA19CCBCB9B3290B65D8C1AFBD04D34E /* RSTCollectionViewGridLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = C18C884682C7ECAC03EECEC48850DEF4 /* RSTCollectionViewGridLayout.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BA1E27A0B34E6FCD48E87AE97A999624 /* cp0.h in Headers */ = {isa = PBXBuildFile; fileRef = 66C9224567E1ABD1BBE56C13676AA651 /* cp0.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BA78078395356533B4B348E58F36F13D /* SoundFileReader.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9C759217D7F7F9F5528B957A3C21E86B /* SoundFileReader.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - BB0CFB82073B9090363ADA3150515534 /* Harmony-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = FB787201018DEDE00599C797249329FE /* Harmony-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BB204F0B87FBE86FB4E0335A88F05822 /* NstIoLine.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5319520781E4552200187ABF1B7EF34E /* NstIoLine.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - BB56F29B3B3E0E18ED228F3D8627690E /* NstApiVideo.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 64EDE4DCAD9981AA23A033A7716C28DE /* NstApiVideo.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - BB91F0F9900A599B5FC87A4538B32EC5 /* KeyedContainers+ManagedValues.swift in Sources */ = {isa = PBXBuildFile; fileRef = 080E3EE451ACCC00BBE495E36322F9E8 /* KeyedContainers+ManagedValues.swift */; }; - BBB7B546DA75412C4E2623C173D916B2 /* UploadRecordsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFFB99DA7E90D592C9D8D1B6704E4134 /* UploadRecordsOperation.swift */; }; - BBBA96559E529007438B47C2F60D6F6E /* cheats.h in Headers */ = {isa = PBXBuildFile; fileRef = CFFFDF983674973D9E671FB2EAD347EC /* cheats.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BBCE70F4DE792DEA49D2FB8E3B6C58B3 /* NLS.h in Headers */ = {isa = PBXBuildFile; fileRef = E62D7560CEDC11AB8A9C41117C73E387 /* NLS.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BBCFD07C2144C77FF60AC9FEB4FD6270 /* NstBoardAcclaimMcAcc.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 41080B7DCEEB1F472E82B66096228A24 /* NstBoardAcclaimMcAcc.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - BBDFE238DD99C97F8607B46608B044B0 /* dsp.h in Headers */ = {isa = PBXBuildFile; fileRef = 64243D5F5D7188C2645AF800E611144D /* dsp.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BBEAABDD4C5DFC649B46AB53D0BE9395 /* ZIPFoundation-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F4912D5F8E8AA63C9F6417DD320A1C6 /* ZIPFoundation-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BBEB85FC73346DFE66CE6FD399995E23 /* flashram.h in Headers */ = {isa = PBXBuildFile; fileRef = 3084DE1F8EACD7F5FE7A7BCAAB89F024 /* flashram.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BC024DE60CB0B1CE1EE1FE7AE0E3980E /* ZSort.h in Headers */ = {isa = PBXBuildFile; fileRef = 002FAC5A5D04FB9C83E9E5A45031CCFC /* ZSort.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BC2BC027F91DE7F29EE0EF17ABD6B65F /* DSi.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CE123C6217FBA6E9407242245691A7F /* DSi.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BC4EB746D2E13352424A93FDC7A52F78 /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = F277C96C222F36E6CCE96F066C0292B9 /* Errors.swift */; }; - BC6F7705E69B5ADB6047CA5FC50A8F36 /* F3DEX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCB81111BE67E8E2D3B9FE4038E241C5 /* F3DEX2.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - BC97C74B9428DECEFA8EF9828D953839 /* L3DEX.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6D5D26B79B3CFF7C1E3A7401D9FEACA3 /* L3DEX.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - BCA8AF268444479F7EA70DBAE5AD5D6F /* Standard.deltaskin in Resources */ = {isa = PBXBuildFile; fileRef = 79A9169FAA91BB5E2459CF07BEB0D5B9 /* Standard.deltaskin */; }; - BCBB9FD24D687314062C2EDA97842269 /* mp3.c in Sources */ = {isa = PBXBuildFile; fileRef = 9F94AD77DF7A5DA24170D797BA9FBF6A /* mp3.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - BCBC68A38842DD0CC09012BF828D764D /* F3DBETA.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 31CD50A197BC5998E93424311832926C /* F3DBETA.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - BCC3B83B11F726387F8C0A3568E470D1 /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = FB23491CA81D5C2441595CFDB66E8D32 /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BCCF0B9F15A1651547EADC31A6CEB5C2 /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = ED28BE1D7327BA6ABFA7B757E13A6EBB /* SDWebImageCompat.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BCD05169D15B1FDAED9DF5DFB2577E7A /* ftgloadr.h in Headers */ = {isa = PBXBuildFile; fileRef = 02286DDAB8EB849E5F4F631424338597 /* ftgloadr.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BCFEA889CD7AEC013C76FA6F4811433B /* pshints.h in Headers */ = {isa = PBXBuildFile; fileRef = 6580F4C2274C34D00440BE9DA14D9163 /* pshints.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BD5EE8972A4621BCC39CC315EA4AC859 /* ARM_InstrInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 59688EC1AF84F9F5BFD059FAF099E547 /* ARM_InstrInfo.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - BDB020B98485BF26166B76AB7A56D7C9 /* NESDeltaCore-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FB8DC1C23FE7CB1124719080DD2D99B /* NESDeltaCore-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BE5D56A08A2FE610ED4E3C6B1FAD66D8 /* svpsinfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 9ADD34F7EAAFEB87DB50E40EC1A3BFCB /* svpsinfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BE76C467F47D91A3B2E0C8A97901F80F /* assem_x64.h in Headers */ = {isa = PBXBuildFile; fileRef = E1A9CCAB6664B2A074EE28AABAB52B72 /* assem_x64.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BEC447CCC0BF81924C3C7DF0C45C0189 /* NstBoardSuperGame.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F6053E86238B20D5AB5C0D016FD76C54 /* NstBoardSuperGame.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - BED897B3C9422B4442A5B57E0EFF9828 /* WifiAP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CF1439CA418CD15261C7A8EAE10EB5BC /* WifiAP.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - BEF64C8641EC01A5110E5C35A1CBEF5E /* NstBoardNamcot175.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 486BC9257EA9F392E1D90CC596A28F8E /* NstBoardNamcot175.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - BF007953AD85268DAADE95A4578790FE /* GTLRDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 44BD07F028973D4260A9A797E772F208 /* GTLRDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BF17755E77856591F20F2089AD2DFB43 /* remote.h in Headers */ = {isa = PBXBuildFile; fileRef = AD42DE387B2C0E917AB941E3FD7B6A93 /* remote.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BF49E048B33E06B38EA4352E9544F271 /* ftlist.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AB6FC8C7DD1084EC3948A0C27CB95AD /* ftlist.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BF603F7AEB59322649E307BD1F692D17 /* Ext_TxFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = AFDCE5601B93C61AFC1C8AA0B5227B87 /* Ext_TxFilter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BF6B7E8A00D34D41A6D36E4D04C95EEB /* GBASoundDriver.mm in Sources */ = {isa = PBXBuildFile; fileRef = DAC5B00D89BE3A1F8CE58319DBEC7878 /* GBASoundDriver.mm */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - BF8BA5395C9DBFA6325D84308D13392C /* gfx3d.h in Headers */ = {isa = PBXBuildFile; fileRef = C8A455672E315E4E14C757C97BD055DC /* gfx3d.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BF962D69824F6135E148CD9150A707D4 /* RSTSearchController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C31B46F7AC04C4AD902BD8C6D0A36FD /* RSTSearchController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BF9CB5E743494E5C6D33D000367BFDF1 /* interrupt.h in Headers */ = {isa = PBXBuildFile; fileRef = 20079F8AEED9F1802083DFC0C96CA78D /* interrupt.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BFB9E16A473FC19EC99F355011C34A45 /* DriveService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85E469198AF1A954FE1092AC0B7CC6E5 /* DriveService.swift */; }; - BFC1020FD297C46426A045C37BD06F09 /* BlendMode.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0FA52329FB92261328CE11D29DA4729D /* BlendMode.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - BFC6EF4DBED4237DBEEC03A4E28C9D99 /* RSTArrayDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 75E436302DDA837379AD674034926994 /* RSTArrayDataSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BFEBE9FB3CFB5B2005A5560B27B195D2 /* PostProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = F6A3B301C991075D4B3FF42F509F52CC /* PostProcessor.h */; settings = {ATTRIBUTES = (Project, ); }; }; - BFF536B78DC4850A4A285C1D03F56057 /* SQLite.h in Headers */ = {isa = PBXBuildFile; fileRef = 12FF6FB31C4FC8525FF9C9D35EDCABC3 /* SQLite.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C0284CAA9055BDD1995683D6BCCE283A /* GTLRUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = FCA3A4E5B21B603E44C4DA3AB87595F8 /* GTLRUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C033C1B48A7F3C489DAE53E790408AD5 /* F3DBETA.h in Headers */ = {isa = PBXBuildFile; fileRef = A3AFBD4D6DD33E13C3465A15306A2B00 /* F3DBETA.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C038FA212453EEBFD27DCCB621B001FC /* PngFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 0915A8A8FD68805FFEF8B3FE4574D3ED /* PngFile.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C066FB3505E2896E64EAB2B348787CBB /* NstRam.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9E829053598FCB2162A7028C5496201F /* NstRam.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - C0690B14B39CADE96E4EC96B8A40BF18 /* Version+Revision.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C3C0CF8A1A1493173F125B368A6482D /* Version+Revision.swift */; }; - C0930BAA53EBC4F90F3DECE2AB870F86 /* FrameBufferInfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 630E76E9982F336E68492B3A4E807B1B /* FrameBufferInfo.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - C0A24CC75E25B19FD30BA14481521C22 /* fxp.h in Headers */ = {isa = PBXBuildFile; fileRef = B6BAFAD7FC6CB3785A7435A2B33B2CCC /* fxp.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C11404A581B684B89073D59DACA5C59B /* Result+Drive.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47021C79C17197132C70681E80FE73E7 /* Result+Drive.swift */; }; - C132B8628DC7B8B6A206F64C9B344197 /* Packet.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B583513D16011258D024CAA92DE220E5 /* Packet.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - C15FE401E462A35621D1B0D7DF14855B /* GTLRDriveObjects.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DD7DBBB3619EE9EEDB725158C211C8C /* GTLRDriveObjects.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - C16CA790695F62E7ACCD2C5A487F771D /* F3DDKR.h in Headers */ = {isa = PBXBuildFile; fileRef = EBBF0F52DC2647A34571C5A29A7288EC /* F3DDKR.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C1959B0174FBB944CE6CB8CC8D1EEBA2 /* RSP.h in Headers */ = {isa = PBXBuildFile; fileRef = BFCDF82DC04C88C75B3D8161C5D421F7 /* RSP.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C1E2E7B70123C6D61C0EFADE27F3E3B7 /* NstVector.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 558D9D4AF4FD877E9D9E664114B314BD /* NstVector.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - C1E65AB0622C9F314387880B5C7287D6 /* ttunpat.h in Headers */ = {isa = PBXBuildFile; fileRef = AD5DDDE2BEA93A785ED850AB4D9BD35F /* ttunpat.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C248682ADEF210229804D75C50213953 /* glext.h in Headers */ = {isa = PBXBuildFile; fileRef = EE88D048E0D8D237D067EFE90BCA3795 /* glext.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C26465F925E7FD1E67AEE836FE81DDEA /* alist.h in Headers */ = {isa = PBXBuildFile; fileRef = F9FF6F125A28116A8BF1C9F823696326 /* alist.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C2B029657ED086EB18C6CDEB4C9FE684 /* RTC.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CA5583ED66F123D9936860E31100A9D /* RTC.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C2BB840E16DAD254315C3AD6F6583902 /* NstBoardSachenSa72007.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 034408F49E69BBF4869CD4B2ED4A721E /* NstBoardSachenSa72007.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - C2C5E95A3778956D900630B30127E6BC /* GoogleAPIClientForREST-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3834E77F63953D87853DE315E253E447 /* GoogleAPIClientForREST-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C2C99AB8E5AAAA60ECDD43BE9878FCE1 /* NstInpPaddle.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7399F092CF6A11F36EBBE6E4BB641D7B /* NstInpPaddle.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - C2D24B983D4CDBBE64DE16EF2934FA71 /* NstInpTopRider.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8BB755876312B736E34924DCD04E0CEF /* NstInpTopRider.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - C2EB4CB575EA9821E30A317574865D17 /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BBF21DB7D0A3DEFC2DB5CF5C384EC77 /* MultipartFormData.swift */; }; - C2F3EDD461B805D1FBD10087E431E381 /* Keyboard.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C43CE2D8DBCA4BFAFD1EE83286D5548E /* Keyboard.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - C3107BC4C75C1F33A344ED66A0E208C5 /* uncopyable.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F4299F82CCE6A563897642AFA66DD0A /* uncopyable.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C358FDDBC3C4E22CA76A09F621C36E39 /* gDP.h in Headers */ = {isa = PBXBuildFile; fileRef = BFC270FA492B80F26EE2D1971BDB032F /* gDP.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C36BF1C15454DC06DAA4DAD39697C868 /* NstBoardTengenRambo1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E820CA086154606549F50A37722699CD /* NstBoardTengenRambo1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - C36D579CB50231541D13EA465103D94D /* dcheck.h in Headers */ = {isa = PBXBuildFile; fileRef = FD54E6079E9F42AB9DFA70DC6CB773B4 /* dcheck.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C3C28A3C9DDC736F29C3A0E57B59EA8C /* osal_files_ios.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3B5AEE693F04A288AD606B62A80145EC /* osal_files_ios.mm */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - C3C92AD6CDBE26844CEEFE530AF875AD /* hle_external.h in Headers */ = {isa = PBXBuildFile; fileRef = EA54699E526C9FB651ED0197CF640FA2 /* hle_external.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C3DD7FF6DB0DFFE0FE3E7650E731701B /* cpu_detect.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CAEB53047F521490F56979320D6CAE8 /* cpu_detect.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C40814FFBB8C0971FB4F63609AC1B837 /* RSTPlaceholderView.h in Headers */ = {isa = PBXBuildFile; fileRef = C5A521BDA3D4D828577B2C553889402E /* RSTPlaceholderView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C41903AD7013A8B9709D3EC574FF9D21 /* GTLRService.m in Sources */ = {isa = PBXBuildFile; fileRef = A8E6AB2F458571355560DBA9096AB908 /* GTLRService.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - C42C9B4C5A5AA7B1FAC27F0346C87396 /* GTLRURITemplate.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E7A1D4D282B1A61276595B3F2DA9630 /* GTLRURITemplate.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - C434929D498191D7370AD9B519F2C7FF /* TeamRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F02264297230F05D9C1178C000E04EC /* TeamRoutes.swift */; }; - C4CE02B3937CEC49869498DF3BCCEEA7 /* clamping.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E1607B169D526DA6008EF98D01686F4 /* clamping.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C4E4E904C4786F5D803F6B37180BF92C /* NESEmulatorBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = C18B6C47E8288613C0286D154B5B3E87 /* NESEmulatorBridge.swift */; }; - C5028985B9FCE24D815EA3F82FF7FA33 /* RemoteFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F4835ABD4E04214332523B9D3BEAFBD /* RemoteFile.swift */; }; - C52EA4CF528D1EFABB4C44096DFF3BB4 /* pi_controller.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AA4A76158FC76286A207229EAE68AC7 /* pi_controller.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C53A2E7808CDE17647AA04389DE107D6 /* MFiGameController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A604EDBD0ED6BCB60B4666DD06603598 /* MFiGameController.swift */; }; - C54B5FD5C70CD9D02039384737E31EE1 /* ContactsRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 124410B31A9E378F93FDB8A1B6FA19A2 /* ContactsRoutes.swift */; }; - C5791073FDD7C95436D83F1D1B6A0476 /* re2.c in Sources */ = {isa = PBXBuildFile; fileRef = 82C0A84FFD08BB92E25F7D35985941FF /* re2.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - C588951D1C2400E86ACB3CF6C096820C /* util.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BE3FE94F56D674F98DFC3E6F87C031F /* util.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C5AF86847195A800EA4D19CD8147B03F /* PACKED_END.h in Headers */ = {isa = PBXBuildFile; fileRef = 1121FEE3395F16CC1F8194DF4B4B26F5 /* PACKED_END.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C60AC4C065C30B5F8DBBACE3779814CE /* Context.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CA13F866561098C20DA5F46FB89C6E5E /* Context.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - C611E88BFF38E2D8F0DD02BFBBFB282B /* CRC.h in Headers */ = {isa = PBXBuildFile; fileRef = 3589E77615ABDBF3CF0EA3AB7C5E1D95 /* CRC.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C6625E357CAC034BB823DD859355FB88 /* GTLRQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = BB1A039FF5440BBD2EF096501C8ED363 /* GTLRQuery.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C68F143AF0613E98AFF83799BF0A63B7 /* F3DEX2.h in Headers */ = {isa = PBXBuildFile; fileRef = DA8B343AC9C1338C3570E381AFDEE8A9 /* F3DEX2.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C6C7CDA22F0070F27A47D590F055472F /* glsl_CombinerProgramBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F479D170EB4EF8FE5B9911A5F7E28C9D /* glsl_CombinerProgramBuilder.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - C70345FD3D8E41D0D3BFFF6E34B05DF2 /* OGLRender.h in Headers */ = {isa = PBXBuildFile; fileRef = FB7B9AA2049E61CFE3058E49DB95309B /* OGLRender.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C72087EDCF1BAE223A1BB8C94BA87329 /* Statement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30B4C2B542657C7F8695159F71616D5B /* Statement.swift */; }; - C72F5975C407A2591DC28BE701AADEDC /* Socket.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F5E0C5BD4404D72AE97B455739B66597 /* Socket.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - C748A8445040935071BCC24540001457 /* ColorBufferToRDRAMStub.h in Headers */ = {isa = PBXBuildFile; fileRef = C5E2A01A988D91DD8415895D818B7687 /* ColorBufferToRDRAMStub.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C7590A3F8F720983338D1EEBAFE19D85 /* DepthBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4005F94E5B76C80D44EA7897028C3F79 /* DepthBuffer.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - C767C381E88CCD818F40245A092E0EE6 /* scmrev.h in Headers */ = {isa = PBXBuildFile; fileRef = 8EDF76EEB504EA9C6E5BC40133A1CD4A /* scmrev.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C782E1952A2901DF365F50ADDE27E9AD /* NstBoardJaleco.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5A649205CAC73CCB700EBD96CACB950C /* NstBoardJaleco.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - C83C5CDA13B192B23AB4B3A3EF74EC10 /* ARMInterpreter_ALU.h in Headers */ = {isa = PBXBuildFile; fileRef = 049F12874DA5E36EE56D0BE87FCE8F0A /* ARMInterpreter_ALU.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C85C7A7CD776B7EC257D30EC5808AC37 /* NstCartridgeRomset.hpp in Headers */ = {isa = PBXBuildFile; fileRef = ACB7BE62D01D8529D18C2156032C50F9 /* NstCartridgeRomset.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - C860D24982B836D74FE6ADAB6669120D /* gralloc.h in Headers */ = {isa = PBXBuildFile; fileRef = 8ED7F5795231E9584D1AD395E6DA5325 /* gralloc.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C88929863F1CF5BA80810456E020CA58 /* NstState.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 31BA01A55D20E1D2E1B775E15F86FBC9 /* NstState.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - C88B315FF9631005A303C826153F06ED /* NstBoardBtlDragonNinja.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6E79A1DD149F886D0C22350E0E1FD947 /* NstBoardBtlDragonNinja.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - C892F3AEC15B09C0A27C7892B5A318A1 /* NstBoardSachenTcu.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 12FF380A8BE99A902168B4E06D894342 /* NstBoardSachenTcu.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - C8A3566473A4C5C977A251724F140FED /* GPU3D_OpenGL_shaders.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F3E1A7FCFBED0C2B25120A907814BB8 /* GPU3D_OpenGL_shaders.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C8B33D9084C93E2AB7BFBF20AAC12D03 /* UITableView+CellContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E6F82D29353E7C4BB91DFDD062C0295 /* UITableView+CellContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C8FB4BA0B4141C448911CC0F46E5BEB6 /* Standard.deltaskin in Resources */ = {isa = PBXBuildFile; fileRef = D3B5120B0C39B7F86050343E396C4A75 /* Standard.deltaskin */; }; - C92C06D170E26383E92394EECD50BEE4 /* NstZlib.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FA0EAC9414F0445D01B6398BB5FE1B37 /* NstZlib.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - C9898D393FDF7E17C404424E76078E76 /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = C5D0C48AB270EA1136E55E203CF7D378 /* NSData+ImageContentType.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C99C48EF8B5ED63B3D30A0AA3B1DC8E3 /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D83D5A2599C2FB66047AFC3E59C193B /* version.h */; settings = {ATTRIBUTES = (Project, ); }; }; - C9A5140D9C4022FF29A78033FA412252 /* RSTRelationshipPreservingMergePolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = B2DC17B4AF6D9CB3636E72FAE616CC65 /* RSTRelationshipPreservingMergePolicy.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CA3A264B806358F8266FD7EFEABAA214 /* RSTCellContentDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 992E41C587003D0F3D48E308026E7D20 /* RSTCellContentDataSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CAA00E78DF6EE8866D1900E83077555B /* clock_backend.h in Headers */ = {isa = PBXBuildFile; fileRef = EBD465957DEA0FDAC85062F920F1CD4F /* clock_backend.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CACEC3EBC1E82B6AB72E9B95C64A53D1 /* pngset.c in Sources */ = {isa = PBXBuildFile; fileRef = D4C4889886A38026ACF6B2874E1522CB /* pngset.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - CAFD9A110A8B1B3DF6BAFD9ACCE611E5 /* NstBoardBandaiAerobicsStudio.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0822A93FA2FE0A999BF470D0E75D5B09 /* NstBoardBandaiAerobicsStudio.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - CB593D0F01F151691266CDF0248C3B25 /* ftchapters.h in Headers */ = {isa = PBXBuildFile; fileRef = 15D5D5B75D61919734F2AC90A1DD9349 /* ftchapters.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CB6DCC8A0EC861C714CF80DDDFDC05CF /* TcpSocket.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4C80ED7AACB70B3A24D156BAD539073C /* TcpSocket.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - CB7A5FD2D111FB945D4C60F8F9CEB90A /* RTree.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE37500E60282A9A4012827461E8C2AC /* RTree.swift */; }; - CB86477843A1BDE5C1A20DB1A4A67AD0 /* bitmap_font.h in Headers */ = {isa = PBXBuildFile; fileRef = 9998929B47BFB3D5C9FB8D8B6A9D4556 /* bitmap_font.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CB892F948B4A1CE546B6024A38FF355A /* glsl_CombinerInputs.h in Headers */ = {isa = PBXBuildFile; fileRef = 798227D438D94FDBFF310CC759EAE46E /* glsl_CombinerInputs.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CB89D2169BD74B5661F083D55A15A5F5 /* list.h in Headers */ = {isa = PBXBuildFile; fileRef = 4295015512B1861071F1267DFFAEDB65 /* list.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CB97234A854C16E3044AA05292155CDC /* ARMJIT_Compiler.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D8916F809917C9FF65ECB1F790C1B4C /* ARMJIT_Compiler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CBACCC1E63B7DAF6D17D95D793F1BFF9 /* tile.h in Headers */ = {isa = PBXBuildFile; fileRef = EA6735B71BF0C9298798041E23627733 /* tile.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CBB58084F57F1758BE702C7A652938B7 /* ShaderProgram.h in Headers */ = {isa = PBXBuildFile; fileRef = 04F05000812B8F68BC675FCB4E41F352 /* ShaderProgram.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CBD00AD2D050E606B432EF764F0443EF /* FTS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19DAEF74182F401F21DF4FA82B1FD4B2 /* FTS5.swift */; }; - CBDDEEB5FD00E2536CAA6798EB0B9614 /* pngdebug.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D704AF114180DB3C2B804374D80F1A4 /* pngdebug.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CBF7C93EDC7B0B7F23895A64F75CB788 /* cpuaddr.h in Headers */ = {isa = PBXBuildFile; fileRef = F6A7E56CB63D6D8E0CDF3FA942D6464F /* cpuaddr.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CC19C9F9E4365C7D6BFC993E1B5139C4 /* NstBoardBtlSmb3.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5D57A60C924E146594EED858F1420616 /* NstBoardBtlSmb3.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - CC1E60842AD3A4730944F47A55762DB4 /* ftadvanc.h in Headers */ = {isa = PBXBuildFile; fileRef = 11D049BB4980BC282A583112800A2ADE /* ftadvanc.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CC376EAD4BBE7915A66DC7558B29568D /* DSDeltaCore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CA3D8C154FC7E7043473A1E7BF36F6A /* DSDeltaCore-dummy.m */; }; - CC40F2F63D4C93B0A650FF5DDDAACD2B /* FrameBufferInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B35578B79FEC9A16A3E4269BBB3FC25 /* FrameBufferInfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CC5A0AC6A5A3ABA437F184DC6AD59AE5 /* TeamLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = C585C47CE6EF972B1E2B823683528538 /* TeamLog.swift */; }; - CC78DAA6DAC348D70DD450FF0690A542 /* SNES.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20958FCE97729493E3EEDE7735EA6DC0 /* SNES.swift */; }; - CC850BD3611696329B9F261528496A20 /* Files.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33FE7D465ECFED221B87424469C67A9C /* Files.swift */; }; - CC885EAFB977CCD3581BF9BAE398BF3E /* DisplayLoadProgress.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B330278331086A56BB545C3BA6BA37A /* DisplayLoadProgress.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CC923B2E0DF84CE4BD8578D08859CCB9 /* NstBoardBtl2708.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 21A579DB6758386B94532FEDF1A6AE83 /* NstBoardBtl2708.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - CCBC3062A244649C883D15B00DBCFCDD /* NstBoardBmcSuper700in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9DE70241C62510EEE3541EEE817748AB /* NstBoardBmcSuper700in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - CCBD5DD6D26AF606302FC9AC7201C67B /* version.h in Headers */ = {isa = PBXBuildFile; fileRef = 62DD79380FB82BE3E640F5E37A033D2A /* version.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CCFA3FE78D07630DABEBF4BC4A79A0CD /* NstChips.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 00E90E8D37F1149602CB0A8EAE2315BD /* NstChips.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - CD1250D06D079154D9781B344D80DE2F /* osal_dynamiclib.h in Headers */ = {isa = PBXBuildFile; fileRef = 76DF66FD0433C0D83850AB50832BBB5D /* osal_dynamiclib.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CD166B19C907229715CB08A27A9A4058 /* Standard.deltaskin in Resources */ = {isa = PBXBuildFile; fileRef = 91D6EF33C40FBE5178F5D4A25205F2CC /* Standard.deltaskin */; }; - CD4CF54F71DD6CA94C23A6E7D7F28341 /* NstBoardIremG101.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 94FE76DE5D5A9568223AB04C135E60EF /* NstBoardIremG101.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - CD62981801F5FD40C0C5B125777777D3 /* NstBoardSunsoft2.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CBF54EAAEEF559EFA0CAE545447FBC66 /* NstBoardSunsoft2.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - CD647751FAAD5773BE4F6986812E3ABE /* convert.h in Headers */ = {isa = PBXBuildFile; fileRef = 167590E49B4455FE4412AB737F2E748E /* convert.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CDD28AC1BB0F07E4991F10641F3B3ACD /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 602F93ECC989A3FB6D04031D00DE62E5 /* SDWebImagePrefetcher.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - CDD75DADD1260AEBFBD2D472C698BA72 /* conffile.h in Headers */ = {isa = PBXBuildFile; fileRef = E4713AD1D2C3007EBBF6A5594799CAA8 /* conffile.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CDE735468E45B7FA20DD3A6C7ACED840 /* NstBoardJalecoJf11.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6AF170B2C4B6266F17CC25ABB8608BBA /* NstBoardJalecoJf11.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - CE3267E59B0E84FEEFEB42DFE38A734B /* GLideN64.h in Headers */ = {isa = PBXBuildFile; fileRef = D6888C59420839F1A4C9BFE9336F7FA7 /* GLideN64.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CE53CCCB3E229E3DB45DFF68C4FFB2D1 /* dummy_rsp.h in Headers */ = {isa = PBXBuildFile; fileRef = AAFF25207CC13A8FEAED05C5BFA5C899 /* dummy_rsp.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CE8AAB3136F559819A00B8D97E98F84C /* NstPatcher.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8738A81CD26E2DD7D3D470F3FBACA59F /* NstPatcher.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - CEA0636DBD4965625F6481DC8359BC6A /* glsl_FXAA.h in Headers */ = {isa = PBXBuildFile; fileRef = 9ACA261D60E7D6D3A3AD8AF6EF5497F4 /* glsl_FXAA.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CF39B4CDA98A0ADB68AF732260524AA0 /* new_dynarec.h in Headers */ = {isa = PBXBuildFile; fileRef = E24F3C6FD9134EDD33136C2B924CE6D5 /* new_dynarec.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CF3D150D4790397083A4C881EE7587AF /* String.inl in Headers */ = {isa = PBXBuildFile; fileRef = 1FBCB41DB5CD1A031B2554AFF01D2CBA /* String.inl */; settings = {ATTRIBUTES = (Project, ); }; }; - CF4C9AE3C8CB228319083E49EB681F04 /* UsersRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00454C669FBEBF5003E744A5BB78F1E9 /* UsersRoutes.swift */; }; - CF970290282A16235F800AACB19F0C2E /* NstTracker.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0EE5EA87866BE9F75ADE0CEC54CD3C3E /* NstTracker.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - CF9E650AD6E81CD92418FCAF4F3B1653 /* NstBoardNihon.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4C6751C1E3ED18714B1C75FC69A15785 /* NstBoardNihon.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - CFCC4883EF894FB2BC8620BD239BFB89 /* Platform.h in Headers */ = {isa = PBXBuildFile; fileRef = 186E4D584EAF0599FAE8D2C3DEC77610 /* Platform.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CFE1ACDDF83BF8D59EE8E2F3694EFC7A /* ftotval.h in Headers */ = {isa = PBXBuildFile; fileRef = 89DDD93BACEF9EB671526569CA75051C /* ftotval.h */; settings = {ATTRIBUTES = (Project, ); }; }; - CFE6D92EAF477A834A6183E07EB2F478 /* NstBoardBtlSmb2a.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1860E76F985D5A714D179B33FFD5BB6C /* NstBoardBtlSmb2a.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - D0109C7337E53C42F42E65FCB417A1A6 /* NstSoundPlayer.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 27D3B21A69C25C9875EE21E693E04929 /* NstSoundPlayer.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - D014CF609A39EFBEC89B0EB7508AC54B /* pnginfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AE46C1188FFBFEE4C46B521C3217396 /* pnginfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D028F89A3C7A6C1B3E338F6877AEA5CB /* RSTNibView.h in Headers */ = {isa = PBXBuildFile; fileRef = 581A65FCD0F46B12750D1A97347AB2B5 /* RSTNibView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D0A464A9733A6017E236CF10B1D897F0 /* TxHiResCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5DF031ED2E064E1AC6802B1154B81D64 /* TxHiResCache.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D0A677BC713110416D5C821975836C37 /* GTLRDriveObjects.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C6BC0D076F377BD8D6A2EAB196A9653 /* GTLRDriveObjects.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D0D7897C98D5C53E81A3E6B9AAB9C9B4 /* DSi_SPI_TSC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 96852635ABD2522BA2288FB805549111 /* DSi_SPI_TSC.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D13B97FF156A000B9E1FB1E6AA55BCA2 /* NstSha1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5FD11B56A547151D7998EE69BE6D6099 /* NstSha1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - D13DF48BFDDC53D56DC556BBE5D2FA67 /* opengl_ContextImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E9CDE82CCB93756FEC5D7573B4EDC45 /* opengl_ContextImpl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D15A119D4B56D12B8EB25AC0037B1FAC /* netplay.h in Headers */ = {isa = PBXBuildFile; fileRef = 80A3D8CB0999B0CF69939F4D68ABB6FD /* netplay.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D164118F5D9342A86BA96D252D7C6870 /* DropboxService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C480DC524814D199544CFC4E5FFF079 /* DropboxService.swift */; }; - D16E7C265E542D13F12B62B042AD73F3 /* ftttdrv.h in Headers */ = {isa = PBXBuildFile; fileRef = 15A8530EE36D88106BF630FB90768067 /* ftttdrv.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D1A86A4CE91207E9D1615F195026E6C1 /* System.h in Headers */ = {isa = PBXBuildFile; fileRef = 622E5F8984D2433536E5431EA4AED70A /* System.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D2015F4B0F0128219004B6100D0A15CF /* GBCDeltaCore.h in Headers */ = {isa = PBXBuildFile; fileRef = C00389F561DF027611FE10DCFAEBB459 /* GBCDeltaCore.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D21FA0B1E677F37B8B6816C9FC08EC82 /* GTLRBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D25D90C2F0571F2A637C30B9B936472 /* GTLRBase64.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D25EE90E04D6167B04E134E40B324AB1 /* GTLRDrive.h in Headers */ = {isa = PBXBuildFile; fileRef = 4CB7FC1BCCB48A79D26DDA5099AB7393 /* GTLRDrive.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D29D7B8BAD305B285BCAE77A9F64C4F2 /* initstate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0412CEFEC42589B89CE79F45788534DE /* initstate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D29F767DCFAFB0EAD75CE7C3FCB34916 /* NstBoardSubor.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 70D4235B8815A8BC69AC2EAA39D4C907 /* NstBoardSubor.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - D312152A6A449362B07BEDD81101F3C1 /* mi_controller.h in Headers */ = {isa = PBXBuildFile; fileRef = 821220B8544FBE32E0038B8AF495F752 /* mi_controller.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D333B1E476E899C1131D0ED4044BFBA9 /* Joystick.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 7EF3ABFC7AE14678E610B97B21FAE01A /* Joystick.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - D3402FEC79C759B618D76054EA4AFA74 /* GTLRDateTime.h in Headers */ = {isa = PBXBuildFile; fileRef = 04CD4DB2EE3E00431E393AF83DA3B925 /* GTLRDateTime.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D3764CCF5D037590A11499CC8ED58782 /* Textures.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E3CBD7C48DB98A30F4405C80F7EAA1F /* Textures.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D38F22D445EFCCBDB5B3A8EA0749960E /* glsl_ShaderPart.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B075DE0CD80E2D791EEF3247B941988 /* glsl_ShaderPart.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D3914BDD63258B8237AD94F7377B9607 /* DeleteRecordOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6471F262D66398DA1B0CB29F07AAE7F8 /* DeleteRecordOperation.swift */; }; - D3A6730308B61D244EF13900891F5B11 /* UITableView+CellContent.m in Sources */ = {isa = PBXBuildFile; fileRef = B291972B633DC4A5B3842B0890871E1A /* UITableView+CellContent.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D3B69165C2C4E8B192A24883A1839772 /* NstVsSuperXevious.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 1AA9684D3082E9D448C5105427C93B9C /* NstVsSuperXevious.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - D3D1534FFA6A68B1AFA1A738770AA8CC /* bootrom_hle.h in Headers */ = {isa = PBXBuildFile; fileRef = D55B643E64E489320CE54CCA55999775 /* bootrom_hle.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D3DEAD4C77A168D67D3EC458661D424E /* GTMSessionFetcherLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = B1FE60123D84FA8B290B36D0DA6860F0 /* GTMSessionFetcherLogging.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D40C28117BCCA70BDEF84DD04E056D75 /* pakinfo.h in Headers */ = {isa = PBXBuildFile; fileRef = AE315376CFFFA3D34AEFE17EB1F010F7 /* pakinfo.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D42B2D028C7D5565B45038FA6C1900BC /* alist_audio.c in Sources */ = {isa = PBXBuildFile; fileRef = 978AEBEF5F9470DD343827FA8A8BC268 /* alist_audio.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D45488C0A00AD55510C0E03762BFE37E /* NstVideoFilter2xSaI.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 974F93E63CE627277EF8D2353E2919F1 /* NstVideoFilter2xSaI.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - D474348D385337E6C15FA2882009CCFD /* GTLRDriveQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = 501510C0AB0C2749A39F8FE21E2FDE4E /* GTLRDriveQuery.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D496FA6DB0F82819EBA9321590F1D1CD /* glsl_CombinerProgramImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 523D1A14AEA90148F5FADE454AF67298 /* glsl_CombinerProgramImpl.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D4E30778EC64C2D2F7B3458540396762 /* SDL_thread.h in Headers */ = {isa = PBXBuildFile; fileRef = 2830FE29E3519CEA36C6CF556F3B5A96 /* SDL_thread.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D51AB3BFCC1752CCF56184183A19C465 /* retro_inline.h in Headers */ = {isa = PBXBuildFile; fileRef = 867234B84A6A4263C6FCF1AEA412C255 /* retro_inline.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D5289BB78A99A8254949771B375759CC /* UIAlertAction+Actions.h in Headers */ = {isa = PBXBuildFile; fileRef = CB5D32825165CBF7693660E93DD662BE /* UIAlertAction+Actions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D54749AE8008AF41F370546EA86AF81A /* NstBoardSachen.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BD838C95DCFBB13B57FA390E013E6C96 /* NstBoardSachen.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - D547D8927B90E2D22444D6B23A2F7CA6 /* SoundFileWriter.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AE652CE1AE3F3EB298D947261F75564B /* SoundFileWriter.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - D58CE6E7A372533BE5037B5CC5535EB7 /* UserDefaults+Harmony.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D49B524E10D67094A1B3F467E42C56F /* UserDefaults+Harmony.swift */; }; - D5AE0F5C1BF8680F26BA9589D84722E8 /* GTMNSString+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = D1E2911B0409362E1D0AF530431EF0B4 /* GTMNSString+URLArguments.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc -w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D5AE3A17179545194E9ED8E65E84C8DD /* NstBoardFukutake.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 54D876A40A6A7E60C31B36425AE20C82 /* NstBoardFukutake.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - D5FD3A03D7392BDCFB88416E24E1D4DE /* interrupter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E9F665C35592449F64CC06B2E19D1F7 /* interrupter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D625F1A3297A5C1941B093927F86D583 /* BitmapProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC516D1637980A025ED3E81F54B865B1 /* BitmapProcessor.swift */; }; - D63903D16466C0327FD1CD347254C358 /* UIView+AnimatedHide.m in Sources */ = {isa = PBXBuildFile; fileRef = 2078C8A75422F49B73A18A8341966ECA /* UIView+AnimatedHide.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D6721B35D8B2CAAB96A5AB588F69A333 /* ConflictRecordsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B9122DAE4EE2531BCDB360AE4B3BDC8 /* ConflictRecordsOperation.swift */; }; - D679F18702976A123EC11BFF6587D7FD /* GTMMethodCheck.h in Headers */ = {isa = PBXBuildFile; fileRef = 622C39AE31FBB34625FBFCF26A80CD07 /* GTMMethodCheck.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D6864D2AAA4EBD665AB4C7B076FBEED8 /* NstBoardSomeriTeamSl12.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4F56F120D08F0E96F69A395392A95956 /* NstBoardSomeriTeamSl12.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - D69562A157007BD895C93E05054583FF /* NstInpPowerGlove.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 96B9C98AE2FB1703F672AE93E973DBA9 /* NstInpPowerGlove.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - D69B9B2BC9D465718923F09907710CEB /* Contacts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B0E21ABA43A14EB561A436856C8C529 /* Contacts.swift */; }; - D6D4AAB958D4CD8E3DF970D8071E1356 /* glsl_CombinerProgramImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 39E30E613CDA56DD588A44D7BE635E64 /* glsl_CombinerProgramImpl.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D71AD01EC667AD4357F2C55F8E5E5687 /* NstApiRewinder.hpp in Headers */ = {isa = PBXBuildFile; fileRef = BFD8A03EDF95491D3AF6B42EA8DF046C /* NstApiRewinder.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - D761C99DD4AB08A2F6A7105462FBEDAA /* VertexArray.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 41086B657465737EAC2D550B6731543D /* VertexArray.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - D7E3EE50145AE5670023BB430F559016 /* pngtrans.c in Sources */ = {isa = PBXBuildFile; fileRef = 5D987D9D0A8C1E3B17BBF8CFE400C26F /* pngtrans.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D7E52FECBBCEDB05BC7E477195516D12 /* NSBundle+Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 56994A64B20CCE99B153081DAFA29660 /* NSBundle+Extensions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D81C5F6662C8D60336AE76D1A90F2878 /* Glsl.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6FBA8F55F87E9996DF830682679860C1 /* Glsl.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - D8289A51DF696F2D8D729654D5AF04C8 /* debug.h in Headers */ = {isa = PBXBuildFile; fileRef = 04162C467DC93B5CF84E1E497026A1F7 /* debug.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D847D7DD39249AE3F8B937E71D2D8549 /* DownloadRecordOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5C8402F009295924783BB22CD7E2300 /* DownloadRecordOperation.swift */; }; - D8524A5C842C0580F42718FE94C8F791 /* Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 059E076DC22B421E03349A4BC56852DD /* Alamofire.swift */; }; - D8A98334293775BCC5FACB719D52DCFD /* Cheats.h in Headers */ = {isa = PBXBuildFile; fileRef = A9290CB996AE3BE06C249C534C73B0B6 /* Cheats.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D8E83BAC07A6EB39C3CCB03CEEC79308 /* RSTLaunchViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = EE932796983B701EC66AC97AAA7E3958 /* RSTLaunchViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D8ECFAFC2C3F7D5A7E9863009E3F34D9 /* NoiseTexture.h in Headers */ = {isa = PBXBuildFile; fileRef = 00C134CDE98F9675C63EC844647692DF /* NoiseTexture.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D8F09E6FFEAEFBFFA69546C6F36EF74F /* Coding.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5B49946963C58320761EF205659BBFE /* Coding.swift */; }; - D9053EA1887D31231E02FA356DC28D9C /* CombinerKey.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DD243A88249E6DCF61F368826C03255 /* CombinerKey.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D91D979A999CDAC6EF33D7BCA581A2A7 /* ARMJIT_Internal.h in Headers */ = {isa = PBXBuildFile; fileRef = 15EADA40986FAB7A72D6AAF4AB20C9AA /* ARMJIT_Internal.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D95B3E97E2A0CDF48132C4250EEB3560 /* UICollectionView+CellContent.h in Headers */ = {isa = PBXBuildFile; fileRef = C921B9E65464CFFAF546C7BC52BC2690 /* UICollectionView+CellContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D96FE88F831248E211159EE85CE83B37 /* TxFilterExport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42337BE4912F6FDB485C8933BF93360F /* TxFilterExport.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - D99120B29CE6BC66601832307292D52E /* FileManager+ZIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 779480D51F350F2ABC3479ACDA749DEB /* FileManager+ZIP.swift */; }; - D992B8A8089E95797BDD23C1508E5C6F /* BPMDetect.h in Headers */ = {isa = PBXBuildFile; fileRef = 00FDF8DB9C55F7BD5ECBB83F1E9CD043 /* BPMDetect.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D9A49EF85014C5C6BF97B4CC6394BF83 /* GBACart.h in Headers */ = {isa = PBXBuildFile; fileRef = 68C333FACC662CE4E939F918AC617C95 /* GBACart.h */; settings = {ATTRIBUTES = (Project, ); }; }; - D9C4281F57BE806B93A4897B0C80EB8D /* Utf.inl in Headers */ = {isa = PBXBuildFile; fileRef = B1A3A6D53350C28647A7D877E975305A /* Utf.inl */; settings = {ATTRIBUTES = (Project, ); }; }; - D9D26D6344F9F2D39C9E06335EB5F14A /* NstApiBarcodeReader.hpp in Headers */ = {isa = PBXBuildFile; fileRef = DE2C6C61CC67CA7469F056859895E872 /* NstApiBarcodeReader.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - D9D678A3261AB86A7637EB79F73B0D27 /* GTMSessionFetcher-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BBE4EB7361152D3172AB0C275C92415 /* GTMSessionFetcher-dummy.m */; }; - D9FE95818C5D7D6E656F4825A72B22E0 /* ftcffdrv.h in Headers */ = {isa = PBXBuildFile; fileRef = 6495040233A41FA50D3F1DE4DDF33E32 /* ftcffdrv.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DA0E22364648DAF80BE8E83448C35812 /* pngwtran.c in Sources */ = {isa = PBXBuildFile; fileRef = 5C3725C3F73FD7EF6A253CD24F77B45D /* pngwtran.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - DA48EFAF76AB025D424206406FC6DC9D /* NstBoardBmcVt5201.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 479FB40E896E9E50A08416990B824A5F /* NstBoardBmcVt5201.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - DA7530874529AED0F0F03CCC1A372963 /* DebugDump.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BA97019C69B8E0B74C7FCAF09323FA2 /* DebugDump.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DACED72BA12CC454FA340A4DE50568DA /* UdpSocket.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3D20BEA8EA23644F74F988336C5EF2DA /* UdpSocket.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - DADC28845FD1616FC4A06D2D773E132A /* NstBoardBmcA65as.hpp in Headers */ = {isa = PBXBuildFile; fileRef = DDA8D710ED23A691D5634188624CAE95 /* NstBoardBmcA65as.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - DAE5CEB2B97867FCF3053DBD9F9D95B0 /* biopak.c in Sources */ = {isa = PBXBuildFile; fileRef = F269DBC118D8EAB0C04126CCE8F3643F /* biopak.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - DAEA238647945985C7612F2A23EAC110 /* UIKit+ActivityIndicating.h in Headers */ = {isa = PBXBuildFile; fileRef = 454BB0507C489FE093E5C018F2741A75 /* UIKit+ActivityIndicating.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DB02626D12C516C4CD6A9EA98D20A50A /* SQLite.swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BBBCBFA40EE49208B031D370878AD29 /* SQLite.swift-dummy.m */; }; - DB314701093D3B899B1B8A97525A7D88 /* svttglyf.h in Headers */ = {isa = PBXBuildFile; fileRef = A55C394180A7F5BED4BCC44E933F7F7D /* svttglyf.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DB4B423E6A01C3D1AA385687ECB773BE /* NstInpZapper.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A1D2CF25FCF73AEE83F94574C7DA7428 /* NstInpZapper.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - DB5891014AF5583F4CE70D67063FEBF4 /* SQLite.swift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B88A4A4D429C70A73A2F3F183EC24732 /* SQLite.swift-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DB67DEEADB5E35D71D499D24A832DECB /* freetype.h in Headers */ = {isa = PBXBuildFile; fileRef = C2DB8E70C59303E250CEB59438096FBF /* freetype.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DB858584AD2D2E1AC61B4F0B8AA332AE /* Err.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4C83AE5EE2805FEBB085D004779A6672 /* Err.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - DBAE2ECF55E719B0B86FE6D52947F20E /* NstBoardNitra.hpp in Headers */ = {isa = PBXBuildFile; fileRef = DFA7713F9936F057BB5AE713D7A02EA7 /* NstBoardNitra.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - DBDBD0A26107364F82F3836700D2B2EE /* ConfigDialog.h in Headers */ = {isa = PBXBuildFile; fileRef = 6853448A3628EAC1116E6AF78A25E1E3 /* ConfigDialog.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DBF0A6C0BE990638F43CB71209C4E731 /* SDWebImageDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FBEDF35986AA4976C5186CACDC036A7 /* SDWebImageDecoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DC08D434CF1E06BC742E0585D4CDF714 /* NstBoardWaixing.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B2B586D348CC154D7D85DA7980151DE8 /* NstBoardWaixing.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - DC44E44FA30176DDBEBAA2C2AB67E3A5 /* NstApiDipSwitches.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 359963C733B79E463294068D0FD5E8D4 /* NstApiDipSwitches.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - DC7D1C936FADBB6208D988F5391E65A0 /* NstBoardDreamtech.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A74A97B96B6E21A13679A8B0213D16D2 /* NstBoardDreamtech.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - DC825055565609EB9893A03869591056 /* PixelBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8178B2C482B362D277805FFAD09D4CEA /* PixelBuffer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DCA0F414531F1668E8EA075263811FCF /* glsl_ShaderStorage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 088D1095F736B9610ADEEB47F8D4300A /* glsl_ShaderStorage.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - DD15CE6AE0582D7C24C6AC4BE8AEA8F6 /* NstPatcherUps.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6CFD2D37762609104C0268903A5B6220 /* NstPatcherUps.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - DD19CF3BC93018DE9F1DC0D9C36E4ECC /* Color.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8FEBFCD698F542D5FE33636ACFE7EA51 /* Color.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - DD46C14FD68C81F665E55EA792C141FD /* GTLRObject.m in Sources */ = {isa = PBXBuildFile; fileRef = D63DF8BC0893DD34539EDEF01E7690F8 /* GTLRObject.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - DDD7C7EE0715A345E5BC7FFE2D5E30F8 /* NstBoardUnlSuperFighter3.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 90991BD2C4BD55D140AC55B44C35FB69 /* NstBoardUnlSuperFighter3.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - DDFB9DACF11F9E7E2C6399E40C33A26D /* TouchControllerSkin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2C7D9702EE4283F38E2F4EDF9DB2194D /* TouchControllerSkin.swift */; }; - DE183F7F09A8FF4D07C8A7318225F2E3 /* Vertex.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D7978FB4424D59EC66D8892793EEAC7C /* Vertex.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - DE8916E4BE45C0B758CD786D552E2E07 /* NstImage.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F3B28902F2FA18779F68EE9334C7DAAE /* NstImage.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - DE910F1750CC2290F22CB50ED5614D4C /* audio.c in Sources */ = {isa = PBXBuildFile; fileRef = 06F09F405D39CBB80138B102879DBCC9 /* audio.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - DE929FB785F54BD5536E1EC93CE045EF /* sdl_key_converter.h in Headers */ = {isa = PBXBuildFile; fileRef = AA6DF08716A0603270762C90411D74F8 /* sdl_key_converter.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DECB2C20AD8FED5C62219CDCE3CF55C8 /* FullscreenResolutions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3385A18479B75880DE010A2772BB6529 /* FullscreenResolutions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DED624DFFDA77406657D29F7CD578837 /* NstBoardCnePsb.hpp in Headers */ = {isa = PBXBuildFile; fileRef = DA01508C45515F583F048D703F3BC886 /* NstBoardCnePsb.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - DEEBB99A08CEF5F272083FE5CB57A1C8 /* video.h in Headers */ = {isa = PBXBuildFile; fileRef = DA1799268D0F9DA29D547C39C65C63B6 /* video.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DEF2CAD86284F891BC33F89921CA304D /* MemoryStatus_mupenplus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C7452868988A93760A7A50A3744B7F2 /* MemoryStatus_mupenplus.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - DEFBACF9BE28D1F8D60CA8E097A6474D /* NstBoardUnlWorldHero.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F99896E3ECBE432B5D1400DC207AC694 /* NstBoardUnlWorldHero.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - DF0256A9B795889143D51F5AB7BF2525 /* MelonDSEmulatorBridge.mm in Sources */ = {isa = PBXBuildFile; fileRef = FDCC581E502759182D92640030424D5F /* MelonDSEmulatorBridge.mm */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - DF0368BF3CAB79B524B56DAEFA4AA0DE /* ZSortBOSS.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9974973908E60B47C73C05DC6F615D72 /* ZSortBOSS.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - DF308DE7BB6E094182E70013F8031FC4 /* NstBoardBtlGeniusMerioBros.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9474F9684F9F50E4DCFF007A45288D6E /* NstBoardBtlGeniusMerioBros.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - DF3750DEF65ADC9628BD0C90A040D1C2 /* RSTSearchController.m in Sources */ = {isa = PBXBuildFile; fileRef = A7F7A6E55C8D16B705168398D41EFC3A /* RSTSearchController.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - DF45437B2D67C4831E20344F5D9FA8EA /* FIFOSamplePipe.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FC4B3331E3D5016224691B97B18E8ED /* FIFOSamplePipe.h */; settings = {ATTRIBUTES = (Project, ); }; }; - DFAE61CAD0C9E0D221B0B8A65C574C77 /* PropertyGroup+Harmony.swift in Sources */ = {isa = PBXBuildFile; fileRef = C74EDB2CEE56DAB2BBA76496AD54D79B /* PropertyGroup+Harmony.swift */; }; - DFDD892A919F1B62B226920514135ACB /* Vector2.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5D3DB505EE3BB0C241AB85077A2942D7 /* Vector2.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - DFDF2179EB5E2AD32174B83E2493F38C /* ZIPFoundation-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B3BC53887BCBE3F02841C302D9EFCB4 /* ZIPFoundation-dummy.m */; }; - DFF2E2235ACDB0942B1814AE978548FC /* NstBoardBandaiDatach.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E8CC4542B4D5A65D56F8C27DF076F553 /* NstBoardBandaiDatach.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - E0584F089FB27ABA38D5D355721DE37C /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = D42421CB7ACD877300E845DA963BD693 /* SDWebImagePrefetcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E05FBE1BCA9AD9D74586EA0260CE7D83 /* UIView+AnimatedHide.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E6049D392CB3FBCC2B72A8A6687EB69 /* UIView+AnimatedHide.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E0667306596C0D0A7BBC61CEA6EBB1E4 /* Wifi.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B87B82316F6E2AF77DEC3C71983960D8 /* Wifi.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - E074D1A2846CCE88FD92FE7C48E84DC7 /* GoogleAPIClientForREST-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 268A80FCD8A58CFE6C097469D5AF1C00 /* GoogleAPIClientForREST-dummy.m */; }; - E084D22CD5501B5F8B12484AFD005230 /* NstBoardBmcFamily4646B.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5402C01EEBC4DB22397AB4C3607A3DD3 /* NstBoardBmcFamily4646B.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - E087C3A69FD0F0E85313E70BD15F30FB /* Sprite.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9FC37464ADA7CDFAE036562BE52B77CC /* Sprite.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - E0A5406EADCDD611AA81F4ECAAE2ADB8 /* vidext.h in Headers */ = {isa = PBXBuildFile; fileRef = 67CDDFF4AEF95E7B369C55FD208FF20F /* vidext.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E0AEC91ADC1C334CA0FE2DE6E8428311 /* Keys.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5049D42D1B896DD8D53F865547592C6E /* Keys.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - E0B3B5EFD0E958737E6D09B5135C5ED9 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = B068E4E7AE4132AAFBBBCBD24D7A4C81 /* SDWebImageDownloaderOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - E0CCCE4CB07E59F36A55148067AB07ED /* NstBoardJalecoJf16.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2035E24735C1ED1DB606DC2E8C6F2436 /* NstBoardJalecoJf16.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - E0E429D4FA26414B067D0E756801C7CE /* GPU.h in Headers */ = {isa = PBXBuildFile; fileRef = A9F4D5E300A96F436A0772554431B81A /* GPU.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E0ED8654B5726D61FEFFB77F64563BBA /* debugger.h in Headers */ = {isa = PBXBuildFile; fileRef = 49EB67E2385654A06128B5AF86E06198 /* debugger.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E0EDFE71F4DC27DAB94B474006454FBD /* getset.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D4ED41C767B511A3663D3BB3EFBA877 /* getset.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E0F016A4FCA869B756B6FA372880831B /* glsl_Utils.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BBE3ECEC9F9872D3CDABA361942FC7F /* glsl_Utils.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E129B92AF19973A819CA402EED7F68AB /* ButtonsInputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6E33B580B86B99E3F06C1706C55E0E4 /* ButtonsInputView.swift */; }; - E14B0EE131C5B834128F3A253D4EE821 /* NstBoardHxRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 79DDBFEC7F39DED56370617F46D7CD96 /* NstBoardHxRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - E1553B50ED1925836D7C7389FFCB4669 /* RSTBlockOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 7200A0EBB1017B42A5ED7871A39CD7F9 /* RSTBlockOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - E16BBEB0E89FBF39A1BA8D2A6511466E /* ThreadLocalPtr.inl in Headers */ = {isa = PBXBuildFile; fileRef = BEA7F11056D0F43EC8010E525D8CA634 /* ThreadLocalPtr.inl */; settings = {ATTRIBUTES = (Project, ); }; }; - E1742A3F4D520092C22925CDF3BF07B1 /* TextureFilters_2xsai.h in Headers */ = {isa = PBXBuildFile; fileRef = FD3868B661FD904E2E969DEF510A58E2 /* TextureFilters_2xsai.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E17F86A1F9995B85A569CE651775C495 /* NstBoardBmc20in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = EA5B505D84672E421965B4ED4DA13A4C /* NstBoardBmc20in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - E1945EEFECF9441C41E14C74ACBAEFBC /* NstInpFamilyKeyboard.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 452601ACDD42FBCEC74336E592C77C3C /* NstInpFamilyKeyboard.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - E19C7F20C5BE33F4A485144870B06838 /* alist.c in Sources */ = {isa = PBXBuildFile; fileRef = FE8B468826973A5911865B4E08BA55EA /* alist.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - E1D3CBE047BFC953335D5D5CCF533325 /* GBCEmulatorBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = CB39F9E318A0E5FA99D3AD25FB9CC78B /* GBCEmulatorBridge.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E1F6B3858AB2D7C1B3C26F3C59873B5E /* aes.c in Sources */ = {isa = PBXBuildFile; fileRef = B1EEAB97A99472A9C79337EA15AE222E /* aes.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - E209222C099EE1FECABBEC6BD134562D /* savestate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D0D65E295D5B00C78421E3AE72589FF /* savestate.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E243D93A497A30FE0D34F38D846D00BC /* ftbzip2.h in Headers */ = {isa = PBXBuildFile; fileRef = BC937779EB06E228801357D8302C3985 /* ftbzip2.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E2FA89CF71221D9F5369EAF5F8C34DC6 /* txWidestringWrapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 48585412562980D0D4B25991D9CBCDF2 /* txWidestringWrapper.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E338D6B4C0EEA1E05E164C7B18965099 /* RTC.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2CEF5831E21FEB587EC1550C13D99132 /* RTC.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - E34FA017267AF42EB6ED2866215C8324 /* svkern.h in Headers */ = {isa = PBXBuildFile; fileRef = 594F0432C6D677F2914EF89B34E3BA62 /* svkern.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E356C3163BF11EAC01EAEB469DE5F9DC /* wst.h in Headers */ = {isa = PBXBuildFile; fileRef = AC15043F6EF032DF3E7AEDCD53E4227D /* wst.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E3685937A80988A03C7C44CE928305B7 /* TextureFilters.h in Headers */ = {isa = PBXBuildFile; fileRef = 32E230B70DE950F781B65B2E6AE5E992 /* TextureFilters.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E36FAA5DF0AE2F4BB65D4C27D34F9621 /* cpuops.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CD66BBDECD54165CD02B2A898EE4F26 /* cpuops.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E379BEFFDE7DDF5BBBEC893297BBA029 /* ftsizes.h in Headers */ = {isa = PBXBuildFile; fileRef = E0C91ABB323E87C0696A57ECA95D9BF5 /* ftsizes.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E38036D0552D4B0B0C8C8E89615B7738 /* Standard.deltamapping in Resources */ = {isa = PBXBuildFile; fileRef = A7580FDA9275A16B8BC75BE10F6DFF81 /* Standard.deltamapping */; }; - E38C40E3D9048CFF503ABB52A862E046 /* Context.h in Headers */ = {isa = PBXBuildFile; fileRef = CB35F2D9635EBE95CE46DBCD39714649 /* Context.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E3CD2DE502E77928520AC36519DB3B95 /* FileInputStream.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 5FE476B8ACDA398F2FA021447217349D /* FileInputStream.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - E3FF5DACA1ACEFE447EA8EB66169219C /* FinishDownloadingRecordsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = C85060AA2EE8986995684A00D189D358 /* FinishDownloadingRecordsOperation.swift */; }; - E423F650B1959C2D33214A6C697ED7AE /* Audio.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6B8024BA5712C26C7AC2CE666D859911 /* Audio.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - E4555D55D548718B2EDACC2BACBBFF37 /* UIViewController+TransitionState.m in Sources */ = {isa = PBXBuildFile; fileRef = B0DFB82D9B5917CB78350818D3260E7B /* UIViewController+TransitionState.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - E4638C0867F2C154E318E4B61DA76B54 /* NstBoardAveD1012.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FF9EEB9B0C1C0002A7675C4264080D00 /* NstBoardAveD1012.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - E47AB08926E1286A3A4405C606B8A607 /* slot2.h in Headers */ = {isa = PBXBuildFile; fileRef = 55EA6B0BBE6DAB6FF866AED1005E8999 /* slot2.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E4903CDD15D278526AA5D4791E54EA18 /* NstBoardJalecoSs88006.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4C0C01E2CF695B469D1C56006652923F /* NstBoardJalecoSs88006.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - E49F4908A8DF8637A3944DFC53BA890C /* Service.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CDB380E3F71C06D4C88A675AE2BDDFD /* Service.swift */; }; - E4CEAB7B344A95C885A9034EE7971F1B /* Archive.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C48CBBB6A97428E4D4CBC314A140585 /* Archive.swift */; }; - E4FFDEADFDEF22D4A9BB17F183A85137 /* Pods-Delta-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F8D603EBE941AC871B0A2F47AD5B6D5 /* Pods-Delta-dummy.m */; }; - E54E4026E8FAEC2F60BAC7DD31A38FBF /* NstMemory.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6C8A537D1535D916E2EFA09239248332 /* NstMemory.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - E54F4FCE014F50AD5DF6635DEE7CF5D7 /* NstCheats.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 22CC2E1906731DDBC31544D499B26974 /* NstCheats.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - E555EE1D5A0E905E621B04DF132DE3D2 /* opengl_ColorBufferReaderWithBufferStorage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7D29EE4FC407EB1CD9E31FF0194ABD04 /* opengl_ColorBufferReaderWithBufferStorage.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - E59B73D2F71237C2948DC90A1D6915FC /* pngrutil.c in Sources */ = {isa = PBXBuildFile; fileRef = 699C06DF728C17DE1AE0E251B1C949D8 /* pngrutil.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - E5DF3F1BEC3DE99EA7903BCDECB466C8 /* ARMInterpreter_LoadStore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 50C989534A624B388AF2E96D829DAB47 /* ARMInterpreter_LoadStore.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - E5EFC07E67468F55ACA0CC90C8FB637D /* RenderTarget.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D6956BD919116D3EA2388470C4B627D6 /* RenderTarget.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - E5F0398C04DFDDAEE2C106B80DF34222 /* Vector3.inl in Headers */ = {isa = PBXBuildFile; fileRef = 83B4F9E572374DF4C3831BAEF2E43CF9 /* Vector3.inl */; settings = {ATTRIBUTES = (Project, ); }; }; - E605EF3F351A764D00D1EC064BB04D7F /* SNESEmulatorBridge.mm in Sources */ = {isa = PBXBuildFile; fileRef = 683323289D0F097240F45B27229DF8F6 /* SNESEmulatorBridge.mm */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - E6092E51C6BD2A2D2202330C630C1492 /* saves.h in Headers */ = {isa = PBXBuildFile; fileRef = 8EFD8985D9D458061044366EA21D92D1 /* saves.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E6204DD14779CA50F761D9E438043B9A /* pngwio.c in Sources */ = {isa = PBXBuildFile; fileRef = B9F7EE490E3FCEADA9DFFE43323E3C02 /* pngwio.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - E6451C08DEBE3F74FCF3EF4286640DAF /* statemanager.h in Headers */ = {isa = PBXBuildFile; fileRef = EF0216D7E0044288639CA7E86870875B /* statemanager.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E65AC1355F473096AB61B90358E626A2 /* NstBoardSuperGamePocahontas2.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9B04E2521633106239083E05C1A35E15 /* NstBoardSuperGamePocahontas2.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - E6671D2658CF4D03E5B090B14107AD5C /* PaletteTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A4DA561EFD34DE0379D02EC1F3D793B4 /* PaletteTexture.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - E674C43A26F115949EE52312F8320C9A /* NstBoardDiscrete.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F472A7F26975598CDEE2C77D9BA6E936 /* NstBoardDiscrete.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - E692A10F78E608C1948EAE37034DCC8D /* dd_controller.c in Sources */ = {isa = PBXBuildFile; fileRef = 9BE77D2A3CB6CD19078D5DA6CFB64EB9 /* dd_controller.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - E78529FBA5C035888371AE6EE12276A8 /* Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82D1AD4741CA6ABB465A5B94AA51CEE6 /* Helpers.swift */; }; - E78CCA0AE17AF52CD2E216D0465ABFBD /* DropboxClientsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = F780080F088472D2EA3AD73F9AC6B238 /* DropboxClientsManager.swift */; }; - E78FE2D0F4328B10E91A05282BFAAE95 /* S2DEX2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B8C92AF7E7FC5A48D14201B637C3E202 /* S2DEX2.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - E7B401335B62CEBA10AA39963E09ED5F /* types.h in Headers */ = {isa = PBXBuildFile; fileRef = 67F3604815E9FA261FF7B198C7B93DB9 /* types.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E7BDD0C197957F9A11861751ACB45042 /* NstBoardMmc3.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 60F325456B3141F39FABAA72D38826A9 /* NstBoardMmc3.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - E7E407147A750A387D4364A427E1B57F /* AnyInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38906166584FA7AD168B640076316C3A /* AnyInput.swift */; }; - E8141B93355AAEFFCD8C7FB484ADEE70 /* Standard.deltaskin in Resources */ = {isa = PBXBuildFile; fileRef = 3CB976F21FBECBF6953DE2377203398B /* Standard.deltaskin */; }; - E81BA26ADF353705A24738390212BDFA /* Entry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18B8DECBB8717BFBD8259BF1384944BA /* Entry.swift */; }; - E82CFD8EC3B22DA8BC0F8480887C00DD /* ZlutTexture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A711E43BDFD281D49F7ACEEACA63ABDD /* ZlutTexture.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - E87196FC88F589C31BF54042137E6CCF /* Sleep.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 11EC03B8337C07B3FF8400A47867B582 /* Sleep.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - E88DF53116715CE0F94A68001B5AA68D /* NstBoardExRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = D029C45D06455A369C00E2CE5B7A49A2 /* NstBoardExRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - E8ECE9F58F608FD6362FB21BC2D9B33D /* opengl_TextureManipulationObjectFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 87B4445E4B265DF8E6B30B539916E635 /* opengl_TextureManipulationObjectFactory.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E8F000270D59DB3501DF1B57A04E6CF5 /* WifiAP.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AB0218EEDC30D1A5BF7AFAE3D9D0676 /* WifiAP.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E90FA12994B71E9190813154B77EC186 /* opengl_CachedFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1DAA1C81B0721C4B4DACA87D160BCEA4 /* opengl_CachedFunctions.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - E93FB1BD8A52420A81FE14AC55DCD048 /* NstBoardBmc150in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F2A83A842DF214DF009C106E4C8C2F9D /* NstBoardBmc150in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - E9862620BF251912496647A52274A060 /* NstApiCheats.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 48DD0C01F114EEE16D0CEAF82A837D15 /* NstApiCheats.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - E9CBB9C8CBC05546EB144C2A03091A39 /* RDP.h in Headers */ = {isa = PBXBuildFile; fileRef = CB3D1E54D3B130DA4EF1097A244D531E /* RDP.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E9D68D67F9F2B471F0C199E2CA4C399A /* RSTLoadOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 88FE6D2D3AEDF7639DF54D6DF699015D /* RSTLoadOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E9D90305973DEDEC0F4BFB33B4281876 /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = FC5CD66C23C8B15B020AD1A0E066DE14 /* UIImageView+WebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; - E9E94C9A31059B3108819AF776C70F64 /* OAuth.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AC9CEAA77814183897B01BB7820D72D /* OAuth.swift */; }; - E9F8A3C22469E8BAB93C284CF3F2B7EE /* complex.h in Headers */ = {isa = PBXBuildFile; fileRef = 79FAEA560AE13479E3AE1C9D4193CBE8 /* complex.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EA57D04DB19F8B334F2835C28437BF43 /* Util.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A23462A637B29C7DA5D1E5502F8CF1C /* Util.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EA757276E51B372186AA7CBF54417409 /* GTLRErrorObject.h in Headers */ = {isa = PBXBuildFile; fileRef = B469CB48E051A7902C306D720CA859C8 /* GTLRErrorObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EA88F2DCF6E2E9DAFC77E67EE84D6B0E /* srtc.h in Headers */ = {isa = PBXBuildFile; fileRef = A5D25A996047B964BB6083612C8E3C10 /* srtc.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EAA3901D3F9A2ED494076EB14FBB6567 /* RSTDynamicDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 4420379BF6BC85F46BB80BEEBEFFB501 /* RSTDynamicDataSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EAB8A8B28C9827977703344AEB506F3A /* dummy_video_capture.c in Sources */ = {isa = PBXBuildFile; fileRef = 6F3C633420539DB6E775C732226165BB /* dummy_video_capture.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - EAFAB542A9C64CFCE6CE22241E05F94A /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = F5EA96C879945AA782B43E8FA302CAF0 /* UIImage+GIF.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - EB3867A5E7D56FC966EC8D918CCE02E0 /* cpumacro.h in Headers */ = {isa = PBXBuildFile; fileRef = C7A9FF165EDCA96D78582A1BB3E3E34A /* cpumacro.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EB484CB61A36481AD242EB08609AD4CB /* NstBoardNRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = A29756AE75089ADED0172EA76A672857 /* NstBoardNRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - EBC39AB44C5997F4A087628790429A5D /* RSTCellContentDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EC38AE281F34E72E7CC057B65C594C2 /* RSTCellContentDataSource.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - EBC516586457D8BA8B838FF0A74F6192 /* SMClassicCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = 32A7FC18682D076FF7779592F09D9ED6 /* SMClassicCalloutView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - EBE61162E7C42E3C10C4F44C4C6CA4A2 /* HarmonyMetadataKey+Keys.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BEB3827C8A17F678E0D54A0BDE059CD /* HarmonyMetadataKey+Keys.swift */; }; - ECAC4663F59F82385C50CFA46E55BE08 /* usec.h in Headers */ = {isa = PBXBuildFile; fileRef = B38950E29E7427B1B328DA4AB4E9B564 /* usec.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ECC25F7B2B3C29BC76DCAC098A583D27 /* PrepareUploadingRecordsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10AAA4BA9B93CDC6C54F5CB519CD2FEF /* PrepareUploadingRecordsOperation.swift */; }; - ECC3C77A4C57E536C2A70F43A2287BF4 /* NstBoardNtdec.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8DCF1A928BFC980E7B498F5BD31A61C4 /* NstBoardNtdec.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - ECDED5D51991FC76272391B425209E69 /* GraphicBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = 430C7822BB2DB30D3A3F120CC4806220 /* GraphicBuffer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ECF66A4CD81440DC80068CDF2DDD9578 /* ClipPolygon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B9A4AE4E227198A222EC04904FA67DCF /* ClipPolygon.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - ED2AE47C9D897B53EE16A62F76E69BAC /* pngread.c in Sources */ = {isa = PBXBuildFile; fileRef = C91E1AA976A69AFEC09D7086375C3511 /* pngread.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - ED6A5FA45DB078ACA1466C49FC155D43 /* ftvalid.h in Headers */ = {isa = PBXBuildFile; fileRef = D404DDEAA1780E4A8DC01E5DD107F23C /* ftvalid.h */; settings = {ATTRIBUTES = (Project, ); }; }; - ED971B1E5DA8C0C9FB00DB13EC14C7CC /* Time.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AAFF741290EFA79792D192D817E9F84F /* Time.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - EDE83DD95BE63E0A3729D4F652CA879C /* RSTOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = F7EDD8F96ECC1D4DB6AF3D0BAE03B280 /* RSTOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - EDF25F3AD609519E7D04C76049DF6B88 /* Record.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BB41410B47E8A68D39475A239D30265 /* Record.swift */; }; - EE00773DEB5849BDFE00AD4CE6FB8EB9 /* GTLRRuntimeCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = 279F8F8BF2300C97E89F662A3B1BE1CE /* GTLRRuntimeCommon.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EE2019BF5CB64FFF4F1A0E423383637C /* GTMSessionUploadFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = CEFFA33EF26C6E6BBBA92570888B7054 /* GTMSessionUploadFetcher.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - EE4994A811223017B6C5EE3AC8A4FDAF /* GTMSessionFetcherService.m in Sources */ = {isa = PBXBuildFile; fileRef = 551F767B133FD2219158C4BD484F80BC /* GTMSessionFetcherService.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - EE65DC50A0B1CA0F1BEAC525CDD71355 /* GTLRBatchQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = D1EC922CB4C37FF078E2F2FA393D076C /* GTLRBatchQuery.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - EE66717D0237C6F0F56C7CDFD14A35E6 /* NESDeltaCore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 68481410980138B078817FD83996CB80 /* NESDeltaCore-dummy.m */; }; - EEAB4AC0E2D50933CF35A4E89F189A26 /* RSTOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B875B7DA1EFD84AC25989918583DB09 /* RSTOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EEBC138BB35378F6C4B576F97B77B169 /* NstBoardSachenStreetHeroes.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 71FEA83CC74433938BD5065348F02C5C /* NstBoardSachenStreetHeroes.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - EEE5585B9396BFA77C4759DC57D7AA9E /* NstBoardNxRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 681169D12055F83F0257E3609FACE84F /* NstBoardNxRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - EEE6D9395C14316A722BB4A85A3A5F94 /* resampler.h in Headers */ = {isa = PBXBuildFile; fileRef = 29E7F21E3BF4B2EDD2254AB12681340C /* resampler.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EEEE51D3888C1CAB1A958AB9B2014B55 /* dd_controller.h in Headers */ = {isa = PBXBuildFile; fileRef = FDB106486A5BDBC079CB460CD73AA422 /* dd_controller.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EF21A8D301CD7C152DAB7B68E0E1CA48 /* ARMInterpreter_Branch.h in Headers */ = {isa = PBXBuildFile; fileRef = CA8F5EA0023441E2DCC5D7A5DF068643 /* ARMInterpreter_Branch.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EF49596781FA9E194913D3D7CA8D671C /* TxImage.h in Headers */ = {isa = PBXBuildFile; fileRef = F4A979B9FDFB02A9135A8DE1C16A4D0E /* TxImage.h */; settings = {ATTRIBUTES = (Project, ); }; }; - EF9EA527BA1D415C6EBCDDB70A504961 /* NSManagedObjectContext+Harmony.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BB981783C8679FA4F70C50DDA25D8F0 /* NSManagedObjectContext+Harmony.swift */; }; - EFB8E8D285A246E5AA276990E54C0F63 /* RSTError.m in Sources */ = {isa = PBXBuildFile; fileRef = D9ECECBEF35491F413B279B6A98E015B /* RSTError.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - EFC6FD3E89847E1A767A6C933340AA15 /* TcpListener.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8248BE4460AD901892A34E8BC9389A7E /* TcpListener.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - EFD97E8D33F626D110D211E49CA2245D /* UICollectionViewCell+Nibs.m in Sources */ = {isa = PBXBuildFile; fileRef = F5040FA5F2C10BA592D9F2AA3240BED7 /* UICollectionViewCell+Nibs.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - EFE4A9D0F0193903B0E0A77D748730E2 /* GTLRDuration.m in Sources */ = {isa = PBXBuildFile; fileRef = AEC0015955B6C317179ECAEEE8FD46C5 /* GTLRDuration.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F050154F303A19EA79B8C22C6DF90FD7 /* autohint.h in Headers */ = {isa = PBXBuildFile; fileRef = 4815EF7101896F6F995409EF989502BA /* autohint.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F06D987C53E50796FB3713F9B76ED9B3 /* InputStream.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3A4DD9046F6AA16EDF3BE6CDB82D8C43 /* InputStream.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - F080C4AC3D967A5A7C5AFE0E9E39611F /* port.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A62259BC78EDF58C7DE954EAA77775D /* port.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F0F423C8BE9E56382244511DB80F737A /* Result+Success.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29A03F7FAF6D322856360C07028E6E5C /* Result+Success.swift */; }; - F11EF870301442D6390FB09614E08A83 /* NstBoardBmc1200in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2E9BD08F2470A7904235A81A69B7B698 /* NstBoardBmc1200in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - F167CCE2838CD4DF3161F75877A2858C /* Value.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC30E6531D1C727E6389B4A27F9674E0 /* Value.swift */; }; - F1735D54EF0775BCB0E5186918743EFA /* F3DPD.h in Headers */ = {isa = PBXBuildFile; fileRef = B77443AF8AB2CB055594552F3A4DF312 /* F3DPD.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F1B72578C4AE818C6B8DBD8DB65905D9 /* GraphicsDrawer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 75A3CAD2D53900F2E82B7E98C83BCF2C /* GraphicsDrawer.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F1C789A86125B29EF654212713BF4473 /* NstIoPort.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B6DBA422D09B1A2E2BF52AA98368C295 /* NstIoPort.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - F1DCBDDEE6EC2B1512E4A288D7ADF679 /* GTMSessionFetcherService.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F7ED6CE3BC682B49D8D74C14E481F37 /* GTMSessionFetcherService.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F204516DA3580583231D8F46D5084373 /* NstBoardSunsoftDcs.hpp in Headers */ = {isa = PBXBuildFile; fileRef = C3B07408C73641A82FD1486ACA9BE491 /* NstBoardSunsoftDcs.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - F23B49501483D71ACF19ADD7D8730D95 /* FIFOSampleBuffer.h in Headers */ = {isa = PBXBuildFile; fileRef = FAC23FED142F320FA9943449A514E1EB /* FIFOSampleBuffer.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F24B0F07C123E4914D264DEFD17413C4 /* instructions.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F169330A819E3D0505CAD19B390990A /* instructions.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F2636E7B7557D45107C672F1AC8B9B99 /* NstBoardIrem.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 053764ECC5FA7EC02E6C16D5E7C9767C /* NstBoardIrem.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - F26D7FB3C84AFBAEE152A0D8B361947A /* NstBoardSunsoftFme7.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9349A6776672039326D8D1986343C528 /* NstBoardSunsoftFme7.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - F28B76B40A7A4F0AE4C5AB75EDBCE1FB /* StoneBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73C973D6C8F68D6041F1D72D7FDFBAA9 /* StoneBase.swift */; }; - F33794767C10062290FD8D8B9610645F /* NstBoardBmcSuperGun20in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E7E0502382D7B2645187BA9806D311F6 /* NstBoardBmcSuperGun20in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - F33B4E4A9ACBC7435A05FC5579F36D09 /* transfer_ptr.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CFDA817B0AC211C38A21101AA7ADCC2 /* transfer_ptr.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F34F5CAF815CF2C584E460BC03C01DD3 /* clock_ctime_plus_delta.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A8F278C27D9D292DDB8DB3A1C033408 /* clock_ctime_plus_delta.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F3689DA4F28B17D691C370326B8A5C40 /* cp1.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A84AB2950857E041CB20CD222305CA7 /* cp1.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F3D7102AF094A0C8737A51A875AB7FCF /* ftmodule.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C8286295216A610FA45355A6513DD88 /* ftmodule.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F42934FDC9EFE34BEAB88C09A97F381D /* m64p_frontend.h in Headers */ = {isa = PBXBuildFile; fileRef = CE43456F279801002681E65B577EB400 /* m64p_frontend.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F47DE4860ED00EA4CDC661D662F1681B /* SMCalloutView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F3B43B9B9A8070F8E97D878287EAEDF /* SMCalloutView.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F53163B106D4505E2716A8A22B8A4968 /* cheat.h in Headers */ = {isa = PBXBuildFile; fileRef = 4618B072460D823636CAF1E645B31A1E /* cheat.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F54EE04CAD7C3199596833B62C4C5955 /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 98D8B9C03706EA64A98272C9B5617C09 /* UIImageView+HighlightedWebCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F55194458AAA79B90B30AD967C5410ED /* Vector3.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F093A0AA955360C3E1886C377294286B /* Vector3.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - F56181E6D09C01FD61E2DCA327128F4A /* Combiner.h in Headers */ = {isa = PBXBuildFile; fileRef = 0558BB8C07E8F1FB0930619A2998EB74 /* Combiner.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F5A54B0D155E98BD9B3511F7ADBBD4DE /* aes.hpp in Headers */ = {isa = PBXBuildFile; fileRef = B57F863273D90CEC76B990C80BD0AFE0 /* aes.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - F5E6BEFB8F1CD1A67497E431B9838A15 /* F3DEX.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F4D5AEB26500088CAA863CD9E65320E /* F3DEX.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F5F0FF8110306AD4F4A45BDBCF73DD39 /* RDRAMtoColorBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5C3F7D8CB2B7777AFFE1AD102BE934F1 /* RDRAMtoColorBuffer.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F616714DC3AEEB9AA629DE2EB90029DE /* OpenGLESProcessor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39AF6EAE7D1AEFBD13D88A8BB33A9336 /* OpenGLESProcessor.swift */; }; - F63795ED07BD207BED504D982E10877B /* N64DeltaCore-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 707B35765CF23935D0DC98EB64D4A890 /* N64DeltaCore-dummy.m */; }; - F648BA8B0A2C492BD78D3FFC5DB91560 /* pngconf.h in Headers */ = {isa = PBXBuildFile; fileRef = CB38C82AA7D15949DDC3D86D8B3FAA39 /* pngconf.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F66CF640978295A4159E43A5820250F4 /* ftcalc.h in Headers */ = {isa = PBXBuildFile; fileRef = F643616FADBF7E6BC2A1186150E9FEB8 /* ftcalc.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F69AC88DD325854B39C768AF3E9D2EE0 /* String.hpp in Headers */ = {isa = PBXBuildFile; fileRef = F6A27E44BB36718D04D772D7CA7AFDB1 /* String.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - F6D341A75DD75C84F27A2EAFAA27EEF3 /* snapshot.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F019E08B9D1DD9B75519A4FCC245881 /* snapshot.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F7250E55754332B6F1936A7C3B28852C /* TDStretch.h in Headers */ = {isa = PBXBuildFile; fileRef = 652ED46B907A7ECE96808F0BA5F1AB39 /* TDStretch.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F7C4C94794633BFB3D3F36D042C48171 /* text.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B7BB49B7EB87815D2DD184295B7BDED /* text.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F7D8EA5AEF6DCB2ADCA310027C9A12A5 /* NstApiMovie.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 6285F7319217715F0E3DA364BB1818DA /* NstApiMovie.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - F804CF130B42739D53F9D68915A4B0CF /* pngpread.c in Sources */ = {isa = PBXBuildFile; fileRef = C3914267B360E5CBD9B4004034A200D9 /* pngpread.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F835DD857092F2B498328BA1595A4B8A /* CRC_OPT.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3AA76236037E9FBA43FE5066105DCAA8 /* CRC_OPT.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F856CC0CA6BE52B3643DE303ABAB2945 /* NstBoardKonamiVrc4.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 0DC58C591AA7CBEA564DEC28E4AE8B2F /* NstBoardKonamiVrc4.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - F878BF58C6FBE52C47D997C5A97BD4EC /* plugin_delta.c in Sources */ = {isa = PBXBuildFile; fileRef = E4951BD28EE605CC08BFD4677012B21D /* plugin_delta.c */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F90A08CBC66F103BD68B8A265EBEA8FB /* DMA.h in Headers */ = {isa = PBXBuildFile; fileRef = F265B3DDB1DC6C5CF0306B372210D001 /* DMA.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F90A7A52486B016979C45D5750AC4D6B /* EmulatorBridging.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E134F4CF807C51D786E91CB577B584E /* EmulatorBridging.swift */; }; - F90F21A4AC8CAE6A1F56797934092A26 /* fpu.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D22DB712CF3F07C4D4F62A7F0D2016F /* fpu.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F975FC361B88C2A88D8CBBCE1C6D1D32 /* NstTrackerRewinder.hpp in Headers */ = {isa = PBXBuildFile; fileRef = AD8D9664E08A800A7FCCA31CC84E44EC /* NstTrackerRewinder.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - F9A291D8B470AE85950182B610A1C00D /* t1types.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FA356CE28CDB87E135DA1A52E713731 /* t1types.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F9A49726D655B01D55D26042FEEE77B1 /* GBAEmulatorBridge.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5531385FC1EFB70FA1BA791251AACDF5 /* GBAEmulatorBridge.mm */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F9B8A7667CF216411A15A095314968E1 /* ai_controller.h in Headers */ = {isa = PBXBuildFile; fileRef = DF90480F6504CD9B0A9049D6BACAC85A /* ai_controller.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F9C55374D299754191544942F0147195 /* Harmony.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F8B335AD068A99C98CAD8C381BAFC0F /* Harmony.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F9C6E691F1176969C8C20F364F23FA01 /* UIAlertAction+Actions.m in Sources */ = {isa = PBXBuildFile; fileRef = B3052A9C7393257EAEF23078DBECD6B3 /* UIAlertAction+Actions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - F9D82E528BB1D26760965BA61CDF5FB7 /* memory.h in Headers */ = {isa = PBXBuildFile; fileRef = 57DDB20834166ED732D5AE074578B519 /* memory.h */; settings = {ATTRIBUTES = (Project, ); }; }; - F9F08CA61836853CAE7455D76939D98B /* ParameterEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A0A83DB759E9397D1C0559D05F620AF /* ParameterEncoding.swift */; }; - FA10054A09EB501804C54CFCB0154C72 /* NDSCart.h in Headers */ = {isa = PBXBuildFile; fileRef = D6AE3D3CEA4A380A77F394C53E8FEBFB /* NDSCart.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FA3E0BE1F486A928CAD1709BE81D6710 /* ri_controller.h in Headers */ = {isa = PBXBuildFile; fileRef = A05D21B831E3C9BA3583F94F739FD73A /* ri_controller.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FA577995260851815A34580C95A493FE /* GTMMIMEDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = EF3D819417FD851E3EA790DF036DBEA4 /* GTMMIMEDocument.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - FA9B5DF268C458C80AA79A7FBD2A08BD /* SDWebImageDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = A1DC4D0732A2D4A00391980B544DCC7A /* SDWebImageDecoder.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - FAC99EF7E2857BE5C34C04BAF38F98C4 /* F3DDKR.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517EE6F5463DA943A8AC65590C5ACEA9 /* F3DDKR.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - FB785AE5B7ED40603C7F3DCA853BE779 /* StoneValidators.swift in Sources */ = {isa = PBXBuildFile; fileRef = C896FF6056EF6073CCFEB25599D37DC1 /* StoneValidators.swift */; }; - FB83F4C027DDF9D475692D37C998BF97 /* NstBoardBmcSuper40in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 8C57550523D412EE8A09B868B53E861C /* NstBoardBmcSuper40in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - FBB17E28402C32BF6AACB01266617970 /* opengl_UnbufferedDrawer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 6A18BBED29892E9EFCA98778363056D1 /* opengl_UnbufferedDrawer.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - FC131A8D78B1B7229F71E54790C4B218 /* DSi_I2C.h in Headers */ = {isa = PBXBuildFile; fileRef = E4A6099E638BA490D0FA43608201D122 /* DSi_I2C.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FC4FE507C7E2CCEB963AE8BBDE196CCC /* r4300_core.h in Headers */ = {isa = PBXBuildFile; fileRef = F4D10DD3D9ADA80E392F14E7BD19294C /* r4300_core.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FC5079E8E503661CEDCB039CA12806E2 /* device.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BBF923ADADD1C68180C8F3D550EE2FD /* device.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FC582381E298E82645541CE8AC5E0083 /* TextureFilterHandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E9D381CEE93CBAC589C6604F72A9CC39 /* TextureFilterHandler.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - FC61A380B0AB99CB687FFA9D1219ABAF /* NstApiSound.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 66FF3C9AA7350341B382B354F3D7E089 /* NstApiSound.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - FC77E55DC2D1520768CDED68E96900F8 /* Mutex.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 4CA9E659D1B7B7728E262433D17D11DC /* Mutex.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - FC8E33668A83772D18B6DA06489FED36 /* oglft_c.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FE79DB67DDDDD1F26E2263E68C2DDF0 /* oglft_c.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FCA3665609EF3D3B95375DA2641056BC /* F3DGOLDEN.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5332718FF5ADABA45AB6CDD9477B7DCD /* F3DGOLDEN.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - FCD6C7BF8B08E2A3EE33E1D6034180B4 /* DSi_SD.h in Headers */ = {isa = PBXBuildFile; fileRef = ABA1589F385B7F9A3694A4D20914974C /* DSi_SD.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FCF66A5DEF6C9622F1BF5FD231283397 /* Sound.h in Headers */ = {isa = PBXBuildFile; fileRef = 611D6252349AD28AC0199F62077C7B57 /* Sound.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FCFCD5DB1752BDB920D9C45E6A1223E5 /* RSTNibView.m in Sources */ = {isa = PBXBuildFile; fileRef = FE429DA70CDCA70BCDA625196C0BBE79 /* RSTNibView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - FD043B171E2D43CD7BBD995DFC44A0E4 /* NstBoardSachenSa0037.hpp in Headers */ = {isa = PBXBuildFile; fileRef = EB58526AAC220B4F4D32EB70FB9FA1D9 /* NstBoardSachenSa0037.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - FD13C5944614AB5983E16B5934E63920 /* state_osd_elements.h in Headers */ = {isa = PBXBuildFile; fileRef = E640A55690FFDFEB9BA20EAE5A938A07 /* state_osd_elements.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FD2C4A16D91821E87A71560E8B5E449D /* NstBoardCamerica.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 9D91813C4F4C683822BE674046C15A1C /* NstBoardCamerica.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - FD464701028445AB4D25F13C18BCC23A /* statesaver.h in Headers */ = {isa = PBXBuildFile; fileRef = 30CD7C1C723193A167A0753FFE763A28 /* statesaver.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FD828E831825C59E81FDB630986BA32A /* hle.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C66F5370C7AF40DB07F93BFE13B25B1 /* hle.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FD92B79A0A7F6039BD2098FF85CD996B /* GameController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D850BF9E05BD4EFBC1DD2310343163E5 /* GameController.swift */; }; - FD95EDE305F1357072B580F37EDEE2EB /* NstBoardRexSoftDb5z.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3F1CD3AD3F0B4F2ED1A6C959A582EF5D /* NstBoardRexSoftDb5z.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - FDA34900B0AD2B2A26A1A3F33C79EF47 /* BreakpointStructures.h in Headers */ = {isa = PBXBuildFile; fileRef = A14CF7FB0D07E8BBB27335EBE6620A79 /* BreakpointStructures.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FDA4F302E7858AA38CFEFF67E638875A /* rasterize.h in Headers */ = {isa = PBXBuildFile; fileRef = 936486BEC6113E922ACF1D26C14FA268 /* rasterize.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FDCC4E3C36DDD44A79B4A2F702DABA63 /* RSTArrayDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 7927E71FEC78E28D29A5D662C311BC33 /* RSTArrayDataSource.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - FDE1CF568DC42AD5806DB6F851AD0BF0 /* retro_dirent.h in Headers */ = {isa = PBXBuildFile; fileRef = B5F7BAB167C49E106A6AA25C9C7B97EF /* retro_dirent.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FDE25E8A68FCCEE49649570C4EB44D54 /* NSFileManager+URLs.h in Headers */ = {isa = PBXBuildFile; fileRef = 3096BFB6C852C462F98480FFFED51237 /* NSFileManager+URLs.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FDFC423A4243CFA179481946B523C999 /* Setter.swift in Sources */ = {isa = PBXBuildFile; fileRef = F39D6AD262133DC7EC88CCFC7215A97F /* Setter.swift */; }; - FE599ED5BE5E0FB913D338DB7993BBBD /* ftimage.h in Headers */ = {isa = PBXBuildFile; fileRef = 3017F6DD22747AB519633C5ECB17E967 /* ftimage.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FE96CBAF883D21B6443E0A8742433A01 /* dictionary.h in Headers */ = {isa = PBXBuildFile; fileRef = EED57BCA844C7B79D93C00D5E728D535 /* dictionary.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FE9847186E9957CFEEA9161522CF3E82 /* NDSCart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11D9A3CBF7BCEEAD593BA3894A130C67 /* NDSCart.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - FE98FC8193282B02BE1E361886284C09 /* NstBoardBmcSuperVision16in1.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FDA103324CE11F224C8C8B8A2BC86352 /* NstBoardBmcSuperVision16in1.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - FEA6A62C5BF6125D01406B1233AB4992 /* UICollectionViewCell+CellContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 6888FE71E929391D179F01C2EFB7B9CB /* UICollectionViewCell+CellContent.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - FEC1B6BB3DDC87FAD2E1E9C6BF3ED70C /* Arm64Emitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E33BDC5B4C13A1065C9739FE351C69FD /* Arm64Emitter.cpp */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - FEDD763449588000C244E294DB509C0A /* NstBoardSxRom.hpp in Headers */ = {isa = PBXBuildFile; fileRef = CF920BF2EAB09495473F0485AD759F94 /* NstBoardSxRom.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - FF1C18CB3439A3560B4C4F89FF89BAA8 /* NstBoardSachenSa72008.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 657039F64E9AA518C0F3A7833EE261D0 /* NstBoardSachenSa72008.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - FF211E96A43742AFA7716011946CCB12 /* Glsl.inl in Headers */ = {isa = PBXBuildFile; fileRef = 82770B1F5AE682EA3C86E83763CB6687 /* Glsl.inl */; settings = {ATTRIBUTES = (Project, ); }; }; - FF31B5BBE13193F204040DE66FF15F02 /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9103C0E62058A84C7C9BDF9F6915958 /* Request.swift */; }; - FF47124336E697A518CE2C93B8E88C2C /* GTMGatherInputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = EC7D812FBDF10DDBF8A0A3527249F79F /* GTMGatherInputStream.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - FF6E132F749A866DED77DFC44F1CF434 /* IpAddress.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 109EADB0082F1883183EC07806088E54 /* IpAddress.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - FF9FE60DB4C26DF6FC16C3C2895D04A2 /* Graphics.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 2A6DDA9A28D50AE8C256E76E3FA2B06A /* Graphics.hpp */; settings = {ATTRIBUTES = (Project, ); }; }; - FFB60CE26BC4B7CC1FB0A8E9DA386F70 /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 3877506BCB9C396099DE5A88C9255153 /* UIImageView+WebCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; - FFB82AAAE70D1401F93C370E00A47AE0 /* ManagedRecord+Uploading.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71E7492287A3D967246142FEE6D2D82D /* ManagedRecord+Uploading.swift */; }; - FFED35B78D0E0C68526F3E3BB920230D /* GTLRDriveQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = E7294A191F7AC7765349928B17D20EAE /* GTLRDriveQuery.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 003DA77373EA7A6C58230A3B5C8BD2C9 /* GTLRBatchQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = 23BBDAF15F9E75C4E419D86C6ED3E6E2 /* GTLRBatchQuery.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 00808122820CCB7D640A23AF2F851D96 /* Notifications.swift in Sources */ = {isa = PBXBuildFile; fileRef = C0BE4BAC8AADD53ED7938EC7D7834EC0 /* Notifications.swift */; }; + 00CEE4E02C6D213E9AFAA1BC64BB2CCC /* RecordOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 327851A9D684728F563951E6CF957362 /* RecordOperation.swift */; }; + 01102A0A267609441BA91C3329987354 /* UIAlertAction+Actions.m in Sources */ = {isa = PBXBuildFile; fileRef = B183DCBE431E7ED474E0FD60332DF7F1 /* UIAlertAction+Actions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 028F50DDEA0C74B2152F35BD8054E9CA /* NSPredicate+Search.h in Headers */ = {isa = PBXBuildFile; fileRef = 8DA649E84D76C639CF89CE073B97125A /* NSPredicate+Search.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 02F8F35275949DE0FB81139C1E6718F4 /* UICollectionView+CellContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 67171B182B66B992DB05C17163644E23 /* UICollectionView+CellContent.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 04608DD42475D3BEBD1966E2123A8CC3 /* SeenState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 616AA8C503BA79082DDDC3A78D524494 /* SeenState.swift */; }; + 049BC1B479F9F0BF40FC2598D8FF8C51 /* DropboxService+Records.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86F67A3D1CDD7354DAACCDBE6B83E00A /* DropboxService+Records.swift */; }; + 0559206519929E651DBE5D57A53A07AD /* Version+Dropbox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 003F7FFCE2F47651CEE774F0DE200F14 /* Version+Dropbox.swift */; }; + 057DC29811949C74F95EBE2A47E16E1E /* AuthRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7994ABEE8624B64EAD90EABC91D012B2 /* AuthRoutes.swift */; }; + 05DCDFCC2E400C8D0BA4D09198B0F359 /* Paper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7F6764818F9C610E4A853F410D1E68FB /* Paper.swift */; }; + 07BB377F31975D34EB8CCC8C3E05597F /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 21FC6F1E89DDD57A49BA988A818F9DE7 /* SDWebImageDownloaderOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 07C7D61F257603F56AD7567D77549736 /* OAuth.swift in Sources */ = {isa = PBXBuildFile; fileRef = 269E709D185D5CA2CDCD39DC8DD5DEC8 /* OAuth.swift */; }; + 08518BB31A3DEF4D9AABFEF81DC7935B /* NSPredicate+Search.m in Sources */ = {isa = PBXBuildFile; fileRef = FDA221EAF1F8F41B3FAF8D8189E9E258 /* NSPredicate+Search.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 08884CD7C73D3B147893EDEDF21B3D2A /* UISpringTimingParameters+Conveniences.m in Sources */ = {isa = PBXBuildFile; fileRef = 074086C0D7D585641C9D4E9AFC4FE4A2 /* UISpringTimingParameters+Conveniences.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 0907182A9B6F4063380F68FF2A27D32F /* RSTLoadOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 6818DE698B7C244C6A7117D0403EB58A /* RSTLoadOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0A599F9C0D150C29B68E5AAD2F6E6376 /* ManagedRecord+Predicates.swift in Sources */ = {isa = PBXBuildFile; fileRef = FC31C1DE443CE579CAC65328AFD05E5E /* ManagedRecord+Predicates.swift */; }; + 0A5B041392F1231BDA0914037B8B6EBF /* BaseTeam.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64034B603637F76695726D8E9224EF12 /* BaseTeam.swift */; }; + 0BC29A4D141721CED777951AFB6285DC /* GTMSessionFetcher-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = DD5C7A7FE00BE29CFE3C990862EFBD7B /* GTMSessionFetcher-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0C7F4768121EBCC0C8EBD0D94855ADC2 /* Result+Dropbox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64D30120C2D5B20D076A14852E1448C9 /* Result+Dropbox.swift */; }; + 0CBB49C1EDF99134742427FC7DA6B098 /* UIImage+Manipulation.h in Headers */ = {isa = PBXBuildFile; fileRef = C41B094C61D212712CD835C3A221D3CF /* UIImage+Manipulation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0D194F80A8C1BCEEBE70884CFA27AE66 /* TeamLogRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = B6CF76900DF3A54275D6A5E4AC401AA9 /* TeamLogRoutes.swift */; }; + 0D6CC9900723FE7D8E5605587928930D /* SDKConstants.swift in Sources */ = {isa = PBXBuildFile; fileRef = 527E89C27D4189749BDAD24EECCD32FC /* SDKConstants.swift */; }; + 0DF3091B2BEA6F68C30A9F70E0C34EBD /* GTLRFramework.h in Headers */ = {isa = PBXBuildFile; fileRef = E2003C240AFF0566DE36FA22E2D6796C /* GTLRFramework.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0EEC9C614955F557094164E6D5B6B16C /* DBChunkInputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = ADF302CCAEE58514EBF07820FB4B7910 /* DBChunkInputStream.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 0F902FD3B3F3EB61AAFA0EDAA216082C /* Auth.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67B168193A9B9A7114A6D66720C71E6A /* Auth.swift */; }; + 101A15CF34E5E8ECC203BEC92668B14E /* RemoteRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA29336E01A953A70343EF7695C270A4 /* RemoteRecord.swift */; }; + 10280022A3CBF6160BE28C558A400296 /* DBChunkInputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = F3899B5DF470A14F44821581624BD8C1 /* DBChunkInputStream.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 1075C0BF05B5F1DFD3331537AEF56082 /* RecordRepresentation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DFC8462E87F1A24AE70F9FCDBDEE905 /* RecordRepresentation.swift */; }; + 122A53C6A8CE37059A0CF1D111472CDD /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = C5337F14C4B4DF65DE3FDFC45FACAE01 /* SDImageCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 12AEC0B4C35E8BDE4366D57CE6805481 /* Blob.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FE83ADE360ECFB89A9F195F232E58D9 /* Blob.swift */; }; + 12EB6F66719644A22679C7B30EA4F9DA /* GTMSessionUploadFetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = CD4490E074A906B05214E44C723CE239 /* GTMSessionUploadFetcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 13742EFB3E00090A8B05BBFEA5CDE8C1 /* PaperRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC20981A42A1EC4EADCE3CBB4B4A881D /* PaperRoutes.swift */; }; + 1541CD75ED87DD98D3FB227978648F92 /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = 563FDE54145A22888CAFD77A857389B1 /* NSData+ImageContentType.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 1589485924D4156B3F3B5A9DD67E873E /* RSTError.m in Sources */ = {isa = PBXBuildFile; fileRef = 109F136B231E5899017103D0E3E4CF32 /* RSTError.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 1640317306E07F9116FCFDE165C4EF46 /* Roxas.h in Headers */ = {isa = PBXBuildFile; fileRef = AEBC927D579F6BB580EC6EF0DE5387BA /* Roxas.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 164BAC914BBAA929ADDE2137EA9543B9 /* JSONDecoder+ManagedObjectContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4CD0E20BB338DC7A5D9B5A7B4135F2C3 /* JSONDecoder+ManagedObjectContext.swift */; }; + 169BD797475549B0DCB3334A81FF252B /* SyncRecordsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = A849A2ACD3230CFB32C3D7A5796338FB /* SyncRecordsOperation.swift */; }; + 16BA02E314DD1557E7856374C52DA346 /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 39179376792F76422466948387B42807 /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 187C3C01DEDAD23CE2ACA2F68E2DE93F /* SwiftyDropbox-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 97B62592CB380C117D0C6FD312E122CC /* SwiftyDropbox-dummy.m */; }; + 18D01659E688A01C11D0415BA0C63995 /* RSTSearchController.h in Headers */ = {isa = PBXBuildFile; fileRef = 342AE849C236F7165CA45E0C22B2AF44 /* RSTSearchController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 1AAB4E66BB2F67D75ED31A969FB90445 /* Alamofire-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4340A4F731B942E068A6B6F08CE738CA /* Alamofire-dummy.m */; }; + 1E03EC6139CCC4410F54BD3D7D143F1B /* RemoteRecord+Dropbox.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4D188BDE57B76BB82EBA7CD056C4DDC /* RemoteRecord+Dropbox.swift */; }; + 1F068B85EA8E02D269648D9AC8B7FC14 /* RSTPersistentContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A7D0A97105EA87651DB5999A685D0BB /* RSTPersistentContainer.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 1F785AC147825C148A0F30C76299D9D4 /* UIViewController+TransitionState.m in Sources */ = {isa = PBXBuildFile; fileRef = 43C9361EBA8A37B58FC640ADA480FBE2 /* UIViewController+TransitionState.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 20983A4E2B0967B542119114AB073BB7 /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = A42DA3EAFBAEFBAB2167275E651A7665 /* SDImageCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 219B30F934EC147CA5F9BB687D1C2B48 /* RSTHasher.h in Headers */ = {isa = PBXBuildFile; fileRef = F71361CE81454B9351EF3DD4FD0F0635 /* RSTHasher.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2279896B50A50B4C9A000CAE3BBC2DD1 /* GTLRUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 94668AB9EEABC1C5F9D732F0607DE3D0 /* GTLRUtilities.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 236758569C4C8EA07F763EE8EB40C9C5 /* ConflictRecordOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A992173756B082143E3F3D99D31FE8A /* ConflictRecordOperation.swift */; }; + 24B7C521DEBEFF6FEDE5A739AD245FF7 /* Account.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CC3A88F6A10243620F79D46751C74A4 /* Account.swift */; }; + 26B20A78E1B60A658311451A3BB103EF /* FileProperties.swift in Sources */ = {isa = PBXBuildFile; fileRef = 330FF8B4474DCC45B35FE08AB784032B /* FileProperties.swift */; }; + 26D84D2836C13B2D939D5A5E2B1BD47B /* Schema.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FA7B59A3C84216C1D1F39923230CE76 /* Schema.swift */; }; + 29962679E9012751AD784D26C64074A6 /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = D46484EB1DEE5A20471D2FA5462B213E /* UIView+WebCacheOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 2AA763973449BB2716075B46318092F3 /* GTMNSDictionary+URLArguments.h in Headers */ = {isa = PBXBuildFile; fileRef = CCD2E82081A9CD40B9258AE46DF75389 /* GTMNSDictionary+URLArguments.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2AFDBD64E02EF797395B3EF74E0179D9 /* GTLRFramework.m in Sources */ = {isa = PBXBuildFile; fileRef = FE9A13F9787AF145CDE0DF4143F17F71 /* GTLRFramework.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 2B58F319B8E9BF654A4EC197D5F1A4C4 /* Operation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92BAD4F6E4F15BF8E973D865E7BF4B67 /* Operation.swift */; }; + 2BF9AA3C8DCD2E53B2672B033ACCAED7 /* NSLayoutConstraint+Edges.h in Headers */ = {isa = PBXBuildFile; fileRef = 106A0359BFB2E7A3185787044BD7F329 /* NSLayoutConstraint+Edges.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2CFB7E4AB44C35953034CE00C927B1F8 /* Response.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CB6AA43134D6305B9DEAF3D96B1DE26 /* Response.swift */; }; + 2D0C1D6DC71F2E1D4229D57F3DC3F2D8 /* UpdateRecordMetadataOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AF7510AB9F67B49A8568C2B7C761D71 /* UpdateRecordMetadataOperation.swift */; }; + 2D5DAC18AA31553D5BEA9ABAC93704E5 /* TeamRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6D159495A1B644A49638E870FF87A7C /* TeamRoutes.swift */; }; + 2D87E1AEC45003E3C2203D5A623DB6E1 /* Expression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 645056EFF3FD5F3115893C78A2343F92 /* Expression.swift */; }; + 2E217A20F7C7C1D7C53B126599B2D971 /* GTLRRuntimeCommon.m in Sources */ = {isa = PBXBuildFile; fileRef = C51BB2F19042656DECF0A355EEE8B1FE /* GTLRRuntimeCommon.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 2E7CF2452B84932D8BC4721944148FD4 /* GTLRService.h in Headers */ = {isa = PBXBuildFile; fileRef = 03DA5500E4A7496201826C8C95636FD5 /* GTLRService.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 2F2C2EA78632BB9048F5263795044F99 /* Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = B75A96A9FA9A9EAEDEA8BA458DF1A190 /* Async.swift */; }; + 2FFF4B4B32D0F97D23F83C5B48ABDDE4 /* RSTRelationshipPreservingMergePolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7BCB85A76CF766C0F24C828044FBFF67 /* RSTRelationshipPreservingMergePolicy.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 304D6BE0EC8B6D9BC89E5A85E03B15F7 /* Files.swift in Sources */ = {isa = PBXBuildFile; fileRef = 533E2FA1D163737F1075C3ED7A38D5CF /* Files.swift */; }; + 30E3FF5DE72D56612993D499EBED8C9B /* AggregateFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 725B2447703DDB1DC47E54D23D6B5609 /* AggregateFunctions.swift */; }; + 31C1F83D5453BE25A69D6F530B1C3485 /* GTLRBatchResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 27687C530D6A8E1D650850CBA5252CCF /* GTLRBatchResult.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 32A2A368353B18B17C0C0271D45EFD8C /* UIImage+Manipulation.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EB2315ADE9FD5AB5D13CFB5648C59A8 /* UIImage+Manipulation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 32B45CCB0228F26D882FADFAACA6B5F2 /* DeleteRecordsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F9A608AE45DDBBB79571812788A19E8 /* DeleteRecordsOperation.swift */; }; + 32C5649F56A9F2DE34AC6EF9FCA33323 /* SDWebImage-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A8AB3DF42282AA17A580B967EF785501 /* SDWebImage-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 32F7E2ACCA4602AE9DE680A9D70EE36F /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1723CFFB2D87113E2298943283B66733 /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3522984A23D0983D50F2F60CD2B9F2C9 /* SMCalloutView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 390CA71F71BE3F9AD8524364A21EB203 /* SMCalloutView-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 35EF2D249B949EBEE6D6FFE7274998D0 /* RSTCellContentChangeOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 93D00DF366B8E0DFFA6ACDDB3D8CD5E9 /* RSTCellContentChangeOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 365A4114A18EFAC1823ABAF50A8A8801 /* RSTFetchedResultsDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DD1D0E6200107424B7024889A647F94 /* RSTFetchedResultsDataSource.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 384DC61A55E068D0D6FE574B07C84B29 /* TeamLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80FF2E256C5932A731650E5E37414ADB /* TeamLog.swift */; }; + 38A16AE1A89524FEC7401068F9CF2AD6 /* RSTLaunchViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = DD7C90E185D275725AA822E9A44469F1 /* RSTLaunchViewController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 38D4C8BD3E4119296D74F068DC51E56D /* DropboxClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C55207AB65A6D380BFB3D304035DB1C /* DropboxClient.swift */; }; + 39E36E16FF2FAB77065F3E24D90D594B /* GTMGatherInputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 2084F64AD29D9ECB72822B91C45E7091 /* GTMGatherInputStream.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3AF8C64F61ED8696423A082EAD71334C /* GTLRObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BC2274A09D9C43A3672A1B5D31398FE /* GTLRObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3B62B82D261E401D9CA025196D0DB561 /* Pods-Delta-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F8D603EBE941AC871B0A2F47AD5B6D5 /* Pods-Delta-dummy.m */; }; + 3D38D3143F60F22FF8148BA31C508E73 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = 668F04939465474860821A00FCE198D6 /* Operators.swift */; }; + 3E82C4D5935E02D385D773C59D424ADD /* Validation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E73A39BA15BE5DDB7864D0CFAC81A83 /* Validation.swift */; }; + 3EB27ADA37EFBB2216166A7B496CBDB3 /* RSTOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A2B6D89BA49499D48BD566164CAC09B /* RSTOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 3FBEC30670787C8E30826F4C08A5EE05 /* GTLRUploadParameters.h in Headers */ = {isa = PBXBuildFile; fileRef = B143C6A637B6A820034EE1046A508B7E /* GTLRUploadParameters.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 403A644EA6A2E5AFD1D407AB9315832E /* RSTCompositeDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = FACB43496D5DC76E9AA82F06701E0448 /* RSTCompositeDataSource.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 406C732C798D861F71B3708A0C52C458 /* RSTDynamicDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B0C96EEE8BB175E992057B639666986 /* RSTDynamicDataSource.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 413810E840B979E86303D4F70E3C9426 /* Users.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BABD2E6B672E5887AD123221C23427C /* Users.swift */; }; + 4216808C752A41DEBD20BD33047A6564 /* SyncCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4CF420B410FBBD4F0561EBE01AAE958 /* SyncCoordinator.swift */; }; + 428EFC8EA34D19BDE99A1DB7B9ED5511 /* GTLRURITemplate.h in Headers */ = {isa = PBXBuildFile; fileRef = 75B174C18ECA7E9C4F8B0778F4546A60 /* GTLRURITemplate.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 42FAFF0239C6D39B3D58A3C36EF164D8 /* RSTNavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 71BC1B535CFCE3126C56F52DD66FAB73 /* RSTNavigationController.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 436B412B5F49A5A2C494C62D8BC5E966 /* NSPersistentStore+Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBC90AE9673EB9380FC70F80D0A1A85A /* NSPersistentStore+Configuration.swift */; }; + 43A6F36EC82583DFC3F1B2EB25F87C7E /* GTMSessionFetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = A2745CACE4E1CC4B6A8752D8122EA9B2 /* GTMSessionFetcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 469EAF80560362FC2EA1F8545DB6B051 /* GTLRDriveService.h in Headers */ = {isa = PBXBuildFile; fileRef = F55FD3E4A10EB07482FD20815344FBBC /* GTLRDriveService.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 48170E27A9CD820F7122972B07824567 /* GTMNSString+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DD584D4AAB2DEBCA6D7596A944054C5 /* GTMNSString+URLArguments.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc -w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 488875F3618617406AB771502A10BE59 /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = C8C546D15F9505DB74735363097583D5 /* SDWebImageDownloader.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4948EB328DD7614DF746912086A18D65 /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = DA67BF8F08D3D5DD7D498B537919F5F5 /* UIButton+WebCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 494BF218C4F917D55808751F21518F3F /* ResponseSerialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA6921935F717D24F08DA345B384217E /* ResponseSerialization.swift */; }; + 4D465D666BB8D6765017DA206D93F437 /* RSTArrayDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 76B865E16D6331F37FD025B724C6D9F4 /* RSTArrayDataSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 4F06E8B14A298FB8784196CF343DB7AD /* GTLRDateTime.m in Sources */ = {isa = PBXBuildFile; fileRef = D77CD646F2813288F818F6C24219BD13 /* GTLRDateTime.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 4F225AB2F8B4DB682C7DD6425781CC49 /* RSTSeparatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = B5FEE3734DAC7833EE2F316A05E3FB4F /* RSTSeparatorView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 4F7D9679A8CAB7BC3FAF662016CB112E /* RSTToastView.m in Sources */ = {isa = PBXBuildFile; fileRef = D9F0CD49DD9B2E3E2D8D280AB18F658B /* RSTToastView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 50FEDFF1ECA9D67217CDAD7559CB2238 /* DownloadRecordsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D3EDB0BB2DD3FCCA18812B93F89488FD /* DownloadRecordsOperation.swift */; }; + 51882AB1BF2D64307CB26E25DB7A43C2 /* ServerTrustPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 170B362921153BB970E770297EBD180D /* ServerTrustPolicy.swift */; }; + 523CDD45B576DF460142986ED78872D1 /* NSBundle+Extensions.h in Headers */ = {isa = PBXBuildFile; fileRef = B9602429C0E7965A5BFA992A659449E4 /* NSBundle+Extensions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 52722B0030C7E925E9C8304457491FFB /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 882644118240178432B7BD688490FD24 /* SDWebImageOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 54F68E7364F5722EBB502DCB06F3939B /* RSTNibView.h in Headers */ = {isa = PBXBuildFile; fileRef = 31CBAF6EB7C773654369987E2F6A8341 /* RSTNibView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 566B02F81167FAAB363014E42ED15BFF /* Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A0AD4AC201EB8D96B8F23E0695AD06 /* Foundation.swift */; }; + 566B75E2B73627E3CF5C65FAB87E7AC2 /* RSTSearchController.m in Sources */ = {isa = PBXBuildFile; fileRef = 59626F7798BEF3B2E0BA66EE0728F49E /* RSTSearchController.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 57B9B205F478D8686A2987D5D67A4EC7 /* RSTCellContentChangeOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 593435A0CD2605934645CDA04568CA26 /* RSTCellContentChangeOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 58670BDA59BC1476ECD1AE42A65DEDB4 /* SQLiteObjc.h in Headers */ = {isa = PBXBuildFile; fileRef = 88A4F52882FCCF2DE266E99C040AE7CD /* SQLiteObjc.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 59E8ABF034C6D4AC8237C5B47F455BE1 /* SyncProgress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96951DA3D56E7525403BD8C89A47BA17 /* SyncProgress.swift */; }; + 5A3743D5E2635A29A0E16B926E2E0521 /* UISpringTimingParameters+Conveniences.h in Headers */ = {isa = PBXBuildFile; fileRef = 950CD3BC7E1EB772BBBFB8B5D3EF4BBC /* UISpringTimingParameters+Conveniences.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5A7362F951C94088EF2D56EACB467611 /* UsersRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = B489C17E8479D70586B425CC5600A19F /* UsersRoutes.swift */; }; + 5CC6CF445EA35510B757F056528651A7 /* RSTSeparatorView.h in Headers */ = {isa = PBXBuildFile; fileRef = F8583552E9E43FAA7F9D92C797A37FF9 /* RSTSeparatorView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 5DF91E6EAAC076130B2EFA4657BD483F /* RemoteFile+Dropbox.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45DFDB7A1A2A362862480B1832FA055C /* RemoteFile+Dropbox.swift */; }; + 5F3A51D09091B71867AAFAC37577E26C /* NSFileManager+URLs.h in Headers */ = {isa = PBXBuildFile; fileRef = 2526EFE37DE949B59F28B5B1BFB4EE23 /* NSFileManager+URLs.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6084A5F08E94885B9A72BF363F734560 /* DropboxService+Versions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27CFBFE38EE3E62A2AE3BEA0AE5017FB /* DropboxService+Versions.swift */; }; + 60BC657F99AB8AB86516B7C8D67B0996 /* Version.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9324F3ABCFF4F339C3BF451C3FFBB94 /* Version.swift */; }; + 6129064EEDFC7474818DA59795A85367 /* DropboxTransportClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBBB6B638293DF4772BCAA6CE4221E40 /* DropboxTransportClient.swift */; }; + 6252AC3C230BC83234C9D7D7F17455E5 /* GTMSessionFetcherLogging.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D3659B01B09AAE42557E524A27316EF /* GTMSessionFetcherLogging.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 626863FBB1F3C943ACB548FFB7A85E8C /* Timeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE0CAD992714B9169EB415DCFD060199 /* Timeline.swift */; }; + 62F18B0609BD1B5FB65F41B8BA0522A1 /* DriveService+Versions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 575CB1AB9032ECD41F06D203C4E64B0E /* DriveService+Versions.swift */; }; + 6322A14CBDF57EF29695F820A403EDE2 /* SDWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 14122C8627076BD7BE84D6459E02802D /* SDWebImageManager.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 63625B3B16AECD2C36D6DDD1A0F1ED51 /* NSUserDefaults+DynamicProperties.h in Headers */ = {isa = PBXBuildFile; fileRef = 31B604391F6CE905C37BC1B57DF00498 /* NSUserDefaults+DynamicProperties.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6388BF27A5D6E9361F14BDC2E8A91FC4 /* GTLRDriveService.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C12A43A8E9C71B79865C9DE33398566 /* GTLRDriveService.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 6460CB341EFC266FE9706D49DFBD6922 /* NSFileManager+URLs.m in Sources */ = {isa = PBXBuildFile; fileRef = A597A420DB5146A098F4AB91855B44DC /* NSFileManager+URLs.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 64CEE5DE93A64F4E59437CDD6E9AEC4F /* DriveService+Files.swift in Sources */ = {isa = PBXBuildFile; fileRef = E60E2392C1A066712DCA131786D8353F /* DriveService+Files.swift */; }; + 65C4412365A7D373B0B795CD88281AEB /* RSTCompositeDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 74D4F586F68FEE99E3E4248E0E3BD177 /* RSTCompositeDataSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6853624E43A5EB0CA069A0F55C3C315C /* NetworkReachabilityManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 077D5EF387B2ED64EEDCDB2F4654113D /* NetworkReachabilityManager.swift */; }; + 68F7071AB87ED8CB4B8CF11F7BF9A78E /* Connection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0823A19D9EA78FEDA83C7DE2B6025CC9 /* Connection.swift */; }; + 6A245DCAC5A1FD3F8943F4FD3E1473EE /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = 42AED944C954072538C8520967AC8034 /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6A386F883B6F86FCA792C8C1134057CA /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = 85DA9DA81CE6AB2A37F0C59609E6F9D5 /* Result.swift */; }; + 6AF6908C5E85F1F2D7059ACAC9FE9FD1 /* FinishUploadingRecordsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC41ACC92FF2C34B4BBFECBAEE992DDC /* FinishUploadingRecordsOperation.swift */; }; + 6B866AF94EDBF9079BFFAFB546B5F6FF /* RSTPlaceholderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C417FF7A8D0C337B615D8B06070CC18 /* RSTPlaceholderView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 6C476D938B5238A5629316C2A1E1630E /* RSTCellContentPrefetchingDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F072EE3507CBD2134100DA9E25F9860 /* RSTCellContentPrefetchingDataSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6CACD7273395DC0CA5018433BD81DCAA /* RecordEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F2F80F4679A5572917EC18888BE71E2 /* RecordEntry.swift */; }; + 6CB3F385C5AFD6C39FF636EF8F74D549 /* Base.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45C6535D41D319C5D33F481A8D50F760 /* Base.swift */; }; + 6E435A3888414096AB38942CC2017635 /* GTLRDuration.h in Headers */ = {isa = PBXBuildFile; fileRef = 5912D32B0858F53EFA8326868F9C6376 /* GTLRDuration.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 6EA0A6FE9CCD2699B6BEF34376E9649F /* SDWebImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6DD6D3ECB0AA60B8483858D13383CDBF /* SDWebImage-dummy.m */; }; + 6EAC3C9446063F09611B9BE55D8D34C1 /* SQLiteObjc.m in Sources */ = {isa = PBXBuildFile; fileRef = 325F1227EC21B365B6312234134BA6F9 /* SQLiteObjc.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 6EE9ACB0AB0E0CB81A490F499EBEFF29 /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FFA2F4ACD8A60D36B57704367A98B2F /* UIImage+MultiFormat.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 70372F5EFB462A396FD6CE09A4473540 /* NSString+Localization.m in Sources */ = {isa = PBXBuildFile; fileRef = 934018CB19D9EB2B799350E4BEBB20FC /* NSString+Localization.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 727C746735011E2CB4CC7397CB40F1E7 /* RSTCellContentDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = F65F4924DB258FF13BB1622BAAEE0E5F /* RSTCellContentDataSource.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 737E71E865A1787DBC95577C9D9E732D /* NSManagedObject+Harmony.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA1A9014FCC98E975674F0DFBB5F7F2F /* NSManagedObject+Harmony.swift */; }; + 737F23C79530D779222E1A44A32B3569 /* NSConstraintConflict+Conveniences.m in Sources */ = {isa = PBXBuildFile; fileRef = A51768E539528CEA1B7B97D0138CD35E /* NSConstraintConflict+Conveniences.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 740A2860BCECD96F23906C89ECBF06B6 /* GTMDebugSelectorValidation.h in Headers */ = {isa = PBXBuildFile; fileRef = 3829020F4459CB123EB43F75C89CC930 /* GTMDebugSelectorValidation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 76092388BB96A8DB2A8F0792582DC68A /* UIView+AnimatedHide.h in Headers */ = {isa = PBXBuildFile; fileRef = EC7B7502A435C89A67E3BB8FDD3E2F5D /* UIView+AnimatedHide.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 766306BF1B7A65F4DD5A68DA683A729B /* GTLRBatchResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 39368FCD9E3F800D5CC9ED6F7E6E2FBA /* GTLRBatchResult.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 766BBC38536CCEA992FDE2D33DCD8609 /* RSTArrayDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = E7B283AA2CF173414C0A5802ECFEC862 /* RSTArrayDataSource.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 771975EAB71C3F761B56B03BC207C0E3 /* GTLRErrorObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 87FD769EBB243EFD035EA713B8B145C5 /* GTLRErrorObject.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 774C4531614059D12553CA96F3C3803F /* Dictionary+Sequence.swift in Sources */ = {isa = PBXBuildFile; fileRef = F04A721BE6960E637CC03D557209FF65 /* Dictionary+Sequence.swift */; }; + 77709CE836C8953882A15D7EF263CD50 /* RSTLoadOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 47BB770EC52793E6D64F4EC7A03B206B /* RSTLoadOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 7834512950AF020BFE17B0D7D3D488EB /* ManagedRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5C845833332C8E4966635273939A893 /* ManagedRecord.swift */; }; + 7844A134BA9685BB6B125475786D1D2C /* Team.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDFAAE53B8E45FD949D7952EC2A138AB /* Team.swift */; }; + 7862320A3BDF56117E8370BC5DE4CA62 /* ContactsRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EA6604C4C374FADB751B07390263397 /* ContactsRoutes.swift */; }; + 78FC545494412EFE918D4D4E690167CA /* RSTNibView.m in Sources */ = {isa = PBXBuildFile; fileRef = EFA155B98CD8B997205991FC3F129723 /* RSTNibView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 7A1B39218E711151DBD6F6DD40FF6A45 /* RSTFetchedResultsDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A5C2722E51AEC178E7F784349E1C6ED /* RSTFetchedResultsDataSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7BBCB46893DAA515C72DC5B04718B124 /* OAuthMobile.swift in Sources */ = {isa = PBXBuildFile; fileRef = F918B66FEBBFEA9B9BCBF350EDFCE150 /* OAuthMobile.swift */; }; + 7C223CCCA8FDA2AFC24233CF2C80D507 /* fts3_tokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 898274DFDBF0966DEFFE52F556DE9705 /* fts3_tokenizer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 7CCF98713FAC347B5665DB0A0EBA4BE9 /* GTMNSDictionary+URLArguments.m in Sources */ = {isa = PBXBuildFile; fileRef = 98F518F5DC6FB2FEC7C37CE05451F51B /* GTMNSDictionary+URLArguments.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 7CEB79F98C23C3B429CC3545D30DD529 /* UploadRecordOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 153E7223CA8FFA2C187FCFA10F553DB4 /* UploadRecordOperation.swift */; }; + 7E2BDF8E2F051BE89228B0252B352ACA /* RSTActivityIndicating.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B03A5BFC038EAEFDE6C37E989D208EE /* RSTActivityIndicating.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8043A7E0B334D03CF18AF57B63B8B407 /* CoreFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1EB24A740C7D16547D29F2B8136765C5 /* CoreFunctions.swift */; }; + 804406B9137B455C59CDD15878E8DB63 /* ServiceOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8DEA5FD2BA1BEB9F3440F8D9DEABA3E /* ServiceOperation.swift */; }; + 8072A010724983CD7E104EE24B7D0414 /* LocalRecord.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55BF7CA893445A871DECBB9C564A9A9C /* LocalRecord.swift */; }; + 811B153C15A6CA3C89994342271E3AFE /* NSLayoutConstraint+Edges.m in Sources */ = {isa = PBXBuildFile; fileRef = 61966463CBC71ED02A3E101494AC9086 /* NSLayoutConstraint+Edges.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 8186688A59EA541796C0942D7FDE1D9F /* NSBundle+Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = A9932CB6A29912491EF8B3967E40A8C5 /* NSBundle+Extensions.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 8252CD5963E6264A2C53AE79EB3381FD /* NSError+LocalizedFailureDescription.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5B3073C814FD6D70AD385DDB122AF81 /* NSError+LocalizedFailureDescription.swift */; }; + 8310901E730FB822677EDAAF25893BE6 /* DispatchQueue+Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = 890F95B5CA062D9B6154E9EFF0DD5AFB /* DispatchQueue+Alamofire.swift */; }; + 83F6461D78547A5588C070E6B410A693 /* GTLRUploadParameters.m in Sources */ = {isa = PBXBuildFile; fileRef = CAA97A6CE79C4809EBA5E4AF4CDE52FC /* GTLRUploadParameters.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 8475C04E15B4B2A8867CC3208FF8514C /* RSTPersistentContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 971A03A698C27E134415B6A1BCC73D06 /* RSTPersistentContainer.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 85290514199956D820FB90C92DBD0002 /* Collation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 467C63094078513311E3A036679DB046 /* Collation.swift */; }; + 8579C616BEE23F634991C444DFB04D32 /* RSTHelperFile.h in Headers */ = {isa = PBXBuildFile; fileRef = D24CB7FF1300E7C22CBAC0D39A1F203E /* RSTHelperFile.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 87C116D0C75B92C7AC773AC6DD85F710 /* FilePropertiesRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98811B0AE8FC082046E0ADF4574AD3A4 /* FilePropertiesRoutes.swift */; }; + 87F651DB89D0F80F855B1F36CA256EDB /* RSTOperation_Subclasses.h in Headers */ = {isa = PBXBuildFile; fileRef = FE1BC1663278F2BD29760538D065DE9D /* RSTOperation_Subclasses.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 87FD44E2378591F0A3649E1C7FC70D9F /* GTMDebugThreadValidation.h in Headers */ = {isa = PBXBuildFile; fileRef = 619BFB4BE368F906AA4A8EDECB4C1E80 /* GTMDebugThreadValidation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8807F65AAEA86F06D27DA9B6BBCF1D83 /* UITableViewCell+CellContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 01D17E092AEC5A0E894155B6FA77DA30 /* UITableViewCell+CellContent.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 8830F72A45BBBEF3E27012947EDCAE79 /* Roxas-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E68D11D9324AD01AFC7C42B7077DA092 /* Roxas-dummy.m */; }; + 88D0FB6855DF889BF0C5BE417F016C3E /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = 86B069F806610A53B6B5097DC57C7881 /* SDWebImageCompat.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 89DBEF18B9EED15232C28ACA49912590 /* ManagedAccount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E855251AD0E12C6E0F746D7AF8E2699 /* ManagedAccount.swift */; }; + 89F637B6A72C84461E7E5E6395896B4B /* GTMReadMonitorInputStream.h in Headers */ = {isa = PBXBuildFile; fileRef = 4822BB758BBE41E64BE422EA089585C2 /* GTMReadMonitorInputStream.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8AC6F20C75D0D6031EDD553A3DA1BF04 /* FetchRemoteRecordsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40FBB0398022B16CA2ADEF30CB2CBEEC /* FetchRemoteRecordsOperation.swift */; }; + 8AD3B7AB59719794E86F41BA43AA9BB7 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 7345B422CE7E5E83753F7A060FF2D300 /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8B0F0D4050D5F1C4C84AE59D0783E2AE /* NSUserDefaults+DynamicProperties.m in Sources */ = {isa = PBXBuildFile; fileRef = EEA6FC50920D43291B0D917E68D03FAB /* NSUserDefaults+DynamicProperties.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 8BBEB7CBD2DC6BDB53EC1C7F71F82A18 /* AnyCodable.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD835A67DEE7945EB1D1EF9E13AFC0D9 /* AnyCodable.swift */; }; + 8CBECB899C76ABC3DA36DF47F65FFB0C /* UIKit+ActivityIndicating.h in Headers */ = {isa = PBXBuildFile; fileRef = 0913C43FFE347F02B2B129F1048D05F1 /* UIKit+ActivityIndicating.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8D7002BA4BF48E276D34405B85D636DC /* AFError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 027610765D53D8F4007C5B40194FC19D /* AFError.swift */; }; + 8DE558A74684C997EB5A9ED8113D1107 /* RSTNavigationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C24EE324BE60AF0E81E6E7833979A18 /* RSTNavigationController.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8E6DD8D082B706385CA9CCAFF242639A /* Roxas-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EF8958A15E98A901DBC0CFD03F65DA36 /* Roxas-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8EBC4A9C9218F1F50AEE7DBF30904E88 /* RSTCellContentDataSource_Subclasses.h in Headers */ = {isa = PBXBuildFile; fileRef = 3226341D0A0C2F09E9C5EE00D06A7517 /* RSTCellContentDataSource_Subclasses.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 8F9DE07FB0B100BA997E1B57AA2EE210 /* MergePolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F52A4835492A6E203E4D74C4AE86C58 /* MergePolicy.swift */; }; + 8FC15C53AF28B4A5F498D945202ECF77 /* FileRequests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F109D2292569772B111800DBD7052988 /* FileRequests.swift */; }; + 9086BE0B6C355410CE0B96054778A491 /* DropboxService+Files.swift in Sources */ = {isa = PBXBuildFile; fileRef = AC51849BFBFA867B684764085D303953 /* DropboxService+Files.swift */; }; + 91032A6455A3898BB38A1E4C2BF2A2E0 /* RSTTintedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 04B9EB1046F7946327ED535CA93D72CF /* RSTTintedImageView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 920D6388A019BAE183B76F28E00899AB /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = B71726B9A158070BC9BE306D7A6C8542 /* SDWebImageDownloader.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 921C1F239586B4E7118399375F45BAB5 /* DateAndTimeFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B804EB0CB6865001DB214BEA57C73FC /* DateAndTimeFunctions.swift */; }; + 92749A5C0935A1A960F2F3E6E5684630 /* UITableView+CellContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 23C608791908CF3DE346DFBA6D8F3EE9 /* UITableView+CellContent.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 936BC9EA5CE7B566A4CCF233FCE0AE24 /* GoogleToolboxForMac-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = CE252EE95D0B2FE67492E18BA47EE3D2 /* GoogleToolboxForMac-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 94D28595353D013C0530A91A7AA81FCF /* Query.swift in Sources */ = {isa = PBXBuildFile; fileRef = F595CE922A51706859139752BC6F10B2 /* Query.swift */; }; + 94F9D153E3201F09DE9E11519492DE9D /* StoneValidators.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5C9580AC87AF10A56A35795A2BB0ED2 /* StoneValidators.swift */; }; + 953B0BA08374FEB6F8BA47C9EE30878C /* SMClassicCalloutView.h in Headers */ = {isa = PBXBuildFile; fileRef = 94D66E33D9DD856007A9C14EB1634262 /* SMClassicCalloutView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 962EEE40115CEAEDA23B24392137DDFB /* RSTCollectionViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = D3120939B6971DA8F719F7B238EF7A6C /* RSTCollectionViewCell.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 96EB6181A20B51DFF979A731FDEE8E48 /* AnyKeyPath+StringValue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80067C5F868766B0F35A2739F5EE8C83 /* AnyKeyPath+StringValue.swift */; }; + 979BF68DD04C06A1E5FDE74E4DFF8730 /* GTLRBase64.m in Sources */ = {isa = PBXBuildFile; fileRef = F8FFB2CD35CECB252C08AA9BBF8FC9AD /* GTLRBase64.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 9B2B7AA09946D29AB32ECD25B071CC66 /* RSTDynamicDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = B373A735DC64C323233F34AA09E35C8E /* RSTDynamicDataSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9C8A0C2204C091124D6C64F86A690F9F /* SMCalloutView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C6F1CC0D7A0F0AD93F5B13C2F6713C5F /* SMCalloutView-dummy.m */; }; + 9CF692BD464C27BA082BE1DCA7A9D45C /* Alamofire-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 50C5B9AA89857E20671F13F6A5717299 /* Alamofire-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 9D36135EF268512D3741FD2E84A0A2E1 /* GTLRQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = E6B9F3E90F28D32445533FAA29AE51ED /* GTLRQuery.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + 9D5990198CE8DEF226EA2DB004E55FCC /* Syncable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B5A2732251DB4000415E75BE99B6062 /* Syncable.swift */; }; + A007940F022B62E013F1F7B8E1B12D0A /* NSManagedObject+Conveniences.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26DC99E91CDEE86C52E9E0324D1EA501 /* NSManagedObject+Conveniences.swift */; }; + A078B7B76A3011311A4A3F20EF47D0F7 /* UICollectionViewCell+CellContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D7980D69C299BBA0F307475AB007E1A /* UICollectionViewCell+CellContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A3CBABD8EE55DB2CA7BBB79327926653 /* StoneBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA0FCDCE58DC43DD61C7972CFF58165A /* StoneBase.swift */; }; + A4CDAB56ED7EA775F1A4AF9BC6C5E712 /* GTMReadMonitorInputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 70D716720D6847D1C1BC0D9510525175 /* GTMReadMonitorInputStream.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A5516CA09D787850C6944D246A789265 /* GTMMethodCheck.h in Headers */ = {isa = PBXBuildFile; fileRef = 352EA461943DF04A227376E366F2CEAB /* GTMMethodCheck.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A5C0AE4E9AED3A8854E26FC94B2645A0 /* Harmony-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C217B1D470D67BFDE20D91DEF2F3C0C /* Harmony-dummy.m */; }; + A6173C5A991255ED8E9DF5B7A8B26CA7 /* GTMSessionFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 68671438132F11B6C9569C0CA93DF99E /* GTMSessionFetcher.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A66A864BEF85DCA6F5178352082DFDA5 /* RSTBlockOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D2B20ED20AF4ABA225D32763743F699 /* RSTBlockOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A6ACF61B5114756307947455B4EF98C1 /* RSTOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = F9BAD513155FD42507CA9552744A41E6 /* RSTOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A7C2D5CBF1DD8598E75EFDE2329992A2 /* UIView+AnimatedHide.m in Sources */ = {isa = PBXBuildFile; fileRef = B136A2A8FE351E57E6D740927A61A3BA /* UIView+AnimatedHide.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A7DA64C60CB93199F81658ACDA16381A /* UICollectionViewCell+Nibs.h in Headers */ = {isa = PBXBuildFile; fileRef = DD1DC3988E51D15B9E94BBD52E6165F5 /* UICollectionViewCell+Nibs.h */; settings = {ATTRIBUTES = (Project, ); }; }; + A81C3E45CCF87B85F8CC6334E492C628 /* UIKit+ActivityIndicating.m in Sources */ = {isa = PBXBuildFile; fileRef = 52C44BE7B3E49A07B14A7C3FA8470C56 /* UIKit+ActivityIndicating.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + A902E94BC79F6FA99E9BB0300EA305B3 /* CustomFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CA2772AD93DCDBC01C2E7384538B9AF /* CustomFunctions.swift */; }; + AA993C63C74CFC865F2DF37BD6329A09 /* UIViewController+TransitionState.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DFADDC6F34642773FC6D98814359205 /* UIViewController+TransitionState.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AABAC6829E32CF2839CDBE3776917088 /* SwiftyDropbox.h in Headers */ = {isa = PBXBuildFile; fileRef = DC73EA1B294021D3897C246C0477DE26 /* SwiftyDropbox.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AC48CABD7E17D3A1C3785B36ACE85525 /* TransportConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7A860C858433F347A515665460A363A /* TransportConfig.swift */; }; + ACEEC71563EFD5FC1366E48A03F44ECA /* RemoteRecord+File.swift in Sources */ = {isa = PBXBuildFile; fileRef = 143BD292AEF9C3E011136A57C9DF912E /* RemoteRecord+File.swift */; }; + AD6656B872B98CDE4BAC39B6E10CF595 /* GTMMIMEDocument.h in Headers */ = {isa = PBXBuildFile; fileRef = 61C43BDE058ECC24885E698E51468B08 /* GTMMIMEDocument.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AD6981DD3FBB16B3081752331E95C1E6 /* FileRequestsRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07B86FE9509734983A9AC8CDAC6CE183 /* FileRequestsRoutes.swift */; }; + AE778C15392B6BB14EFBD7566B066E19 /* NSString+Localization.h in Headers */ = {isa = PBXBuildFile; fileRef = 514A7039E91889B99572BDC6A5C18356 /* NSString+Localization.h */; settings = {ATTRIBUTES = (Project, ); }; }; + AECB1619CFCEF7A7234852F00CB0C5C0 /* SMCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = 30C25451FF334947DA958DAD43A4FF2C /* SMCalloutView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + AF02EA0DAD3FAC51CB5E859F81786EC6 /* SessionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7FA63AFAD02B836FD0B1EC4CB4230DDA /* SessionDelegate.swift */; }; + AF51B60F90BDABD26AE53E2294FFA0E1 /* RemoteFile+File.swift in Sources */ = {isa = PBXBuildFile; fileRef = B02A952ED3771DEE753E9E1DB18B0CAB /* RemoteFile+File.swift */; }; + B00CBB6A581E7D28860CA36877B7FC17 /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0B6231BE1227B31701717B2F7041B26 /* Errors.swift */; }; + B2413D48BE65FF8FD294A53D5C5B760D /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 6AFFCCC1C14E863EACE17B7906A9F5F7 /* UIImage+MultiFormat.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B2CD7F146E941A2FEB554A340AEA6FD2 /* GoogleToolboxForMac-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E5DD6A57AD32001B35729CD3C312BD8 /* GoogleToolboxForMac-dummy.m */; }; + B2E73A66333657C0A05A6E648769E5E2 /* Custom.swift in Sources */ = {isa = PBXBuildFile; fileRef = E993E034DC38FEFB226C0BF4EDEA95D9 /* Custom.swift */; }; + B2EB8D4FFEC6DC5D343DFE0CB523C720 /* File.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ED91C6668413918BB957ADDC0973CC2 /* File.swift */; }; + B422DCB989FF675D287C579D280F8253 /* TaskDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 13ADD1A95E06BEFD5750FBEB3A1569DE /* TaskDelegate.swift */; }; + B47C861F95112C613F72B9CAF4784FC4 /* BatchRecordOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E9718BC8CC41735731EFA5AE4C887C6 /* BatchRecordOperation.swift */; }; + B51108555B71EF86610CB07052A83F49 /* UICollectionViewCell+CellContent.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A38B17016D4FE44653121F0230F5529 /* UICollectionViewCell+CellContent.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + B560A089A1D47EC1F0B26533258C7317 /* SessionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34777F37FD7075222B0F5F8E54FEDEB7 /* SessionManager.swift */; }; + B560E458E433DDCF624D34FE1E40087C /* RecordController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2323536FBE932E9A2BACA12C0F7DC43 /* RecordController.swift */; }; + B588B4C4C276D0350E74F83ED36DDC37 /* DriveService+Records.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E2D61118AA3383BE1427AD561F7368E /* DriveService+Records.swift */; }; + B592BEA6F00B6CB2A68FF21EE18DCCE5 /* FTS4.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38D7384818AF68440B2244375F9AA33C /* FTS4.swift */; }; + B5A33D72F642157329F8DF95133FBDC1 /* RSTToastView.h in Headers */ = {isa = PBXBuildFile; fileRef = D4B8FD265B54C00C19CBEB64B04F1EAA /* RSTToastView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B6FE9A5B8C570BB172DEBEEA52B07EA6 /* RSTCollectionViewGridLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = E00F0B88F32DFD6484C234F86CF5FB50 /* RSTCollectionViewGridLayout.h */; settings = {ATTRIBUTES = (Project, ); }; }; + B98B34F84ACCB80A84CD6BECA631A3F6 /* SharingRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E4B8BAE36970525F2C28726D9295208 /* SharingRoutes.swift */; }; + BAF1DABDFECEDDACAA33BCDDFA56B68D /* StoneSerializers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AB4D9CCF9277B0AAD20AF4BCBDCC7E8 /* StoneSerializers.swift */; }; + BB0CFB82073B9090363ADA3150515534 /* Harmony-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7632D02ABB0ADB8514EF7C1E9DDD782B /* Harmony-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BB91F0F9900A599B5FC87A4538B32EC5 /* KeyedContainers+ManagedValues.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92278C21D42FE3CA639D84B8AC7E7EC9 /* KeyedContainers+ManagedValues.swift */; }; + BBB7B546DA75412C4E2623C173D916B2 /* UploadRecordsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D6242834425C46B4C3E553C5FCD96E2 /* UploadRecordsOperation.swift */; }; + BC4EB746D2E13352424A93FDC7A52F78 /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = F950F0FEE40116F37DA6EDF3C3156597 /* Errors.swift */; }; + BCC3B83B11F726387F8C0A3568E470D1 /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 32D381ADD4F43FBEF880D04E34438F4B /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BCCF0B9F15A1651547EADC31A6CEB5C2 /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = 04CA1767316952F9A341BB308D5DFF62 /* SDWebImageCompat.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BF007953AD85268DAADE95A4578790FE /* GTLRDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FB4B0452C796E5FB31A64D7A44B53E6 /* GTLRDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + BFB9E16A473FC19EC99F355011C34A45 /* DriveService.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC1D5886605D6AA857B1294C64A88931 /* DriveService.swift */; }; + BFD435E2C759E82667C53915E1F70A02 /* RSTHasher.m in Sources */ = {isa = PBXBuildFile; fileRef = 8588CE713C88B9E6A4A835773131C383 /* RSTHasher.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + BFF536B78DC4850A4A285C1D03F56057 /* SQLite.h in Headers */ = {isa = PBXBuildFile; fileRef = F5B2FBBDB56AB50CB2010A04545B31A6 /* SQLite.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C0284CAA9055BDD1995683D6BCCE283A /* GTLRUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = FAA33D4607A674D4B4CEC7E44CBB7F7F /* GTLRUtilities.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C0690B14B39CADE96E4EC96B8A40BF18 /* Version+Revision.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7E37EDDD47B8D03EB2F2F576E2A8600 /* Version+Revision.swift */; }; + C11404A581B684B89073D59DACA5C59B /* Result+Drive.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17170F0CA233C9110181F74544CE1B5C /* Result+Drive.swift */; }; + C15FE401E462A35621D1B0D7DF14855B /* GTLRDriveObjects.m in Sources */ = {isa = PBXBuildFile; fileRef = 6DB86817F8E387CD37052ED22E7F2A95 /* GTLRDriveObjects.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + C2C5E95A3778956D900630B30127E6BC /* GoogleAPIClientForREST-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9513E61E8CF8CA83CB229CB898FB8FFB /* GoogleAPIClientForREST-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C2EB4CB575EA9821E30A317574865D17 /* MultipartFormData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68BEE73B150BEA72E8CDCDC7AD7FFE45 /* MultipartFormData.swift */; }; + C3C81C1F255B2982D7DDF74E77D11CA3 /* GTMDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 18F66715A19114346F3E056B7F1416D4 /* GTMDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C41903AD7013A8B9709D3EC574FF9D21 /* GTLRService.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D102F1530DD768EE61A6780CC10945E /* GTLRService.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + C42C9B4C5A5AA7B1FAC27F0346C87396 /* GTLRURITemplate.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DD0C64E90429209275BAACF02C906D5 /* GTLRURITemplate.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + C4E4DF46F173736444DF635DFEF27A16 /* UITableView+CellContent.h in Headers */ = {isa = PBXBuildFile; fileRef = D915831E8F4887A23F86A1CDFC74DF86 /* UITableView+CellContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C5028985B9FCE24D815EA3F82FF7FA33 /* RemoteFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 354509C6EB5B13866598B2FA3731D2BB /* RemoteFile.swift */; }; + C515138F500627017548FE417BF4DF90 /* RSTOperationQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A72B76741B4B4C3A7056BCE54B5E767 /* RSTOperationQueue.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + C5FB1A3038B4CAF65AF081B2C08AB634 /* RSTRelationshipPreservingMergePolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D8960DC903FF8290DD8DF8C73948BB1 /* RSTRelationshipPreservingMergePolicy.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C6625E357CAC034BB823DD859355FB88 /* GTLRQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = B6DD4C4DC83CD268B10C477AFC1CEB9D /* GTLRQuery.h */; settings = {ATTRIBUTES = (Project, ); }; }; + C72087EDCF1BAE223A1BB8C94BA87329 /* Statement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CBDB4B38203396A8BDBB2611783C40B /* Statement.swift */; }; + C94D716D53BA480D2C1490D4D57D55A9 /* RSTCollectionViewGridLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B7836BE5B529EA32A19CCCE49C91CA6 /* RSTCollectionViewGridLayout.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + C9898D393FDF7E17C404424E76078E76 /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = E0D0E15186DB684064A51C1925872560 /* NSData+ImageContentType.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CB35FBC058FF779B0B83E8855396A19B /* CustomTasks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F569EDFDA62114944EC1BE586F8F916 /* CustomTasks.swift */; }; + CB4515808CDEBACB83C26CF08552CC8A /* RSTTintedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACF272C0DD8E70962D180D393182970 /* RSTTintedImageView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CB7A5FD2D111FB945D4C60F8F9CEB90A /* RTree.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78D45C1AD1DB0DE9B1EC5920BC41CC0A /* RTree.swift */; }; + CBD00AD2D050E606B432EF764F0443EF /* FTS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E4CF20C467CA0FE8755D1BD38D66D70 /* FTS5.swift */; }; + CC17AC1E67F027CD4D4E05728F078DE9 /* RSTError.h in Headers */ = {isa = PBXBuildFile; fileRef = D7B3E5FDB7C50DF28247D34DF08D86DC /* RSTError.h */; settings = {ATTRIBUTES = (Project, ); }; }; + CDD28AC1BB0F07E4991F10641F3B3ACD /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 28EA63DED260AC3D10888E6B160715D7 /* SDWebImagePrefetcher.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + CF5D73E5BE9B54FCD4506E3A6FFEEA25 /* Common.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5A4341628DB896D5045C1381D4F768D /* Common.swift */; }; + D0A677BC713110416D5C821975836C37 /* GTLRDriveObjects.h in Headers */ = {isa = PBXBuildFile; fileRef = C502187AC8986A6C13F8C50618BF74A6 /* GTLRDriveObjects.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D0C35FB6379840B7CE1D8640DBAC7ADC /* RSTCellContentCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 1854B53E0BD73B3D105F6DDF3BC2F70C /* RSTCellContentCell.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D164118F5D9342A86BA96D252D7C6870 /* DropboxService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 994471510E3F8110E8E5C89D839C15A4 /* DropboxService.swift */; }; + D19690C03A254AF4C2A1731CD68A6EF5 /* UICollectionView+CellContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E68150D1F72CC502516BA7F5B6F46E8 /* UICollectionView+CellContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D21FA0B1E677F37B8B6816C9FC08EC82 /* GTLRBase64.h in Headers */ = {isa = PBXBuildFile; fileRef = 784F252B00C093E4B76B5330B3E96D29 /* GTLRBase64.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D25EE90E04D6167B04E134E40B324AB1 /* GTLRDrive.h in Headers */ = {isa = PBXBuildFile; fileRef = 58EEEED1C715D914278ED0DBB32F3829 /* GTLRDrive.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D25EF967C85DDD0C8F2FE70EA9E57935 /* UICollectionViewCell+Nibs.m in Sources */ = {isa = PBXBuildFile; fileRef = 2580A4A555312C496A5873799DA66677 /* UICollectionViewCell+Nibs.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D3402FEC79C759B618D76054EA4AFA74 /* GTLRDateTime.h in Headers */ = {isa = PBXBuildFile; fileRef = 35853860780F7CD1E52A5B698C070DB0 /* GTLRDateTime.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D348A6D97464C7DF00A7DEC2677040D3 /* RSTCellContentChange.m in Sources */ = {isa = PBXBuildFile; fileRef = FEC5AB1219E742B719483DB3A7E17C4E /* RSTCellContentChange.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D3914BDD63258B8237AD94F7377B9607 /* DeleteRecordOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 395B3990222DB4ACFD33DFE4AA965D9F /* DeleteRecordOperation.swift */; }; + D3DEAD4C77A168D67D3EC458661D424E /* GTMSessionFetcherLogging.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B92A814F5D5ED402320C4ACCDA8CB15 /* GTMSessionFetcherLogging.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D474348D385337E6C15FA2882009CCFD /* GTLRDriveQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = D091ABD1DCB16678D1F8C49A5CDA541C /* GTLRDriveQuery.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D58CE6E7A372533BE5037B5CC5535EB7 /* UserDefaults+Harmony.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D275B8855202007D0EF4ECAE74754C4 /* UserDefaults+Harmony.swift */; }; + D59755AAA20B7642DA738C61BF166D35 /* RSTConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = F6052475DCAFAECED7A4638CBEBD737C /* RSTConstants.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D6721B35D8B2CAAB96A5AB588F69A333 /* ConflictRecordsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1DE26BCA8EA6B8834D47A3AC680BDF05 /* ConflictRecordsOperation.swift */; }; + D6B469D930692388DEAE2344B8F39533 /* CustomRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F090A5D74FACCC582CBC07FD017F492 /* CustomRoutes.swift */; }; + D6BB7F0B578691B2B50C2B55CF82D04C /* RSTCellContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 631FDCF5623C5A48ACB6BD748EA090EC /* RSTCellContentView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + D7A38183B12CD757E00F20A9DFB6FE95 /* RSTCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = A758F8304E0C509FBEAEEA7C0ABC213A /* RSTCollectionViewCell.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + D847D7DD39249AE3F8B937E71D2D8549 /* DownloadRecordOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D339DD3505283EE70C70980777E52454 /* DownloadRecordOperation.swift */; }; + D8524A5C842C0580F42718FE94C8F791 /* Alamofire.swift in Sources */ = {isa = PBXBuildFile; fileRef = D45685541F9FDDAFC2135E99EB6062F4 /* Alamofire.swift */; }; + D8F09E6FFEAEFBFFA69546C6F36EF74F /* Coding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6591BB3EFD2C2F62DD4AA134D08304C3 /* Coding.swift */; }; + D9D678A3261AB86A7637EB79F73B0D27 /* GTMSessionFetcher-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C9B1C8A3927DBD36AEF7189D04F872C /* GTMSessionFetcher-dummy.m */; }; + DA3E8AE59A56315380CD93F947614945 /* Sharing.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FD3E5D0769094E755103884495517F9 /* Sharing.swift */; }; + DB02626D12C516C4CD6A9EA98D20A50A /* SQLite.swift-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2B3E4E0BD549452A129407E9F4DF73D7 /* SQLite.swift-dummy.m */; }; + DB17AEA169FA03900C8747C780B84E62 /* SwiftyDropbox-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D67E5D2FF8E7E31C4604718B8E3260BB /* SwiftyDropbox-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DB5891014AF5583F4CE70D67063FEBF4 /* SQLite.swift-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 24492A0EE90D47AE559514DC997E7AF1 /* SQLite.swift-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DBF0A6C0BE990638F43CB71209C4E731 /* SDWebImageDecoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 21CC13037EB3BB52515BA531C4ED26F3 /* SDWebImageDecoder.h */; settings = {ATTRIBUTES = (Project, ); }; }; + DCC963FA18AC3D5E98226236B48365EE /* RSTLaunchViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = AC141F3396894BFC35CCC27F6A514EF9 /* RSTLaunchViewController.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + DD46C14FD68C81F665E55EA792C141FD /* GTLRObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 9304976C28337B980C64A1D91C8AF382 /* GTLRObject.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + DD621F6F557AA577A3A3675D856790E0 /* TeamCommon.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BD1DCE8B41E489F31B299E91C0CC70C /* TeamCommon.swift */; }; + DFAE61CAD0C9E0D221B0B8A65C574C77 /* PropertyGroup+Harmony.swift in Sources */ = {isa = PBXBuildFile; fileRef = 614B12A54165D2E147D0F59BE6F7F0E4 /* PropertyGroup+Harmony.swift */; }; + E0584F089FB27ABA38D5D355721DE37C /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 716975BE9CD340CF781E0AF49D8555F6 /* SDWebImagePrefetcher.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E074D1A2846CCE88FD92FE7C48E84DC7 /* GoogleAPIClientForREST-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 073FADF4D5B878E152DF3856F015EE2D /* GoogleAPIClientForREST-dummy.m */; }; + E0B3B5EFD0E958737E6D09B5135C5ED9 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 9CF24E328C4F51F71C34162874902931 /* SDWebImageDownloaderOperation.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + E0FEB9F2594867F338970BC1663CA68F /* RSTDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 10F04D2F075E09D618DE1491C773E57D /* RSTDefines.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E1DD8AFCF27A7530A8E41887F2EEACB9 /* GTMNSString+URLArguments.h in Headers */ = {isa = PBXBuildFile; fileRef = 150A205C7D47E4B8B2B1D8A98C88949B /* GTMNSString+URLArguments.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E3FF5DACA1ACEFE447EA8EB66169219C /* FinishDownloadingRecordsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = B23FDDFED8F7DEF10971E0852379C61F /* FinishDownloadingRecordsOperation.swift */; }; + E49F4908A8DF8637A3944DFC53BA890C /* Service.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB09C444DC64973D518ED9948CC80C26 /* Service.swift */; }; + E6A302DAC5456189F0F4F02849F31183 /* RSTCellContentChange.h in Headers */ = {isa = PBXBuildFile; fileRef = 1819C8AFA9C10BF9BED7A829346CA636 /* RSTCellContentChange.h */; settings = {ATTRIBUTES = (Project, ); }; }; + E71F44F75AFAE601AA7FD1DCCC56538D /* DropboxTeamClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = B813AD003C192F0CE40D777CA40C3215 /* DropboxTeamClient.swift */; }; + E78529FBA5C035888371AE6EE12276A8 /* Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92A31A082A6C5A376495F4E8C563AE3F /* Helpers.swift */; }; + E9D90305973DEDEC0F4BFB33B4281876 /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CA4601D3B9A95C5B7028B04BB611234 /* UIImageView+WebCache.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EA757276E51B372186AA7CBF54417409 /* GTLRErrorObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 41C3873012793660F0D7FC67115DC0C2 /* GTLRErrorObject.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EAFAB542A9C64CFCE6CE22241E05F94A /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F1C0690FFC4BEC08FD35AC6E956901F /* UIImage+GIF.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + EBC516586457D8BA8B838FF0A74F6192 /* SMClassicCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = 653E5BD75990FD287A14F29C045BF213 /* SMClassicCalloutView.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + EBD00D0F07FF7FAC57B2F8DAA3674274 /* RSTHelperFile.m in Sources */ = {isa = PBXBuildFile; fileRef = CC538E7270C604A592B5B99AD1B686FD /* RSTHelperFile.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + EBE61162E7C42E3C10C4F44C4C6CA4A2 /* HarmonyMetadataKey+Keys.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55D9EA5E839848FDCCD51E9C9EC6015A /* HarmonyMetadataKey+Keys.swift */; }; + ECC25F7B2B3C29BC76DCAC098A583D27 /* PrepareUploadingRecordsOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0669C4806F3DC553E91D77B3EC76CBEA /* PrepareUploadingRecordsOperation.swift */; }; + EDB9F82968EBFE551EC3E554DBB15022 /* RSTOperationQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = EC79FF57D7531AD04C143E3999102D9B /* RSTOperationQueue.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EDF25F3AD609519E7D04C76049DF6B88 /* Record.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBF5E9F21D0CF37992311F5A0E8D5D2B /* Record.swift */; }; + EE00773DEB5849BDFE00AD4CE6FB8EB9 /* GTLRRuntimeCommon.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D5314EB9184C09220720983913CFDCE /* GTLRRuntimeCommon.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EE2019BF5CB64FFF4F1A0E423383637C /* GTMSessionUploadFetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 98DF1E5529C077369D7120476DA5063B /* GTMSessionUploadFetcher.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + EE4994A811223017B6C5EE3AC8A4FDAF /* GTMSessionFetcherService.m in Sources */ = {isa = PBXBuildFile; fileRef = 853CB1BB7D85A6528B399DAC229AAB8D /* GTMSessionFetcherService.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + EE65DC50A0B1CA0F1BEAC525CDD71355 /* GTLRBatchQuery.m in Sources */ = {isa = PBXBuildFile; fileRef = BCC0D0106CBF47F3718C75AB129B5F88 /* GTLRBatchQuery.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + EF2C57FB1711ACD9C4ACBA052BD1D8BB /* RSTCellContentDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 14CAE3FC87389C6B6A49F795D683F781 /* RSTCellContentDataSource.h */; settings = {ATTRIBUTES = (Project, ); }; }; + EF9EA527BA1D415C6EBCDDB70A504961 /* NSManagedObjectContext+Harmony.swift in Sources */ = {isa = PBXBuildFile; fileRef = 787A86333DCB72C06010245EDE6B0712 /* NSManagedObjectContext+Harmony.swift */; }; + EFE4A9D0F0193903B0E0A77D748730E2 /* GTLRDuration.m in Sources */ = {isa = PBXBuildFile; fileRef = AD8B24568C6B6828EC0236E1FCA637EF /* GTLRDuration.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F0F423C8BE9E56382244511DB80F737A /* Result+Success.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DD63E31BA02D76CA3E8415ABF10117E /* Result+Success.swift */; }; + F167CCE2838CD4DF3161F75877A2858C /* Value.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2D095C267A39D92899F611B66D0EFCC /* Value.swift */; }; + F1DCBDDEE6EC2B1512E4A288D7ADF679 /* GTMSessionFetcherService.h in Headers */ = {isa = PBXBuildFile; fileRef = DCFC19BC3409D8B7B451D3611A917819 /* GTMSessionFetcherService.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F414B9330A7EB830B46671D3302554AD /* Pods-Delta-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 37221D699E77B16EA4FE6C376B827730 /* Pods-Delta-umbrella.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F46F0BD6E9E3963197729FC246F2AABE /* RSTPlaceholderView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C4D79AFBA1CA341C6A6B3A46012D512 /* RSTPlaceholderView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F47DE4860ED00EA4CDC661D662F1681B /* SMCalloutView.h in Headers */ = {isa = PBXBuildFile; fileRef = F577B3E9B2D8B8B2F6F1B64CE574E5FD /* SMCalloutView.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F54EE04CAD7C3199596833B62C4C5955 /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 218B7A0E4B70FEE5CAA47739B8007C50 /* UIImageView+HighlightedWebCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + F5FE77F59FDE92EF501527924AA38089 /* DropboxClientsManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F033C26C41BA521B8838CD0887AC919 /* DropboxClientsManager.swift */; }; + F7DB23E528267E2D78C81293D3741C6C /* UsersCommon.swift in Sources */ = {isa = PBXBuildFile; fileRef = A77B2AFA9090320120D02BCCF6E32E52 /* UsersCommon.swift */; }; + F8F2AB48AEF8879E24090F392019A94D /* NSConstraintConflict+Conveniences.h in Headers */ = {isa = PBXBuildFile; fileRef = DD997783DD8D3FF071362656F6CA8089 /* NSConstraintConflict+Conveniences.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F9C55374D299754191544942F0147195 /* Harmony.h in Headers */ = {isa = PBXBuildFile; fileRef = 670595C2D7BD6AD4D6570F4F0E86A2FB /* Harmony.h */; settings = {ATTRIBUTES = (Project, ); }; }; + F9F08CA61836853CAE7455D76939D98B /* ParameterEncoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03A2CFC64216406ECCD6DF6C2170F4CD /* ParameterEncoding.swift */; }; + FA577995260851815A34580C95A493FE /* GTMMIMEDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = D12B5D4C9BC18A6433F8876AB8C1849D /* GTMMIMEDocument.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + FA635085E863B88998D22968947580AA /* UITableViewCell+CellContent.h in Headers */ = {isa = PBXBuildFile; fileRef = 02E2FC53073880496A8D17A990849C07 /* UITableViewCell+CellContent.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FA9B5DF268C458C80AA79A7FBD2A08BD /* SDWebImageDecoder.m in Sources */ = {isa = PBXBuildFile; fileRef = EFA960D20478796B386E935916CD9C87 /* SDWebImageDecoder.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + FB4E15371E7CCEDDBF32622DDCA3B5FD /* TeamPolicies.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DAEC064FED2041B3CF4D2D6DCEB4021 /* TeamPolicies.swift */; }; + FB5FC08F181CCF992399DC063D0AEEEC /* FilesRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBF9BA079C8B4F7AAD16EF95B1319533 /* FilesRoutes.swift */; }; + FDE5050AE0464FB05B1147E05397E429 /* UIAlertAction+Actions.h in Headers */ = {isa = PBXBuildFile; fileRef = F1AD1B41D23F04E3475D38F344E8D214 /* UIAlertAction+Actions.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FDFC423A4243CFA179481946B523C999 /* Setter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C701B63124E39AA3072BFD49D65662A4 /* Setter.swift */; }; + FE5E8A8B7F3BCE33EB8D3F30FC6EA75D /* Contacts.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA47CBCD26980FB1A639453C7DC7E3EE /* Contacts.swift */; }; + FE79EA3D2FCE8C853F813601CA885C3C /* RSTBlockOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 90ABADB85250EDEB806688C92B98A056 /* RSTBlockOperation.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FF31B5BBE13193F204040DE66FF15F02 /* Request.swift in Sources */ = {isa = PBXBuildFile; fileRef = E38504546C7DC8BF9137C8D301649C8E /* Request.swift */; }; + FF47124336E697A518CE2C93B8E88C2C /* GTMGatherInputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C86ED7C3E410FD2D8BEC98751E7F21C /* GTMGatherInputStream.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + FFB60CE26BC4B7CC1FB0A8E9DA386F70 /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = E71B995352F5B5D730624F6E0B61EAB1 /* UIImageView+WebCache.m */; settings = {COMPILER_FLAGS = "-w -Xanalyzer -analyzer-disable-all-checks"; }; }; + FFB82AAAE70D1401F93C370E00A47AE0 /* ManagedRecord+Uploading.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A4557094546318F4BB1CB7515DBDBB0 /* ManagedRecord+Uploading.swift */; }; + FFED35B78D0E0C68526F3E3BB920230D /* GTLRDriveQuery.h in Headers */ = {isa = PBXBuildFile; fileRef = 13243B038BA4A8CCE05818902554AEBA /* GTLRDriveQuery.h */; settings = {ATTRIBUTES = (Project, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 03CADCA516B509027D42D548C32C117D /* PBXContainerItemProxy */ = { + 011E1F3C5EF1407FFA6D7E1B125B0A02 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = FF39B7A1D9F00620D9F56635ABBB2C03; remoteInfo = SwiftyDropbox; }; - 08A5CA2A6124D2CE6A9C04540C07BBDD /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 5B32FEE5AD13CB944235C9158BECB929; - remoteInfo = "MelonDSDeltaCore-melonDS"; - }; - 1929022B37D6325A0BAA2FE06E8ACC91 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 530F469AED058B94728C278CCA514500; - remoteInfo = DeltaCore; - }; - 1CE85BB601CDDBA5E25E0E95486EABF3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = EAAA1AD3A8A1B59AB91319EE40752C6D; - remoteInfo = Alamofire; - }; - 24D3F45EA4EAAAFAE1DE07EED1AE36F7 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = D676E21115185671D7258A56944ABE98; - remoteInfo = GTMSessionFetcher; - }; - 28302951E7CF9C1CDE7D2CC88774611F /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = DB59C68809324297BEDAF0CC3F931B27; - remoteInfo = GBCDeltaCore; - }; - 2C5709615939DA1B7E6CFF6BCAA317A3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 530F469AED058B94728C278CCA514500; - remoteInfo = DeltaCore; - }; - 2EFA413356C607A1626012EDAD87D01A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = C0E41540D6862472ED7F2FA11669BE1F; - remoteInfo = Crashlytics; - }; - 31D44EE8C88366B75E26D87127811337 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = DCBC8D45C727B1472F26E79661AF11B0; - remoteInfo = DSDeltaCore; - }; - 37A4C2ADE2190EEFC66D430839087B4C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 530F469AED058B94728C278CCA514500; - remoteInfo = DeltaCore; - }; - 386A39C8F62681B6A974D70FC9A9B05A /* PBXContainerItemProxy */ = { + 0C495B98C98D2CB0FBF40910071DF87A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B5D1BA64AC676FF46408FCDE19A05767; remoteInfo = Roxas; }; - 40F18D71FB7538B15941AED49EBB0611 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 3847153A6E5EEFB86565BA840768F429; - remoteInfo = SDWebImage; - }; - 454F353F8F3248E880E676F092E22284 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = D20492B6476142DCA0C455340876BB98; - remoteInfo = SMCalloutView; - }; - 57820E1B1EE391322ECA06DE8D7A6B13 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 890229DC8DCC9C43917568A0C4502FCA; - remoteInfo = "GBADeltaCore-GBADeltaCore"; - }; - 585C88958954E55FCE37FD900FC23F26 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 530F469AED058B94728C278CCA514500; - remoteInfo = DeltaCore; - }; - 5B47AF70F182A50CA7CA8415481A7E5F /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 530F469AED058B94728C278CCA514500; - remoteInfo = DeltaCore; - }; - 5FB73A534E55CBBA1A05215B109C1984 /* PBXContainerItemProxy */ = { + 232710701842F00B3415F9F17A224786 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 3F2C1776D90B62B156DB52C41A5C419C; remoteInfo = SQLite.swift; }; - 637A0CCCE4557B8E40F50FA577C068FC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 1B47E46598F87113B00B3B25BBF51B32; - remoteInfo = "DeltaCore-DeltaCore"; - }; - 800DEF27C0777AF0AF809DAFC391BD84 /* PBXContainerItemProxy */ = { + 2951DC6BAD6276B6D8EF56621FBDF766 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = ABB048B191245233986A7CD75FE412A5; remoteInfo = Fabric; }; - 80396A541B74123C11A5A9973DE0921F /* PBXContainerItemProxy */ = { + 2E0A457F03D61640808BB0AA6406CCC5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D676E21115185671D7258A56944ABE98; remoteInfo = GTMSessionFetcher; }; - 834E6DD2BCE05F6D3123BBF6DBFE88FE /* PBXContainerItemProxy */ = { + 3A5E652B86BC93C36CA47387731896C5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D7958E869B6C0073DB3025514393D7A3; remoteInfo = GoogleAPIClientForREST; }; - 89A67CEF61FA6CC5D5BFEA16CF9ACE11 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = D47C581D39D227080F83B16A22A56664; - remoteInfo = GoogleToolboxForMac; - }; - 8D91A7CA0E4B74AE4E559CA2CB852904 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 126073BF5D2BF3A4BDD22FE9062C9D20; - remoteInfo = N64DeltaCore; - }; - 8EB9D701C4C1A3088A07BE46C4BD8961 /* PBXContainerItemProxy */ = { + 4B640CD01C5B7DA2914B5F9F1E71A6D1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D676E21115185671D7258A56944ABE98; - remoteInfo = GTMSessionFetcher; - }; - 9013FB89858924EAA4F485517B555334 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 7056A67459B0B8B62FACACCE167546B8; - remoteInfo = GBADeltaCore; + remoteGlobalIDString = CAD3534FC55B0333104E5117C0A9A324; + remoteInfo = GoogleSignIn; }; - 94DE0E094C6F88656390AF783AE3DA3D /* PBXContainerItemProxy */ = { + 4E38DA6055025005B61FD25AB04DCB42 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = AA15C8469D67684160CC2A7098EB841C; - remoteInfo = ZIPFoundation; + remoteGlobalIDString = FF39B7A1D9F00620D9F56635ABBB2C03; + remoteInfo = SwiftyDropbox; }; - 98E4932961D5ABC64AB6A668C27C13F1 /* PBXContainerItemProxy */ = { + 506BC39B16406E806D4D34EFFB3C7B40 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 7F839870ECBE0065B4BCC02E5F98F48A; - remoteInfo = "NESDeltaCore-NESDeltaCore"; + remoteGlobalIDString = D20492B6476142DCA0C455340876BB98; + remoteInfo = SMCalloutView; }; - 9C63C03831B049114C9F0BD9A523925A /* PBXContainerItemProxy */ = { + 5E0B86EED68F95BBD444805096740A26 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = D47C581D39D227080F83B16A22A56664; remoteInfo = GoogleToolboxForMac; }; - 9CCCF94D1CC4369C77C6DABCA27FF904 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 5C36E65AEF44273E4AF0CBFADD00C090; - remoteInfo = "GBCDeltaCore-GBCDeltaCore"; - }; - A07A5DE0921B657AE32DCA8E2A089D86 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 5CB4163F0A6D4BDE0A490758A78BA43D; - remoteInfo = Harmony; - }; - A5CC6D66885F9CB5378579DC50E41E36 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = E5449403CBE67599315B4D26019FA175; - remoteInfo = "DSDeltaCore-DSDeltaCore"; - }; - B1EFF850423F54B1604D4D644161F788 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = CAD3534FC55B0333104E5117C0A9A324; - remoteInfo = GoogleSignIn; - }; - B5B05120F3525259F5CD3798372C68FF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = EAAA1AD3A8A1B59AB91319EE40752C6D; - remoteInfo = Alamofire; - }; - C55D4B88D6796D6ECA93F64596948CCF /* PBXContainerItemProxy */ = { + 5E88CA6F7CC227F2F79E4371B4A1C641 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = ABB048B191245233986A7CD75FE412A5; remoteInfo = Fabric; }; - CBD27450EDE9AB962B99547F44927630 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 141E2D29C29A1BC1ABA3483321DF3C88; - remoteInfo = SNESDeltaCore; - }; - D3CB4227E2903C5715480CAA52854211 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 530F469AED058B94728C278CCA514500; - remoteInfo = DeltaCore; - }; - DAB222243C1AB8AE68EBFDD06DD5E952 /* PBXContainerItemProxy */ = { + 63DA4BD9B00C7E643556023EE87C0740 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = AA15C8469D67684160CC2A7098EB841C; - remoteInfo = ZIPFoundation; + remoteGlobalIDString = D47C581D39D227080F83B16A22A56664; + remoteInfo = GoogleToolboxForMac; }; - DC84319C0C2AC0B6111FCA88F10BAF4B /* PBXContainerItemProxy */ = { + 71C0FF6DE7C570B397F1F51C6D9E2008 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = D7958E869B6C0073DB3025514393D7A3; - remoteInfo = GoogleAPIClientForREST; + remoteGlobalIDString = CAD3534FC55B0333104E5117C0A9A324; + remoteInfo = GoogleSignIn; }; - DE794B947A3DCBA6E58DCDE50BF8A90F /* PBXContainerItemProxy */ = { + 8588E90842F29563C6A32A88110607E1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = CAD3534FC55B0333104E5117C0A9A324; - remoteInfo = GoogleSignIn; + remoteGlobalIDString = 3847153A6E5EEFB86565BA840768F429; + remoteInfo = SDWebImage; }; - DFC513892E567ED0D2BCB1B2B75FCD59 /* PBXContainerItemProxy */ = { + 9503C423DFC068AD744F688957FFBB1B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 0FAC8C4777DBD31221FE57848CB5F759; - remoteInfo = NESDeltaCore; + remoteGlobalIDString = 5CB4163F0A6D4BDE0A490758A78BA43D; + remoteInfo = Harmony; }; - E485FF1C53F0C026EFB5D41CFBF4030B /* PBXContainerItemProxy */ = { + 9C0DA9AD14F77073E379A2A267A60044 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B5D1BA64AC676FF46408FCDE19A05767; remoteInfo = Roxas; }; - E4C99098C1BE4E6507FBF2E2E7A3A8B3 /* PBXContainerItemProxy */ = { + C49876C5EC71FC99BE71D51B825037EA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 280620EDC57ABB510508698A7233E414; - remoteInfo = "N64DeltaCore-Mupen64Plus"; + remoteGlobalIDString = D7958E869B6C0073DB3025514393D7A3; + remoteInfo = GoogleAPIClientForREST; }; - E7AE4EAEB89C34A4CCCA74A08EECFF06 /* PBXContainerItemProxy */ = { + C6E63F9BBE43D2F83F501C87B21D2332 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 38A7AA32705A9662332E76FA75B50858; - remoteInfo = MelonDSDeltaCore; + remoteGlobalIDString = EAAA1AD3A8A1B59AB91319EE40752C6D; + remoteInfo = Alamofire; }; - E9C6083C64BF9A2146F436E88B69CEBD /* PBXContainerItemProxy */ = { + D9596B4568CE1750D0445909816C3A2B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 6538136F848A07F507372CCFB40CEB88; - remoteInfo = "SNESDeltaCore-SNESDeltaCore"; + remoteGlobalIDString = D676E21115185671D7258A56944ABE98; + remoteInfo = GTMSessionFetcher; }; - F2C8DE6792AE30174539D21D56BA5F4C /* PBXContainerItemProxy */ = { + DD285550FAA2D6D069A5E4198FBAA9E9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 530F469AED058B94728C278CCA514500; - remoteInfo = DeltaCore; + remoteGlobalIDString = EAAA1AD3A8A1B59AB91319EE40752C6D; + remoteInfo = Alamofire; }; - F8FC37C00D9A7461940606117649618D /* PBXContainerItemProxy */ = { + F263A072407D912F6CC5E8337489EDFD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 530F469AED058B94728C278CCA514500; - remoteInfo = DeltaCore; + remoteGlobalIDString = C0E41540D6862472ED7F2FA11669BE1F; + remoteInfo = Crashlytics; }; - FBC6888344636427928B10D68D5909D6 /* PBXContainerItemProxy */ = { + F4D8E89BF72F4C7F84923428D9E8F628 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = FF39B7A1D9F00620D9F56635ABBB2C03; - remoteInfo = SwiftyDropbox; + remoteGlobalIDString = D676E21115185671D7258A56944ABE98; + remoteInfo = GTMSessionFetcher; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 002FAC5A5D04FB9C83E9E5A45031CCFC /* ZSort.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ZSort.h; sourceTree = ""; }; - 00454C669FBEBF5003E744A5BB78F1E9 /* UsersRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UsersRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/UsersRoutes.swift; sourceTree = ""; }; - 005FC9907E7BDC0BEFC3ADF4DDF1EE39 /* GoogleToolboxForMac.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GoogleToolboxForMac.modulemap; sourceTree = ""; }; - 0064E0DD3AAA63871964A26AA0A8D952 /* common.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = ""; }; - 0076E431BB930E51DBC57C8AEFD62756 /* NstInpOekaKidsTablet.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpOekaKidsTablet.hpp; sourceTree = ""; }; - 00863A5438B87F6F408D32AE14DC8C72 /* NstBoardBmcGoldenGame260in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcGoldenGame260in1.hpp; sourceTree = ""; }; - 00A09F4C70B59DC758835D157CBD6C7F /* NonCopyable.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NonCopyable.hpp; sourceTree = ""; }; - 00A5668FA86B637AF8FB9CC3F2B4B5DE /* ResourceBundle-NESDeltaCore-NESDeltaCore-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-NESDeltaCore-NESDeltaCore-Info.plist"; sourceTree = ""; }; - 00AED56AB957744DE9F059CB2835BE16 /* ARMJIT_LoadStore.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ARMJIT_LoadStore.cpp; sourceTree = ""; }; - 00BD1BC7C8465752CB8C9BBBE279E1FB /* NstVideoRenderer.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstVideoRenderer.hpp; sourceTree = ""; }; - 00C134CDE98F9675C63EC844647692DF /* NoiseTexture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NoiseTexture.h; sourceTree = ""; }; - 00E90E8D37F1149602CB0A8EAE2315BD /* NstChips.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstChips.hpp; sourceTree = ""; }; - 00FDF8DB9C55F7BD5ECBB83F1E9CD043 /* BPMDetect.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BPMDetect.h; sourceTree = ""; }; - 00FF6FEE16F201CDAA6008DA1B3519F9 /* SoundDriver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SoundDriver.h; sourceTree = ""; }; - 016137700A393C705D49F7700387559F /* RSTBlockOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTBlockOperation.h; path = Roxas/RSTBlockOperation.h; sourceTree = ""; }; - 01FBA1CC5922D0FF08A2FC8A8CFD16BC /* SNESDeltaCore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SNESDeltaCore.h; sourceTree = ""; }; - 0210B8395AFA6316B71DF870E830AED2 /* OpenGL.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = OpenGL.hpp; sourceTree = ""; }; - 0214CC9FB94D7F62C618FF6E2B0545AF /* NstBoardBmcMarioParty7in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcMarioParty7in1.hpp; sourceTree = ""; }; - 02286DDAB8EB849E5F4F631424338597 /* ftgloadr.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftgloadr.h; sourceTree = ""; }; - 0259D8CA3A04B7E37CABE7D5A3591E5C /* CGGeometry+Dictionary.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "CGGeometry+Dictionary.swift"; sourceTree = ""; }; - 0266BC5A5AEA109DBA257B1168D3B572 /* pngusr.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pngusr.h; sourceTree = ""; }; - 0298D777037EF857AD75D99B849F5C96 /* pngstruct.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pngstruct.h; sourceTree = ""; }; - 02A3B26221034C420A16AB2FF912AEF2 /* S2DEX.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = S2DEX.h; sourceTree = ""; }; - 02AD1F679FF728B6511BF017E73D0150 /* opengl_Attributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = opengl_Attributes.h; sourceTree = ""; }; - 02D064A7B1B32EE0399D71E19B46C190 /* NstBoardTxRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardTxRom.hpp; sourceTree = ""; }; - 0312E07CD0E5CAE789530BCEE9193CF9 /* AutoBuild.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = AutoBuild.h; sourceTree = ""; }; - 03368477B0F9F367CC8C9443F31F2918 /* Notifications.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Notifications.swift; path = Source/Notifications.swift; sourceTree = ""; }; - 034408F49E69BBF4869CD4B2ED4A721E /* NstBoardSachenSa72007.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSachenSa72007.hpp; sourceTree = ""; }; - 03453E71D56AD80B009C9115E50535E5 /* PrimitiveType.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = PrimitiveType.hpp; sourceTree = ""; }; - 0392F4CAEA87D6FE46C313B686D25274 /* libhardware.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = libhardware.h; sourceTree = ""; }; - 0412CEFEC42589B89CE79F45788534DE /* initstate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = initstate.h; sourceTree = ""; }; - 04162C467DC93B5CF84E1E497026A1F7 /* debug.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = debug.h; sourceTree = ""; }; - 041D9AF191E8EDD43E963D7D217446D1 /* DriveService+Records.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DriveService+Records.swift"; path = "Backends/Drive/Harmony-Drive/DriveService+Records.swift"; sourceTree = ""; }; - 044383445DA33997C0572B2EC796AF21 /* m64p_plugin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64p_plugin.h; sourceTree = ""; }; - 049F12874DA5E36EE56D0BE87FCE8F0A /* ARMInterpreter_ALU.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARMInterpreter_ALU.h; sourceTree = ""; }; - 04A4DEC7E399B0926D85A31A1E3AE2D9 /* GBCDeltaCore.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = GBCDeltaCore.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 04B2AF5D701B0D23097F0DEE8A870933 /* arm_jit.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = arm_jit.h; sourceTree = ""; }; - 04CD4DB2EE3E00431E393AF83DA3B925 /* GTLRDateTime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDateTime.h; path = Source/Objects/GTLRDateTime.h; sourceTree = ""; }; - 04F05000812B8F68BC675FCB4E41F352 /* ShaderProgram.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ShaderProgram.h; sourceTree = ""; }; - 05349F18D04F62BCDDD9991693C8485D /* retro_common_api.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = retro_common_api.h; sourceTree = ""; }; - 053764ECC5FA7EC02E6C16D5E7C9767C /* NstBoardIrem.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardIrem.hpp; sourceTree = ""; }; - 053CC9F79B24C95D4BA1804F4282EC93 /* GTMMIMEDocument.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMMIMEDocument.h; path = Source/GTMMIMEDocument.h; sourceTree = ""; }; - 0558BB8C07E8F1FB0930619A2998EB74 /* Combiner.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Combiner.h; sourceTree = ""; }; - 0570E12C39DA7D48B666617DB5662E12 /* NstBoardKonamiVrc3.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardKonamiVrc3.hpp; sourceTree = ""; }; - 0578BFC4BF51617091C2DE4924C3A501 /* SDWebImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloader.m; path = SDWebImage/SDWebImageDownloader.m; sourceTree = ""; }; - 0598CBE3ED6664991B6C32DEF333DE72 /* NstBoardBmc21in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc21in1.hpp; sourceTree = ""; }; - 059E076DC22B421E03349A4BC56852DD /* Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Alamofire.swift; path = Source/Alamofire.swift; sourceTree = ""; }; - 05B2997054DBA44DF1B57E3CDD3C472C /* SoftwareRender.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = SoftwareRender.cpp; sourceTree = ""; }; - 05EFB60F8ABE052EE4B3C48B77C63D6B /* GTLRDuration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDuration.h; path = Source/Objects/GTLRDuration.h; sourceTree = ""; }; - 06E7BD279F6B1FA895B61355C1EAB07A /* t1tables.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = t1tables.h; sourceTree = ""; }; - 06F09F405D39CBB80138B102879DBCC9 /* audio.c */ = {isa = PBXFileReference; includeInIndex = 1; path = audio.c; sourceTree = ""; }; - 07492CA726F6504D31BF464E3BA6CF79 /* NstBoardBandaiLz93d50.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBandaiLz93d50.hpp; sourceTree = ""; }; - 076946BC07F0C6BD8CA86E1B64137C33 /* TextureFilterHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TextureFilterHandler.h; sourceTree = ""; }; - 078B47798F4714CA00EC913C77AFE765 /* DSi.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DSi.cpp; sourceTree = ""; }; - 07BE40F2BA50550EABDF951960989A73 /* SyncCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SyncCoordinator.swift; path = Harmony/SyncCoordinator.swift; sourceTree = ""; }; - 080BAE04D1C3F4FBE4B0C76AF2092F86 /* T3DUX.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = T3DUX.cpp; sourceTree = ""; }; - 080E3EE451ACCC00BBE495E36322F9E8 /* KeyedContainers+ManagedValues.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "KeyedContainers+ManagedValues.swift"; sourceTree = ""; }; - 0822A93FA2FE0A999BF470D0E75D5B09 /* NstBoardBandaiAerobicsStudio.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBandaiAerobicsStudio.hpp; sourceTree = ""; }; - 08338820A73BD47EAB39BD931E037973 /* NDS.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NDS.h; sourceTree = ""; }; - 08801BA2C31D8CAE35C750FC3E0EDFC6 /* S2DEX.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = S2DEX.cpp; sourceTree = ""; }; - 088D1095F736B9610ADEEB47F8D4300A /* glsl_ShaderStorage.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_ShaderStorage.cpp; sourceTree = ""; }; - 08EDC180A033F4B94CE18522ACAA32A7 /* RSTCellContentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCellContentView.h; path = Roxas/RSTCellContentView.h; sourceTree = ""; }; - 08F73D0711A4E57E27F62C6298DDBC33 /* Harmony.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Harmony.modulemap; sourceTree = ""; }; - 0911CB832D9A4864180F2DCFB13BCC10 /* GTLRFramework.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRFramework.h; path = Source/Utilities/GTLRFramework.h; sourceTree = ""; }; - 0915A8A8FD68805FFEF8B3FE4574D3ED /* PngFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PngFile.h; sourceTree = ""; }; - 0925941FA67E8AA00BA0DAD59E31EDB1 /* NstBoardUxRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardUxRom.hpp; sourceTree = ""; }; - 092B175C98B8DD1277A2B83BCDEB8E72 /* ARMJIT_ALU.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ARMJIT_ALU.cpp; sourceTree = ""; }; - 092BF1E4E202CF281CFDBE78FDBB43DA /* hle.c */ = {isa = PBXFileReference; includeInIndex = 1; path = hle.c; sourceTree = ""; }; - 093735AEE369C11535CD28A29C719205 /* debug.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = debug.h; sourceTree = ""; }; - 09BB48FFF01B32D25101EAE9D7DC9584 /* encrypt.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = encrypt.h; sourceTree = ""; }; - 09D17B1A4E6711C38BB3E0CEF87E4B69 /* RSTRelationshipPreservingMergePolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTRelationshipPreservingMergePolicy.m; path = Roxas/RSTRelationshipPreservingMergePolicy.m; sourceTree = ""; }; - 09E5B4348EEE6DE2928156FCF07670E8 /* Settings.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Settings.h; sourceTree = ""; }; - 0A0B32E646BE59A8BE0C72BB1BF1158C /* NstBoardBmcNovelDiamond.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcNovelDiamond.hpp; sourceTree = ""; }; - 0A62C9BB8CA481EC37AC2E39EC49D42D /* video_capture_backend.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = video_capture_backend.h; sourceTree = ""; }; - 0A84AB2950857E041CB20CD222305CA7 /* cp1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = cp1.h; sourceTree = ""; }; - 0ABCF5B1CE696822E3D35879D26BA13C /* RSTCellContentChangeOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTCellContentChangeOperation.m; path = Roxas/RSTCellContentChangeOperation.m; sourceTree = ""; }; - 0ABD9F1CCDFA6E2A04D431A1AA997A70 /* GLideN64.custom.ini */ = {isa = PBXFileReference; includeInIndex = 1; path = GLideN64.custom.ini; sourceTree = ""; }; - 0ACEC14D6FB9D130B1AA90332A47685F /* RecordController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RecordController.swift; sourceTree = ""; }; - 0B45E63BD8B6C5862B91606D0270E31A /* MelonDSTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MelonDSTypes.h; sourceTree = ""; }; - 0B462ECC07973991314C9A75B30D3B0E /* NESDeltaCore-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NESDeltaCore-prefix.pch"; sourceTree = ""; }; - 0B8DA727418B14CBE20A104C19B4022D /* ControllerDebugView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ControllerDebugView.swift; sourceTree = ""; }; - 0B9FD1831402AB15F5D8EF911049BFF1 /* NstBoardSuperGameBoogerman.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSuperGameBoogerman.hpp; sourceTree = ""; }; - 0BBF21DB7D0A3DEFC2DB5CF5C384EC77 /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Source/MultipartFormData.swift; sourceTree = ""; }; - 0BBF923ADADD1C68180C8F3D550EE2FD /* device.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = device.h; sourceTree = ""; }; - 0BE46DDC7E9A5CC5A5A52D10012ECA55 /* pngerror.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pngerror.c; sourceTree = ""; }; - 0BEB3827C8A17F678E0D54A0BDE059CD /* HarmonyMetadataKey+Keys.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "HarmonyMetadataKey+Keys.swift"; sourceTree = ""; }; - 0C480DC524814D199544CFC4E5FFF079 /* DropboxService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DropboxService.swift; path = "Backends/Dropbox/Harmony-Dropbox/DropboxService.swift"; sourceTree = ""; }; - 0C601C48353B572B239FC3A6CCEDB8A0 /* NstBoardTxc.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardTxc.hpp; sourceTree = ""; }; - 0C66F5370C7AF40DB07F93BFE13B25B1 /* hle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = hle.h; sourceTree = ""; }; - 0CA9525A6B4DD2E5909EF0A2DED9B5B4 /* ARMInterpreter.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ARMInterpreter.cpp; sourceTree = ""; }; - 0CB94305FF6AF5CFEF88C30CFB622E72 /* Window.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Window.hpp; sourceTree = ""; }; - 0D0D65E295D5B00C78421E3AE72589FF /* savestate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = savestate.h; sourceTree = ""; }; - 0D333C14DCFA672B937D7D69CEB91B12 /* DSEmulatorBridge.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = DSEmulatorBridge.mm; sourceTree = ""; }; - 0D57E07B7CA9C82C9090FC455119B46B /* SwiftyDropbox-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyDropbox-umbrella.h"; sourceTree = ""; }; - 0D7706E78AF395B0BF7A33A65155FE3D /* ftobjs.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftobjs.h; sourceTree = ""; }; - 0DB969D2164DC5204825E7F482BFF821 /* RSTPersistentContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTPersistentContainer.h; path = Roxas/RSTPersistentContainer.h; sourceTree = ""; }; - 0DC064148B8ABE064913E82A5953AAD6 /* NstApiMachine.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiMachine.hpp; sourceTree = ""; }; - 0DC58C591AA7CBEA564DEC28E4AE8B2F /* NstBoardKonamiVrc4.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardKonamiVrc4.hpp; sourceTree = ""; }; - 0DECA64287BA359B6B4E40FBBC0D3895 /* GPU_OpenGL_shaders.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GPU_OpenGL_shaders.h; sourceTree = ""; }; - 0DF09F5AC56C013F55C64308E54A7FAB /* Ftp.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Ftp.hpp; sourceTree = ""; }; - 0E134F4CF807C51D786E91CB577B584E /* EmulatorBridging.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EmulatorBridging.swift; sourceTree = ""; }; - 0E7A1D4D282B1A61276595B3F2DA9630 /* GTLRURITemplate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRURITemplate.m; path = Source/Utilities/GTLRURITemplate.m; sourceTree = ""; }; - 0E9B2D2921B154E904D13D0ECB5ED2B0 /* Crashlytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Crashlytics.framework; path = iOS/Crashlytics.framework; sourceTree = ""; }; - 0EC698B7882B84A8292DBB86C9F1ECA7 /* Query.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Query.swift; path = Sources/SQLite/Typed/Query.swift; sourceTree = ""; }; - 0ECCD45E4DF53FED6DA4A6938B32FD27 /* Timeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Timeline.swift; path = Source/Timeline.swift; sourceTree = ""; }; - 0EE5EA87866BE9F75ADE0CEC54CD3C3E /* NstTracker.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstTracker.hpp; sourceTree = ""; }; - 0F34E21A0C7FD050FF58B0015AE0034A /* GameViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GameViewController.swift; sourceTree = ""; }; - 0F9DF75921EC3BB1DE00EF33B7A96319 /* OpenGLSupport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = OpenGLSupport.h; sourceTree = ""; }; - 0FA52329FB92261328CE11D29DA4729D /* BlendMode.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = BlendMode.hpp; sourceTree = ""; }; - 0FB8381D72C7CBA7A5B6978C78B0B89A /* N64DeltaCore-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "N64DeltaCore-prefix.pch"; sourceTree = ""; }; - 0FEBA7E7855661C30CCD1E95CA29FDB1 /* RSP_LoadMatrix.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = RSP_LoadMatrix.cpp; sourceTree = ""; }; - 101EDCA75CA532184BC4BE7E36D0CE4F /* ControllerView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ControllerView.swift; sourceTree = ""; }; - 10278A245A36FD880F3207EA5EF9E82E /* SNESTypes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SNESTypes.m; sourceTree = ""; }; - 1042E787D1679AEC49E4043D8A845056 /* FinishUploadingRecordsOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = FinishUploadingRecordsOperation.swift; sourceTree = ""; }; - 10444DBFBA879846A3CEEE82FFDFF4C6 /* SoundTouch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SoundTouch.h; sourceTree = ""; }; - 10640380C87A1BC9B04007C2A3C1F529 /* Auth.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Auth.swift; path = Source/SwiftyDropbox/Shared/Generated/Auth.swift; sourceTree = ""; }; - 109EADB0082F1883183EC07806088E54 /* IpAddress.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = IpAddress.hpp; sourceTree = ""; }; - 10AAA4BA9B93CDC6C54F5CB519CD2FEF /* PrepareUploadingRecordsOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PrepareUploadingRecordsOperation.swift; sourceTree = ""; }; - 10DBE8DD414F72ABA414D15368484C5E /* MelonDSDeltaCore.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MelonDSDeltaCore.debug.xcconfig; sourceTree = ""; }; - 10EBAD36C2ED7A905B9424840A4DCF06 /* RDRAMtoColorBuffer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RDRAMtoColorBuffer.h; sourceTree = ""; }; - 1120279C7F510A700C88E61A835EF714 /* ftgasp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftgasp.h; sourceTree = ""; }; - 1121FEE3395F16CC1F8194DF4B4B26F5 /* PACKED_END.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PACKED_END.h; sourceTree = ""; }; - 1136B767C9398A2A3AD79E44826DF2CA /* NstBoardBmcGamestarA.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcGamestarA.hpp; sourceTree = ""; }; - 114EDBAF94C431C6683F8FB874F521F0 /* ZilmarGFX_1_3.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ZilmarGFX_1_3.h; sourceTree = ""; }; - 11554AB04BFF1801C106090854AC67EB /* Texture.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Texture.hpp; sourceTree = ""; }; - 1157E342C2B03EE058136AE3F2A86A66 /* NstBoardBandaiOekaKids.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBandaiOekaKids.hpp; sourceTree = ""; }; - 11D049BB4980BC282A583112800A2ADE /* ftadvanc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftadvanc.h; sourceTree = ""; }; - 11D9A3CBF7BCEEAD593BA3894A130C67 /* NDSCart.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = NDSCart.cpp; sourceTree = ""; }; - 11DFF9C52A3266701AE7649642EF1E85 /* FIFO.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FIFO.h; sourceTree = ""; }; - 11EC03B8337C07B3FF8400A47867B582 /* Sleep.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Sleep.hpp; sourceTree = ""; }; - 12212BF1052061C6C55854070D63C2EE /* opengl_Attributes.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_Attributes.cpp; sourceTree = ""; }; - 124410B31A9E378F93FDB8A1B6FA19A2 /* ContactsRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ContactsRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/ContactsRoutes.swift; sourceTree = ""; }; - 127A16AF48ACA5BDBF1E686BF6664827 /* spc7110emu.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = spc7110emu.h; sourceTree = ""; }; - 128FABE87B95008533D496EE889613EA /* NstVideoFilterNone.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstVideoFilterNone.hpp; sourceTree = ""; }; - 12F16DEA29CA98647E7B1B64C4AFEFA1 /* DriveService+Files.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DriveService+Files.swift"; path = "Backends/Drive/Harmony-Drive/DriveService+Files.swift"; sourceTree = ""; }; - 12FF380A8BE99A902168B4E06D894342 /* NstBoardSachenTcu.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSachenTcu.hpp; sourceTree = ""; }; - 12FF6FB31C4FC8525FF9C9D35EDCABC3 /* SQLite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SQLite.h; path = Sources/SQLite/SQLite.h; sourceTree = ""; }; - 131DE5B5A662F4982F678A6226865295 /* NSData+ImageContentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+ImageContentType.m"; path = "SDWebImage/NSData+ImageContentType.m"; sourceTree = ""; }; - 1368CB59650BD7265E79FE33C2A10149 /* Transformable.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Transformable.hpp; sourceTree = ""; }; - 136F62DF1339E133946A641685928749 /* SNESDeltaCore.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = SNESDeltaCore.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 1371A75FE41949E4BA02D89705197634 /* GTLRDateTime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRDateTime.m; path = Source/Objects/GTLRDateTime.m; sourceTree = ""; }; - 13A74768D1214D8C9ACE6E7A1CF5CC68 /* pngstest-errors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "pngstest-errors.h"; sourceTree = ""; }; - 13B48701B89DA51AEFCB1189DD06B7B5 /* Result+Dropbox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Result+Dropbox.swift"; sourceTree = ""; }; - 13BAA83DB690C1835AB70FD3FC749AFF /* UIImage+GIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+GIF.h"; path = "SDWebImage/UIImage+GIF.h"; sourceTree = ""; }; - 13E2386205BC0C6A8574002DB9AF6B91 /* SQLite.swift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SQLite.swift.modulemap; sourceTree = ""; }; - 13E613695F9989137A9FF581460F493C /* CLSStackFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSStackFrame.h; path = iOS/Crashlytics.framework/Headers/CLSStackFrame.h; sourceTree = ""; }; - 13ED6773C3785C3EEFA54FC5AF0BEB9B /* RemoteRecord+Dropbox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RemoteRecord+Dropbox.swift"; sourceTree = ""; }; - 141E1B266EA682B6640983E0A2AA47D7 /* FIRFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FIRFilter.h; sourceTree = ""; }; - 142802887860A760D41945F9E1502AC8 /* RSTFetchedResultsDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTFetchedResultsDataSource.h; path = Roxas/RSTFetchedResultsDataSource.h; sourceTree = ""; }; - 143669DF461A16A9179177725827248D /* expr.cpp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = expr.cpp.h; sourceTree = ""; }; - 144070FBE1B4F02DA8ACA800A4973DC6 /* DSi_SD.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DSi_SD.cpp; sourceTree = ""; }; - 146F91901EB4D4897CEB5F05C1DFC621 /* RSTCompositeDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCompositeDataSource.h; path = Roxas/RSTCompositeDataSource.h; sourceTree = ""; }; - 147BC96402CD809FAF20E2C6BFF3ECB7 /* GBADeltaCore-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GBADeltaCore-umbrella.h"; sourceTree = ""; }; - 148A77A98A1FE40B0594CC4E60C228D3 /* NstSoundPcm.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstSoundPcm.hpp; sourceTree = ""; }; - 14EE139D9368B6A33F60729F41BD17CE /* RSTTintedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTTintedImageView.h; path = Roxas/RSTTintedImageView.h; sourceTree = ""; }; - 157D57C1EE8530CB6DD38493ACCD624B /* TextureFilters_hq4x.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TextureFilters_hq4x.cpp; sourceTree = ""; }; - 1588287F115BFA204CA5E4A5780A8821 /* DeleteRecordsOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DeleteRecordsOperation.swift; sourceTree = ""; }; - 158E8A68318036DF5BDF9D8C5088B15B /* Standard.deltamapping */ = {isa = PBXFileReference; includeInIndex = 1; name = Standard.deltamapping; path = SNESDeltaCore/Standard.deltamapping; sourceTree = ""; }; - 159E762F2DEA7F0461C30023E534AE64 /* ftlcdfil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftlcdfil.h; sourceTree = ""; }; - 15A8530EE36D88106BF630FB90768067 /* ftttdrv.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftttdrv.h; sourceTree = ""; }; - 15B023844982AA4873AD8A5647C6E34E /* NstBoardBmc76in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc76in1.hpp; sourceTree = ""; }; - 15D5D5B75D61919734F2AC90A1DD9349 /* ftchapters.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftchapters.h; sourceTree = ""; }; - 15E96F458A9FF48D4761260EE9CC09C1 /* NstCartridgeUnif.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstCartridgeUnif.hpp; sourceTree = ""; }; - 15EADA40986FAB7A72D6AAF4AB20C9AA /* ARMJIT_Internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARMJIT_Internal.h; sourceTree = ""; }; - 1601BA61D97D812F7F0409F9B40B1A8E /* NstBoardUnlXzy.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardUnlXzy.hpp; sourceTree = ""; }; - 163215F017360C0783BDE216E2383177 /* Log_ios.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = Log_ios.mm; sourceTree = ""; }; - 167590E49B4455FE4412AB737F2E748E /* convert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = convert.h; sourceTree = ""; }; - 169187B6163B3872887502BA489EDDB9 /* GBA.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GBA.swift; sourceTree = ""; }; - 16D924FA316C3348F749FFABFBDFCCF4 /* wifi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = wifi.h; sourceTree = ""; }; - 17191C33E01881A9A1CB215D6932040B /* GTLRDriveService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRDriveService.m; path = Source/GeneratedServices/Drive/GTLRDriveService.m; sourceTree = ""; }; - 175A71504D934211FCC245712633EBF6 /* Fabric.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Fabric.debug.xcconfig; sourceTree = ""; }; - 179B3F52FCBDACDFD58910B37E4E0805 /* NstBoardCne.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardCne.hpp; sourceTree = ""; }; - 17D454191F3B342960C868B8F442F1C9 /* Flash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Flash.h; sourceTree = ""; }; - 17FBBA801F9904108D40D6A38C38A7E6 /* Glyph.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Glyph.hpp; sourceTree = ""; }; - 1818A7C734B0F7FA3464C894DE1B3418 /* ARCodeFile.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ARCodeFile.cpp; sourceTree = ""; }; - 1846ED4B4BB382D3D7947E931DCA24FD /* MemoryInputStream.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = MemoryInputStream.hpp; sourceTree = ""; }; - 1854A07E7A3BF031FA3AA0AAB5EDD78B /* srtcemu.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = srtcemu.h; sourceTree = ""; }; - 1860E76F985D5A714D179B33FFD5BB6C /* NstBoardBtlSmb2a.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBtlSmb2a.hpp; sourceTree = ""; }; - 186E4D584EAF0599FAE8D2C3DEC77610 /* Platform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Platform.h; sourceTree = ""; }; - 187CA309F162A5C8E844D881DBC4B533 /* SDWebImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SDWebImage-dummy.m"; sourceTree = ""; }; - 18B8DECBB8717BFBD8259BF1384944BA /* Entry.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Entry.swift; path = Sources/ZIPFoundation/Entry.swift; sourceTree = ""; }; - 18BBE5534A3581E4BA37CEB930381E8F /* Time.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Time.cpp; sourceTree = ""; }; - 197AB7559D7FCC3DEA076C76F04A7D7B /* ARMJIT_Branch.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ARMJIT_Branch.cpp; sourceTree = ""; }; - 197C2B5C1992F892153FA855D779D3A3 /* ftincrem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftincrem.h; sourceTree = ""; }; - 19BDE821F69D4EED1DE355E465F11DC0 /* NstApiNsf.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiNsf.hpp; sourceTree = ""; }; - 19DAEF74182F401F21DF4FA82B1FD4B2 /* FTS5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FTS5.swift; path = Sources/SQLite/Extensions/FTS5.swift; sourceTree = ""; }; - 19F3233296ECF54009C07D09EFA3CD62 /* retro_miscellaneous.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = retro_miscellaneous.h; sourceTree = ""; }; - 1A8F278C27D9D292DDB8DB3A1C033408 /* clock_ctime_plus_delta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = clock_ctime_plus_delta.h; sourceTree = ""; }; - 1AA9684D3082E9D448C5105427C93B9C /* NstVsSuperXevious.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstVsSuperXevious.hpp; sourceTree = ""; }; - 1B047FD1BDE657AF7AFC1BB0E425CBA4 /* pngwutil.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pngwutil.c; sourceTree = ""; }; - 1B6E687133DA65575671ECF759A9C445 /* pngconf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pngconf.h; sourceTree = ""; }; - 1B78842984D068D0DB4702EC9F9438F7 /* dummy_video.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = dummy_video.h; sourceTree = ""; }; - 1B78E7619C1EF2E22D6D66466D28CA5C /* F3DZEX2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F3DZEX2.h; sourceTree = ""; }; - 1B9C12C74DF9350F294A3E0A86E79688 /* TxImage.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TxImage.cpp; sourceTree = ""; }; - 1BB981783C8679FA4F70C50DDA25D8F0 /* NSManagedObjectContext+Harmony.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "NSManagedObjectContext+Harmony.swift"; sourceTree = ""; }; - 1C3F6FFA7117E731CEEC4A0FB0BE8DC4 /* Roxas.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Roxas.modulemap; sourceTree = ""; }; - 1C4ACD563722F3A385772CBF168AE707 /* NstBoardNamcot163.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardNamcot163.hpp; sourceTree = ""; }; - 1C5F8657F7A40B8346317B773095E039 /* GTLRDriveService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDriveService.h; path = Source/GeneratedServices/Drive/GTLRDriveService.h; sourceTree = ""; }; - 1C7DD892516958A03B638903F7351808 /* crosshairs.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = crosshairs.h; sourceTree = ""; }; - 1C84F28BC8941E34DD2FCD83B3BA50C0 /* GTMNSDictionary+URLArguments.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GTMNSDictionary+URLArguments.h"; path = "Foundation/GTMNSDictionary+URLArguments.h"; sourceTree = ""; }; - 1CADEE479AF35E2F20B5FC8613605E71 /* NstBoardJalecoJf13.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardJalecoJf13.hpp; sourceTree = ""; }; + 003F7FFCE2F47651CEE774F0DE200F14 /* Version+Dropbox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Version+Dropbox.swift"; sourceTree = ""; }; + 01CE7BCEE359799F962EE8AD463359F3 /* GTMSessionFetcher.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GTMSessionFetcher.release.xcconfig; sourceTree = ""; }; + 01D17E092AEC5A0E894155B6FA77DA30 /* UITableViewCell+CellContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableViewCell+CellContent.m"; path = "Roxas/UITableViewCell+CellContent.m"; sourceTree = ""; }; + 027610765D53D8F4007C5B40194FC19D /* AFError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AFError.swift; path = Source/AFError.swift; sourceTree = ""; }; + 02E2FC53073880496A8D17A990849C07 /* UITableViewCell+CellContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableViewCell+CellContent.h"; path = "Roxas/UITableViewCell+CellContent.h"; sourceTree = ""; }; + 03A2CFC64216406ECCD6DF6C2170F4CD /* ParameterEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParameterEncoding.swift; path = Source/ParameterEncoding.swift; sourceTree = ""; }; + 03CBC6D6463E2AFC7FD88AD23E8D4CB0 /* GoogleSignIn.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleSignIn.debug.xcconfig; sourceTree = ""; }; + 03DA5500E4A7496201826C8C95636FD5 /* GTLRService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRService.h; path = Source/Objects/GTLRService.h; sourceTree = ""; }; + 04B9EB1046F7946327ED535CA93D72CF /* RSTTintedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTTintedImageView.m; path = Roxas/RSTTintedImageView.m; sourceTree = ""; }; + 04CA1767316952F9A341BB308D5DFF62 /* SDWebImageCompat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCompat.h; path = SDWebImage/SDWebImageCompat.h; sourceTree = ""; }; + 05F23A206ADEC8E199E13E100C5F5F23 /* CLSLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSLogging.h; path = iOS/Crashlytics.framework/Headers/CLSLogging.h; sourceTree = ""; }; + 0669C4806F3DC553E91D77B3EC76CBEA /* PrepareUploadingRecordsOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PrepareUploadingRecordsOperation.swift; sourceTree = ""; }; + 073FADF4D5B878E152DF3856F015EE2D /* GoogleAPIClientForREST-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GoogleAPIClientForREST-dummy.m"; sourceTree = ""; }; + 074086C0D7D585641C9D4E9AFC4FE4A2 /* UISpringTimingParameters+Conveniences.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UISpringTimingParameters+Conveniences.m"; path = "Roxas/UISpringTimingParameters+Conveniences.m"; sourceTree = ""; }; + 077D5EF387B2ED64EEDCDB2F4654113D /* NetworkReachabilityManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkReachabilityManager.swift; path = Source/NetworkReachabilityManager.swift; sourceTree = ""; }; + 07B86FE9509734983A9AC8CDAC6CE183 /* FileRequestsRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FileRequestsRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/FileRequestsRoutes.swift; sourceTree = ""; }; + 0823A19D9EA78FEDA83C7DE2B6025CC9 /* Connection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Connection.swift; path = Sources/SQLite/Core/Connection.swift; sourceTree = ""; }; + 0913C43FFE347F02B2B129F1048D05F1 /* UIKit+ActivityIndicating.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIKit+ActivityIndicating.h"; path = "Roxas/UIKit+ActivityIndicating.h"; sourceTree = ""; }; + 0A72B76741B4B4C3A7056BCE54B5E767 /* RSTOperationQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTOperationQueue.m; path = Roxas/RSTOperationQueue.m; sourceTree = ""; }; + 0BC20764A2D0F997CAEA5DA92CAECDCC /* GoogleSignIn.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GoogleSignIn.framework; path = Frameworks/GoogleSignIn.framework; sourceTree = ""; }; + 0C12A43A8E9C71B79865C9DE33398566 /* GTLRDriveService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRDriveService.m; path = Source/GeneratedServices/Drive/GTLRDriveService.m; sourceTree = ""; }; + 0C4A92751B307E7BECA584FAAE5D0EF6 /* GoogleToolboxForMac.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleToolboxForMac.release.xcconfig; sourceTree = ""; }; + 0DAEC064FED2041B3CF4D2D6DCEB4021 /* TeamPolicies.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TeamPolicies.swift; path = Source/SwiftyDropbox/Shared/Generated/TeamPolicies.swift; sourceTree = ""; }; + 0ED91C6668413918BB957ADDC0973CC2 /* File.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = File.swift; sourceTree = ""; }; + 0FA7B59A3C84216C1D1F39923230CE76 /* Schema.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Schema.swift; path = Sources/SQLite/Typed/Schema.swift; sourceTree = ""; }; + 1029FD4152EBC91C29AA34F8963A0805 /* Alamofire.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Alamofire.modulemap; sourceTree = ""; }; + 106A0359BFB2E7A3185787044BD7F329 /* NSLayoutConstraint+Edges.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSLayoutConstraint+Edges.h"; path = "Roxas/NSLayoutConstraint+Edges.h"; sourceTree = ""; }; + 109F136B231E5899017103D0E3E4CF32 /* RSTError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTError.m; path = Roxas/RSTError.m; sourceTree = ""; }; + 10F04D2F075E09D618DE1491C773E57D /* RSTDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTDefines.h; path = Roxas/RSTDefines.h; sourceTree = ""; }; + 13243B038BA4A8CCE05818902554AEBA /* GTLRDriveQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDriveQuery.h; path = Source/GeneratedServices/Drive/GTLRDriveQuery.h; sourceTree = ""; }; + 13ADD1A95E06BEFD5750FBEB3A1569DE /* TaskDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TaskDelegate.swift; path = Source/TaskDelegate.swift; sourceTree = ""; }; + 14122C8627076BD7BE84D6459E02802D /* SDWebImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageManager.m; path = SDWebImage/SDWebImageManager.m; sourceTree = ""; }; + 143BD292AEF9C3E011136A57C9DF912E /* RemoteRecord+File.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RemoteRecord+File.swift"; sourceTree = ""; }; + 14CAE3FC87389C6B6A49F795D683F781 /* RSTCellContentDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCellContentDataSource.h; path = Roxas/RSTCellContentDataSource.h; sourceTree = ""; }; + 150A205C7D47E4B8B2B1D8A98C88949B /* GTMNSString+URLArguments.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GTMNSString+URLArguments.h"; path = "Foundation/GTMNSString+URLArguments.h"; sourceTree = ""; }; + 153E7223CA8FFA2C187FCFA10F553DB4 /* UploadRecordOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = UploadRecordOperation.swift; sourceTree = ""; }; + 164A379BC4A71BBEC7AB773B8C57B1C1 /* GTMSessionFetcher.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GTMSessionFetcher.debug.xcconfig; sourceTree = ""; }; + 16CB5FC0E533EEE1D7568404E10D67A9 /* Harmony.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Harmony.release.xcconfig; sourceTree = ""; }; + 170B362921153BB970E770297EBD180D /* ServerTrustPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ServerTrustPolicy.swift; path = Source/ServerTrustPolicy.swift; sourceTree = ""; }; + 17170F0CA233C9110181F74544CE1B5C /* Result+Drive.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Result+Drive.swift"; sourceTree = ""; }; + 1723CFFB2D87113E2298943283B66733 /* SDWebImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageManager.h; path = SDWebImage/SDWebImageManager.h; sourceTree = ""; }; + 1753A5241A5788A0023D64CB7CFC5107 /* GoogleAPIClientForREST.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleAPIClientForREST.debug.xcconfig; sourceTree = ""; }; + 1819C8AFA9C10BF9BED7A829346CA636 /* RSTCellContentChange.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCellContentChange.h; path = Roxas/RSTCellContentChange.h; sourceTree = ""; }; + 1854B53E0BD73B3D105F6DDF3BC2F70C /* RSTCellContentCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCellContentCell.h; path = Roxas/RSTCellContentCell.h; sourceTree = ""; }; + 18F66715A19114346F3E056B7F1416D4 /* GTMDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GTMDefines.h; sourceTree = ""; }; + 19D3742E1BD9215B99FF252AD2D90C5C /* Roxas.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = Roxas.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 1B4A80294AD5192C9FCD1275553F2D93 /* Alamofire.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.debug.xcconfig; sourceTree = ""; }; + 1B7836BE5B529EA32A19CCCE49C91CA6 /* RSTCollectionViewGridLayout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTCollectionViewGridLayout.m; path = Roxas/RSTCollectionViewGridLayout.m; sourceTree = ""; }; + 1CB6AA43134D6305B9DEAF3D96B1DE26 /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Source/Response.swift; sourceTree = ""; }; 1CBA76EDD27FA2D20B1EA0F0BF7F082C /* libSwiftyDropbox.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libSwiftyDropbox.a; path = libSwiftyDropbox.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 1CD471C7753A26A428B594E2A77FBEDD /* TextureFilters_2xsai.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TextureFilters_2xsai.cpp; sourceTree = ""; }; - 1CD8779AE248D2A01EAEB45063005C71 /* TeamLogRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TeamLogRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/TeamLogRoutes.swift; sourceTree = ""; }; - 1CFDA817B0AC211C38A21101AA7ADCC2 /* transfer_ptr.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = transfer_ptr.h; sourceTree = ""; }; - 1D0C245236976FA487C742D55853627D /* 3DMath.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = 3DMath.h; sourceTree = ""; }; - 1D1F31A13F1FBF95445EA192197633DE /* NstProperties.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstProperties.hpp; sourceTree = ""; }; - 1D4DC2684C343FCD683C5EEFA928628A /* assemble_struct.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = assemble_struct.h; sourceTree = ""; }; - 1D6B6F32ED9A76A6D328F910F3A57B70 /* sdl2_compat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = sdl2_compat.h; sourceTree = ""; }; - 1D8E8059BB188FA2A51AA0D760767324 /* VI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = VI.h; sourceTree = ""; }; - 1DAA1C81B0721C4B4DACA87D160BCEA4 /* opengl_CachedFunctions.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_CachedFunctions.cpp; sourceTree = ""; }; - 1DBB96D9A562E2F0DB417F2C9C265840 /* opengl_ColorBufferReaderWithEGLImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = opengl_ColorBufferReaderWithEGLImage.h; sourceTree = ""; }; - 1DD2C5713EAF063A8C397A183A28D39F /* FrameBuffer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = FrameBuffer.cpp; sourceTree = ""; }; - 1E0F5180476B30D192E39DFD70423E9F /* RSTLaunchViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTLaunchViewController.m; path = Roxas/RSTLaunchViewController.m; sourceTree = ""; }; - 1E1FF47BDDB001374C97096ED762AAC7 /* F3DFLX2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F3DFLX2.h; sourceTree = ""; }; - 1E2085B3FF507E08C3040D7E3D3C295B /* Expression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Expression.swift; path = Sources/SQLite/Typed/Expression.swift; sourceTree = ""; }; - 1E342E417EC24F205B22FF3D839E0828 /* MergePolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MergePolicy.swift; sourceTree = ""; }; - 1E5356E04E92615CFF0666E5987CE594 /* libNESDeltaCore.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libNESDeltaCore.a; path = libNESDeltaCore.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 1E6091FE660CAF4367DBF5FFF46CC56D /* common.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = common.h; sourceTree = ""; }; - 1EB97E3AEF3926985796B7557459FF17 /* DepthBufferRender.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DepthBufferRender.h; sourceTree = ""; }; - 1ECF91681BBAC22AEA1F41C9E36BED75 /* png.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = png.h; sourceTree = ""; }; - 1F23DBC67505E77BE77552D6D84A3DAA /* GBCDeltaCore.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = GBCDeltaCore.bundle; path = "GBCDeltaCore-GBCDeltaCore.bundle"; sourceTree = BUILT_PRODUCTS_DIR; }; - 1F2DBB27BEEB1C9D7D604A978D9DD6B6 /* DBChunkInputStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DBChunkInputStream.m; path = Source/SwiftyDropbox/Shared/Handwritten/DBChunkInputStream.m; sourceTree = ""; }; - 1F559D0FF821293E41F2B18444C1B6FB /* NstBoardBmcHero.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcHero.hpp; sourceTree = ""; }; - 1FB44FFA4D02A1F2C432FD1A64C9A3C0 /* File.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = File.swift; sourceTree = ""; }; - 1FB8DC1C23FE7CB1124719080DD2D99B /* NESDeltaCore-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "NESDeltaCore-umbrella.h"; sourceTree = ""; }; - 1FBCB41DB5CD1A031B2554AFF01D2CBA /* String.inl */ = {isa = PBXFileReference; includeInIndex = 1; path = String.inl; sourceTree = ""; }; - 20079F8AEED9F1802083DFC0C96CA78D /* interrupt.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = interrupt.h; sourceTree = ""; }; - 201A5A32F9006763F07BA5E3581871D0 /* ROMList.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ROMList.h; sourceTree = ""; }; - 2035E24735C1ED1DB606DC2E8C6F2436 /* NstBoardJalecoJf16.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardJalecoJf16.hpp; sourceTree = ""; }; - 2060BEC6373E7074778796B2882427C6 /* NstInpAdapter.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpAdapter.hpp; sourceTree = ""; }; - 2064A148CF875274B060142217B611AA /* Parameters.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Parameters.h; sourceTree = ""; }; - 2078C8A75422F49B73A18A8341966ECA /* UIView+AnimatedHide.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+AnimatedHide.m"; path = "Roxas/UIView+AnimatedHide.m"; sourceTree = ""; }; - 20958FCE97729493E3EEDE7735EA6DC0 /* SNES.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SNES.swift; sourceTree = ""; }; - 20C5814112C7FD3018044780D05DE1FA /* osd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = osd.h; sourceTree = ""; }; - 20F16E20EF20C537D00F04D36BF7621E /* NstInpRob.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpRob.hpp; sourceTree = ""; }; - 210DF52D3BDE4D618799B6FC3A8A4AAE /* NstBoardBmcT262.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcT262.hpp; sourceTree = ""; }; - 211630FF3DC8E93C7BB79421F0894487 /* ftsynth.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftsynth.h; sourceTree = ""; }; - 2136D656956ECA61A97ABEDA06A5FC0F /* SPI.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = SPI.cpp; sourceTree = ""; }; - 2167141E4D27BFEEF859D04CC1F29060 /* counterdef.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = counterdef.h; sourceTree = ""; }; - 216A6A3C34E1B0D2B37AF0F69445B3B0 /* ARMJIT_Memory.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ARMJIT_Memory.cpp; sourceTree = ""; }; - 218734C95C38F03799176148123C5A20 /* OutputSoundFile.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = OutputSoundFile.hpp; sourceTree = ""; }; - 219053C1325BB6D1B9487B652A3E1F43 /* fterrdef.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = fterrdef.h; sourceTree = ""; }; - 21A579DB6758386B94532FEDF1A6AE83 /* NstBoardBtl2708.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBtl2708.hpp; sourceTree = ""; }; - 21C17C6276F45AA0020623DBD9A51E94 /* GBCTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBCTypes.h; sourceTree = ""; }; + 1D275B8855202007D0EF4ECAE74754C4 /* UserDefaults+Harmony.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UserDefaults+Harmony.swift"; sourceTree = ""; }; + 1D7980D69C299BBA0F307475AB007E1A /* UICollectionViewCell+CellContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UICollectionViewCell+CellContent.h"; path = "Roxas/UICollectionViewCell+CellContent.h"; sourceTree = ""; }; + 1DE26BCA8EA6B8834D47A3AC680BDF05 /* ConflictRecordsOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ConflictRecordsOperation.swift; sourceTree = ""; }; + 1EB24A740C7D16547D29F2B8136765C5 /* CoreFunctions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CoreFunctions.swift; path = Sources/SQLite/Typed/CoreFunctions.swift; sourceTree = ""; }; + 1F2F80F4679A5572917EC18888BE71E2 /* RecordEntry.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RecordEntry.swift; sourceTree = ""; }; + 2084F64AD29D9ECB72822B91C45E7091 /* GTMGatherInputStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMGatherInputStream.h; path = Source/GTMGatherInputStream.h; sourceTree = ""; }; + 218B7A0E4B70FEE5CAA47739B8007C50 /* UIImageView+HighlightedWebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+HighlightedWebCache.m"; path = "SDWebImage/UIImageView+HighlightedWebCache.m"; sourceTree = ""; }; + 21CC13037EB3BB52515BA531C4ED26F3 /* SDWebImageDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDecoder.h; path = SDWebImage/SDWebImageDecoder.h; sourceTree = ""; }; 21D6D1EB35E3D74EDEA3C2CD85A05F52 /* Pods-Delta-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Delta-acknowledgements.markdown"; sourceTree = ""; }; - 21F08D379C51FB95B3A2007AC1555313 /* glsl_Utils.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_Utils.cpp; sourceTree = ""; }; - 22CC2E1906731DDBC31544D499B26974 /* NstCheats.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstCheats.hpp; sourceTree = ""; }; - 23337F04F86774C07156F65B6DF86644 /* Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Foundation.swift; path = Sources/SQLite/Foundation.swift; sourceTree = ""; }; - 2352F7F769B34DBB1B6F8C970C8FFDBE /* NstBoardBtlShuiGuanPipe.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBtlShuiGuanPipe.hpp; sourceTree = ""; }; - 23FF403AF7501E405FCAF240422E16C9 /* NstBoardIremLrog017.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardIremLrog017.hpp; sourceTree = ""; }; - 24173745FD3ED83170E3C0D27045BDA1 /* UIImage+Manipulation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Manipulation.h"; path = "Roxas/UIImage+Manipulation.h"; sourceTree = ""; }; - 243DF18DBEC0030F64A72ECE9661C05A /* glsl_CombinerInputs.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_CombinerInputs.cpp; sourceTree = ""; }; - 2446F97C02AA807C685688B670B100E0 /* boolean.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = boolean.h; sourceTree = ""; }; - 24542D74858775F20FC6798EF8EE4264 /* SQLite.swift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SQLite.swift-prefix.pch"; sourceTree = ""; }; + 21FC6F1E89DDD57A49BA988A818F9DE7 /* SDWebImageDownloaderOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderOperation.h; path = SDWebImage/SDWebImageDownloaderOperation.h; sourceTree = ""; }; + 221C1B46A82DC0F622CDFA9CC67DE317 /* SwiftyDropbox.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SwiftyDropbox.modulemap; sourceTree = ""; }; + 23BBDAF15F9E75C4E419D86C6ED3E6E2 /* GTLRBatchQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRBatchQuery.h; path = Source/Objects/GTLRBatchQuery.h; sourceTree = ""; }; + 23C608791908CF3DE346DFBA6D8F3EE9 /* UITableView+CellContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableView+CellContent.m"; path = "Roxas/UITableView+CellContent.m"; sourceTree = ""; }; + 23E95DC8F822E1258BBE968D4052D39A /* SMCalloutView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SMCalloutView.release.xcconfig; sourceTree = ""; }; + 24492A0EE90D47AE559514DC997E7AF1 /* SQLite.swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SQLite.swift-umbrella.h"; sourceTree = ""; }; + 2461105F4D84EEA2FE4CFAF2E0CD90E1 /* Harmony.xcdatamodel */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = wrapper.xcdatamodel; path = Harmony.xcdatamodel; sourceTree = ""; }; 251C6319AD50CB50F18D50CBF727F8B2 /* libGoogleToolboxForMac.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libGoogleToolboxForMac.a; path = libGoogleToolboxForMac.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 2525F0080E1D579ED304839BC0840B29 /* files.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = files.h; sourceTree = ""; }; - 257DDF2564EF2EE5CD24E964C9FBFCF9 /* pngstruct.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pngstruct.h; sourceTree = ""; }; - 25917FDD71079A0F43811D467EC6CC40 /* ThreadImpl.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ThreadImpl.cpp; sourceTree = ""; }; - 25991D07DD8D96C5AAA906563DBDDC97 /* NES.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NES.swift; sourceTree = ""; }; - 25EC9E35D1E0371FDC76C142DA25855C /* TextureFilters_hq4x.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TextureFilters_hq4x.h; sourceTree = ""; }; - 25F655585E934D6DD3B75AD1A4E714AD /* NstBoardKonamiVrc7.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardKonamiVrc7.hpp; sourceTree = ""; }; - 26032F2CDCDD25EA1AC74BCB6470AFD6 /* NstBoardBmcCh001.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcCh001.hpp; sourceTree = ""; }; - 262A3C5FD00372D13A236F66AD846D0A /* GBCInputGetter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBCInputGetter.h; sourceTree = ""; }; - 268A80FCD8A58CFE6C097469D5AF1C00 /* GoogleAPIClientForREST-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GoogleAPIClientForREST-dummy.m"; sourceTree = ""; }; - 269EA2D23CF6BACE160800DAAC54DC94 /* GTMNSString+URLArguments.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GTMNSString+URLArguments.h"; path = "Foundation/GTMNSString+URLArguments.h"; sourceTree = ""; }; - 26BA52E11E63B3D60A0CFCE4C371772A /* DMA.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DMA.cpp; sourceTree = ""; }; - 26C1CA5165F63DB19C3707B2831921CD /* DropboxService+Versions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DropboxService+Versions.swift"; path = "Backends/Dropbox/Harmony-Dropbox/DropboxService+Versions.swift"; sourceTree = ""; }; - 26D2A5D5698537BF5D54176EFAAE1D21 /* glxext.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = glxext.h; sourceTree = ""; }; - 26D4C43C09D79EF32F5F974C5A89B879 /* NstApi.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApi.hpp; sourceTree = ""; }; - 26E9093D38BC9C8CC9DF4D72731AC2B1 /* 65c816.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = 65c816.h; sourceTree = ""; }; - 26ECC555C3C58DB5AFADDF0AA680057C /* SDWebImageOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOperation.h; path = SDWebImage/SDWebImageOperation.h; sourceTree = ""; }; - 270A6C4B2DD7C3357F8FE302128EA6B9 /* RSTFetchedResultsDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTFetchedResultsDataSource.m; path = Roxas/RSTFetchedResultsDataSource.m; sourceTree = ""; }; - 27125390BE455FB3FC94E986AE8B5EBC /* NstBoardTaitoTc0190fmcPal16r4.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardTaitoTc0190fmcPal16r4.hpp; sourceTree = ""; }; - 2732AC8F246A18F0714B4321F54DD531 /* DeltaCore.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DeltaCore.debug.xcconfig; sourceTree = ""; }; - 2784D28154C321EB45B31ABE7415E7BD /* CP15.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = CP15.cpp; sourceTree = ""; }; - 27972C0F459B8A35484EEEFEB34D2439 /* render3D.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = render3D.h; sourceTree = ""; }; - 279F8F8BF2300C97E89F662A3B1BE1CE /* GTLRRuntimeCommon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRRuntimeCommon.h; path = Source/Objects/GTLRRuntimeCommon.h; sourceTree = ""; }; - 27A46A6FADC3B6A55AAA46E5DDA935F9 /* xxhash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = xxhash.h; sourceTree = ""; }; - 27BD06691828D334895C216BFE8EE776 /* NstApiUser.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiUser.hpp; sourceTree = ""; }; - 27C74EF552116A38298E8B90B63D8BA7 /* RSTCellContentCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCellContentCell.h; path = Roxas/RSTCellContentCell.h; sourceTree = ""; }; - 27D3B21A69C25C9875EE21E693E04929 /* NstSoundPlayer.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstSoundPlayer.hpp; sourceTree = ""; }; - 2830FE29E3519CEA36C6CF556F3B5A96 /* SDL_thread.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SDL_thread.h; sourceTree = ""; }; - 2835CF0D5E4AC0B96436BED66036CC25 /* ftgzip.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftgzip.h; sourceTree = ""; }; - 286E77C6AFB14927B14098D9B094F2EE /* opengl_GraphicsDrawer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = opengl_GraphicsDrawer.h; sourceTree = ""; }; - 2887F0AA90E8BCE5770880C29DE7A352 /* FTS4.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FTS4.swift; path = Sources/SQLite/Extensions/FTS4.swift; sourceTree = ""; }; - 288F0A8E1830BC9A6DEE1E4E0D082A8D /* SDImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCache.h; path = SDWebImage/SDImageCache.h; sourceTree = ""; }; - 2915B37F1313A778ECAC05BE22A03BC3 /* Users.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Users.swift; path = Source/SwiftyDropbox/Shared/Generated/Users.swift; sourceTree = ""; }; - 291B51FBCA081F45FC6BADCAFDAA2803 /* NstBoardHosenkan.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardHosenkan.hpp; sourceTree = ""; }; - 2930CA273D36A22F50BBB9A5FFA20234 /* GBCCheat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = GBCCheat.m; sourceTree = ""; }; - 297E2444FDCEA0CA8DEE259009AC453D /* Standard.deltaskin */ = {isa = PBXFileReference; includeInIndex = 1; path = Standard.deltaskin; sourceTree = ""; }; - 29919E9648C822A2B4D58714161F47A8 /* Fabric.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Fabric.framework; path = iOS/Fabric.framework; sourceTree = ""; }; - 29A03F7FAF6D322856360C07028E6E5C /* Result+Success.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Result+Success.swift"; sourceTree = ""; }; - 29E7F21E3BF4B2EDD2254AB12681340C /* resampler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = resampler.h; sourceTree = ""; }; - 29F95C4455432D889D0D66C71EA6F3B5 /* SoundFileFactory.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = SoundFileFactory.hpp; sourceTree = ""; }; - 2A44F89C6169A0FE46A8371E6FE25915 /* N64DeltaCore-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "N64DeltaCore-umbrella.h"; sourceTree = ""; }; - 2A62259BC78EDF58C7DE954EAA77775D /* port.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = port.h; sourceTree = ""; }; - 2A6DDA9A28D50AE8C256E76E3FA2B06A /* Graphics.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Graphics.hpp; sourceTree = ""; }; - 2AAA49DF639504DEB3CEE32DA59B05E5 /* DSiCrypto.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DSiCrypto.cpp; sourceTree = ""; }; - 2AB6FC8C7DD1084EC3948A0C27CB95AD /* ftlist.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftlist.h; sourceTree = ""; }; - 2B330278331086A56BB545C3BA6BA37A /* DisplayLoadProgress.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DisplayLoadProgress.h; sourceTree = ""; }; - 2B4F5E9F6D351ACA4ED2773D5967D0B8 /* rsp_core.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = rsp_core.h; sourceTree = ""; }; - 2B51A3520C584D8ABB256211A2A7A8DB /* ftgxval.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftgxval.h; sourceTree = ""; }; - 2BA97019C69B8E0B74C7FCAF09323FA2 /* DebugDump.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DebugDump.h; sourceTree = ""; }; - 2BAA7BE16165118C70558D66AC78C004 /* F3DTEXA.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F3DTEXA.cpp; sourceTree = ""; }; - 2BBE4EB7361152D3172AB0C275C92415 /* GTMSessionFetcher-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GTMSessionFetcher-dummy.m"; sourceTree = ""; }; - 2BC1651F3398F95A7546117ED3510535 /* tlb.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = tlb.h; sourceTree = ""; }; - 2BF527A86BB1F33B31BB0F79626623B7 /* UIView+WebCacheOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheOperation.h"; path = "SDWebImage/UIView+WebCacheOperation.h"; sourceTree = ""; }; - 2C1862864C90F04F6E185CC8801D55CE /* DSDeltaCore.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = DSDeltaCore.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 2C1A0B8A722E9E636C72E8A570382A4A /* svpscmap.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svpscmap.h; sourceTree = ""; }; - 2C1EF76242FE6AA83C45F46051B60B6B /* Http.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Http.hpp; sourceTree = ""; }; - 2C2F671219B5C8A4155CFC50FF35CE74 /* NstFpuPrecision.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstFpuPrecision.hpp; sourceTree = ""; }; - 2C31B46F7AC04C4AD902BD8C6D0A36FD /* RSTSearchController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTSearchController.h; path = Roxas/RSTSearchController.h; sourceTree = ""; }; - 2C523CCC02512580019DBDA6D94FA69D /* Sram.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Sram.h; sourceTree = ""; }; - 2C77E5C7BD79BCE763B65F8C61CEA3E8 /* Export.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Export.hpp; sourceTree = ""; }; - 2C7D9702EE4283F38E2F4EDF9DB2194D /* TouchControllerSkin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TouchControllerSkin.swift; sourceTree = ""; }; - 2C9B018595CD9C8401E17A0CED6F461B /* CLSAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSAttributes.h; path = iOS/Crashlytics.framework/Headers/CLSAttributes.h; sourceTree = ""; }; - 2CA3D8C154FC7E7043473A1E7BF36F6A /* DSDeltaCore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DSDeltaCore-dummy.m"; sourceTree = ""; }; - 2CAEB53047F521490F56979320D6CAE8 /* cpu_detect.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = cpu_detect.h; sourceTree = ""; }; - 2CC8EA4C118B72A50FD6895AF0901EA0 /* GPU3D.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GPU3D.h; sourceTree = ""; }; - 2CD07024D87D55F9ADE70163DA7DF8C7 /* NstApiConfig.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiConfig.hpp; sourceTree = ""; }; - 2CEF5831E21FEB587EC1550C13D99132 /* RTC.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = RTC.cpp; sourceTree = ""; }; - 2D680FE7B2377E367551ADC298B6D1D2 /* FrameBuffer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FrameBuffer.h; sourceTree = ""; }; - 2D7834312949A2FBE54E8269384FD6E1 /* System.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = System.hpp; sourceTree = ""; }; - 2DB3F6685D0926B7D45B4A6DF4CB7567 /* DSi_AES.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DSi_AES.h; sourceTree = ""; }; - 2DD243A88249E6DCF61F368826C03255 /* CombinerKey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CombinerKey.h; sourceTree = ""; }; - 2DE74F67CDAB85D054D711218E1334CA /* RateTransposer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RateTransposer.h; sourceTree = ""; }; - 2E0B065D9F78196FA831FEB44937FFCA /* array.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = array.h; sourceTree = ""; }; - 2E1228101B4F23943718649665A9AC0E /* Textures.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Textures.cpp; sourceTree = ""; }; - 2E4F59F003666ECE81B8914D69DB6AF1 /* ioapi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ioapi.h; sourceTree = ""; }; - 2E790CA18214A8F0659F420BC35A3F52 /* N64DeltaCore.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = N64DeltaCore.modulemap; sourceTree = ""; }; - 2E80F033B66109666D4F9EEE71E6C2B0 /* NstApiTapeRecorder.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiTapeRecorder.hpp; sourceTree = ""; }; - 2E9BD08F2470A7904235A81A69B7B698 /* NstBoardBmc1200in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc1200in1.hpp; sourceTree = ""; }; - 2EE9DF9D26033CECBB33A2130F905155 /* NstBoardKonamiVrc2.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardKonamiVrc2.hpp; sourceTree = ""; }; - 2F13F915B99C517D9153F031465EAC1F /* NstPpu.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstPpu.hpp; sourceTree = ""; }; - 2F4835ABD4E04214332523B9D3BEAFBD /* RemoteFile.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RemoteFile.swift; sourceTree = ""; }; - 2F6ECB5AA1057602FCDD4E5786A4B0E5 /* eventloop.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = eventloop.h; sourceTree = ""; }; - 2F843E73027A5BE68E6CA51088F469B2 /* SNESDeltaCore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SNESDeltaCore-dummy.m"; sourceTree = ""; }; - 2FABFE400E3964CCCE1DD3091F585C5C /* NstVsRbiBaseball.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstVsRbiBaseball.hpp; sourceTree = ""; }; - 2FB72E636AC0F6FF43B32798B4DD0881 /* NstBoardHenggedianzi.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardHenggedianzi.hpp; sourceTree = ""; }; - 2FBBCE862E374DE16A6F3E328AA1A1DA /* Alamofire-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-umbrella.h"; sourceTree = ""; }; - 2FC4B3331E3D5016224691B97B18E8ED /* FIFOSamplePipe.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FIFOSamplePipe.h; sourceTree = ""; }; - 2FE79DB67DDDDD1F26E2263E68C2DDF0 /* oglft_c.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = oglft_c.h; sourceTree = ""; }; - 2FEC8E53FAA570C8D081ACFD7722213C /* F3DGOLDEN.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F3DGOLDEN.h; sourceTree = ""; }; - 300B81B7400D637EF3E0F11DA2B20A50 /* NstBoardBmc72in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc72in1.hpp; sourceTree = ""; }; - 30131336E11D11700AC99D314BDC275C /* GBADeltaCore.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = GBADeltaCore.bundle; path = "GBADeltaCore-GBADeltaCore.bundle"; sourceTree = BUILT_PRODUCTS_DIR; }; - 3017F6DD22747AB519633C5ECB17E967 /* ftimage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftimage.h; sourceTree = ""; }; - 301E160410CC65E23A409444566E5122 /* gbint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = gbint.h; sourceTree = ""; }; - 3084DE1F8EACD7F5FE7A7BCAAB89F024 /* flashram.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = flashram.h; sourceTree = ""; }; - 3096BFB6C852C462F98480FFFED51237 /* NSFileManager+URLs.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSFileManager+URLs.h"; path = "Roxas/NSFileManager+URLs.h"; sourceTree = ""; }; - 30B4C2B542657C7F8695159F71616D5B /* Statement.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Statement.swift; path = Sources/SQLite/Core/Statement.swift; sourceTree = ""; }; - 30BD2AE5598700A110AD39F55A8D4A0C /* ftbbox.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftbbox.h; sourceTree = ""; }; - 30CD7C1C723193A167A0753FFE763A28 /* statesaver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = statesaver.h; sourceTree = ""; }; - 30D5361B1F9F184F5C39F254FC6B9567 /* ftserv.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftserv.h; sourceTree = ""; }; - 30F6CAA659D4D94BBF65DF1CE1D40AB8 /* OGLFT.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = OGLFT.h; sourceTree = ""; }; - 310827CCFFF7FE348B9558D4BDFA99B0 /* hle_internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = hle_internal.h; sourceTree = ""; }; - 310D5F95C0B429799D0905D4C3CC4089 /* SNESDeltaCore.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SNESDeltaCore.modulemap; sourceTree = ""; }; - 311ED734D1D039BFD75B4EE89CD9835B /* UIKit+ActivityIndicating.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIKit+ActivityIndicating.m"; path = "Roxas/UIKit+ActivityIndicating.m"; sourceTree = ""; }; - 313E672F1EB9448940936DB36A67FCF2 /* DeltaTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DeltaTypes.h; path = DeltaCore/DeltaTypes.h; sourceTree = ""; }; - 316682D383C84DADE373A0AF5248B438 /* PACKED.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PACKED.h; sourceTree = ""; }; - 317B88402DB12FDB873F4186C2C36DE8 /* svcid.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svcid.h; sourceTree = ""; }; - 318A8A10BD843993BF6B77BA3E4503D7 /* NstChecksum.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstChecksum.hpp; sourceTree = ""; }; - 31ABC87581C86AA32FF41CEDD6ED1F9E /* GBCDeltaCore-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GBCDeltaCore-umbrella.h"; sourceTree = ""; }; - 31BA01A55D20E1D2E1B775E15F86FBC9 /* NstState.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstState.hpp; sourceTree = ""; }; - 31CD50A197BC5998E93424311832926C /* F3DBETA.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F3DBETA.cpp; sourceTree = ""; }; - 324E96E22E51A6E3212EE2F235AB6824 /* DisplayLoadProgress.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DisplayLoadProgress.cpp; sourceTree = ""; }; - 3251209BECAF282E0DCE499F9AD02385 /* NstBoardWhirlwind.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardWhirlwind.hpp; sourceTree = ""; }; - 325EDE94F2AAA53B3F132A5F1C792A9A /* NstBoardBmc22Games.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc22Games.hpp; sourceTree = ""; }; - 326C18DCCA9E4564F2B41EAF145F3947 /* tttables.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = tttables.h; sourceTree = ""; }; - 32A7FC18682D076FF7779592F09D9ED6 /* SMClassicCalloutView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SMClassicCalloutView.m; sourceTree = ""; }; - 32E230B70DE950F781B65B2E6AE5E992 /* TextureFilters.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TextureFilters.h; sourceTree = ""; }; - 335295D8D9EA703418C752C19F387C85 /* Delta.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Delta.swift; path = DeltaCore/Delta.swift; sourceTree = ""; }; - 3385A18479B75880DE010A2772BB6529 /* FullscreenResolutions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FullscreenResolutions.h; sourceTree = ""; }; - 3396C683FAA03430577E635BCF62F26A /* NSError+LocalizedFailureDescription.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "NSError+LocalizedFailureDescription.swift"; sourceTree = ""; }; - 33C9E9FF569783D800DD1761E4380AAB /* messages.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = messages.h; sourceTree = ""; }; - 33FE7D465ECFED221B87424469C67A9C /* Files.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Files.swift; path = Source/SwiftyDropbox/Shared/Generated/Files.swift; sourceTree = ""; }; - 341202BB825E444CFFD1E90327ECF6E3 /* N64EmulatorBridge.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = N64EmulatorBridge.m; sourceTree = ""; }; - 344175CF76093086EA58BEBC8AD0E014 /* PaperRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PaperRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/PaperRoutes.swift; sourceTree = ""; }; - 3464E71D1132BB4ECDA6EE3AD5D9C854 /* Schema.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Schema.swift; path = Sources/SQLite/Typed/Schema.swift; sourceTree = ""; }; - 347CC7843D628E9B8272356340CC5194 /* RSTHelperFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTHelperFile.m; path = Roxas/RSTHelperFile.m; sourceTree = ""; }; - 34B9FC0547132313C6B66562D7FB6FE6 /* DateAndTimeFunctions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DateAndTimeFunctions.swift; path = Sources/SQLite/Typed/DateAndTimeFunctions.swift; sourceTree = ""; }; - 34E8EDC1F667C75B98DF6B517C4D190B /* GBI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBI.h; sourceTree = ""; }; - 353752D35D9CE2E270057B7B1D0F9609 /* DeltaCore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DeltaCore-dummy.m"; sourceTree = ""; }; - 3589E77615ABDBF3CF0EA3AB7C5E1D95 /* CRC.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CRC.h; sourceTree = ""; }; - 359963C733B79E463294068D0FD5E8D4 /* NstApiDipSwitches.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiDipSwitches.hpp; sourceTree = ""; }; - 35A600AC8729425CB58B419068B7AF93 /* NstBoardBandaiLz93d50ex.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBandaiLz93d50ex.hpp; sourceTree = ""; }; - 35DC0A8D32E14C0B0344081D704501F9 /* NstBoardTxcPoliceman.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardTxcPoliceman.hpp; sourceTree = ""; }; - 35E9790D73322BBCEF673DA489A9D57E /* GLFunctions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GLFunctions.h; sourceTree = ""; }; - 35F2300F0A4A50AD3C435334DD6D3A93 /* writepng.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = writepng.h; sourceTree = ""; }; - 363DEF338B382D949239646D27C8B705 /* ManagedAccount.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ManagedAccount.swift; sourceTree = ""; }; - 36CE82CF693A751E8245859F6F1F0059 /* GoogleSignIn.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleSignIn.release.xcconfig; sourceTree = ""; }; - 370CCAFA9A85F11C84A26CCC1747C687 /* pure_interp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pure_interp.h; sourceTree = ""; }; - 371D45AAD910B37E9CBCC278DCA3A677 /* ResourceBundle-GBADeltaCore-GBADeltaCore-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-GBADeltaCore-GBADeltaCore-Info.plist"; sourceTree = ""; }; + 2526EFE37DE949B59F28B5B1BFB4EE23 /* NSFileManager+URLs.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSFileManager+URLs.h"; path = "Roxas/NSFileManager+URLs.h"; sourceTree = ""; }; + 2580A4A555312C496A5873799DA66677 /* UICollectionViewCell+Nibs.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UICollectionViewCell+Nibs.m"; path = "Roxas/UICollectionViewCell+Nibs.m"; sourceTree = ""; }; + 2678266B2B8D8A2855A5908D7923283D /* GoogleAPIClientForREST.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleAPIClientForREST.release.xcconfig; sourceTree = ""; }; + 269E709D185D5CA2CDCD39DC8DD5DEC8 /* OAuth.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OAuth.swift; path = Source/SwiftyDropbox/Shared/Handwritten/OAuth.swift; sourceTree = ""; }; + 26DC99E91CDEE86C52E9E0324D1EA501 /* NSManagedObject+Conveniences.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "NSManagedObject+Conveniences.swift"; sourceTree = ""; }; + 27687C530D6A8E1D650850CBA5252CCF /* GTLRBatchResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRBatchResult.m; path = Source/Objects/GTLRBatchResult.m; sourceTree = ""; }; + 27CFBFE38EE3E62A2AE3BEA0AE5017FB /* DropboxService+Versions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DropboxService+Versions.swift"; path = "Backends/Dropbox/Harmony-Dropbox/DropboxService+Versions.swift"; sourceTree = ""; }; + 28EA63DED260AC3D10888E6B160715D7 /* SDWebImagePrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImagePrefetcher.m; path = SDWebImage/SDWebImagePrefetcher.m; sourceTree = ""; }; + 2A9AD8EA71EC22FD543DD487E2DB0156 /* Answers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Answers.h; path = iOS/Crashlytics.framework/Headers/Answers.h; sourceTree = ""; }; + 2AC6E063E21E140BC48DA9F82D584277 /* Roxas-Prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Roxas-Prefix.pch"; path = "Roxas/Roxas-Prefix.pch"; sourceTree = ""; }; + 2ACF272C0DD8E70962D180D393182970 /* RSTTintedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTTintedImageView.h; path = Roxas/RSTTintedImageView.h; sourceTree = ""; }; + 2B3E4E0BD549452A129407E9F4DF73D7 /* SQLite.swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SQLite.swift-dummy.m"; sourceTree = ""; }; + 2B804EB0CB6865001DB214BEA57C73FC /* DateAndTimeFunctions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DateAndTimeFunctions.swift; path = Sources/SQLite/Typed/DateAndTimeFunctions.swift; sourceTree = ""; }; + 2C24EE324BE60AF0E81E6E7833979A18 /* RSTNavigationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTNavigationController.h; path = Roxas/RSTNavigationController.h; sourceTree = ""; }; + 2C4D79AFBA1CA341C6A6B3A46012D512 /* RSTPlaceholderView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTPlaceholderView.h; path = Roxas/RSTPlaceholderView.h; sourceTree = ""; }; + 2CA4601D3B9A95C5B7028B04BB611234 /* UIImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+WebCache.h"; path = "SDWebImage/UIImageView+WebCache.h"; sourceTree = ""; }; + 2D8960DC903FF8290DD8DF8C73948BB1 /* RSTRelationshipPreservingMergePolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTRelationshipPreservingMergePolicy.h; path = Roxas/RSTRelationshipPreservingMergePolicy.h; sourceTree = ""; }; + 2DD584D4AAB2DEBCA6D7596A944054C5 /* GTMNSString+URLArguments.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "GTMNSString+URLArguments.m"; path = "Foundation/GTMNSString+URLArguments.m"; sourceTree = ""; }; + 2E4CF20C467CA0FE8755D1BD38D66D70 /* FTS5.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FTS5.swift; path = Sources/SQLite/Extensions/FTS5.swift; sourceTree = ""; }; + 2F033C26C41BA521B8838CD0887AC919 /* DropboxClientsManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DropboxClientsManager.swift; path = Source/SwiftyDropbox/Shared/Handwritten/DropboxClientsManager.swift; sourceTree = ""; }; + 2F0833EC5BE1C316EC6365EF11660043 /* RSTPlaceholderView.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; name = RSTPlaceholderView.xib; path = Roxas/RSTPlaceholderView.xib; sourceTree = ""; }; + 30C25451FF334947DA958DAD43A4FF2C /* SMCalloutView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SMCalloutView.m; sourceTree = ""; }; + 31B604391F6CE905C37BC1B57DF00498 /* NSUserDefaults+DynamicProperties.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSUserDefaults+DynamicProperties.h"; path = "Roxas/NSUserDefaults+DynamicProperties.h"; sourceTree = ""; }; + 31CBAF6EB7C773654369987E2F6A8341 /* RSTNibView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTNibView.h; path = Roxas/RSTNibView.h; sourceTree = ""; }; + 3226341D0A0C2F09E9C5EE00D06A7517 /* RSTCellContentDataSource_Subclasses.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCellContentDataSource_Subclasses.h; path = Roxas/RSTCellContentDataSource_Subclasses.h; sourceTree = ""; }; + 325F1227EC21B365B6312234134BA6F9 /* SQLiteObjc.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SQLiteObjc.m; path = Sources/SQLiteObjc/SQLiteObjc.m; sourceTree = ""; }; + 327851A9D684728F563951E6CF957362 /* RecordOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RecordOperation.swift; sourceTree = ""; }; + 32D381ADD4F43FBEF880D04E34438F4B /* UIImageView+HighlightedWebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+HighlightedWebCache.h"; path = "SDWebImage/UIImageView+HighlightedWebCache.h"; sourceTree = ""; }; + 330FF8B4474DCC45B35FE08AB784032B /* FileProperties.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FileProperties.swift; path = Source/SwiftyDropbox/Shared/Generated/FileProperties.swift; sourceTree = ""; }; + 342AE849C236F7165CA45E0C22B2AF44 /* RSTSearchController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTSearchController.h; path = Roxas/RSTSearchController.h; sourceTree = ""; }; + 34777F37FD7075222B0F5F8E54FEDEB7 /* SessionManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionManager.swift; path = Source/SessionManager.swift; sourceTree = ""; }; + 352EA461943DF04A227376E366F2CEAB /* GTMMethodCheck.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMMethodCheck.h; path = DebugUtils/GTMMethodCheck.h; sourceTree = ""; }; + 354509C6EB5B13866598B2FA3731D2BB /* RemoteFile.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RemoteFile.swift; sourceTree = ""; }; + 35853860780F7CD1E52A5B698C070DB0 /* GTLRDateTime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDateTime.h; path = Source/Objects/GTLRDateTime.h; sourceTree = ""; }; 37221D699E77B16EA4FE6C376B827730 /* Pods-Delta-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Delta-umbrella.h"; sourceTree = ""; }; - 375C3C3A4475372C4AD36AD0B2842472 /* DSi_Camera.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DSi_Camera.cpp; sourceTree = ""; }; - 37D0BABBA376987F2CC8B03FCC78D43C /* NstBoardBmc35in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc35in1.hpp; sourceTree = ""; }; - 37E46CBAFA8DC113FDF631837622310D /* musyx.c */ = {isa = PBXFileReference; includeInIndex = 1; path = musyx.c; sourceTree = ""; }; - 37E6416FF8041B0018F081486F5DA69C /* svbdf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svbdf.h; sourceTree = ""; }; - 380F35715DCAE202AD5A7B1926282538 /* GBCEmulatorBridge.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = GBCEmulatorBridge.mm; sourceTree = ""; }; - 382AEC1D29962D722D89667A4472393D /* TxInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TxInternal.h; sourceTree = ""; }; - 3834E77F63953D87853DE315E253E447 /* GoogleAPIClientForREST-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleAPIClientForREST-umbrella.h"; sourceTree = ""; }; - 383D238B9AD27238B5FF136875540E61 /* NSManagedObject+Harmony.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "NSManagedObject+Harmony.swift"; sourceTree = ""; }; - 384E92393CF9B3934AA1459082E32EEE /* UICollectionViewCell+CellContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UICollectionViewCell+CellContent.h"; path = "Roxas/UICollectionViewCell+CellContent.h"; sourceTree = ""; }; - 3877506BCB9C396099DE5A88C9255153 /* UIImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+WebCache.m"; path = "SDWebImage/UIImageView+WebCache.m"; sourceTree = ""; }; - 38906166584FA7AD168B640076316C3A /* AnyInput.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AnyInput.swift; sourceTree = ""; }; - 38A54DE3848C6830CA6D438BCCE65D81 /* Alamofire-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Alamofire-dummy.m"; sourceTree = ""; }; - 38AE0B5994FF73A6C429B6EBB1313566 /* aes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = aes.h; sourceTree = ""; }; - 38E017C7FDE637C847376F4854015030 /* AnyCodable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AnyCodable.swift; sourceTree = ""; }; - 38E6E1D069F7CEA691074A413DC56ADB /* MelonDSTypes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MelonDSTypes.m; sourceTree = ""; }; - 39159273D372AC23A0B301B651647A48 /* NstBoardSachenS8259.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSachenS8259.hpp; sourceTree = ""; }; - 394FDA370F48D26EA3EF604C1CFC33BC /* audio_out_backend.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = audio_out_backend.h; sourceTree = ""; }; - 3983F1895BAF52B55FBA7C3CA41B9A63 /* SDWebImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloader.h; path = SDWebImage/SDWebImageDownloader.h; sourceTree = ""; }; - 39AF6EAE7D1AEFBD13D88A8BB33A9336 /* OpenGLESProcessor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = OpenGLESProcessor.swift; sourceTree = ""; }; - 39E30E613CDA56DD588A44D7BE635E64 /* glsl_CombinerProgramImpl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = glsl_CombinerProgramImpl.h; sourceTree = ""; }; - 39F57C8AD257C3DD8BC2E22B11EE1356 /* matrix.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = matrix.h; sourceTree = ""; }; - 3A031D54C3566192B22B6125DEE873DC /* m64p_config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64p_config.h; sourceTree = ""; }; - 3A45A0771D00FB91CCC82B95621F18F1 /* RSTPlaceholderView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTPlaceholderView.m; path = Roxas/RSTPlaceholderView.m; sourceTree = ""; }; - 3A4DD9046F6AA16EDF3BE6CDB82D8C43 /* InputStream.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = InputStream.hpp; sourceTree = ""; }; - 3A57C4A2E676CA0366D18C05CCDCB841 /* jpeg.c */ = {isa = PBXFileReference; includeInIndex = 1; path = jpeg.c; sourceTree = ""; }; - 3A847A9F7AACCBECC646C5B42B6CF314 /* opengl_ColorBufferReaderWithReadPixels.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = opengl_ColorBufferReaderWithReadPixels.h; sourceTree = ""; }; - 3AA76236037E9FBA43FE5066105DCAA8 /* CRC_OPT.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = CRC_OPT.cpp; sourceTree = ""; }; - 3AAC4F232A6F0D7BEF0F0213A6C68F12 /* Roxas-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Roxas-prefix.pch"; sourceTree = ""; }; - 3B00EFBA37F600E32A24246B7A597850 /* cicx105.c */ = {isa = PBXFileReference; includeInIndex = 1; path = cicx105.c; sourceTree = ""; }; - 3B0F8366B012EA89F3FA3A0034DD1EE4 /* xxhash.c */ = {isa = PBXFileReference; includeInIndex = 1; path = xxhash.c; sourceTree = ""; }; - 3B19F94B88659C7D37F232351127EABC /* ColorBufferReader.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ColorBufferReader.cpp; sourceTree = ""; }; - 3B227874CD4B76D36C22095809680FA3 /* DSi_SPI_TSC.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DSi_SPI_TSC.h; sourceTree = ""; }; - 3B304C6B796AC11108B515F010477479 /* NstBoardTaitoX1005.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardTaitoX1005.hpp; sourceTree = ""; }; - 3B3BC53887BCBE3F02841C302D9EFCB4 /* ZIPFoundation-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ZIPFoundation-dummy.m"; sourceTree = ""; }; - 3B5AEE693F04A288AD606B62A80145EC /* osal_files_ios.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = osal_files_ios.mm; sourceTree = ""; }; - 3B5D17EDC9CD7D8A8AB79211F9C821AF /* opengl_BufferManipulationObjectFactory.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_BufferManipulationObjectFactory.cpp; sourceTree = ""; }; - 3B6A11A1E9804A2ACDF0C6729DCBA4EE /* language.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = language.h; sourceTree = ""; }; - 3BAE81001B3A22535FE02638D962A025 /* ThreadLocalPtr.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = ThreadLocalPtr.hpp; sourceTree = ""; }; - 3BB11FD20DEECB8B6C10A1E5AB5E3050 /* NESDeltaCore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NESDeltaCore.h; sourceTree = ""; }; - 3BB41410B47E8A68D39475A239D30265 /* Record.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Record.swift; sourceTree = ""; }; - 3BE3FE94F56D674F98DFC3E6F87C031F /* util.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = util.h; sourceTree = ""; }; - 3C088076202E6D23B33C392A77F70C8F /* Export.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Export.hpp; sourceTree = ""; }; - 3C61A8EC43CC81E91FC288BD7D6390AF /* NstBoardBxRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBxRom.hpp; sourceTree = ""; }; - 3C6B3BB0BD1C5AB90126FB0F27180451 /* MelonDSDeltaCore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MelonDSDeltaCore.h; sourceTree = ""; }; - 3CB976F21FBECBF6953DE2377203398B /* Standard.deltaskin */ = {isa = PBXFileReference; includeInIndex = 1; path = Standard.deltaskin; sourceTree = ""; }; - 3CDB380E3F71C06D4C88A675AE2BDDFD /* Service.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Service.swift; sourceTree = ""; }; - 3CE123C6217FBA6E9407242245691A7F /* DSi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DSi.h; sourceTree = ""; }; - 3CE8DC61169AA7B33E10D6AE53AD007A /* pngusr.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pngusr.h; sourceTree = ""; }; - 3D0E5148A5668D50387301D5037D6607 /* gSP.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = gSP.cpp; sourceTree = ""; }; - 3D20BEA8EA23644F74F988336C5EF2DA /* UdpSocket.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = UdpSocket.hpp; sourceTree = ""; }; - 3D704AF114180DB3C2B804374D80F1A4 /* pngdebug.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pngdebug.h; sourceTree = ""; }; - 3D7C8FA406E15F16500B35FF45E35734 /* FilterChain.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = FilterChain.swift; sourceTree = ""; }; - 3DCBB7A27AD42575D6ED0104FBB160BC /* SNESDeltaCore.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SNESDeltaCore.release.xcconfig; sourceTree = ""; }; - 3DFF22813A5E66C19ECD0F24DE112112 /* ppu.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ppu.h; sourceTree = ""; }; - 3E14F2824F466613E0B904E85B7F7D90 /* String.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = String.cpp; sourceTree = ""; }; - 3E6F82D29353E7C4BB91DFDD062C0295 /* UITableView+CellContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableView+CellContent.h"; path = "Roxas/UITableView+CellContent.h"; sourceTree = ""; }; - 3E7B7BF0A743BE6F53D69481DCC503FE /* GoogleToolboxForMac-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleToolboxForMac-prefix.pch"; sourceTree = ""; }; - 3EFDA177554BE503A74EED13D07C6F88 /* WavFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = WavFile.h; sourceTree = ""; }; - 3F1CD3AD3F0B4F2ED1A6C959A582EF5D /* NstBoardRexSoftDb5z.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardRexSoftDb5z.hpp; sourceTree = ""; }; - 3F2DD7FE6DF633896BD076DA98F91769 /* regcache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = regcache.h; sourceTree = ""; }; - 3F45EBDD3BFEC8ABC543D2F91E639B31 /* NstVideoFilterScaleX.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstVideoFilterScaleX.hpp; sourceTree = ""; }; - 3F77E3426079D9FF35C4855C3733C861 /* NstBoardUnlKingOfFighters97.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardUnlKingOfFighters97.hpp; sourceTree = ""; }; - 3FA1B8883F6CAED73B7A39FB514ECF59 /* FilePropertiesRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FilePropertiesRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/FilePropertiesRoutes.swift; sourceTree = ""; }; - 3FA356CE28CDB87E135DA1A52E713731 /* t1types.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = t1types.h; sourceTree = ""; }; - 3FBE42827351126539CE750010EC25AB /* NstBoardCony.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardCony.hpp; sourceTree = ""; }; - 4005F94E5B76C80D44EA7897028C3F79 /* DepthBuffer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DepthBuffer.cpp; sourceTree = ""; }; - 400FD1065DA525FF7593C6190E7DB593 /* Version+Dropbox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Version+Dropbox.swift"; sourceTree = ""; }; - 401540A57A1384B5E8EE6E0E120864A6 /* cic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = cic.h; sourceTree = ""; }; - 405AE5BB47C904F85227A7D7E3D69897 /* MelonDSDeltaCore-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MelonDSDeltaCore-umbrella.h"; sourceTree = ""; }; - 4065CD95013A44798CC6DD2F2C1FE455 /* Main.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Main.hpp; sourceTree = ""; }; - 407496B379E009BB38F5D88F433827EB /* Cheat.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Cheat.swift; sourceTree = ""; }; - 409552CF37EE4A6C9432067647521E81 /* MelonDSDeltaCore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MelonDSDeltaCore-dummy.m"; sourceTree = ""; }; + 3829020F4459CB123EB43F75C89CC930 /* GTMDebugSelectorValidation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMDebugSelectorValidation.h; path = DebugUtils/GTMDebugSelectorValidation.h; sourceTree = ""; }; + 386D15C03B379B542FF0410F231BA99F /* Crashlytics.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Crashlytics.debug.xcconfig; sourceTree = ""; }; + 38D7384818AF68440B2244375F9AA33C /* FTS4.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FTS4.swift; path = Sources/SQLite/Extensions/FTS4.swift; sourceTree = ""; }; + 390CA71F71BE3F9AD8524364A21EB203 /* SMCalloutView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SMCalloutView-umbrella.h"; sourceTree = ""; }; + 39179376792F76422466948387B42807 /* UIButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+WebCache.h"; path = "SDWebImage/UIButton+WebCache.h"; sourceTree = ""; }; + 39368FCD9E3F800D5CC9ED6F7E6E2FBA /* GTLRBatchResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRBatchResult.h; path = Source/Objects/GTLRBatchResult.h; sourceTree = ""; }; + 395B3990222DB4ACFD33DFE4AA965D9F /* DeleteRecordOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DeleteRecordOperation.swift; sourceTree = ""; }; + 3A5C2722E51AEC178E7F784349E1C6ED /* RSTFetchedResultsDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTFetchedResultsDataSource.h; path = Roxas/RSTFetchedResultsDataSource.h; sourceTree = ""; }; + 3A7D0A97105EA87651DB5999A685D0BB /* RSTPersistentContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTPersistentContainer.m; path = Roxas/RSTPersistentContainer.m; sourceTree = ""; }; + 3B03A5BFC038EAEFDE6C37E989D208EE /* RSTActivityIndicating.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTActivityIndicating.h; path = Roxas/RSTActivityIndicating.h; sourceTree = ""; }; + 3C86ED7C3E410FD2D8BEC98751E7F21C /* GTMGatherInputStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMGatherInputStream.m; path = Source/GTMGatherInputStream.m; sourceTree = ""; }; + 3C9B1C8A3927DBD36AEF7189D04F872C /* GTMSessionFetcher-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GTMSessionFetcher-dummy.m"; sourceTree = ""; }; + 3D102F1530DD768EE61A6780CC10945E /* GTLRService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRService.m; path = Source/Objects/GTLRService.m; sourceTree = ""; }; + 3E68150D1F72CC502516BA7F5B6F46E8 /* UICollectionView+CellContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UICollectionView+CellContent.h"; path = "Roxas/UICollectionView+CellContent.h"; sourceTree = ""; }; + 3E73A39BA15BE5DDB7864D0CFAC81A83 /* Validation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Validation.swift; path = Source/Validation.swift; sourceTree = ""; }; + 3E855251AD0E12C6E0F746D7AF8E2699 /* ManagedAccount.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ManagedAccount.swift; sourceTree = ""; }; + 3EB2315ADE9FD5AB5D13CFB5648C59A8 /* UIImage+Manipulation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Manipulation.m"; path = "Roxas/UIImage+Manipulation.m"; sourceTree = ""; }; + 3F090A5D74FACCC582CBC07FD017F492 /* CustomRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomRoutes.swift; path = Source/SwiftyDropbox/Shared/Handwritten/CustomRoutes.swift; sourceTree = ""; }; + 3F1C0690FFC4BEC08FD35AC6E956901F /* UIImage+GIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+GIF.m"; path = "SDWebImage/UIImage+GIF.m"; sourceTree = ""; }; 409F0AD5337C7D82401596430BE50AB0 /* Pods-Delta-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Delta-resources.sh"; sourceTree = ""; }; - 41080B7DCEEB1F472E82B66096228A24 /* NstBoardAcclaimMcAcc.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardAcclaimMcAcc.hpp; sourceTree = ""; }; - 41086B657465737EAC2D550B6731543D /* VertexArray.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = VertexArray.hpp; sourceTree = ""; }; - 4154C8125893A215BDBB6750B27BF5F1 /* RSTHasher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTHasher.m; path = Roxas/RSTHasher.m; sourceTree = ""; }; - 41719ACD881D756B29502E6C40D1DBA6 /* Common.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Common.swift; path = Source/SwiftyDropbox/Shared/Generated/Common.swift; sourceTree = ""; }; - 41CEE23CCD9B2202EA3DB8407D932735 /* ftmm.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftmm.h; sourceTree = ""; }; - 41DB39ED4A9987FCCAE6804933525696 /* bldno.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = bldno.h; sourceTree = ""; }; - 41DD9A08F62AAB32A0CBE59D30E7671E /* UICollectionView+CellContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UICollectionView+CellContent.m"; path = "Roxas/UICollectionView+CellContent.m"; sourceTree = ""; }; - 42337BE4912F6FDB485C8933BF93360F /* TxFilterExport.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TxFilterExport.cpp; sourceTree = ""; }; - 423CF889D534C377432C9CF4B4C9D5BC /* DepthBuffer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DepthBuffer.h; sourceTree = ""; }; - 4280888EFBE38CD9BA1722AA8B5E21D7 /* NstBoardJyCompany.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardJyCompany.hpp; sourceTree = ""; }; - 428337B1D02C02B51CC15106D03FF0DA /* lirc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = lirc.h; sourceTree = ""; }; - 4295015512B1861071F1267DFFAEDB65 /* list.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = list.h; sourceTree = ""; }; - 42DCB88F5D41617CB9F6F1ED41F3709D /* NstBoardKayPandaPrince.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardKayPandaPrince.hpp; sourceTree = ""; }; - 42FBEC2474EF26A1D9AAB0009F359EF5 /* HarmonyToHarmony2.xcmappingmodel */ = {isa = PBXFileReference; includeInIndex = 1; path = HarmonyToHarmony2.xcmappingmodel; sourceTree = ""; }; - 430C7822BB2DB30D3A3F120CC4806220 /* GraphicBuffer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GraphicBuffer.h; sourceTree = ""; }; - 43155D80E0BA237C31D4788F6BB7D924 /* rdram.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = rdram.h; sourceTree = ""; }; - 43581617364040436E9EE723D0F60BCE /* NstVideoScreen.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstVideoScreen.hpp; sourceTree = ""; }; - 43949B838135A4C9AF88A573B762A429 /* DBChunkInputStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DBChunkInputStream.h; path = Source/SwiftyDropbox/Shared/Handwritten/DBChunkInputStream.h; sourceTree = ""; }; - 43AE2C70BA23A5104C95801EED5A171A /* F3DZEX2.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F3DZEX2.cpp; sourceTree = ""; }; + 40FBB0398022B16CA2ADEF30CB2CBEEC /* FetchRemoteRecordsOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = FetchRemoteRecordsOperation.swift; sourceTree = ""; }; + 41C3873012793660F0D7FC67115DC0C2 /* GTLRErrorObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRErrorObject.h; path = Source/Objects/GTLRErrorObject.h; sourceTree = ""; }; + 42AED944C954072538C8520967AC8034 /* UIImage+GIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+GIF.h"; path = "SDWebImage/UIImage+GIF.h"; sourceTree = ""; }; + 431C45E062587B95BE6B5235A45E749F /* Harmony.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = Harmony.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 4340A4F731B942E068A6B6F08CE738CA /* Alamofire-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Alamofire-dummy.m"; sourceTree = ""; }; + 43C9361EBA8A37B58FC640ADA480FBE2 /* UIViewController+TransitionState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+TransitionState.m"; path = "Roxas/UIViewController+TransitionState.m"; sourceTree = ""; }; 4405793D5AF1EFD9D2BDA30AA0D2E514 /* libRoxas.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libRoxas.a; path = libRoxas.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 4420379BF6BC85F46BB80BEEBEFFB501 /* RSTDynamicDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTDynamicDataSource.h; path = Roxas/RSTDynamicDataSource.h; sourceTree = ""; }; - 445C183225EFC758533D7B90AEC6A60B /* retro_stat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = retro_stat.h; sourceTree = ""; }; - 448C776591E6FF4483CD588C7CD03019 /* m64p_frontend.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64p_frontend.h; sourceTree = ""; }; - 44BD07F028973D4260A9A797E772F208 /* GTLRDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDefines.h; path = Source/GTLRDefines.h; sourceTree = ""; }; - 44C09EBEC04D075143364B842FD33FA1 /* PlatformConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PlatformConfig.h; sourceTree = ""; }; - 44DB938AD9F0914B6AF9E0B000CC58D4 /* UIApplication+AppExtension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIApplication+AppExtension.swift"; sourceTree = ""; }; - 44F35ECB9F98A2E0FA83097FDB6C87DF /* NstBoardPxRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardPxRom.hpp; sourceTree = ""; }; - 45203999A84E8BC466D11878D26EB94B /* NstTimer.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstTimer.hpp; sourceTree = ""; }; - 452601ACDD42FBCEC74336E592C77C3C /* NstInpFamilyKeyboard.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpFamilyKeyboard.hpp; sourceTree = ""; }; - 4539EE42EA9368DA3FC54B00064B5F74 /* DSi_NDMA.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DSi_NDMA.cpp; sourceTree = ""; }; - 454BB0507C489FE093E5C018F2741A75 /* UIKit+ActivityIndicating.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIKit+ActivityIndicating.h"; path = "Roxas/UIKit+ActivityIndicating.h"; sourceTree = ""; }; - 454C8212A9EA068C8FB926E200CAFA57 /* svpostnm.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svpostnm.h; sourceTree = ""; }; - 45ADD1597F370D16BB2235D82EFB16A4 /* SyncProgress.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SyncProgress.swift; sourceTree = ""; }; - 45B2FAE49683908828C8F53DDE48A790 /* Arm64Emitter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Arm64Emitter.h; sourceTree = ""; }; - 45D4C75AC56E110104DCADA137055D6C /* ftwinfnt.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftwinfnt.h; sourceTree = ""; }; - 4618B072460D823636CAF1E645B31A1E /* cheat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = cheat.h; sourceTree = ""; }; - 46198453B4E430C9A0F4D46092ABB409 /* Config.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Config.hpp; sourceTree = ""; }; - 467F53FD7271C63510E4CE72A2081426 /* NstCrc32.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstCrc32.hpp; sourceTree = ""; }; - 47021C79C17197132C70681E80FE73E7 /* Result+Drive.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Result+Drive.swift"; sourceTree = ""; }; - 4763DEBE73DBBA8B553A7B98D5B7CCE7 /* ftstroke.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftstroke.h; sourceTree = ""; }; - 478DF5F42EBCD65023A3109A637FC3FD /* winlnxdefs.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = winlnxdefs.h; sourceTree = ""; }; - 478FF66EA47351596632AC605ADC8D1D /* CLSReport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSReport.h; path = iOS/Crashlytics.framework/Headers/CLSReport.h; sourceTree = ""; }; - 479FB40E896E9E50A08416990B824A5F /* NstBoardBmcVt5201.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcVt5201.hpp; sourceTree = ""; }; - 47B1F503E42D737626E2EA908A16CD96 /* Font.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Font.hpp; sourceTree = ""; }; - 4815EF7101896F6F995409EF989502BA /* autohint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = autohint.h; sourceTree = ""; }; - 481B0FB19748AA00058AAB4125E08BF8 /* SDWebImage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.release.xcconfig; sourceTree = ""; }; - 48585412562980D0D4B25991D9CBCDF2 /* txWidestringWrapper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = txWidestringWrapper.h; sourceTree = ""; }; - 485A4F25E48D04C70FE5F69AB8CA4E92 /* RenderTexture.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = RenderTexture.hpp; sourceTree = ""; }; - 486BC9257EA9F392E1D90CC596A28F8E /* NstBoardNamcot175.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardNamcot175.hpp; sourceTree = ""; }; - 487C7DB0A7257F16983BEF8324BEF561 /* NESDeltaCore.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = NESDeltaCore.bundle; path = "NESDeltaCore-NESDeltaCore.bundle"; sourceTree = BUILT_PRODUCTS_DIR; }; - 4882BE90EEF397C5CB150356BABD6589 /* sdd1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = sdd1.h; sourceTree = ""; }; - 4885792B83557D1EEC027BB0F203C247 /* svgldict.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svgldict.h; sourceTree = ""; }; - 4894D3FB33675CE3D668287298DD06EA /* RSTOperationQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTOperationQueue.m; path = Roxas/RSTOperationQueue.m; sourceTree = ""; }; - 48A4A6EDC08C8AC933D0DCD507E9D173 /* libZIPFoundation.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libZIPFoundation.a; path = libZIPFoundation.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 48A7DBA86C0D8564FAED27D377B220EC /* SessionDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDelegate.swift; path = Source/SessionDelegate.swift; sourceTree = ""; }; - 48DD0C01F114EEE16D0CEAF82A837D15 /* NstApiCheats.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiCheats.hpp; sourceTree = ""; }; - 491D48215F2F54CB9D3A315B9995CD71 /* NstBoardKonamiVrc6.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardKonamiVrc6.hpp; sourceTree = ""; }; - 4956246BBBEA8A6AD42BC92B809DD51D /* glsl_CombinerProgramUniformFactory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = glsl_CombinerProgramUniformFactory.h; sourceTree = ""; }; - 496461CDF0EEA20700EA04A0AD896DD0 /* GBCDeltaCore.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GBCDeltaCore.debug.xcconfig; sourceTree = ""; }; - 498BEFABF329CA81DB038DAEE4DA86DB /* GTMSessionFetcherLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionFetcherLogging.h; path = Source/GTMSessionFetcherLogging.h; sourceTree = ""; }; - 49D99B744B7B1A1BEEAC63A74EC018FC /* ThreadImpl.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = ThreadImpl.hpp; sourceTree = ""; }; - 49EB67E2385654A06128B5AF86E06198 /* debugger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = debugger.h; sourceTree = ""; }; - 4A00BB67172A848AF5BB8EC367582905 /* RSTPlaceholderView.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; name = RSTPlaceholderView.xib; path = Roxas/RSTPlaceholderView.xib; sourceTree = ""; }; - 4A6CEB53419EF6042E06B56676D1DAF8 /* DSDeltaCore.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = DSDeltaCore.bundle; path = "DSDeltaCore-DSDeltaCore.bundle"; sourceTree = BUILT_PRODUCTS_DIR; }; - 4A816119B4F74725D1C6ADB8F10B4AC8 /* DSi_NWifi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DSi_NWifi.h; sourceTree = ""; }; - 4A985E790712C4FBE9D43545565A765F /* STTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = STTypes.h; sourceTree = ""; }; - 4AD85E83FD0CC9D3EB4D4FCB8037F091 /* Roxas-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Roxas-umbrella.h"; sourceTree = ""; }; - 4BB4A497541BD689341DCD03FCA3CA38 /* Clock.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Clock.hpp; sourceTree = ""; }; - 4BB6746A6A1D9BA44003CF2F72104128 /* fttrace.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = fttrace.h; sourceTree = ""; }; - 4BBBCBFA40EE49208B031D370878AD29 /* SQLite.swift-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SQLite.swift-dummy.m"; sourceTree = ""; }; - 4BBE3ECEC9F9872D3CDABA361942FC7F /* glsl_Utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = glsl_Utils.h; sourceTree = ""; }; - 4BC067CAFA13189984037CEC34AF2FB1 /* DeltaCore.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DeltaCore.release.xcconfig; sourceTree = ""; }; - 4BE0A770159267F78EB0BE67410B05BE /* GBADeltaCore.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = GBADeltaCore.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 4BF3A8BBCEC6D8B433214DF1CD244933 /* NstBoardCneDecathlon.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardCneDecathlon.hpp; sourceTree = ""; }; - 4C0C01E2CF695B469D1C56006652923F /* NstBoardJalecoSs88006.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardJalecoSs88006.hpp; sourceTree = ""; }; - 4C22C82316853ABB688358B93486CF8E /* libMelonDSDeltaCore.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libMelonDSDeltaCore.a; path = libMelonDSDeltaCore.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 4C2B0EF2438B6A4D26AF5ED81619C0B0 /* NstApiCartridge.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiCartridge.hpp; sourceTree = ""; }; - 4C48CBBB6A97428E4D4CBC314A140585 /* Archive.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Archive.swift; path = Sources/ZIPFoundation/Archive.swift; sourceTree = ""; }; - 4C6751C1E3ED18714B1C75FC69A15785 /* NstBoardNihon.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardNihon.hpp; sourceTree = ""; }; - 4C6B9BE868EA37768F174927D00C38BB /* registers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = registers.h; sourceTree = ""; }; - 4C80ED7AACB70B3A24D156BAD539073C /* TcpSocket.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = TcpSocket.hpp; sourceTree = ""; }; - 4C832C9A82654DA76719E0AB5ED13D8E /* Alamofire-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-prefix.pch"; sourceTree = ""; }; - 4C83AE5EE2805FEBB085D004779A6672 /* Err.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Err.hpp; sourceTree = ""; }; - 4CA5583ED66F123D9936860E31100A9D /* RTC.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RTC.h; sourceTree = ""; }; - 4CA9E659D1B7B7728E262433D17D11DC /* Mutex.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Mutex.hpp; sourceTree = ""; }; - 4CAD2DA398BD46993458E28459856C65 /* PlatformConfig.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformConfig.cpp; sourceTree = ""; }; - 4CB7FC1BCCB48A79D26DDA5099AB7393 /* GTLRDrive.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDrive.h; path = Source/GeneratedServices/Drive/GTLRDrive.h; sourceTree = ""; }; - 4CBFEACE2F6510E0AC190F950DC15702 /* GTMReadMonitorInputStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMReadMonitorInputStream.m; path = Source/GTMReadMonitorInputStream.m; sourceTree = ""; }; - 4CDE7591635439F04D25CB09FFCE239A /* NSManagedObject+Conveniences.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "NSManagedObject+Conveniences.swift"; sourceTree = ""; }; - 4CE6F51BC66DB2E3015550E3FB2B453D /* controls.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = controls.h; sourceTree = ""; }; - 4CE7A665B6FEEE6CB7D5AF994E4687CD /* InputSoundFile.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = InputSoundFile.hpp; sourceTree = ""; }; - 4CFCF1DB3C261E9BFAB2C58E1EF33E65 /* ftoutln.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftoutln.h; sourceTree = ""; }; - 4D0F7001B895CE5DC852EF08B9A72594 /* RSTToastView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTToastView.m; path = Roxas/RSTToastView.m; sourceTree = ""; }; - 4D1729EA5F00D4A1D4318B501343CA4A /* TextureFilters_hq2x.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TextureFilters_hq2x.cpp; sourceTree = ""; }; - 4D1FA0EBBF5F6CF83EED39B0A6232946 /* NstSoundRenderer.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstSoundRenderer.hpp; sourceTree = ""; }; - 4D1FFAF53C44FFA11AC01AACBF26DE9B /* NstInpPokkunMoguraa.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpPokkunMoguraa.hpp; sourceTree = ""; }; - 4D480F6ED4062D534F79485C9C8C741A /* SessionManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionManager.swift; path = Source/SessionManager.swift; sourceTree = ""; }; - 4D49B524E10D67094A1B3F467E42C56F /* UserDefaults+Harmony.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UserDefaults+Harmony.swift"; sourceTree = ""; }; - 4D504D25811EFE16E14FCE0763D758F7 /* NstBoardBandaiKaraokeStudio.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBandaiKaraokeStudio.hpp; sourceTree = ""; }; - 4D53470E41BA15EE30530C3840BE8FCE /* GBALink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBALink.h; sourceTree = ""; }; - 4D7CA6BBD3A7CE421859CF75E8BBFBC7 /* NstNsf.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstNsf.hpp; sourceTree = ""; }; - 4D803FA2CC59F06C610F12C7FE0AF5C6 /* snes9x.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = snes9x.h; sourceTree = ""; }; - 4D8916F809917C9FF65ECB1F790C1B4C /* ARMJIT_Compiler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARMJIT_Compiler.h; sourceTree = ""; }; - 4DC8C2032362A67FFC8D61332A8A5102 /* NstBase.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBase.hpp; sourceTree = ""; }; - 4DFFB1E8202B4205DB65C0986BE9DE17 /* mic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = mic.h; sourceTree = ""; }; - 4E1DE9F1DDEDBEE5D971B5D9F255C9D7 /* DSi_AES.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DSi_AES.cpp; sourceTree = ""; }; - 4E43C59A5B93F18A57BAB4238BB9EB74 /* TxHiResCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TxHiResCache.h; sourceTree = ""; }; - 4EB03D7F307B30D54D56BB45569E0F91 /* NSConstraintConflict+Conveniences.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSConstraintConflict+Conveniences.m"; path = "Roxas/NSConstraintConflict+Conveniences.m"; sourceTree = ""; }; - 4ED50A9D084C1B30671775C625A024C9 /* GLideN64_mupenplus.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GLideN64_mupenplus.h; sourceTree = ""; }; - 4EE8E7F1C3909E4079692F784A1BEC6B /* F5Rogue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F5Rogue.h; sourceTree = ""; }; - 4F005622B9BC67B664A26431CCCC72A4 /* rtc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = rtc.h; sourceTree = ""; }; - 4F56F120D08F0E96F69A395392A95956 /* NstBoardSomeriTeamSl12.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSomeriTeamSl12.hpp; sourceTree = ""; }; - 4F6CBBBE0FC5A1BB0CEFDE577C32F89D /* ConvexShape.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = ConvexShape.hpp; sourceTree = ""; }; - 4F72DFF72A7603776855C1953DA931FE /* SDL_opengl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SDL_opengl.h; sourceTree = ""; }; + 45C6535D41D319C5D33F481A8D50F760 /* Base.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Base.swift; path = Source/SwiftyDropbox/Shared/Generated/Base.swift; sourceTree = ""; }; + 45DFDB7A1A2A362862480B1832FA055C /* RemoteFile+Dropbox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RemoteFile+Dropbox.swift"; sourceTree = ""; }; + 467C63094078513311E3A036679DB046 /* Collation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Collation.swift; path = Sources/SQLite/Typed/Collation.swift; sourceTree = ""; }; + 47BB770EC52793E6D64F4EC7A03B206B /* RSTLoadOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTLoadOperation.m; path = Roxas/RSTLoadOperation.m; sourceTree = ""; }; + 4822BB758BBE41E64BE422EA089585C2 /* GTMReadMonitorInputStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMReadMonitorInputStream.h; path = Source/GTMReadMonitorInputStream.h; sourceTree = ""; }; + 4987017F0B6FF9A772765AD621009DE1 /* Fabric.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Fabric.release.xcconfig; sourceTree = ""; }; + 4A992173756B082143E3F3D99D31FE8A /* ConflictRecordOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ConflictRecordOperation.swift; sourceTree = ""; }; + 4AB4D9CCF9277B0AAD20AF4BCBDCC7E8 /* StoneSerializers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StoneSerializers.swift; path = Source/SwiftyDropbox/Shared/Generated/StoneSerializers.swift; sourceTree = ""; }; + 4CD0E20BB338DC7A5D9B5A7B4135F2C3 /* JSONDecoder+ManagedObjectContext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "JSONDecoder+ManagedObjectContext.swift"; sourceTree = ""; }; + 4D5314EB9184C09220720983913CFDCE /* GTLRRuntimeCommon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRRuntimeCommon.h; path = Source/Objects/GTLRRuntimeCommon.h; sourceTree = ""; }; + 4D6EF79D3CEDF22176E037E94AF82A40 /* SDWebImage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.debug.xcconfig; sourceTree = ""; }; + 4DFADDC6F34642773FC6D98814359205 /* UIViewController+TransitionState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+TransitionState.h"; path = "Roxas/UIViewController+TransitionState.h"; sourceTree = ""; }; + 4E4B8BAE36970525F2C28726D9295208 /* SharingRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SharingRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/SharingRoutes.swift; sourceTree = ""; }; + 4E9718BC8CC41735731EFA5AE4C887C6 /* BatchRecordOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BatchRecordOperation.swift; sourceTree = ""; }; + 4F16B9AC0801DFA17A61396AF203B6FC /* GoogleToolboxForMac-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleToolboxForMac-prefix.pch"; sourceTree = ""; }; 4F8D603EBE941AC871B0A2F47AD5B6D5 /* Pods-Delta-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Delta-dummy.m"; sourceTree = ""; }; - 4FB4BB99FC8FCE6E7BDCD8CFD99B1318 /* readwrite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = readwrite.h; sourceTree = ""; }; - 4FCE6CDCA42B06EE0F325B6800001633 /* DropboxService+Records.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DropboxService+Records.swift"; path = "Backends/Dropbox/Harmony-Dropbox/DropboxService+Records.swift"; sourceTree = ""; }; - 4FDE830520F0426AC88848116BF92100 /* ARMInterpreter_LoadStore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARMInterpreter_LoadStore.h; sourceTree = ""; }; - 501510C0AB0C2749A39F8FE21E2FDE4E /* GTLRDriveQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRDriveQuery.m; path = Source/GeneratedServices/Drive/GTLRDriveQuery.m; sourceTree = ""; }; - 5020C256BF6AA1E14A6F7333CC1DF504 /* mem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = mem.h; sourceTree = ""; }; - 5049D42D1B896DD8D53F865547592C6E /* Keys.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Keys.cpp; sourceTree = ""; }; - 507409135C074E27C66E7015AD354962 /* rom.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = rom.h; sourceTree = ""; }; - 50AB12044ABB6573A85B1B594DFD3566 /* ANSCompatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ANSCompatibility.h; path = iOS/Crashlytics.framework/Headers/ANSCompatibility.h; sourceTree = ""; }; - 50AE80DCB539B14771E2023FB4C50510 /* SoundStream.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = SoundStream.hpp; sourceTree = ""; }; - 50C989534A624B388AF2E96D829DAB47 /* ARMInterpreter_LoadStore.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ARMInterpreter_LoadStore.cpp; sourceTree = ""; }; - 50F439CC928E176156E57AA87FE696E1 /* Thread.inl */ = {isa = PBXFileReference; includeInIndex = 1; path = Thread.inl; sourceTree = ""; }; - 51207E9A3C7454213B51E256308C8CBB /* RecordOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RecordOperation.swift; sourceTree = ""; }; - 51330273926D351DE423DA0A6912700D /* ConfigManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ConfigManager.h; sourceTree = ""; }; - 517772731C85405CED9A4E125D581547 /* NstBoardBtlT230.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBtlT230.hpp; sourceTree = ""; }; - 517EE6F5463DA943A8AC65590C5ACEA9 /* F3DDKR.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F3DDKR.cpp; sourceTree = ""; }; - 518DB5C5187A3B396F541FAA09FAC646 /* NstApiEmulator.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiEmulator.hpp; sourceTree = ""; }; - 51CD45974E7379356760ED0390E5B807 /* RSTNavigationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTNavigationController.m; path = Roxas/RSTNavigationController.m; sourceTree = ""; }; - 5209BE954A7C39272EDD3AEE95066684 /* SMCalloutView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SMCalloutView-umbrella.h"; sourceTree = ""; }; - 520D9B2D1F6739C099B2819925297F07 /* SDWebImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageManager.m; path = SDWebImage/SDWebImageManager.m; sourceTree = ""; }; - 52146E42B2E7458AB8F550EAAB719074 /* FileRequestsRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FileRequestsRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/FileRequestsRoutes.swift; sourceTree = ""; }; - 5220D87AAC76334A81776593C96297A3 /* CharacterSet+Hexadecimals.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "CharacterSet+Hexadecimals.swift"; sourceTree = ""; }; - 5224985FFC1BAE799009B16684F7FA41 /* EmulatorCore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = EmulatorCore.swift; sourceTree = ""; }; - 522E10247FC8ACD4BE627867F65F14EE /* NstInpPachinko.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpPachinko.hpp; sourceTree = ""; }; - 523D1A14AEA90148F5FADE454AF67298 /* glsl_CombinerProgramImpl.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_CombinerProgramImpl.cpp; sourceTree = ""; }; - 523F0E989B05847985E89FFE04B20FF3 /* Input.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Input.swift; sourceTree = ""; }; - 5259B445D4AD112126EABD5D05F3DDA0 /* ftsnames.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftsnames.h; sourceTree = ""; }; - 526503C9D0166487853FEE7E30181783 /* ExtensibleEnums.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ExtensibleEnums.swift; sourceTree = ""; }; - 526F4329EA81C96890ED9ECE2F8C7681 /* Turbo3D.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Turbo3D.cpp; sourceTree = ""; }; - 527B0D212D04816961FAE82E46B743AF /* N64DeltaCore.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = N64DeltaCore.release.xcconfig; sourceTree = ""; }; - 52ADDAAB32E3E424FF10779C91A60F3B /* DepthBufferToRDRAM.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DepthBufferToRDRAM.cpp; sourceTree = ""; }; - 52B8EEAB10DB9698731B5793936A672F /* RemoteFile+File.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RemoteFile+File.swift"; sourceTree = ""; }; - 52CF76E5585ABDA5470FFD47A7A884C3 /* convert.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = convert.cpp; sourceTree = ""; }; - 52D9BC065E6BB7A0B1FEB69CEBBF570F /* ExternalGameControllerManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ExternalGameControllerManager.swift; sourceTree = ""; }; - 5305479BCD5C09A431DF19FBA089DFBC /* NstBoardCneShlz.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardCneShlz.hpp; sourceTree = ""; }; - 530AF83C27378A750E91268E5BC0BB92 /* NstFds.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstFds.hpp; sourceTree = ""; }; - 530DFDEF529BB6EF5B319101803D204C /* N64DeltaCore.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = N64DeltaCore.debug.xcconfig; sourceTree = ""; }; - 5319520781E4552200187ABF1B7EF34E /* NstIoLine.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstIoLine.hpp; sourceTree = ""; }; - 532679A78BA807A935E918B3242DAE24 /* movie.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = movie.h; sourceTree = ""; }; - 532D7ED0B8685A85D6778DA70F40CCE4 /* RSTDynamicDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTDynamicDataSource.m; path = Roxas/RSTDynamicDataSource.m; sourceTree = ""; }; - 5332718FF5ADABA45AB6CDD9477B7DCD /* F3DGOLDEN.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F3DGOLDEN.cpp; sourceTree = ""; }; - 5372B3163E9573C6D5D374AB075EDCEF /* CombinerProgram.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = CombinerProgram.cpp; sourceTree = ""; }; - 538E8E8B075647A2A73DB019D234F843 /* S2DEX2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = S2DEX2.h; sourceTree = ""; }; + 50C5B9AA89857E20671F13F6A5717299 /* Alamofire-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-umbrella.h"; sourceTree = ""; }; + 514A7039E91889B99572BDC6A5C18356 /* NSString+Localization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+Localization.h"; path = "Roxas/NSString+Localization.h"; sourceTree = ""; }; + 527E89C27D4189749BDAD24EECCD32FC /* SDKConstants.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SDKConstants.swift; path = Source/SwiftyDropbox/Shared/Handwritten/SDKConstants.swift; sourceTree = ""; }; + 52C44BE7B3E49A07B14A7C3FA8470C56 /* UIKit+ActivityIndicating.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIKit+ActivityIndicating.m"; path = "Roxas/UIKit+ActivityIndicating.m"; sourceTree = ""; }; + 533E2FA1D163737F1075C3ED7A38D5CF /* Files.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Files.swift; path = Source/SwiftyDropbox/Shared/Generated/Files.swift; sourceTree = ""; }; 53A730F4F4248E7E3F38F8409A2DE97C /* libSMCalloutView.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libSMCalloutView.a; path = libSMCalloutView.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 53F1A383C57959E32F4DB5969BEEAF76 /* DSDeltaCore.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = DSDeltaCore.modulemap; sourceTree = ""; }; - 53F2B0E17BC3AC9D7A5FE0A938140BC3 /* GameControllerInputMappingProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GameControllerInputMappingProtocol.swift; sourceTree = ""; }; - 53F89D9483D4FCD9B6AD70C3BABD0A32 /* DSiCrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DSiCrypto.h; sourceTree = ""; }; - 5402C01EEBC4DB22397AB4C3607A3DD3 /* NstBoardBmcFamily4646B.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcFamily4646B.hpp; sourceTree = ""; }; - 540AD95463DB65E077F08253A77C4865 /* GoogleToolboxForMac.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleToolboxForMac.release.xcconfig; sourceTree = ""; }; - 54528B8321960A24E37B5ACDBBC4E842 /* ControllerSkin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ControllerSkin.swift; sourceTree = ""; }; - 54670F461677A40B2E94824A5C998AE8 /* Thread.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Thread.hpp; sourceTree = ""; }; - 54689C99B915B2658F5E3CDDF391C225 /* Platform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Platform.h; sourceTree = ""; }; - 547037D8AE9D3557DBC6FCF5EEB2515A /* resource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = resource.h; sourceTree = ""; }; - 54756783282D97BCFC98529F64C6C44C /* inputgetter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = inputgetter.h; sourceTree = ""; }; - 547D76089FF424DC84616A35ACD84FF0 /* psaux.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = psaux.h; sourceTree = ""; }; - 54883D2F73AE4EE2DE2C218D4A5DB739 /* SNESTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SNESTypes.h; sourceTree = ""; }; - 54C6E1198BF287B9429793065F9DE54B /* png.c */ = {isa = PBXFileReference; includeInIndex = 1; path = png.c; sourceTree = ""; }; - 54D876A40A6A7E60C31B36425AE20C82 /* NstBoardFukutake.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardFukutake.hpp; sourceTree = ""; }; - 54ECA01A22C32DC89AB39DF9BFFD5FB6 /* DeltaCore.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = DeltaCore.bundle; path = "DeltaCore-DeltaCore.bundle"; sourceTree = BUILT_PRODUCTS_DIR; }; - 5511EA930503B498E2FDCA7FE9E5C746 /* VideoRendering.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = VideoRendering.swift; sourceTree = ""; }; - 551B991A9910D6231DE6094D5CD3843A /* ManagedRecord+Predicates.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "ManagedRecord+Predicates.swift"; sourceTree = ""; }; - 551F767B133FD2219158C4BD484F80BC /* GTMSessionFetcherService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionFetcherService.m; path = Source/GTMSessionFetcherService.m; sourceTree = ""; }; - 552496FA7E1F325B9859522705BE8C3B /* NstBoardMagicSeries.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardMagicSeries.hpp; sourceTree = ""; }; - 5531385FC1EFB70FA1BA791251AACDF5 /* GBAEmulatorBridge.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = GBAEmulatorBridge.mm; sourceTree = ""; }; - 5533E0BAB4A8B8C7A82F115001CBBFCA /* iniparser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = iniparser.h; sourceTree = ""; }; - 553931D6CFC09E8F76B87ACF1E671321 /* Fabric.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Fabric.release.xcconfig; sourceTree = ""; }; - 558D9D4AF4FD877E9D9E664114B314BD /* NstVector.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstVector.hpp; sourceTree = ""; }; - 559D85DC3375B82B2C7252ADFA8534A9 /* NstBoardBmcBallgames11in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcBallgames11in1.hpp; sourceTree = ""; }; - 55EA6B0BBE6DAB6FF866AED1005E8999 /* slot2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = slot2.h; sourceTree = ""; }; - 562759128EB09E82B9ECE5D393FD8A80 /* memalign.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = memalign.h; sourceTree = ""; }; - 5642A014AB6854D5C0608BAEF6A00401 /* Music.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Music.hpp; sourceTree = ""; }; - 56472B809613E73F5088D9AD78569F17 /* Roxas.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Roxas.h; path = Roxas/Roxas.h; sourceTree = ""; }; - 56588EA7D5FBE2DA4FBDE668B0CE31D0 /* Listener.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Listener.hpp; sourceTree = ""; }; - 568598CD538601D8444402BA45158972 /* NstInpCrazyClimber.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpCrazyClimber.hpp; sourceTree = ""; }; - 5688AC534E934DF9CFDBC41CCDCC2B07 /* JSONDecoder+ManagedObjectContext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "JSONDecoder+ManagedObjectContext.swift"; sourceTree = ""; }; - 568A2546CA38DCB268734B2B99202A99 /* opengl_CachedFunctions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = opengl_CachedFunctions.h; sourceTree = ""; }; - 568BC6B386F0E084601CBF273D6953BA /* UIImage+MultiFormat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MultiFormat.h"; path = "SDWebImage/UIImage+MultiFormat.h"; sourceTree = ""; }; - 568F36EBFBBE28420448B604FDBFEE24 /* gSP.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = gSP.h; sourceTree = ""; }; - 56994A64B20CCE99B153081DAFA29660 /* NSBundle+Extensions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBundle+Extensions.m"; path = "Roxas/NSBundle+Extensions.m"; sourceTree = ""; }; - 56C4158DD79B8800FDBEF6D1FD40BEBE /* GTMReadMonitorInputStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMReadMonitorInputStream.h; path = Source/GTMReadMonitorInputStream.h; sourceTree = ""; }; - 56D000E50D07021FF07AAC165778A791 /* NstVideoFilterNtsc.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstVideoFilterNtsc.hpp; sourceTree = ""; }; - 56FF2E7B30B92666AFC8210CC7DF0098 /* Operation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Operation.swift; sourceTree = ""; }; - 5705E41354AA6B3ECEF15EF9280D870C /* glcorearb.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = glcorearb.h; sourceTree = ""; }; - 570B8665DEC55171C47D8724F8B931AA /* GBADeltaCore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GBADeltaCore-dummy.m"; sourceTree = ""; }; - 57142BF28E3E1A201DA08502346590D0 /* NstCartridge.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstCartridge.hpp; sourceTree = ""; }; - 571EC049651D9B776F745DC16B28D706 /* F5Rogue.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F5Rogue.cpp; sourceTree = ""; }; - 573983B379A6F917F1D0E630D5F87BC0 /* GTMDebugSelectorValidation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMDebugSelectorValidation.h; path = DebugUtils/GTMDebugSelectorValidation.h; sourceTree = ""; }; - 577979F3FAA02788C1868C7CBE2CDB85 /* ring_buffer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ring_buffer.h; sourceTree = ""; }; - 578CFF4C7810495DFD481CD17F1C31C2 /* sdd1emu.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = sdd1emu.h; sourceTree = ""; }; - 578ED2874A72D2771139C6E86515B236 /* SocketSelector.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = SocketSelector.hpp; sourceTree = ""; }; - 57981339AD97798C2EE622F6A4E6AE22 /* F3DFLX2.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F3DFLX2.cpp; sourceTree = ""; }; - 57AE215B9677AF8BE68A3EEDA7D902AD /* ftlzw.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftlzw.h; sourceTree = ""; }; - 57B181D60AC201D8FEBD7C8BE993EEDD /* GTMSessionFetcher-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GTMSessionFetcher-prefix.pch"; sourceTree = ""; }; - 57B34424210B5C2631F01A486C9351BB /* Alamofire.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Alamofire.modulemap; sourceTree = ""; }; - 57C2AF90F5D25906D579D1BD54E1894D /* bios.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = bios.h; sourceTree = ""; }; - 57C9A208489979480CC1B74420A1477C /* mempak.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = mempak.h; sourceTree = ""; }; - 57CE43337560DB685A64E57DC336CFCA /* TextureFilters_hq2x.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TextureFilters_hq2x.h; sourceTree = ""; }; - 57DDB20834166ED732D5AE074578B519 /* memory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = memory.h; sourceTree = ""; }; - 57FC8B13E87BE34997D550F1ABDDF530 /* ResourceBundle-GBCDeltaCore-GBCDeltaCore-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-GBCDeltaCore-GBCDeltaCore-Info.plist"; sourceTree = ""; }; - 581A65FCD0F46B12750D1A97347AB2B5 /* RSTNibView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTNibView.h; path = Roxas/RSTNibView.h; sourceTree = ""; }; - 584986A5CC4D03A1266EEF01E564FCB4 /* glsl_CombinerProgramBuilder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = glsl_CombinerProgramBuilder.h; sourceTree = ""; }; - 586B03C24E0DFB57820EDB31B86EFDC1 /* Blob.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Blob.swift; path = Sources/SQLite/Core/Blob.swift; sourceTree = ""; }; - 587876311AB9A43EF1E3013A16FA8F9C /* insertion_sort.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = insertion_sort.h; sourceTree = ""; }; - 58B84D2927A477768BA7A22EB43B0A83 /* GTLRFramework.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRFramework.m; path = Source/Utilities/GTLRFramework.m; sourceTree = ""; }; - 58F784152DF099B1A4B2C9C883708880 /* retro_endianness.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = retro_endianness.h; sourceTree = ""; }; - 5918E695FD4E4ACB917EEEB1508D285D /* NstBoardAe.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardAe.hpp; sourceTree = ""; }; - 594730077EE56666BFA076748A7727BF /* opengl_BufferManipulationObjectFactory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = opengl_BufferManipulationObjectFactory.h; sourceTree = ""; }; - 594F0432C6D677F2914EF89B34E3BA62 /* svkern.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svkern.h; sourceTree = ""; }; - 5956E4E49828D43A7B5542CF1E5B4707 /* Debugger.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Debugger.cpp; sourceTree = ""; }; - 5963EF23BB4D8842315DE6AAA0E21625 /* ARCodeFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARCodeFile.h; sourceTree = ""; }; - 59688EC1AF84F9F5BFD059FAF099E547 /* ARM_InstrInfo.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ARM_InstrInfo.cpp; sourceTree = ""; }; - 598055BE88FB8053259FAF21F5B8BAD1 /* SMCalloutView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SMCalloutView.debug.xcconfig; sourceTree = ""; }; - 599A968786BB3CEF39D154E679D99110 /* Validation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Validation.swift; path = Source/Validation.swift; sourceTree = ""; }; - 59AF7DF04CB48EA607FA8D40E439C999 /* TexrectDrawer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TexrectDrawer.cpp; sourceTree = ""; }; - 59B129A50A11DD8DA172A571557AC9EE /* transferpak.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = transferpak.h; sourceTree = ""; }; - 59D02EBAC62E4ADEF5A49D60E9C42AEB /* armcpu.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = armcpu.h; sourceTree = ""; }; - 5A0A83DB759E9397D1C0559D05F620AF /* ParameterEncoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ParameterEncoding.swift; path = Source/ParameterEncoding.swift; sourceTree = ""; }; - 5A617EF2F76A9BA5753AEDEAD7937E43 /* xxhash.c */ = {isa = PBXFileReference; includeInIndex = 1; path = xxhash.c; sourceTree = ""; }; - 5A644A5B4BD538209D5C42F09565D52C /* ZIPFoundation.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ZIPFoundation.debug.xcconfig; sourceTree = ""; }; - 5A649205CAC73CCB700EBD96CACB950C /* NstBoardJaleco.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardJaleco.hpp; sourceTree = ""; }; - 5AAF27B93CC50C84527A4CDC44DFBE0F /* Shape.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Shape.hpp; sourceTree = ""; }; - 5AB2076B345EF471110CA2A7FA91562E /* SQLite.swift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SQLite.swift.release.xcconfig; sourceTree = ""; }; - 5AE46C1188FFBFEE4C46B521C3217396 /* pnginfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pnginfo.h; sourceTree = ""; }; - 5B075DE0CD80E2D791EEF3247B941988 /* glsl_ShaderPart.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = glsl_ShaderPart.h; sourceTree = ""; }; - 5B4979E3A36561CF460398CE358B49DD /* F3DSETA.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F3DSETA.h; sourceTree = ""; }; - 5B6780C53289B9AF9A0CB8BAE83F80FF /* cpuexec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = cpuexec.h; sourceTree = ""; }; - 5B6C58DBDB290E47F12CC1074D395C26 /* F3DAM.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F3DAM.h; sourceTree = ""; }; - 5BAC4820CB7E84EEF39B9060D0DCC6AD /* NSPersistentStore+Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "NSPersistentStore+Configuration.swift"; sourceTree = ""; }; - 5BB543A3A71829396B263558ABAE1D3B /* main.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = main.h; sourceTree = ""; }; - 5BC872B7044AA807CA7EBB604D434866 /* SaveState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SaveState.swift; sourceTree = ""; }; - 5C04A35FFE570B909C8AD5A9DB8AF26B /* RSTConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTConstants.h; path = Roxas/RSTConstants.h; sourceTree = ""; }; - 5C0C33A889F868B983A26B0049957E27 /* NstBoardBmcPowerjoy84in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcPowerjoy84in1.hpp; sourceTree = ""; }; - 5C15A4C716F94FC120B8A44EE878A850 /* m64282fp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64282fp.h; sourceTree = ""; }; - 5C1680E5AB2930ABB461E4B02FA12370 /* Combiner.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Combiner.cpp; sourceTree = ""; }; - 5C3725C3F73FD7EF6A253CD24F77B45D /* pngwtran.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pngwtran.c; sourceTree = ""; }; - 5C3F7D8CB2B7777AFFE1AD102BE934F1 /* RDRAMtoColorBuffer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = RDRAMtoColorBuffer.cpp; sourceTree = ""; }; - 5C48FF19B66C43CC61264FDFDA92A9B1 /* N64Types.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = N64Types.m; sourceTree = ""; }; - 5CCF0F50976DE33EBB7327D6CE071A1A /* ZIPFoundation.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ZIPFoundation.release.xcconfig; sourceTree = ""; }; - 5CED691600B7BB63850F3BE0D44DA891 /* logger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = logger.h; sourceTree = ""; }; - 5D042F73BB66CA682FF5DD25BC25323C /* SDWebImage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.debug.xcconfig; sourceTree = ""; }; - 5D3DB505EE3BB0C241AB85077A2942D7 /* Vector2.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Vector2.hpp; sourceTree = ""; }; - 5D57A60C924E146594EED858F1420616 /* NstBoardBtlSmb3.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBtlSmb3.hpp; sourceTree = ""; }; + 55BF7CA893445A871DECBB9C564A9A9C /* LocalRecord.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LocalRecord.swift; sourceTree = ""; }; + 55D9EA5E839848FDCCD51E9C9EC6015A /* HarmonyMetadataKey+Keys.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "HarmonyMetadataKey+Keys.swift"; sourceTree = ""; }; + 563FDE54145A22888CAFD77A857389B1 /* NSData+ImageContentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+ImageContentType.m"; path = "SDWebImage/NSData+ImageContentType.m"; sourceTree = ""; }; + 575CB1AB9032ECD41F06D203C4E64B0E /* DriveService+Versions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DriveService+Versions.swift"; path = "Backends/Drive/Harmony-Drive/DriveService+Versions.swift"; sourceTree = ""; }; + 57B10A5E7CD0D0BE440B250F11B2BBAB /* Roxas.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Roxas.modulemap; sourceTree = ""; }; + 58EEEED1C715D914278ED0DBB32F3829 /* GTLRDrive.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDrive.h; path = Source/GeneratedServices/Drive/GTLRDrive.h; sourceTree = ""; }; + 5912D32B0858F53EFA8326868F9C6376 /* GTLRDuration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDuration.h; path = Source/Objects/GTLRDuration.h; sourceTree = ""; }; + 593435A0CD2605934645CDA04568CA26 /* RSTCellContentChangeOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCellContentChangeOperation.h; path = Roxas/RSTCellContentChangeOperation.h; sourceTree = ""; }; + 59626F7798BEF3B2E0BA66EE0728F49E /* RSTSearchController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTSearchController.m; path = Roxas/RSTSearchController.m; sourceTree = ""; }; + 5A38B17016D4FE44653121F0230F5529 /* UICollectionViewCell+CellContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UICollectionViewCell+CellContent.m"; path = "Roxas/UICollectionViewCell+CellContent.m"; sourceTree = ""; }; + 5BABD2E6B672E5887AD123221C23427C /* Users.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Users.swift; path = Source/SwiftyDropbox/Shared/Generated/Users.swift; sourceTree = ""; }; + 5BB937F65EB3918CE1BB8B3B3B84D185 /* Crashlytics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Crashlytics.h; path = iOS/Crashlytics.framework/Headers/Crashlytics.h; sourceTree = ""; }; + 5CB806CF4B5F9F987FA06DB399CBF2CB /* SwiftyDropbox-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyDropbox-prefix.pch"; sourceTree = ""; }; + 5CF5B360D328C8B35503CA26B4FFAFE3 /* Fabric.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Fabric.debug.xcconfig; sourceTree = ""; }; 5D797E9A5C5782CE845840781FA1CC81 /* libAlamofire.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libAlamofire.a; path = libAlamofire.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 5D8D98D7B531E3E46BB6AE4A6C935FAA /* Image.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Image.hpp; sourceTree = ""; }; - 5D987D9D0A8C1E3B17BBF8CFE400C26F /* pngtrans.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pngtrans.c; sourceTree = ""; }; - 5DAC4F6C655170F1792945609E111C63 /* Types.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Types.h; sourceTree = ""; }; - 5DC7742AD8CD0CF5DD664E882BAE856B /* Roxas-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Roxas-dummy.m"; sourceTree = ""; }; - 5DD7DBBB3619EE9EEDB725158C211C8C /* GTLRDriveObjects.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRDriveObjects.m; path = Source/GeneratedServices/Drive/GTLRDriveObjects.m; sourceTree = ""; }; - 5DF031ED2E064E1AC6802B1154B81D64 /* TxHiResCache.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TxHiResCache.cpp; sourceTree = ""; }; - 5E068EE6E9B5BA6765CAC8C1DBA5E090 /* SndOut.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SndOut.h; sourceTree = ""; }; - 5E1362D6590872B3446A7C9C52AC059F /* CheatProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CheatProtocol.swift; sourceTree = ""; }; - 5E454B0889C6F765CDE3DB450589EE1C /* minkeeper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = minkeeper.h; sourceTree = ""; }; - 5EBCBF05A13053079CD97F27B623EABF /* UIImage+Manipulation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Manipulation.m"; path = "Roxas/UIImage+Manipulation.m"; sourceTree = ""; }; - 5EF06F8F27ABEC737DD25CCD173676AF /* GoogleToolboxForMac-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleToolboxForMac-umbrella.h"; sourceTree = ""; }; - 5EF0D93844E56CDB9DAD64F21F90D278 /* F5Indi_Naboo.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F5Indi_Naboo.cpp; sourceTree = ""; }; - 5F019E08B9D1DD9B75519A4FCC245881 /* snapshot.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = snapshot.h; sourceTree = ""; }; - 5F44618E11608446BE1A156B606343A8 /* SaveStateProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SaveStateProtocol.swift; sourceTree = ""; }; - 5F5B4DF63E5FFCA2F6CE8D450D8820AF /* alist_nead.c */ = {isa = PBXFileReference; includeInIndex = 1; path = alist_nead.c; sourceTree = ""; }; - 5FC0750A805444A39AFBA65B400EF63D /* NstBoardBmc8157.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc8157.hpp; sourceTree = ""; }; - 5FD11B56A547151D7998EE69BE6D6099 /* NstSha1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstSha1.hpp; sourceTree = ""; }; - 5FE476B8ACDA398F2FA021447217349D /* FileInputStream.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = FileInputStream.hpp; sourceTree = ""; }; - 5FFAA11B975ADF2D653B7E7145581C16 /* AlResource.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = AlResource.hpp; sourceTree = ""; }; - 602A09D764BF391459201D3C894EE108 /* Archive+Reading.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+Reading.swift"; path = "Sources/ZIPFoundation/Archive+Reading.swift"; sourceTree = ""; }; - 602E22953C1047191A4952E0E7D831F7 /* ColorBufferToRDRAM.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ColorBufferToRDRAM.h; sourceTree = ""; }; - 602F93ECC989A3FB6D04031D00DE62E5 /* SDWebImagePrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImagePrefetcher.m; path = SDWebImage/SDWebImagePrefetcher.m; sourceTree = ""; }; - 6049064554B6F5ECC817A62AF2817D4E /* NstBoardUnlCc21.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardUnlCc21.hpp; sourceTree = ""; }; - 60815A565ED55CD68EB1B67F9D360CFF /* UIButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+WebCache.m"; path = "SDWebImage/UIButton+WebCache.m"; sourceTree = ""; }; - 608A5557EE5C1ABACC1B811CC16319EA /* NstBoardSunsoft.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSunsoft.hpp; sourceTree = ""; }; - 60BCF18DF0AD25DE5763BD1EB88F9DCA /* NESDeltaCore.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = NESDeltaCore.modulemap; sourceTree = ""; }; - 60EB3614E3542E46227BEDDBFB4808BE /* ftmemory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftmemory.h; sourceTree = ""; }; - 60EC1FFA54B3CB9610A26D47F7FABB34 /* NstBoardKayH2288.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardKayH2288.hpp; sourceTree = ""; }; - 60F325456B3141F39FABAA72D38826A9 /* NstBoardMmc3.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardMmc3.hpp; sourceTree = ""; }; - 611D6252349AD28AC0199F62077C7B57 /* Sound.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Sound.h; sourceTree = ""; }; - 6197473267332EA94817882913954E6B /* NstDipSwitches.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstDipSwitches.hpp; sourceTree = ""; }; - 61B20BEC2E96819BBA770F85AEF1F731 /* dma.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = dma.h; sourceTree = ""; }; - 61D84B9A9E573FA8C296E6692CA599DA /* crypt.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = crypt.h; sourceTree = ""; }; - 61EB5BCD79F4DCE7238642BC44E6D1BE /* recomp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = recomp.h; sourceTree = ""; }; - 61ED4053EA35D4EEFE0F4F1201CAB911 /* txWidestringWrapper.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = txWidestringWrapper.cpp; sourceTree = ""; }; - 61EE3CF1533FE896277A8399AB5697AE /* DispatchQueue+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Alamofire.swift"; path = "Source/DispatchQueue+Alamofire.swift"; sourceTree = ""; }; - 6200787FB3973D69521DD9BA7B3E09D1 /* ServiceOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ServiceOperation.swift; sourceTree = ""; }; - 622C39AE31FBB34625FBFCF26A80CD07 /* GTMMethodCheck.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMMethodCheck.h; path = DebugUtils/GTMMethodCheck.h; sourceTree = ""; }; - 622E5F8984D2433536E5431EA4AED70A /* System.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = System.h; sourceTree = ""; }; - 6285F7319217715F0E3DA364BB1818DA /* NstApiMovie.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiMovie.hpp; sourceTree = ""; }; - 62948D9125AC2952787D5A61ACFECA41 /* N64DeltaCore.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = N64DeltaCore.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 629F6A26E346FCCB87CF068FC152224D /* GTMDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GTMDefines.h; sourceTree = ""; }; - 62B2D0722AA443F0E94D3013076DE1D7 /* ringbuffer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ringbuffer.h; sourceTree = ""; }; - 62DD79380FB82BE3E640F5E37A033D2A /* version.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = ""; }; - 62E7F9741F9B8BABE8B88494215167D3 /* memmap.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = memmap.h; sourceTree = ""; }; - 630E76E9982F336E68492B3A4E807B1B /* FrameBufferInfo.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = FrameBufferInfo.cpp; sourceTree = ""; }; - 633DEC5FA3A9C9A21BFDA859C021697A /* NstBoardBmcVrc4.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcVrc4.hpp; sourceTree = ""; }; - 6347BA8D5567D3CC98AB327590B8EDDB /* NstBoardFfe.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardFfe.hpp; sourceTree = ""; }; - 63554737D96E02FD0ADBE502A0DF7F70 /* NstImageDatabase.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstImageDatabase.hpp; sourceTree = ""; }; - 63596961E529E55CE62A0623E1E98848 /* Crashlytics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Crashlytics.h; path = iOS/Crashlytics.framework/Headers/Crashlytics.h; sourceTree = ""; }; - 6380B0D299E0305367127A145786FD9A /* CombinerKey.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = CombinerKey.cpp; sourceTree = ""; }; - 63A44C100EEF3046D44722C99B1F6BFE /* AREngine.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = AREngine.cpp; sourceTree = ""; }; - 63BE33E737F365DA6A02C5EC800FEFDA /* NstBoardHes.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardHes.hpp; sourceTree = ""; }; - 63C50712020BD8781CB13285A7347D60 /* tttags.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = tttags.h; sourceTree = ""; }; - 64243D5F5D7188C2645AF800E611144D /* dsp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = dsp.h; sourceTree = ""; }; - 642D1E9C093B844DD73C3012A1D48864 /* NSFileManager+URLs.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSFileManager+URLs.m"; path = "Roxas/NSFileManager+URLs.m"; sourceTree = ""; }; - 6464DF7A6164101B5FB673424724943C /* View.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = View.hpp; sourceTree = ""; }; - 6471F262D66398DA1B0CB29F07AAE7F8 /* DeleteRecordOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DeleteRecordOperation.swift; sourceTree = ""; }; - 64880C39DADCE43CFC613BD1EEBF6875 /* Wifi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Wifi.h; sourceTree = ""; }; - 6495040233A41FA50D3F1DE4DDF33E32 /* ftcffdrv.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftcffdrv.h; sourceTree = ""; }; - 6497DCF700203B483AC09F89101261EB /* UIView+WebCacheOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheOperation.m"; path = "SDWebImage/UIView+WebCacheOperation.m"; sourceTree = ""; }; - 64B7CA4681C35B6964EC793BCED8C6C4 /* TxQuantize.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TxQuantize.cpp; sourceTree = ""; }; - 64EDE4DCAD9981AA23A033A7716C28DE /* NstApiVideo.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiVideo.hpp; sourceTree = ""; }; - 64EE117D0C5FCCD7418F14B2F66F8DA1 /* GlResource.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = GlResource.hpp; sourceTree = ""; }; - 652BD506823466AE51AF373E88943D34 /* NstBoard.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoard.hpp; sourceTree = ""; }; - 652ED46B907A7ECE96808F0BA5F1AB39 /* TDStretch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TDStretch.h; sourceTree = ""; }; - 6538E1750A003E112A1253284036FAD7 /* mc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = mc.h; sourceTree = ""; }; - 657039F64E9AA518C0F3A7833EE261D0 /* NstBoardSachenSa72008.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSachenSa72008.hpp; sourceTree = ""; }; - 6580F4C2274C34D00440BE9DA14D9163 /* pshints.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pshints.h; sourceTree = ""; }; - 65A3DF3862EB2C06BE04F217E799F74E /* SPI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SPI.h; sourceTree = ""; }; - 65BAB4D3BC57DD688735D0D8DC9DE780 /* NESDeltaCore.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = NESDeltaCore.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 65C2DDEB846BC71435BB61A42D079728 /* GLideN64.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = GLideN64.cpp; sourceTree = ""; }; - 6699C28C7C6519A74846481B5F2FC5A3 /* Alamofire.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.debug.xcconfig; sourceTree = ""; }; - 66BA1FE632C0B1ECE6A8C517A5BA2BFD /* Standard.deltaskin */ = {isa = PBXFileReference; includeInIndex = 1; path = Standard.deltaskin; sourceTree = ""; }; - 66C9224567E1ABD1BBE56C13676AA651 /* cp0.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = cp0.h; sourceTree = ""; }; - 66FB69307E96C7CD8ACCF5D63C2853CB /* assem_arm64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = assem_arm64.h; sourceTree = ""; }; - 66FF3C9AA7350341B382B354F3D7E089 /* NstApiSound.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiSound.hpp; sourceTree = ""; }; - 67348E30C729A5B75CDEC762C64536A8 /* sRGB.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = sRGB.h; sourceTree = ""; }; - 674B43A90EAC668AF859CC16F6048DC4 /* SwiftyDropbox-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyDropbox-prefix.pch"; sourceTree = ""; }; - 67CDDFF4AEF95E7B369C55FD208FF20F /* vidext.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = vidext.h; sourceTree = ""; }; - 67EBFE3C6348F22E3FACE3590580BB37 /* Fabric.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Fabric.h; path = iOS/Fabric.framework/Headers/Fabric.h; sourceTree = ""; }; - 67F3604815E9FA261FF7B198C7B93DB9 /* types.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = ""; }; - 68018329536A9449BCE127106869F5B4 /* sar.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = sar.h; sourceTree = ""; }; - 681169D12055F83F0257E3609FACE84F /* NstBoardNxRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardNxRom.hpp; sourceTree = ""; }; - 681B874515928068B822C055CFADAF60 /* Lock.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Lock.hpp; sourceTree = ""; }; - 683323289D0F097240F45B27229DF8F6 /* SNESEmulatorBridge.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = SNESEmulatorBridge.mm; sourceTree = ""; }; - 68481410980138B078817FD83996CB80 /* NESDeltaCore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "NESDeltaCore-dummy.m"; sourceTree = ""; }; - 6853448A3628EAC1116E6AF78A25E1E3 /* ConfigDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ConfigDialog.h; sourceTree = ""; }; - 6867B0D264A10EDDE036F053E3ED4D34 /* debugger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = debugger.h; sourceTree = ""; }; - 68777C729F38ACE487C5E6C1604FAD18 /* GBCDeltaCore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GBCDeltaCore-dummy.m"; sourceTree = ""; }; - 687DDD5F49284502650169241BB52820 /* zlib.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = ""; }; - 6888FE71E929391D179F01C2EFB7B9CB /* UICollectionViewCell+CellContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UICollectionViewCell+CellContent.m"; path = "Roxas/UICollectionViewCell+CellContent.m"; sourceTree = ""; }; - 688AA690103545651BEA6FC225889217 /* m64p_config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64p_config.h; sourceTree = ""; }; - 688B090AE1C49E5CCF89A0205D82DF55 /* ARM_InstrInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARM_InstrInfo.h; sourceTree = ""; }; - 68C333FACC662CE4E939F918AC617C95 /* GBACart.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBACart.h; sourceTree = ""; }; - 68D4AC5CC44BFF50F55D374F5A256A23 /* ZSortBOSS.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ZSortBOSS.h; sourceTree = ""; }; - 6946D483214CA66E8CC3E5647EA18AEF /* SoundRecorder.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = SoundRecorder.hpp; sourceTree = ""; }; - 696393FF8398B97B4AE77FDD717BCE6D /* svotval.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svotval.h; sourceTree = ""; }; - 699BB5E960F7F5A50C96A562EA76EE9C /* GoogleSignIn.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GoogleSignIn.framework; path = Frameworks/GoogleSignIn.framework; sourceTree = ""; }; - 699C06DF728C17DE1AE0E251B1C949D8 /* pngrutil.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pngrutil.c; sourceTree = ""; }; - 69E6AFEACD7BEB734D1577E24B12AD23 /* GBCCheat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBCCheat.h; sourceTree = ""; }; - 69F6D09E39DCE61200F1255426706BDD /* m64p_debugger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64p_debugger.h; sourceTree = ""; }; - 6A18BBED29892E9EFCA98778363056D1 /* opengl_UnbufferedDrawer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_UnbufferedDrawer.cpp; sourceTree = ""; }; - 6A23462A637B29C7DA5D1E5502F8CF1C /* Util.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Util.h; sourceTree = ""; }; - 6A2761218A0E7B7B103613B97A3ABE46 /* game_controller.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = game_controller.h; sourceTree = ""; }; - 6A4BBDA95F0E46160F5DA36677CF018B /* pngusr.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pngusr.h; sourceTree = ""; }; - 6A961F74ADE61500A3E62672063A3386 /* NstBoardBenshengBs5.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBenshengBs5.hpp; sourceTree = ""; }; - 6AC9CEAA77814183897B01BB7820D72D /* OAuth.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OAuth.swift; path = Source/SwiftyDropbox/Shared/Handwritten/OAuth.swift; sourceTree = ""; }; - 6ACCC934BB5FAD4B0A16D654246E21F6 /* GTLRQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRQuery.m; path = Source/Objects/GTLRQuery.m; sourceTree = ""; }; - 6AE80E95610AC55EF36C52FE2399360A /* SwiftyDropbox.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftyDropbox.debug.xcconfig; sourceTree = ""; }; - 6AF170B2C4B6266F17CC25ABB8608BBA /* NstBoardJalecoJf11.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardJalecoJf11.hpp; sourceTree = ""; }; - 6AF33200C7D32C8EACD8B8539DB45BC2 /* NSLayoutConstraint+Edges.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSLayoutConstraint+Edges.h"; path = "Roxas/NSLayoutConstraint+Edges.h"; sourceTree = ""; }; - 6B06E6C09CE07C063CE11C20EF5F539A /* interpret.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = interpret.h; sourceTree = ""; }; - 6B2B7F80DED1FE8F81ED796983E929F9 /* NstBoardTxcTw.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardTxcTw.hpp; sourceTree = ""; }; - 6B4F51183AC9E8A568E66894754B3C3B /* check.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = check.h; sourceTree = ""; }; - 6B7C4AC83A510BBC0B84764C2FFEAD86 /* MMU.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MMU.h; sourceTree = ""; }; - 6B8024BA5712C26C7AC2CE666D859911 /* Audio.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Audio.hpp; sourceTree = ""; }; - 6B875B7DA1EFD84AC25989918583DB09 /* RSTOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTOperation.h; path = Roxas/RSTOperation.h; sourceTree = ""; }; - 6BE39081BB452BD5A1ED6F8D2A9E2783 /* ereader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ereader.h; sourceTree = ""; }; - 6C0EA7F202AF8D11BCE267EAC22A4F68 /* callbacks.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = callbacks.h; sourceTree = ""; }; - 6C1E4CF0FFCC19C1AD6905DE817C17EA /* Connection.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Connection.swift; path = Sources/SQLite/Core/Connection.swift; sourceTree = ""; }; - 6C3C0CF8A1A1493173F125B368A6482D /* Version+Revision.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Version+Revision.swift"; sourceTree = ""; }; - 6C47161890D8A6119D7B00B61D034DE0 /* svttcmap.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svttcmap.h; sourceTree = ""; }; - 6C53AFC7C3E9CB17543D6DAA0BC85DC0 /* version.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = ""; }; - 6C76D76ED7F98CCF93BF79937C57766B /* pif.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pif.h; sourceTree = ""; }; - 6C878F2CCB482C22A82B135EDBCB366B /* ftrfork.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftrfork.h; sourceTree = ""; }; - 6C8A537D1535D916E2EFA09239248332 /* NstMemory.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstMemory.hpp; sourceTree = ""; }; - 6CB58CA4AE908281BA1B91954FF16704 /* GBAEmulatorBridge.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBAEmulatorBridge.h; sourceTree = ""; }; - 6CB6EA18C6E1762E051CBE04D8C7E4BD /* unzip.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = unzip.h; sourceTree = ""; }; - 6CFD2D37762609104C0268903A5B6220 /* NstPatcherUps.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstPatcherUps.hpp; sourceTree = ""; }; - 6D0550F757121A1A87081B1D88E1DDF0 /* pngwrite.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pngwrite.c; sourceTree = ""; }; - 6D100997AEF49344BE7D24310D2FC672 /* NstBoardMmc2.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardMmc2.hpp; sourceTree = ""; }; - 6D25D90C2F0571F2A637C30B9B936472 /* GTLRBase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRBase64.h; path = Source/Utilities/GTLRBase64.h; sourceTree = ""; }; - 6D3156A703D60028628632452506690B /* opengl_BufferedDrawer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_BufferedDrawer.cpp; sourceTree = ""; }; - 6D5D26B79B3CFF7C1E3A7401D9FEACA3 /* L3DEX.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = L3DEX.cpp; sourceTree = ""; }; - 6D6356DD5E0F82DF844E098F33714D4A /* controller_input_backend.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = controller_input_backend.h; sourceTree = ""; }; - 6D71031AFDF4C2A2A4A7F9623C8263C3 /* audio.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = audio.h; sourceTree = ""; }; - 6D83D5A2599C2FB66047AFC3E59C193B /* version.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = version.h; sourceTree = ""; }; - 6DFCA97B33E59049B25A0D843E635862 /* ftheader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftheader.h; sourceTree = ""; }; - 6E1607B169D526DA6008EF98D01686F4 /* clamping.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = clamping.h; sourceTree = ""; }; - 6E1E6B172372CDF4080C7440C0152069 /* NESDeltaCore.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NESDeltaCore.release.xcconfig; sourceTree = ""; }; - 6E79A1DD149F886D0C22350E0E1FD947 /* NstBoardBtlDragonNinja.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBtlDragonNinja.hpp; sourceTree = ""; }; - 6E823A056BD3AEE7D63E8782256F4F4A /* Standard.deltamapping */ = {isa = PBXFileReference; includeInIndex = 1; name = Standard.deltamapping; path = MelonDSDeltaCore/Standard.deltamapping; sourceTree = ""; }; - 6E93E4BE7AB127183B96B96E91487DA6 /* GTLRBatchResult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRBatchResult.h; path = Source/Objects/GTLRBatchResult.h; sourceTree = ""; }; - 6E97DEFC9165A7CCB6BE870FF57D35B2 /* Dictionary+Sequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Dictionary+Sequence.swift"; sourceTree = ""; }; - 6EC38AE281F34E72E7CC057B65C594C2 /* RSTCellContentDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTCellContentDataSource.m; path = Roxas/RSTCellContentDataSource.m; sourceTree = ""; }; - 6EEA2D28001AC05E9EFB187853B6CD71 /* NstBoardBtlAx5705.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBtlAx5705.hpp; sourceTree = ""; }; - 6F06E96B244C279983A107F0118F85A7 /* zconf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = ""; }; - 6F169330A819E3D0505CAD19B390990A /* instructions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = instructions.h; sourceTree = ""; }; - 6F3C633420539DB6E775C732226165BB /* dummy_video_capture.c */ = {isa = PBXFileReference; includeInIndex = 1; path = dummy_video_capture.c; sourceTree = ""; }; - 6F4299F82CCE6A563897642AFA66DD0A /* uncopyable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = uncopyable.h; sourceTree = ""; }; - 6F47CA53E91124FF1F8F6E6AB50123F0 /* SoundSource.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = SoundSource.hpp; sourceTree = ""; }; - 6F67C72AC639FF2FE8B8682CBADFEA91 /* CustomFunctions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomFunctions.swift; path = Sources/SQLite/Typed/CustomFunctions.swift; sourceTree = ""; }; - 6F8311A2029FEA937C1C42B5E445E925 /* ftxf86.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftxf86.h; sourceTree = ""; }; - 6FB01D09B653BA294A2E5E980D435892 /* GTLRUploadParameters.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRUploadParameters.m; path = Source/Objects/GTLRUploadParameters.m; sourceTree = ""; }; - 6FB1E466233B447E59EF69EB695E2E30 /* NstBoardDxRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardDxRom.hpp; sourceTree = ""; }; - 6FBA8F55F87E9996DF830682679860C1 /* Glsl.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Glsl.hpp; sourceTree = ""; }; - 6FC0331C8792784F0B18ABC1E76D97EB /* FIFO.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FIFO.h; sourceTree = ""; }; - 6FFD12A0BF77313EA363649EC4149D5D /* RingBuffer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RingBuffer.swift; sourceTree = ""; }; - 705E5C1967661B00DE5A61BFC7EB6DB9 /* NstBoardIremKaiketsu.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardIremKaiketsu.hpp; sourceTree = ""; }; - 707B35765CF23935D0DC98EB64D4A890 /* N64DeltaCore-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "N64DeltaCore-dummy.m"; sourceTree = ""; }; - 70ADC0C7F86D3D6EE6794D1AAC94C7CB /* Text.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Text.hpp; sourceTree = ""; }; - 70B04C9F57267E03F1342083D92F72DD /* AFError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AFError.swift; path = Source/AFError.swift; sourceTree = ""; }; - 70B0F2F9BE58862F6DCF466C6E0C14C6 /* Performance.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Performance.h; sourceTree = ""; }; - 70BD655CF29FC526DC262C88E22935CF /* ResourceBundle-melonDS-MelonDSDeltaCore-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-melonDS-MelonDSDeltaCore-Info.plist"; sourceTree = ""; }; - 70D4235B8815A8BC69AC2EAA39D4C907 /* NstBoardSubor.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSubor.hpp; sourceTree = ""; }; - 712309395CD5253158D97121E47F79D0 /* sound.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = sound.h; sourceTree = ""; }; - 7137BA5D5A9D9C8100F36AA2BDBE55A0 /* N64EmulatorBridge.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = N64EmulatorBridge.h; sourceTree = ""; }; - 716BA9F3B51C44F2249E901BDCAEE818 /* NstBoardBtlSmb2b.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBtlSmb2b.hpp; sourceTree = ""; }; - 71CF8F17CF2C8159C4E059520894D5EF /* GBACart.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = GBACart.cpp; sourceTree = ""; }; - 71E7492287A3D967246142FEE6D2D82D /* ManagedRecord+Uploading.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "ManagedRecord+Uploading.swift"; sourceTree = ""; }; - 71FEA83CC74433938BD5065348F02C5C /* NstBoardSachenStreetHeroes.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSachenStreetHeroes.hpp; sourceTree = ""; }; - 7200A0EBB1017B42A5ED7871A39CD7F9 /* RSTBlockOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTBlockOperation.m; path = Roxas/RSTBlockOperation.m; sourceTree = ""; }; - 7230F1D1BDFBD1374C8E106343F7AA93 /* NstBoardBmcSuperHiK300in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcSuperHiK300in1.hpp; sourceTree = ""; }; - 72495D65818F9E9082E5D51130B42F8D /* RSTCollectionViewCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTCollectionViewCell.m; path = Roxas/RSTCollectionViewCell.m; sourceTree = ""; }; - 72896C94A5DD519E2F9AB3E4B5D45DDB /* GLFunctions.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = GLFunctions.cpp; sourceTree = ""; }; - 72928BD1EC814259B5C12FB7891C8143 /* GBA.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBA.h; sourceTree = ""; }; - 729B8DEC37C5A417626DEBCDB5C13C65 /* DebugDump.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DebugDump.cpp; sourceTree = ""; }; - 72C1083AD34F4F2C3F51C52B8BD27F4C /* android_hardware_buffer_compat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = android_hardware_buffer_compat.h; sourceTree = ""; }; - 72FDE1C782E5DEEB2BEEA74E0C910FBC /* T3DUX.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = T3DUX.h; sourceTree = ""; }; - 733F12E405AFBD29E85D0D8B66566F83 /* Transform.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Transform.hpp; sourceTree = ""; }; - 738312A615F845E52FDBD508E66600CC /* Vector2.inl */ = {isa = PBXFileReference; includeInIndex = 1; path = Vector2.inl; sourceTree = ""; }; - 7399F092CF6A11F36EBBE6E4BB641D7B /* NstInpPaddle.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpPaddle.hpp; sourceTree = ""; }; - 73C973D6C8F68D6041F1D72D7FDFBAA9 /* StoneBase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StoneBase.swift; path = Source/SwiftyDropbox/Shared/Generated/StoneBase.swift; sourceTree = ""; }; - 73CEB369FBA056E331F0DC448A726D0E /* m64p_vidext.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64p_vidext.h; sourceTree = ""; }; - 73DE9A2DA3844302000F020E82B3907E /* TxDbg_ios.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = TxDbg_ios.mm; sourceTree = ""; }; - 740E7BE309FA13ED2283E325FC79E5E3 /* NstInpExcitingBoxing.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpExcitingBoxing.hpp; sourceTree = ""; }; - 7427B67B589DE237C8DA6027B77D9486 /* cached_interp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = cached_interp.h; sourceTree = ""; }; - 74370705578A20E60CAC4693D6AA6FA6 /* ARMJIT_RegisterCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARMJIT_RegisterCache.h; sourceTree = ""; }; - 744CDC36A5FA9F4BF452E5F54C93E619 /* GameControllerInputMapping.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GameControllerInputMapping.swift; sourceTree = ""; }; - 744D3216390476216DCF11BE485E9B7B /* NstVsTkoBoxing.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstVsTkoBoxing.hpp; sourceTree = ""; }; - 745C7BD034F68630CA1462CB29BF3051 /* ResponseSerialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResponseSerialization.swift; path = Source/ResponseSerialization.swift; sourceTree = ""; }; - 74B045D25124BB876E6586B6145E1B2C /* RenderWindow.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = RenderWindow.hpp; sourceTree = ""; }; - 74C8A5BDD2CBB1549A0AF5DD8B86AE36 /* plugin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = plugin.h; sourceTree = ""; }; - 755132A40834082A80F3E5C61393429B /* RecordEntry.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RecordEntry.swift; sourceTree = ""; }; - 756A8C82990C25488A72294E1DB16515 /* ResourceBundle-DeltaCore-DeltaCore-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-DeltaCore-DeltaCore-Info.plist"; sourceTree = ""; }; - 75769AD8AA1E6A55767E34444DEBA81E /* SQLite.swift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SQLite.swift.debug.xcconfig; sourceTree = ""; }; - 757B725B95353BE0102B34BCEF7E70A1 /* ARM.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARM.h; sourceTree = ""; }; - 758B1872FA71F711EC550F4A8C4E08C8 /* Roxas.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = Roxas.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 7593F2C4D1EBF407C79C29024347ED4B /* NstInpTurboFile.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpTurboFile.hpp; sourceTree = ""; }; - 75A3CAD2D53900F2E82B7E98C83BCF2C /* GraphicsDrawer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = GraphicsDrawer.cpp; sourceTree = ""; }; - 75E436302DDA837379AD674034926994 /* RSTArrayDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTArrayDataSource.h; path = Roxas/RSTArrayDataSource.h; sourceTree = ""; }; - 7644554091000C52315F1623FF43785C /* retro_assert.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = retro_assert.h; sourceTree = ""; }; - 7683944BD0D3CE9190CEC886A484F91A /* exprNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = exprNode.h; sourceTree = ""; }; - 76DF66FD0433C0D83850AB50832BBB5D /* osal_dynamiclib.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = osal_dynamiclib.h; sourceTree = ""; }; - 779480D51F350F2ABC3479ACDA749DEB /* FileManager+ZIP.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "FileManager+ZIP.swift"; path = "Sources/ZIPFoundation/FileManager+ZIP.swift"; sourceTree = ""; }; - 77F5D02F675FF6E4F52E24F369CF8D7A /* SoftwareRender.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SoftwareRender.h; sourceTree = ""; }; - 780C942D05B3A6D0A57D5B0EA2C85490 /* DeltaCore-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DeltaCore-prefix.pch"; sourceTree = ""; }; - 78248727BCE6BF8A4103526F1DD2CF55 /* ColorBufferReader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ColorBufferReader.h; sourceTree = ""; }; - 78280DD54D59D46BBD47EEAEC0544ADB /* NstBoardBmcResetBased4in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcResetBased4in1.hpp; sourceTree = ""; }; - 7835E3451DFC672514F4E6B3EC909995 /* pngpriv.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pngpriv.h; sourceTree = ""; }; - 7880158DD63D22405EA70C3616145A3B /* gfx.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = gfx.h; sourceTree = ""; }; - 78A47CFC26B9E18F69F6B51E131740AC /* NstBoardKaiser.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardKaiser.hpp; sourceTree = ""; }; - 78AB21416B984D35625ECC2BA9CD8E4A /* TxReSample.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TxReSample.h; sourceTree = ""; }; - 7903BE329F1F1D43823E9EE7CDC9E0B9 /* ftcid.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftcid.h; sourceTree = ""; }; - 790609C487C0DE4A1E6385276B1FD602 /* OGLRender_3_2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = OGLRender_3_2.h; sourceTree = ""; }; - 7927E71FEC78E28D29A5D662C311BC33 /* RSTArrayDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTArrayDataSource.m; path = Roxas/RSTArrayDataSource.m; sourceTree = ""; }; - 79488326ACD741DA78E6F8BFDA889395 /* StoneSerializers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StoneSerializers.swift; path = Source/SwiftyDropbox/Shared/Generated/StoneSerializers.swift; sourceTree = ""; }; - 796084063277FF52CC987CFFC579DEEB /* DSi_I2C.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DSi_I2C.cpp; sourceTree = ""; }; - 798227D438D94FDBFF310CC759EAE46E /* glsl_CombinerInputs.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = glsl_CombinerInputs.h; sourceTree = ""; }; - 7985DB3FC96A17FBF86B4FC18FA4AC5E /* F3DEX2CBFD.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F3DEX2CBFD.h; sourceTree = ""; }; - 798D5972AD9FFEB025B0DC380ACFC440 /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Source/Result.swift; sourceTree = ""; }; - 799DEF3E6A60124A7322E3ED095506F7 /* obc1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = obc1.h; sourceTree = ""; }; - 79A9169FAA91BB5E2459CF07BEB0D5B9 /* Standard.deltaskin */ = {isa = PBXFileReference; includeInIndex = 1; path = Standard.deltaskin; sourceTree = ""; }; - 79D7ED8877867FB9C7D2E9F9FA848BDA /* hermite_resampler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = hermite_resampler.h; sourceTree = ""; }; - 79DDBFEC7F39DED56370617F46D7CD96 /* NstBoardHxRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardHxRom.hpp; sourceTree = ""; }; - 79E016DBE78B56C94199CFAF25741154 /* RenderStates.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = RenderStates.hpp; sourceTree = ""; }; - 79E0EDA5AC69A3E5E4CB871209E7050A /* si_controller.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = si_controller.h; sourceTree = ""; }; - 79FAEA560AE13479E3AE1C9D4193CBE8 /* complex.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = complex.h; sourceTree = ""; }; - 7A361316A00767E4447E32728D710E69 /* svwinfnt.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svwinfnt.h; sourceTree = ""; }; - 7AB0218EEDC30D1A5BF7AFAE3D9D0676 /* WifiAP.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = WifiAP.h; sourceTree = ""; }; - 7AEEEEBC25EAA4D178CE03F03D008923 /* GTMGatherInputStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMGatherInputStream.h; path = Source/GTMGatherInputStream.h; sourceTree = ""; }; - 7B4FABA9D9901362C87EB1E8D05ED709 /* cart_rom.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = cart_rom.h; sourceTree = ""; }; - 7B9E6B769CA9E78BEDB08A1DAF5427BF /* NstBoardEvent.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardEvent.hpp; sourceTree = ""; }; - 7C1A8604278515F1FAEA173BA8B23ACC /* ManagedRecord.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ManagedRecord.swift; sourceTree = ""; }; - 7C3746C40CCF7D523A9AC470BCAE5EEB /* debugger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = debugger.h; sourceTree = ""; }; - 7C39EC3D5796C91B27BD3B48652EE7CF /* NstBoardJxRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardJxRom.hpp; sourceTree = ""; }; - 7C573C73FAF77126C47AACABCE05AB30 /* retro_common.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = retro_common.h; sourceTree = ""; }; - 7C6BC0D076F377BD8D6A2EAB196A9653 /* GTLRDriveObjects.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDriveObjects.h; path = Source/GeneratedServices/Drive/GTLRDriveObjects.h; sourceTree = ""; }; - 7C7452868988A93760A7A50A3744B7F2 /* MemoryStatus_mupenplus.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = MemoryStatus_mupenplus.cpp; sourceTree = ""; }; - 7CE2844DE2F965D57AF2B9A38F4F4B70 /* DeltaCoreProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DeltaCoreProtocol.swift; sourceTree = ""; }; - 7D16EB8114A53F291EEF976E892B4E8A /* RTC.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RTC.h; sourceTree = ""; }; - 7D29EE4FC407EB1CD9E31FF0194ABD04 /* opengl_ColorBufferReaderWithBufferStorage.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_ColorBufferReaderWithBufferStorage.cpp; sourceTree = ""; }; - 7D633EBBEE9DD8266E21025C31FB5CF2 /* m64p_common.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64p_common.h; sourceTree = ""; }; - 7D657B72C28A6793148493FF9DEAA8A6 /* GTMSessionFetcher.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GTMSessionFetcher.release.xcconfig; sourceTree = ""; }; - 7D751206A951D9727B38F71A2BB990AA /* SNESDeltaCore.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = SNESDeltaCore.bundle; path = "SNESDeltaCore-SNESDeltaCore.bundle"; sourceTree = BUILT_PRODUCTS_DIR; }; - 7D8FC7A21B622E0C6CA1737C2DBD7EE2 /* SharingRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SharingRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/SharingRoutes.swift; sourceTree = ""; }; - 7D955DD7861E1B37BA3C7B1ECB55AACB /* xxhash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = xxhash.h; sourceTree = ""; }; - 7DD4EB5CFFADB4D68D550C2A9FD0CB52 /* ARMInterpreter_ALU.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ARMInterpreter_ALU.cpp; sourceTree = ""; }; - 7E219B1C9FDC46CA814F1FCE79246ED1 /* ColorBufferToRDRAM.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ColorBufferToRDRAM.cpp; sourceTree = ""; }; - 7E3CBD7C48DB98A30F4405C80F7EAA1F /* Textures.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Textures.h; sourceTree = ""; }; - 7E6049D392CB3FBCC2B72A8A6687EB69 /* UIView+AnimatedHide.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+AnimatedHide.h"; path = "Roxas/UIView+AnimatedHide.h"; sourceTree = ""; }; - 7E950C5201F678049BF12854FA5D327A /* Archive+Writing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+Writing.swift"; path = "Sources/ZIPFoundation/Archive+Writing.swift"; sourceTree = ""; }; - 7E99F915543C72FB60BB5CD12C64429E /* DSi_NWifi.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DSi_NWifi.cpp; sourceTree = ""; }; - 7EA0070E428C8FC47BE2AB57F71D09C0 /* Sound.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Sound.hpp; sourceTree = ""; }; - 7EBD31893D413B13A5423B498193DD47 /* NstBoardAveNina.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardAveNina.hpp; sourceTree = ""; }; - 7EF3ABFC7AE14678E610B97B21FAE01A /* Joystick.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Joystick.hpp; sourceTree = ""; }; - 7EF3C8BACE3C7214CCB4EA445F842DA8 /* c4.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = c4.h; sourceTree = ""; }; - 7F348EE71D161DF0BF0008D88C55B158 /* NstBoardBmcGamestarB.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcGamestarB.hpp; sourceTree = ""; }; - 7F7ED6CE3BC682B49D8D74C14E481F37 /* GTMSessionFetcherService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionFetcherService.h; path = Source/GTMSessionFetcherService.h; sourceTree = ""; }; - 7F8B335AD068A99C98CAD8C381BAFC0F /* Harmony.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Harmony.h; path = Harmony/Harmony.h; sourceTree = ""; }; - 801D06493D0A4FDBEBD0B4D257BAC5A3 /* osd_element.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = osd_element.h; sourceTree = ""; }; - 801F19EC04BD80A8CDF669781B0A3F39 /* MFiGameController.deltamapping */ = {isa = PBXFileReference; includeInIndex = 1; name = MFiGameController.deltamapping; path = "DeltaCore/Supporting Files/MFiGameController.deltamapping"; sourceTree = ""; }; - 80332D9AFFD7FFF56082A806DBF79F1C /* ConflictRecordOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ConflictRecordOperation.swift; sourceTree = ""; }; - 80755B82AF70446405D291677D326580 /* NstBoardFutureMedia.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardFutureMedia.hpp; sourceTree = ""; }; - 809C2DE2D00BCE6A6E076592A813FB03 /* Harmony-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Harmony-dummy.m"; sourceTree = ""; }; - 80A3D8CB0999B0CF69939F4D68ABB6FD /* netplay.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = netplay.h; sourceTree = ""; }; - 80E5FA9A1C688ECDCB3DD69B330B5FCE /* UploadRecordOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = UploadRecordOperation.swift; sourceTree = ""; }; - 8120D6CFBB7E4E028442630DE245EA89 /* RSTTintedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTTintedImageView.m; path = Roxas/RSTTintedImageView.m; sourceTree = ""; }; - 817726660084D909C839C2AC4F59B79E /* NstBoardBmc110in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc110in1.hpp; sourceTree = ""; }; - 8178B2C482B362D277805FFAD09D4CEA /* PixelBuffer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PixelBuffer.h; sourceTree = ""; }; - 81A75C53653505A79E3041800AD590E4 /* rhash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = rhash.h; sourceTree = ""; }; - 81FAD8256834DC35886EFCF3F5F2715E /* CoreFunctions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CoreFunctions.swift; path = Sources/SQLite/Typed/CoreFunctions.swift; sourceTree = ""; }; - 821220B8544FBE32E0038B8AF495F752 /* mi_controller.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = mi_controller.h; sourceTree = ""; }; - 8248BE4460AD901892A34E8BC9389A7E /* TcpListener.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = TcpListener.hpp; sourceTree = ""; }; - 8257136F31A37672447D5F2FCF46FE10 /* Base.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Base.swift; path = Source/SwiftyDropbox/Shared/Generated/Base.swift; sourceTree = ""; }; - 82650D769E277B9C3FD6AC694C6B03E4 /* LocalRecord.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LocalRecord.swift; sourceTree = ""; }; - 82671B748A7E74AAEE8C91F00CD2BC98 /* TxReSample.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TxReSample.cpp; sourceTree = ""; }; - 826835BE8340A1BC251ECF7FCA9581C2 /* fxemu.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = fxemu.h; sourceTree = ""; }; - 82770B1F5AE682EA3C86E83763CB6687 /* Glsl.inl */ = {isa = PBXFileReference; includeInIndex = 1; path = Glsl.inl; sourceTree = ""; }; - 829735A0F9CEBD3D7585C21C3AC6FD0B /* GoogleAPIClientForREST-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleAPIClientForREST-prefix.pch"; sourceTree = ""; }; - 829C35143E7D2B6838F3B70A9F749491 /* vidext_sdl2_compat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = vidext_sdl2_compat.h; sourceTree = ""; }; - 82A288A778CFC76070B7DE528F4262A2 /* Revision.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Revision.h; sourceTree = ""; }; - 82B37B22062D50601B309F8686F80EA9 /* NstBoardSunsoft4.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSunsoft4.hpp; sourceTree = ""; }; - 82C0A84FFD08BB92E25F7D35985941FF /* re2.c */ = {isa = PBXFileReference; includeInIndex = 1; path = re2.c; sourceTree = ""; }; - 82D1AD4741CA6ABB465A5B94AA51CEE6 /* Helpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Helpers.swift; path = Sources/SQLite/Helpers.swift; sourceTree = ""; }; - 82F7DDA0B0454BF03B850DCA4B50D958 /* joybus.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = joybus.h; sourceTree = ""; }; - 82FD9E8B7BF5BE252E26FF5614F77535 /* GBC.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GBC.swift; sourceTree = ""; }; - 83196FEC51C0814A8ABCF0EF4FAE5EB7 /* Config.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Config.cpp; sourceTree = ""; }; - 836A85D3F37DD955B50893B23E16B446 /* NstBoardUnlEdu2000.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardUnlEdu2000.hpp; sourceTree = ""; }; - 83B4F9E572374DF4C3831BAEF2E43CF9 /* Vector3.inl */ = {isa = PBXFileReference; includeInIndex = 1; path = Vector3.inl; sourceTree = ""; }; - 83BBBD73DC5C5BDA24F97461BDDEA0D7 /* SeenState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SeenState.swift; path = Source/SwiftyDropbox/Shared/Generated/SeenState.swift; sourceTree = ""; }; - 83E1AEBAC7522B8885FDC3AB45444BBA /* opengl_TextureManipulationObjectFactory.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_TextureManipulationObjectFactory.cpp; sourceTree = ""; }; - 84F0ADD65E108164F9714F7992472ABE /* NstXml.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstXml.hpp; sourceTree = ""; }; - 84F897EBE76A1FDAD4E64AC50CF7138F /* opengl_Utils.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_Utils.cpp; sourceTree = ""; }; - 8507F39645E5ABFF0C41AC54EC5033C1 /* SoundSDL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SoundSDL.h; sourceTree = ""; }; - 8548E2F828F57A9B447EB274E44455C4 /* adaptivesleep.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = adaptivesleep.h; sourceTree = ""; }; - 856A3A60CAA4C68D36EAE9CFBA9545A7 /* ARMJIT.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARMJIT.h; sourceTree = ""; }; - 856D83B78BF97FC7E7AD812C3612DDD2 /* NstBoardMmc5.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardMmc5.hpp; sourceTree = ""; }; - 8583D92D723450970BC33F1F5722C843 /* NstApu.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApu.hpp; sourceTree = ""; }; - 85A0EC10CDB05B59BB67D8B32DADA738 /* PluginAPI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PluginAPI.h; sourceTree = ""; }; - 85A20CD7B74FCD22297EDBA79F75A24A /* TouchInputView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TouchInputView.swift; sourceTree = ""; }; - 85A4BD81985AEDB6D9BA5E50804225D0 /* libGBADeltaCore.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libGBADeltaCore.a; path = libGBADeltaCore.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 85E469198AF1A954FE1092AC0B7CC6E5 /* DriveService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DriveService.swift; path = "Backends/Drive/Harmony-Drive/DriveService.swift"; sourceTree = ""; }; - 860719187CBE960AF789BB9FF22F6C14 /* 3DMath.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = 3DMath.cpp; sourceTree = ""; }; - 862818885E4A3970FBC4F00ED5C43436 /* ftconfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftconfig.h; sourceTree = ""; }; - 86340807BB987EFFF2BFA97977E4B822 /* gbafilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = gbafilter.h; sourceTree = ""; }; - 863440A2EA28833532DAD4455C9604FE /* GameProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GameProtocol.swift; sourceTree = ""; }; - 8638968DC3BD54DEE2C5F9056D50F226 /* GTMNSDictionary+URLArguments.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "GTMNSDictionary+URLArguments.m"; path = "Foundation/GTMNSDictionary+URLArguments.m"; sourceTree = ""; }; - 865A3063B5602032ACECBE1CF2D6C9B8 /* opengl_Utils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = opengl_Utils.h; sourceTree = ""; }; - 867234B84A6A4263C6FCF1AEA412C255 /* retro_inline.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = retro_inline.h; sourceTree = ""; }; - 8690E1547DD78C11D04758E93FE06417 /* NativeActivity.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NativeActivity.hpp; sourceTree = ""; }; - 8699788A2F916F63C3E5BC8B912860F4 /* NstBarcodeReader.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBarcodeReader.hpp; sourceTree = ""; }; - 8738A81CD26E2DD7D3D470F3FBACA59F /* NstPatcher.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstPatcher.hpp; sourceTree = ""; }; - 8739733EF235CA35583DA8672E19ED27 /* ftdriver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftdriver.h; sourceTree = ""; }; - 874D46F582C919DAECAE2F7A7A611809 /* TransportConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TransportConfig.swift; path = Source/SwiftyDropbox/Shared/Handwritten/TransportConfig.swift; sourceTree = ""; }; - 8770DD274E5027F1A733F36969F16FD9 /* Touch.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Touch.hpp; sourceTree = ""; }; - 8790DC1F754E5B29AE549062EC5965BF /* Err.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Err.cpp; sourceTree = ""; }; - 87B4445E4B265DF8E6B30B539916E635 /* opengl_TextureManipulationObjectFactory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = opengl_TextureManipulationObjectFactory.h; sourceTree = ""; }; - 87B8D974016F8FF0B7457CF079A700AB /* ServerTrustPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ServerTrustPolicy.swift; path = Source/ServerTrustPolicy.swift; sourceTree = ""; }; - 87BEF86E5D9BA232DF16BE7F774E4D82 /* GTLRRuntimeCommon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRRuntimeCommon.m; path = Source/Objects/GTLRRuntimeCommon.m; sourceTree = ""; }; - 87F005CEE9EE7E4C64FA78613A4C7A75 /* opengl_GLInfo.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_GLInfo.cpp; sourceTree = ""; }; - 880BCBB221781A1D9A6709B5E32370AF /* NstInpBarcodeWorld.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpBarcodeWorld.hpp; sourceTree = ""; }; - 881946A97328B48666124F0EF376FC0E /* F3DSETA.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F3DSETA.cpp; sourceTree = ""; }; - 8832ED97E367CC9B2AE7CF0F2DD8A54F /* sa1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = sa1.h; sourceTree = ""; }; - 884CD3140F6990A9C51BAAE8CDC81537 /* SyncRecordsOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SyncRecordsOperation.swift; sourceTree = ""; }; - 886EFC64C20F8C4DE363F570FCBCA6F0 /* F3DEX2ACCLAIM.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F3DEX2ACCLAIM.h; sourceTree = ""; }; - 888E286567DA558A37D75C91A18A8003 /* SPU.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SPU.h; sourceTree = ""; }; - 889B56C4CCCB86F23A99D01C2C992852 /* NstBoardWaixingSgzlz.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardWaixingSgzlz.hpp; sourceTree = ""; }; - 88D429F6DEDE30C6156DAD5A8D9402CA /* WindowStyle.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = WindowStyle.hpp; sourceTree = ""; }; - 88F90D0052D3F80B4BBED7CF58CAFE79 /* filters.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = filters.h; sourceTree = ""; }; - 88FE6D2D3AEDF7639DF54D6DF699015D /* RSTLoadOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTLoadOperation.h; path = Roxas/RSTLoadOperation.h; sourceTree = ""; }; - 893F529C934E0F4CA0C682139D54684F /* NstBoardIremHolyDiver.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardIremHolyDiver.hpp; sourceTree = ""; }; - 8991F8D9FAC3A697B63046BF35BD3FC4 /* xxhash.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = xxhash.h; sourceTree = ""; }; - 89DDD93BACEF9EB671526569CA75051C /* ftotval.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftotval.h; sourceTree = ""; }; - 89F36C2AA5330EF25066707DB208553A /* assemble_struct.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = assemble_struct.h; sourceTree = ""; }; - 8A2029B01D666F7328468AC09DA067F2 /* fterrors.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = fterrors.h; sourceTree = ""; }; - 8A286F1433B0665E6746E6D25CDD2F31 /* svtteng.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svtteng.h; sourceTree = ""; }; - 8A442C84EE462C5C259BB612927BDB81 /* glsl_SpecialShadersFactory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = glsl_SpecialShadersFactory.h; sourceTree = ""; }; - 8A663C19A160C58658C37E00C9C00A83 /* DSDeltaCore.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DSDeltaCore.debug.xcconfig; sourceTree = ""; }; - 8B0025AC37F3C2C359FCD899F2657855 /* RSTCompositeDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTCompositeDataSource.m; path = Roxas/RSTCompositeDataSource.m; sourceTree = ""; }; - 8B0443A5AFC99B4F146BEF80A5D5D4DC /* ZIPFoundation.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = ZIPFoundation.modulemap; sourceTree = ""; }; - 8B0E21ABA43A14EB561A436856C8C529 /* Contacts.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Contacts.swift; path = Source/SwiftyDropbox/Shared/Generated/Contacts.swift; sourceTree = ""; }; - 8B2CB409D92E49580916E562180139A5 /* DeltaCore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DeltaCore.h; path = DeltaCore/DeltaCore.h; sourceTree = ""; }; - 8B3253523DE4A52CDBFB6532071CF62A /* FramebufferTextureFormats.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FramebufferTextureFormats.h; sourceTree = ""; }; - 8B35578B79FEC9A16A3E4269BBB3FC25 /* FrameBufferInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FrameBufferInfo.h; sourceTree = ""; }; - 8B7BB49B7EB87815D2DD184295B7BDED /* text.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = text.h; sourceTree = ""; }; - 8B9122DAE4EE2531BCDB360AE4B3BDC8 /* ConflictRecordsOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ConflictRecordsOperation.swift; sourceTree = ""; }; - 8BB755876312B736E34924DCD04E0CEF /* NstInpTopRider.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpTopRider.hpp; sourceTree = ""; }; - 8BC0A7E7D462F731C717C1500217AE22 /* readpng.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = readpng.h; sourceTree = ""; }; - 8C57550523D412EE8A09B868B53E861C /* NstBoardBmcSuper40in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcSuper40in1.hpp; sourceTree = ""; }; - 8C8286295216A610FA45355A6513DD88 /* ftmodule.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftmodule.h; sourceTree = ""; }; - 8C8852338AFC9400512894B23FD07DFF /* GameView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GameView.swift; sourceTree = ""; }; - 8CBD6C44140F2A7F243800E35E207F76 /* MelonDSDeltaCore.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = MelonDSDeltaCore.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 8CE14E555F7821AFDC5671E041375AA7 /* NstBoardUnlMortalKombat2.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardUnlMortalKombat2.hpp; sourceTree = ""; }; - 8D22DB712CF3F07C4D4F62A7F0D2016F /* fpu.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = fpu.h; sourceTree = ""; }; - 8D566940EC6480D561BB9899253782D3 /* pngtest.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pngtest.c; sourceTree = ""; }; - 8D7F02896E229D7D3C9C8484A39D3F5A /* Collation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Collation.swift; path = Sources/SQLite/Typed/Collation.swift; sourceTree = ""; }; - 8D873208E11BEAED6C0FC47AA55653E1 /* cexcept.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = cexcept.h; sourceTree = ""; }; - 8D9FD7E98122AE3C538E44DAD93660A5 /* NstInpDevice.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpDevice.hpp; sourceTree = ""; }; - 8DB676A86CDC3E0F880FFFEFE1C8E884 /* ARMJIT_Linkage.s */ = {isa = PBXFileReference; includeInIndex = 1; path = ARMJIT_Linkage.s; sourceTree = ""; }; - 8DCF1A928BFC980E7B498F5BD31A61C4 /* NstBoardNtdec.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardNtdec.hpp; sourceTree = ""; }; - 8DF503EB5BF2CD824792BFD2BBC0992F /* libDSDeltaCore.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libDSDeltaCore.a; path = libDSDeltaCore.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 8E3A59FADC15AFDEC6BB45E8BA0E05AB /* KeyboardGameController.deltamapping */ = {isa = PBXFileReference; includeInIndex = 1; name = KeyboardGameController.deltamapping; path = "DeltaCore/Supporting Files/KeyboardGameController.deltamapping"; sourceTree = ""; }; - 8E3FA1069F1A405E4462E3D83816F39E /* firmware.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = firmware.h; sourceTree = ""; }; - 8E665A40195D9376CB33914492D8C9F6 /* NstCpu.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstCpu.hpp; sourceTree = ""; }; - 8E9F665C35592449F64CC06B2E19D1F7 /* interrupter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = interrupter.h; sourceTree = ""; }; - 8EBCB963DFF67E5AE40BA13ED1A01887 /* MelonDS.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MelonDS.swift; sourceTree = ""; }; - 8EC39A3749E9EBACB0290ED500AF5A7C /* CheatSearch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CheatSearch.h; sourceTree = ""; }; - 8ED7F5795231E9584D1AD395E6DA5325 /* gralloc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = gralloc.h; sourceTree = ""; }; - 8EDC4DC75F87EDD99128DAD5E72F2E01 /* F3DEX.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F3DEX.cpp; sourceTree = ""; }; - 8EDF76EEB504EA9C6E5BC40133A1CD4A /* scmrev.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = scmrev.h; sourceTree = ""; }; - 8EFD8985D9D458061044366EA21D92D1 /* saves.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = saves.h; sourceTree = ""; }; - 8F019EECEDEE94193FB93DF2C97DADEF /* NstBoardMmc1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardMmc1.hpp; sourceTree = ""; }; - 8F1515158687796190C1EF96243E6A9E /* GLideNUI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GLideNUI.h; sourceTree = ""; }; - 8F3B43B9B9A8070F8E97D878287EAEDF /* SMCalloutView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SMCalloutView.h; sourceTree = ""; }; - 8F3E1A7FCFBED0C2B25120A907814BB8 /* GPU3D_OpenGL_shaders.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GPU3D_OpenGL_shaders.h; sourceTree = ""; }; - 8F4912D5F8E8AA63C9F6417DD320A1C6 /* ZIPFoundation-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ZIPFoundation-umbrella.h"; sourceTree = ""; }; - 8F944213B654D98DA43EE01ACF70AB4D /* NstBoardBmc36in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc36in1.hpp; sourceTree = ""; }; - 8F9F113CDF0897B7162BDC16B4BEEA31 /* DropboxTeamClient.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DropboxTeamClient.swift; path = Source/SwiftyDropbox/Shared/Handwritten/DropboxTeamClient.swift; sourceTree = ""; }; - 8FA29D4654D1F213EADECF1C44D9BBE3 /* Roxas.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Roxas.debug.xcconfig; sourceTree = ""; }; - 8FCA6104ED07A1CCFFB1B9709D453474 /* ContextSettings.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = ContextSettings.hpp; sourceTree = ""; }; - 8FEBFCD698F542D5FE33636ACFE7EA51 /* Color.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Color.hpp; sourceTree = ""; }; - 903F29A93503BCB112A51EA2744B678C /* ThreadLocal.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = ThreadLocal.hpp; sourceTree = ""; }; - 90540DEF7A0BEA009234C3402F2936A8 /* Utf.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Utf.hpp; sourceTree = ""; }; - 906A51BA9CD5D535CC8438E8AE2856A1 /* SQLiteObjc.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SQLiteObjc.m; path = Sources/SQLiteObjc/SQLiteObjc.m; sourceTree = ""; }; - 90750F17E4FE1687675390836DF8A844 /* Standard.deltaskin */ = {isa = PBXFileReference; includeInIndex = 1; path = Standard.deltaskin; sourceTree = ""; }; - 90991BD2C4BD55D140AC55B44C35FB69 /* NstBoardUnlSuperFighter3.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardUnlSuperFighter3.hpp; sourceTree = ""; }; - 90A3FE5B2140BA3DAE5D3FEABAA60BE7 /* missing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = missing.h; sourceTree = ""; }; - 90DD17ABEA9E2CF8EFA5A0640BBF5256 /* Savestate.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Savestate.cpp; sourceTree = ""; }; - 910356BEBB46C3A3795DFE61CA0E7710 /* NSString+Localization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+Localization.m"; path = "Roxas/NSString+Localization.m"; sourceTree = ""; }; - 912F269028E7AF5014AC2F20248AA813 /* TxCache.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TxCache.cpp; sourceTree = ""; }; - 9171559D6EEC0F5564085AFA32A8CC96 /* Savestate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Savestate.h; sourceTree = ""; }; - 91A5E87770C71D3A8C481107060FB395 /* screenshot.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = screenshot.h; sourceTree = ""; }; - 91A8104A8577AC41EB121AEA616EA3E6 /* inputSDL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = inputSDL.h; sourceTree = ""; }; - 91B02935A6F9394D3AD6C23B416F1111 /* Rect.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Rect.hpp; sourceTree = ""; }; - 91D6EF33C40FBE5178F5D4A25205F2CC /* Standard.deltaskin */ = {isa = PBXFileReference; includeInIndex = 1; path = Standard.deltaskin; sourceTree = ""; }; - 921321EFE30058B51BD783A8231B1644 /* GBADeltaCore.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GBADeltaCore.release.xcconfig; sourceTree = ""; }; - 921AD788C442F823555202B44D3AF160 /* SDImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCache.m; path = SDWebImage/SDImageCache.m; sourceTree = ""; }; - 9265E3D9F1667F3A362493594E094FAD /* GTMSessionFetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionFetcher.h; path = Source/GTMSessionFetcher.h; sourceTree = ""; }; - 92826FF6C95AEC7E23536C6230E33DFA /* getopt.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = getopt.h; sourceTree = ""; }; - 92BF3D469815BCF258E55BDED1A6BB5D /* ThumbstickInputView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ThumbstickInputView.swift; sourceTree = ""; }; - 92EAC7CE772F5EEE8CA0E1D5CC0DF8DA /* TxQuantize.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TxQuantize.h; sourceTree = ""; }; - 93437D2EFA2DF3188772EC34BFBEB1D6 /* Event.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Event.hpp; sourceTree = ""; }; - 9349A6776672039326D8D1986343C528 /* NstBoardSunsoftFme7.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSunsoftFme7.hpp; sourceTree = ""; }; - 936486BEC6113E922ACF1D26C14FA268 /* rasterize.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = rasterize.h; sourceTree = ""; }; - 937B73F8FBAE7506CA34734C3D196DA3 /* opengl_GLInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = opengl_GLInfo.h; sourceTree = ""; }; - 938A5B97E785BDB6AB90DC57C73C6EEA /* GBADeltaCore.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GBADeltaCore.modulemap; sourceTree = ""; }; - 93A121B571D4B11C8FA8B0A1137CA0DD /* GBADeltaCore-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GBADeltaCore-prefix.pch"; sourceTree = ""; }; - 93A9285617980163E2A30BF8523D50B7 /* RecordRepresentation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RecordRepresentation.swift; sourceTree = ""; }; - 93AF0E5AB88071086B8030C74B51B509 /* Version.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Version.swift; sourceTree = ""; }; - 93CF7202730B19C9887B59D40AC2C856 /* BatchRecordOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BatchRecordOperation.swift; sourceTree = ""; }; - 94100AFE450517301A8346E816B27917 /* NstBoardBmcSuperHiK4in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcSuperHiK4in1.hpp; sourceTree = ""; }; - 9428B8A7A37F792EB00157F40ED883BB /* CustomRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomRoutes.swift; path = Source/SwiftyDropbox/Shared/Handwritten/CustomRoutes.swift; sourceTree = ""; }; - 9474F9684F9F50E4DCFF007A45288D6E /* NstBoardBtlGeniusMerioBros.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBtlGeniusMerioBros.hpp; sourceTree = ""; }; - 94851A975DEF22A43042DB9E7D71F801 /* glsl_ShaderStorage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = glsl_ShaderStorage.h; sourceTree = ""; }; - 94F5D89236B344C4DD052FE9AB17ACC3 /* GTMSessionUploadFetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionUploadFetcher.h; path = Source/GTMSessionUploadFetcher.h; sourceTree = ""; }; - 94FE76DE5D5A9568223AB04C135E60EF /* NstBoardIremG101.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardIremG101.hpp; sourceTree = ""; }; - 9547FE6CD4373B25D13B8B2E6EB613B9 /* melonDLDI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = melonDLDI.h; sourceTree = ""; }; - 955B912BE5DE9EC545281531DEA7BF23 /* svgxval.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svgxval.h; sourceTree = ""; }; - 95CD9DA178E8F2C3E9F09D0EA74AB12F /* file_storage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = file_storage.h; sourceTree = ""; }; - 95EE0A30DD5CF66C076753559A7A9A82 /* NSBundle+Extensions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBundle+Extensions.h"; path = "Roxas/NSBundle+Extensions.h"; sourceTree = ""; }; - 95F049847BEE0BF36EF6E045A5A6260D /* DSDeltaCore-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DSDeltaCore-prefix.pch"; sourceTree = ""; }; - 9672B0303F5AE277B3ACBA2384B33261 /* ftbitmap.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftbitmap.h; sourceTree = ""; }; - 96852635ABD2522BA2288FB805549111 /* DSi_SPI_TSC.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DSi_SPI_TSC.cpp; sourceTree = ""; }; - 96B9C98AE2FB1703F672AE93E973DBA9 /* NstInpPowerGlove.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpPowerGlove.hpp; sourceTree = ""; }; - 96BCD6BE0EB86E1B5F57CD3844166D67 /* NstBoardSomeriTeam.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSomeriTeam.hpp; sourceTree = ""; }; - 96D01A6211DFD9C25AF356CB28F74829 /* GBASoundDriver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBASoundDriver.h; sourceTree = ""; }; - 96E188C108DEE0C4CDF36B16B432DEE5 /* AAFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = AAFilter.h; sourceTree = ""; }; - 96EA1B6F86E72E7EE50B4592F4B566BD /* NstBoardUnlA9746.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardUnlA9746.hpp; sourceTree = ""; }; - 970287FEF0704F01287D296CEF107F35 /* svprop.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svprop.h; sourceTree = ""; }; - 97234F66C0EE37E07C7A12FE8D652606 /* NstBoardSuperGameLionKing.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSuperGameLionKing.hpp; sourceTree = ""; }; - 9733C7EBAFF0927A8F7A245AE45E8DBB /* GBATypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBATypes.h; sourceTree = ""; }; - 973778669A7B93DFC19BDCA51E2A5DDD /* GBCDeltaCore-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GBCDeltaCore-prefix.pch"; sourceTree = ""; }; - 974A5A80FEF9ADAB76EC64F1ED289A72 /* SPU.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = SPU.cpp; sourceTree = ""; }; - 974F93E63CE627277EF8D2353E2919F1 /* NstVideoFilter2xSaI.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstVideoFilter2xSaI.hpp; sourceTree = ""; }; - 9750FEC33D895C61AEF436CC327ACFCA /* CRC32.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CRC32.h; sourceTree = ""; }; - 975DDCEED3B7F45741E5AEA5A85A0195 /* pngrio.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pngrio.c; sourceTree = ""; }; - 978AEBEF5F9470DD343827FA8A8BC268 /* alist_audio.c */ = {isa = PBXFileReference; includeInIndex = 1; path = alist_audio.c; sourceTree = ""; }; - 97A544C5CBC9D92E0315967EFEF1D6E4 /* CommonAPIImpl_common.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = CommonAPIImpl_common.cpp; sourceTree = ""; }; - 9816EFF6A2268AAEA7B1C19BBE416477 /* Mupen64Plus.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = Mupen64Plus.bundle; path = "N64DeltaCore-Mupen64Plus.bundle"; sourceTree = BUILT_PRODUCTS_DIR; }; - 982A1762207DCCB41B6F126DFC0E741A /* UISpringTimingParameters+Conveniences.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UISpringTimingParameters+Conveniences.m"; path = "Roxas/UISpringTimingParameters+Conveniences.m"; sourceTree = ""; }; - 984F66A44670774FAEAB1733FDCC4480 /* screenshot.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = screenshot.h; sourceTree = ""; }; - 98B8FFB08403FFC14B3F37F916E6903D /* pngmem.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pngmem.c; sourceTree = ""; }; - 98D8B9C03706EA64A98272C9B5617C09 /* UIImageView+HighlightedWebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+HighlightedWebCache.m"; path = "SDWebImage/UIImageView+HighlightedWebCache.m"; sourceTree = ""; }; - 98E96F11787557393A1214824C033C34 /* msu1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = msu1.h; sourceTree = ""; }; - 990DFA0F64EC73731FE3D33EDE671F46 /* NESDeltaCore.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = NESDeltaCore.debug.xcconfig; sourceTree = ""; }; - 992E41C587003D0F3D48E308026E7D20 /* RSTCellContentDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCellContentDataSource.h; path = Roxas/RSTCellContentDataSource.h; sourceTree = ""; }; - 9952547823CAC65BEE64985C660ACB9C /* NstVideoFilterHqX.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstVideoFilterHqX.hpp; sourceTree = ""; }; - 99557512F6F1C9CB9AB24DCF9D1AEAD6 /* UITableViewCell+CellContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableViewCell+CellContent.m"; path = "Roxas/UITableViewCell+CellContent.m"; sourceTree = ""; }; - 9974973908E60B47C73C05DC6F615D72 /* ZSortBOSS.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ZSortBOSS.cpp; sourceTree = ""; }; - 9998929B47BFB3D5C9FB8D8B6A9D4556 /* bitmap_font.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = bitmap_font.h; sourceTree = ""; }; - 99A2A534EF6CE4D5F68542D66A356B39 /* NstBoardBmcSuper24in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcSuper24in1.hpp; sourceTree = ""; }; - 99AEE6ADFB88CAB41DFBDDECF8B7708E /* MelonDSDeltaCore.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MelonDSDeltaCore.release.xcconfig; sourceTree = ""; }; - 9A0F202FAF19801B8E53A77AE636FB69 /* assemble.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = assemble.h; sourceTree = ""; }; - 9A139AD5491148B868F3054FD397E659 /* GoogleSignIn.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = GoogleSignIn.bundle; path = Resources/GoogleSignIn.bundle; sourceTree = ""; }; - 9A69779C7CE90E43C61DC0446CE1DBB5 /* SMCalloutView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SMCalloutView.release.xcconfig; sourceTree = ""; }; - 9A994D0970557F8DBF425A2E6710A042 /* GTMSessionFetcher.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GTMSessionFetcher.debug.xcconfig; sourceTree = ""; }; - 9AA4A76158FC76286A207229EAE68AC7 /* pi_controller.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pi_controller.h; sourceTree = ""; }; - 9AAEFE6F2984D8240D2B90773A6550F4 /* emufile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = emufile.h; sourceTree = ""; }; - 9AC563A650C1757E513BD89868F66EC5 /* NstBoardBmc64in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc64in1.hpp; sourceTree = ""; }; - 9ACA261D60E7D6D3A3AD8AF6EF5497F4 /* glsl_FXAA.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = glsl_FXAA.h; sourceTree = ""; }; - 9AD902A56CCE972EB5C283E7E6C49040 /* GoogleAPIClientForREST.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GoogleAPIClientForREST.modulemap; sourceTree = ""; }; - 9ADD34F7EAAFEB87DB50E40EC1A3BFCB /* svpsinfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svpsinfo.h; sourceTree = ""; }; - 9B04E2521633106239083E05C1A35E15 /* NstBoardSuperGamePocahontas2.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSuperGamePocahontas2.hpp; sourceTree = ""; }; - 9B3504BF3C9DA060E193A650BBB63861 /* GBCDeltaCore.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GBCDeltaCore.release.xcconfig; sourceTree = ""; }; - 9B405C81D69384A18E8F08EDB915B086 /* vi_controller.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = vi_controller.h; sourceTree = ""; }; - 9B90429F17069F50CA065D66C7BA9614 /* SwiftyDropbox.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SwiftyDropbox.h; path = Source/SwiftyDropbox/Shared/Handwritten/SwiftyDropbox.h; sourceTree = ""; }; - 9B95FB2C3FC8B2A397359CB1368E031E /* driver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = driver.h; sourceTree = ""; }; - 9BE77D2A3CB6CD19078D5DA6CFB64EB9 /* dd_controller.c */ = {isa = PBXFileReference; includeInIndex = 1; path = dd_controller.c; sourceTree = ""; }; - 9BF7FD2B19DF65538E3B5A98731A2AEE /* TxUtil.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TxUtil.cpp; sourceTree = ""; }; - 9C09C3D1334AECB063BC1FD83DF8C448 /* arm_cpu_features.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = arm_cpu_features.h; sourceTree = ""; }; - 9C3D8F92D8501FC968C6E29C8CDE5588 /* NstVideoFilterxBR.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstVideoFilterxBR.hpp; sourceTree = ""; }; - 9C759217D7F7F9F5528B957A3C21E86B /* SoundFileReader.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = SoundFileReader.hpp; sourceTree = ""; }; - 9C7F4857C4B19B71934451055891D8A1 /* rdp_core.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = rdp_core.h; sourceTree = ""; }; - 9C8920E8DED2BF5AE5A7D8740EDA32DC /* NstBoardWaixingSgz.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardWaixingSgz.hpp; sourceTree = ""; }; + 5DD63E31BA02D76CA3E8415ABF10117E /* Result+Success.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Result+Success.swift"; sourceTree = ""; }; + 5FFA2F4ACD8A60D36B57704367A98B2F /* UIImage+MultiFormat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MultiFormat.m"; path = "SDWebImage/UIImage+MultiFormat.m"; sourceTree = ""; }; + 614B12A54165D2E147D0F59BE6F7F0E4 /* PropertyGroup+Harmony.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PropertyGroup+Harmony.swift"; sourceTree = ""; }; + 616AA8C503BA79082DDDC3A78D524494 /* SeenState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SeenState.swift; path = Source/SwiftyDropbox/Shared/Generated/SeenState.swift; sourceTree = ""; }; + 61966463CBC71ED02A3E101494AC9086 /* NSLayoutConstraint+Edges.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSLayoutConstraint+Edges.m"; path = "Roxas/NSLayoutConstraint+Edges.m"; sourceTree = ""; }; + 619BFB4BE368F906AA4A8EDECB4C1E80 /* GTMDebugThreadValidation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMDebugThreadValidation.h; path = DebugUtils/GTMDebugThreadValidation.h; sourceTree = ""; }; + 61C43BDE058ECC24885E698E51468B08 /* GTMMIMEDocument.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMMIMEDocument.h; path = Source/GTMMIMEDocument.h; sourceTree = ""; }; + 631FDCF5623C5A48ACB6BD748EA090EC /* RSTCellContentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCellContentView.h; path = Roxas/RSTCellContentView.h; sourceTree = ""; }; + 64034B603637F76695726D8E9224EF12 /* BaseTeam.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BaseTeam.swift; path = Source/SwiftyDropbox/Shared/Generated/BaseTeam.swift; sourceTree = ""; }; + 645056EFF3FD5F3115893C78A2343F92 /* Expression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Expression.swift; path = Sources/SQLite/Typed/Expression.swift; sourceTree = ""; }; + 6489AF4920604679F13DAC243B172A5E /* Roxas.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Roxas.debug.xcconfig; sourceTree = ""; }; + 64D30120C2D5B20D076A14852E1448C9 /* Result+Dropbox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Result+Dropbox.swift"; sourceTree = ""; }; + 653E5BD75990FD287A14F29C045BF213 /* SMClassicCalloutView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SMClassicCalloutView.m; sourceTree = ""; }; + 6591BB3EFD2C2F62DD4AA134D08304C3 /* Coding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Coding.swift; path = Sources/SQLite/Typed/Coding.swift; sourceTree = ""; }; + 65A0AD4AC201EB8D96B8F23E0695AD06 /* Foundation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Foundation.swift; path = Sources/SQLite/Foundation.swift; sourceTree = ""; }; + 65CA7F5911D0A25087F844E89720FD78 /* CLSStackFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSStackFrame.h; path = iOS/Crashlytics.framework/Headers/CLSStackFrame.h; sourceTree = ""; }; + 668F04939465474860821A00FCE198D6 /* Operators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Operators.swift; path = Sources/SQLite/Typed/Operators.swift; sourceTree = ""; }; + 670595C2D7BD6AD4D6570F4F0E86A2FB /* Harmony.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Harmony.h; path = Harmony/Harmony.h; sourceTree = ""; }; + 67171B182B66B992DB05C17163644E23 /* UICollectionView+CellContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UICollectionView+CellContent.m"; path = "Roxas/UICollectionView+CellContent.m"; sourceTree = ""; }; + 674DA6ED603959E5F24CB282D3656C0A /* Harmony.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Harmony.debug.xcconfig; sourceTree = ""; }; + 67B168193A9B9A7114A6D66720C71E6A /* Auth.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Auth.swift; path = Source/SwiftyDropbox/Shared/Generated/Auth.swift; sourceTree = ""; }; + 6818DE698B7C244C6A7117D0403EB58A /* RSTLoadOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTLoadOperation.h; path = Roxas/RSTLoadOperation.h; sourceTree = ""; }; + 68671438132F11B6C9569C0CA93DF99E /* GTMSessionFetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionFetcher.m; path = Source/GTMSessionFetcher.m; sourceTree = ""; }; + 68BEE73B150BEA72E8CDCDC7AD7FFE45 /* MultipartFormData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MultipartFormData.swift; path = Source/MultipartFormData.swift; sourceTree = ""; }; + 6A2B6D89BA49499D48BD566164CAC09B /* RSTOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTOperation.m; path = Roxas/RSTOperation.m; sourceTree = ""; }; + 6A4557094546318F4BB1CB7515DBDBB0 /* ManagedRecord+Uploading.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "ManagedRecord+Uploading.swift"; sourceTree = ""; }; + 6AFFCCC1C14E863EACE17B7906A9F5F7 /* UIImage+MultiFormat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MultiFormat.h"; path = "SDWebImage/UIImage+MultiFormat.h"; sourceTree = ""; }; + 6B0C96EEE8BB175E992057B639666986 /* RSTDynamicDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTDynamicDataSource.m; path = Roxas/RSTDynamicDataSource.m; sourceTree = ""; }; + 6C217B1D470D67BFDE20D91DEF2F3C0C /* Harmony-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Harmony-dummy.m"; sourceTree = ""; }; + 6C417FF7A8D0C337B615D8B06070CC18 /* RSTPlaceholderView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTPlaceholderView.m; path = Roxas/RSTPlaceholderView.m; sourceTree = ""; }; + 6C55207AB65A6D380BFB3D304035DB1C /* DropboxClient.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DropboxClient.swift; path = Source/SwiftyDropbox/Shared/Handwritten/DropboxClient.swift; sourceTree = ""; }; + 6CA2772AD93DCDBC01C2E7384538B9AF /* CustomFunctions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomFunctions.swift; path = Sources/SQLite/Typed/CustomFunctions.swift; sourceTree = ""; }; + 6CBDB4B38203396A8BDBB2611783C40B /* Statement.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Statement.swift; path = Sources/SQLite/Core/Statement.swift; sourceTree = ""; }; + 6CC3A88F6A10243620F79D46751C74A4 /* Account.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Account.swift; sourceTree = ""; }; + 6DB86817F8E387CD37052ED22E7F2A95 /* GTLRDriveObjects.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRDriveObjects.m; path = Source/GeneratedServices/Drive/GTLRDriveObjects.m; sourceTree = ""; }; + 6DD6D3ECB0AA60B8483858D13383CDBF /* SDWebImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SDWebImage-dummy.m"; sourceTree = ""; }; + 6DFC8462E87F1A24AE70F9FCDBDEE905 /* RecordRepresentation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RecordRepresentation.swift; sourceTree = ""; }; + 6E2D61118AA3383BE1427AD561F7368E /* DriveService+Records.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DriveService+Records.swift"; path = "Backends/Drive/Harmony-Drive/DriveService+Records.swift"; sourceTree = ""; }; + 6E7A43CE0B0458FE46C514110873F37A /* GoogleSignIn.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleSignIn.release.xcconfig; sourceTree = ""; }; + 6F569EDFDA62114944EC1BE586F8F916 /* CustomTasks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomTasks.swift; path = Source/SwiftyDropbox/Shared/Handwritten/CustomTasks.swift; sourceTree = ""; }; + 706BF7C3B4BF64271D623F58DE3CA39A /* Crashlytics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Crashlytics.framework; path = iOS/Crashlytics.framework; sourceTree = ""; }; + 70D716720D6847D1C1BC0D9510525175 /* GTMReadMonitorInputStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMReadMonitorInputStream.m; path = Source/GTMReadMonitorInputStream.m; sourceTree = ""; }; + 716975BE9CD340CF781E0AF49D8555F6 /* SDWebImagePrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImagePrefetcher.h; path = SDWebImage/SDWebImagePrefetcher.h; sourceTree = ""; }; + 71BC1B535CFCE3126C56F52DD66FAB73 /* RSTNavigationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTNavigationController.m; path = Roxas/RSTNavigationController.m; sourceTree = ""; }; + 725B2447703DDB1DC47E54D23D6B5609 /* AggregateFunctions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AggregateFunctions.swift; path = Sources/SQLite/Typed/AggregateFunctions.swift; sourceTree = ""; }; + 7345B422CE7E5E83753F7A060FF2D300 /* UIView+WebCacheOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheOperation.h"; path = "SDWebImage/UIView+WebCacheOperation.h"; sourceTree = ""; }; + 74D4F586F68FEE99E3E4248E0E3BD177 /* RSTCompositeDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCompositeDataSource.h; path = Roxas/RSTCompositeDataSource.h; sourceTree = ""; }; + 75B174C18ECA7E9C4F8B0778F4546A60 /* GTLRURITemplate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRURITemplate.h; path = Source/Utilities/GTLRURITemplate.h; sourceTree = ""; }; + 7632D02ABB0ADB8514EF7C1E9DDD782B /* Harmony-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Harmony-umbrella.h"; sourceTree = ""; }; + 76B865E16D6331F37FD025B724C6D9F4 /* RSTArrayDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTArrayDataSource.h; path = Roxas/RSTArrayDataSource.h; sourceTree = ""; }; + 784F252B00C093E4B76B5330B3E96D29 /* GTLRBase64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRBase64.h; path = Source/Utilities/GTLRBase64.h; sourceTree = ""; }; + 787A86333DCB72C06010245EDE6B0712 /* NSManagedObjectContext+Harmony.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "NSManagedObjectContext+Harmony.swift"; sourceTree = ""; }; + 78D45C1AD1DB0DE9B1EC5920BC41CC0A /* RTree.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RTree.swift; path = Sources/SQLite/Extensions/RTree.swift; sourceTree = ""; }; + 7994ABEE8624B64EAD90EABC91D012B2 /* AuthRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/AuthRoutes.swift; sourceTree = ""; }; + 7B5A2732251DB4000415E75BE99B6062 /* Syncable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Syncable.swift; sourceTree = ""; }; + 7BC2274A09D9C43A3672A1B5D31398FE /* GTLRObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRObject.h; path = Source/Objects/GTLRObject.h; sourceTree = ""; }; + 7BCB85A76CF766C0F24C828044FBFF67 /* RSTRelationshipPreservingMergePolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTRelationshipPreservingMergePolicy.m; path = Roxas/RSTRelationshipPreservingMergePolicy.m; sourceTree = ""; }; + 7BD1DCE8B41E489F31B299E91C0CC70C /* TeamCommon.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TeamCommon.swift; path = Source/SwiftyDropbox/Shared/Generated/TeamCommon.swift; sourceTree = ""; }; + 7D74B23EB57FCB0E3488FC3A6F88A191 /* CLSAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSAttributes.h; path = iOS/Crashlytics.framework/Headers/CLSAttributes.h; sourceTree = ""; }; + 7DD1D0E6200107424B7024889A647F94 /* RSTFetchedResultsDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTFetchedResultsDataSource.m; path = Roxas/RSTFetchedResultsDataSource.m; sourceTree = ""; }; + 7E5DD6A57AD32001B35729CD3C312BD8 /* GoogleToolboxForMac-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GoogleToolboxForMac-dummy.m"; sourceTree = ""; }; + 7F072EE3507CBD2134100DA9E25F9860 /* RSTCellContentPrefetchingDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCellContentPrefetchingDataSource.h; path = Roxas/RSTCellContentPrefetchingDataSource.h; sourceTree = ""; }; + 7F3FF3A19661A95D806B423923D49521 /* Harmony-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Harmony-prefix.pch"; sourceTree = ""; }; + 7F6764818F9C610E4A853F410D1E68FB /* Paper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Paper.swift; path = Source/SwiftyDropbox/Shared/Generated/Paper.swift; sourceTree = ""; }; + 7FA63AFAD02B836FD0B1EC4CB4230DDA /* SessionDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SessionDelegate.swift; path = Source/SessionDelegate.swift; sourceTree = ""; }; + 80067C5F868766B0F35A2739F5EE8C83 /* AnyKeyPath+StringValue.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "AnyKeyPath+StringValue.swift"; sourceTree = ""; }; + 80FF2E256C5932A731650E5E37414ADB /* TeamLog.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TeamLog.swift; path = Source/SwiftyDropbox/Shared/Generated/TeamLog.swift; sourceTree = ""; }; + 8193F3ABA6FA2FBE0BE62849C8B8D43C /* ANSCompatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ANSCompatibility.h; path = iOS/Crashlytics.framework/Headers/ANSCompatibility.h; sourceTree = ""; }; + 8438943FC79C2F08F98E93A1B0F37077 /* SDWebImage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.release.xcconfig; sourceTree = ""; }; + 853CB1BB7D85A6528B399DAC229AAB8D /* GTMSessionFetcherService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionFetcherService.m; path = Source/GTMSessionFetcherService.m; sourceTree = ""; }; + 8588CE713C88B9E6A4A835773131C383 /* RSTHasher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTHasher.m; path = Roxas/RSTHasher.m; sourceTree = ""; }; + 85DA9DA81CE6AB2A37F0C59609E6F9D5 /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Source/Result.swift; sourceTree = ""; }; + 86B069F806610A53B6B5097DC57C7881 /* SDWebImageCompat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCompat.m; path = SDWebImage/SDWebImageCompat.m; sourceTree = ""; }; + 86F67A3D1CDD7354DAACCDBE6B83E00A /* DropboxService+Records.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DropboxService+Records.swift"; path = "Backends/Dropbox/Harmony-Dropbox/DropboxService+Records.swift"; sourceTree = ""; }; + 871CE360CEA3654D2792FB1A91BC9FD6 /* Alamofire-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Alamofire-prefix.pch"; sourceTree = ""; }; + 87FD769EBB243EFD035EA713B8B145C5 /* GTLRErrorObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRErrorObject.m; path = Source/Objects/GTLRErrorObject.m; sourceTree = ""; }; + 882644118240178432B7BD688490FD24 /* SDWebImageOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOperation.h; path = SDWebImage/SDWebImageOperation.h; sourceTree = ""; }; + 88A4F52882FCCF2DE266E99C040AE7CD /* SQLiteObjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SQLiteObjc.h; path = Sources/SQLiteObjc/include/SQLiteObjc.h; sourceTree = ""; }; + 890F95B5CA062D9B6154E9EFF0DD5AFB /* DispatchQueue+Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DispatchQueue+Alamofire.swift"; path = "Source/DispatchQueue+Alamofire.swift"; sourceTree = ""; }; + 898274DFDBF0966DEFFE52F556DE9705 /* fts3_tokenizer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fts3_tokenizer.h; path = Sources/SQLiteObjc/fts3_tokenizer.h; sourceTree = ""; }; + 8AB3F9BCFFE3A0E850757B2047103ACD /* Fabric.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Fabric.framework; path = iOS/Fabric.framework; sourceTree = ""; }; + 8AF7510AB9F67B49A8568C2B7C761D71 /* UpdateRecordMetadataOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = UpdateRecordMetadataOperation.swift; sourceTree = ""; }; + 8D3659B01B09AAE42557E524A27316EF /* GTMSessionFetcherLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionFetcherLogging.h; path = Source/GTMSessionFetcherLogging.h; sourceTree = ""; }; + 8DA649E84D76C639CF89CE073B97125A /* NSPredicate+Search.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSPredicate+Search.h"; path = "Roxas/NSPredicate+Search.h"; sourceTree = ""; }; + 8EA6604C4C374FADB751B07390263397 /* ContactsRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ContactsRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/ContactsRoutes.swift; sourceTree = ""; }; + 8F9A608AE45DDBBB79571812788A19E8 /* DeleteRecordsOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DeleteRecordsOperation.swift; sourceTree = ""; }; + 8FB4B0452C796E5FB31A64D7A44B53E6 /* GTLRDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDefines.h; path = Source/GTLRDefines.h; sourceTree = ""; }; + 90ABADB85250EDEB806688C92B98A056 /* RSTBlockOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTBlockOperation.h; path = Roxas/RSTBlockOperation.h; sourceTree = ""; }; + 92278C21D42FE3CA639D84B8AC7E7EC9 /* KeyedContainers+ManagedValues.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "KeyedContainers+ManagedValues.swift"; sourceTree = ""; }; + 92A31A082A6C5A376495F4E8C563AE3F /* Helpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Helpers.swift; path = Sources/SQLite/Helpers.swift; sourceTree = ""; }; + 92BAD4F6E4F15BF8E973D865E7BF4B67 /* Operation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Operation.swift; sourceTree = ""; }; + 9304976C28337B980C64A1D91C8AF382 /* GTLRObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRObject.m; path = Source/Objects/GTLRObject.m; sourceTree = ""; }; + 934018CB19D9EB2B799350E4BEBB20FC /* NSString+Localization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+Localization.m"; path = "Roxas/NSString+Localization.m"; sourceTree = ""; }; + 93D00DF366B8E0DFFA6ACDDB3D8CD5E9 /* RSTCellContentChangeOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTCellContentChangeOperation.m; path = Roxas/RSTCellContentChangeOperation.m; sourceTree = ""; }; + 94668AB9EEABC1C5F9D732F0607DE3D0 /* GTLRUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRUtilities.m; path = Source/Utilities/GTLRUtilities.m; sourceTree = ""; }; + 94D66E33D9DD856007A9C14EB1634262 /* SMClassicCalloutView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SMClassicCalloutView.h; sourceTree = ""; }; + 950CD3BC7E1EB772BBBFB8B5D3EF4BBC /* UISpringTimingParameters+Conveniences.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UISpringTimingParameters+Conveniences.h"; path = "Roxas/UISpringTimingParameters+Conveniences.h"; sourceTree = ""; }; + 9513E61E8CF8CA83CB229CB898FB8FFB /* GoogleAPIClientForREST-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleAPIClientForREST-umbrella.h"; sourceTree = ""; }; + 96951DA3D56E7525403BD8C89A47BA17 /* SyncProgress.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SyncProgress.swift; sourceTree = ""; }; + 971A03A698C27E134415B6A1BCC73D06 /* RSTPersistentContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTPersistentContainer.h; path = Roxas/RSTPersistentContainer.h; sourceTree = ""; }; + 97B62592CB380C117D0C6FD312E122CC /* SwiftyDropbox-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftyDropbox-dummy.m"; sourceTree = ""; }; + 98811B0AE8FC082046E0ADF4574AD3A4 /* FilePropertiesRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FilePropertiesRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/FilePropertiesRoutes.swift; sourceTree = ""; }; + 988C700EAC6CFAEFFA2D7AA935237F98 /* Fabric.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Fabric.h; path = iOS/Fabric.framework/Headers/Fabric.h; sourceTree = ""; }; + 98DF1E5529C077369D7120476DA5063B /* GTMSessionUploadFetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionUploadFetcher.m; path = Source/GTMSessionUploadFetcher.m; sourceTree = ""; }; + 98F518F5DC6FB2FEC7C37CE05451F51B /* GTMNSDictionary+URLArguments.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "GTMNSDictionary+URLArguments.m"; path = "Foundation/GTMNSDictionary+URLArguments.m"; sourceTree = ""; }; + 994471510E3F8110E8E5C89D839C15A4 /* DropboxService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DropboxService.swift; path = "Backends/Dropbox/Harmony-Dropbox/DropboxService.swift"; sourceTree = ""; }; + 9AC67F7F185BEF874EEAEB0A2FD9DBA1 /* Harmony.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Harmony.modulemap; sourceTree = ""; }; + 9B92A814F5D5ED402320C4ACCDA8CB15 /* GTMSessionFetcherLogging.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionFetcherLogging.m; path = Source/GTMSessionFetcherLogging.m; sourceTree = ""; }; 9CA80A61ABF26FA89F4E22A30284B0DD /* libPods-Delta.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = "libPods-Delta.a"; path = "libPods-Delta.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 9CD66BBDECD54165CD02B2A898EE4F26 /* cpuops.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = cpuops.h; sourceTree = ""; }; - 9CDC50A23CCFC7F62517648ADA5BCD7A /* Harmony 2.xcdatamodel */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = wrapper.xcdatamodel; path = "Harmony 2.xcdatamodel"; sourceTree = ""; }; - 9D1E150EA94D5A0A5026F379E1681155 /* SDWebImage-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-umbrella.h"; sourceTree = ""; }; - 9D4ED41C767B511A3663D3BB3EFBA877 /* getset.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = getset.h; sourceTree = ""; }; - 9D91813C4F4C683822BE674046C15A1C /* NstBoardCamerica.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardCamerica.hpp; sourceTree = ""; }; + 9CF24E328C4F51F71C34162874902931 /* SDWebImageDownloaderOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderOperation.m; path = SDWebImage/SDWebImageDownloaderOperation.m; sourceTree = ""; }; + 9D2B20ED20AF4ABA225D32763743F699 /* RSTBlockOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTBlockOperation.m; path = Roxas/RSTBlockOperation.m; sourceTree = ""; }; + 9D6242834425C46B4C3E553C5FCD96E2 /* UploadRecordsOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = UploadRecordsOperation.swift; sourceTree = ""; }; 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9DB51A53121923A71D5DD76A329E4809 /* SoundBufferRecorder.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = SoundBufferRecorder.hpp; sourceTree = ""; }; - 9DB763486903A82BC9B03EBE994F8276 /* movie.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = movie.h; sourceTree = ""; }; - 9DD22189C4F71FFD1596B0827A6F70AF /* eeprom.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = eeprom.h; sourceTree = ""; }; - 9DE70241C62510EEE3541EEE817748AB /* NstBoardBmcSuper700in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcSuper700in1.hpp; sourceTree = ""; }; - 9DE7B55C25EE9E9892BCABEE74C0311A /* DeltaTypes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DeltaTypes.m; path = DeltaCore/DeltaTypes.m; sourceTree = ""; }; - 9E0449EB27DDA97EA184D6B13F251535 /* ftautoh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftautoh.h; sourceTree = ""; }; - 9E1301D5DCEF622F5A8BD8C7EBCB993D /* ffmpeg.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ffmpeg.h; sourceTree = ""; }; - 9E5D25B5C7342ECEF43594F75E916A6A /* NstBoardBandai24c0x.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBandai24c0x.hpp; sourceTree = ""; }; - 9E824187F69AED458A810430496F8133 /* ControllerSkinProtocol.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ControllerSkinProtocol.swift; sourceTree = ""; }; - 9E829053598FCB2162A7028C5496201F /* NstRam.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstRam.hpp; sourceTree = ""; }; - 9E92E2C982AE53605508C9330424A1A4 /* texcache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = texcache.h; sourceTree = ""; }; - 9E9CDE82CCB93756FEC5D7573B4EDC45 /* opengl_ContextImpl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = opengl_ContextImpl.h; sourceTree = ""; }; - 9ED61F68B6658C6137ADBD037F7D43EF /* UIViewController+TransitionState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+TransitionState.h"; path = "Roxas/UIViewController+TransitionState.h"; sourceTree = ""; }; - 9EDB28B68E79CA9174572B03583BAA09 /* N64DeltaCore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = N64DeltaCore.h; sourceTree = ""; }; - 9F02264297230F05D9C1178C000E04EC /* TeamRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TeamRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/TeamRoutes.swift; sourceTree = ""; }; - 9F2A3091CAB6D300DEE1EF9A4A7BBCA3 /* Export.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Export.hpp; sourceTree = ""; }; - 9F439BA0EF4EE1A0246D267E6567EA27 /* GraphicBufferWrapper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GraphicBufferWrapper.h; sourceTree = ""; }; - 9F4D5AEB26500088CAA863CD9E65320E /* F3DEX.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F3DEX.h; sourceTree = ""; }; - 9F4EF96FD8898C3C730731CBB252D71E /* ImmediatePanGestureRecognizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ImmediatePanGestureRecognizer.swift; sourceTree = ""; }; - 9F69C54FACCF68A3770D4110941A594E /* sram.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = sram.h; sourceTree = ""; }; - 9F7FDCCFB6F765E955939AC3412E3FD9 /* AboutDialog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = AboutDialog.h; sourceTree = ""; }; - 9F8650AEEA339AE2603DE32411A2A066 /* NstBoardKasing.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardKasing.hpp; sourceTree = ""; }; - 9F8B1EF5CBC47463811F0885E43429E4 /* ARMJIT_Memory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARMJIT_Memory.h; sourceTree = ""; }; - 9F94AD77DF7A5DA24170D797BA9FBF6A /* mp3.c */ = {isa = PBXFileReference; includeInIndex = 1; path = mp3.c; sourceTree = ""; }; - 9FBEDF35986AA4976C5186CACDC036A7 /* SDWebImageDecoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDecoder.h; path = SDWebImage/SDWebImageDecoder.h; sourceTree = ""; }; - 9FC37464ADA7CDFAE036562BE52B77CC /* Sprite.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Sprite.hpp; sourceTree = ""; }; - 9FC61E19871FEA3703E55822D0376AE0 /* assem_x86.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = assem_x86.h; sourceTree = ""; }; - A01BF8A0B070CCDA516A64A4C89CD25A /* memgzio.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = memgzio.h; sourceTree = ""; }; - A024A97ADEDE582E9EDA110E6B1AF889 /* SDWebImageDownloaderOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderOperation.h; path = SDWebImage/SDWebImageDownloaderOperation.h; sourceTree = ""; }; - A02D556906FE8C4CFDDB3F8D10DF3E4B /* GTLRURITemplate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRURITemplate.h; path = Source/Utilities/GTLRURITemplate.h; sourceTree = ""; }; - A03E19C0995989B6E3E1FFC99B95C5D2 /* SDKConstants.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SDKConstants.swift; path = Source/SwiftyDropbox/Shared/Handwritten/SDKConstants.swift; sourceTree = ""; }; - A05D21B831E3C9BA3583F94F739FD73A /* ri_controller.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ri_controller.h; sourceTree = ""; }; - A0B8B2EE833AD41312D3D1F45FEA8F45 /* libretro_vulkan.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = libretro_vulkan.h; sourceTree = ""; }; - A0DD78048033AA404C173A30426FD703 /* TextDrawerStub.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TextDrawerStub.cpp; sourceTree = ""; }; - A10405CD77CC06E92C329D2A7A416975 /* Syncable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Syncable.swift; sourceTree = ""; }; - A10E14C0CAF47227861648B77555BF32 /* DSTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DSTypes.h; sourceTree = ""; }; - A1109774AE36DB58ADFFBB7C828D8C33 /* MMU_timing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MMU_timing.h; sourceTree = ""; }; - A136EA4F05EDD2CD92B3C8B2884AAFDD /* GTLRBatchResult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRBatchResult.m; path = Source/Objects/GTLRBatchResult.m; sourceTree = ""; }; - A138D602A8841343DB1C84E0E4269422 /* commandline.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = commandline.h; sourceTree = ""; }; - A14CF7FB0D07E8BBB27335EBE6620A79 /* BreakpointStructures.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BreakpointStructures.h; sourceTree = ""; }; - A14F9CC7939A0403867CFDA1DA17BB98 /* DSDeltaCore-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DSDeltaCore-umbrella.h"; sourceTree = ""; }; - A17DF16EB61E5ED813980444D9917B0C /* CheatFormat.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = CheatFormat.swift; sourceTree = ""; }; - A1D2CF25FCF73AEE83F94574C7DA7428 /* NstInpZapper.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpZapper.hpp; sourceTree = ""; }; - A1DC4D0732A2D4A00391980B544DCC7A /* SDWebImageDecoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDecoder.m; path = SDWebImage/SDWebImageDecoder.m; sourceTree = ""; }; - A20561CBEF0349CDEDA9CE05847510FB /* Network.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Network.hpp; sourceTree = ""; }; - A270CCA7A4DB147588E240BAB9CE84A7 /* L3D.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = L3D.h; sourceTree = ""; }; - A2868D67456C98A05671BCD211FF9F38 /* RSTNavigationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTNavigationController.h; path = Roxas/RSTNavigationController.h; sourceTree = ""; }; - A29756AE75089ADED0172EA76A672857 /* NstBoardNRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardNRom.hpp; sourceTree = ""; }; - A2A6EF7556A167FB0E866734AC01F331 /* ResourceBundle-SNESDeltaCore-SNESDeltaCore-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-SNESDeltaCore-SNESDeltaCore-Info.plist"; sourceTree = ""; }; - A323D3FC096EB17C3AD877ACACBE572A /* NstBoardRcm.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardRcm.hpp; sourceTree = ""; }; - A32E44B26076FC3AD91BC42EC4BCDB70 /* Dialogs.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Dialogs.h; sourceTree = ""; }; + 9DD0C64E90429209275BAACF02C906D5 /* GTLRURITemplate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRURITemplate.m; path = Source/Utilities/GTLRURITemplate.m; sourceTree = ""; }; + 9F52A4835492A6E203E4D74C4AE86C58 /* MergePolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MergePolicy.swift; sourceTree = ""; }; + 9FD3E5D0769094E755103884495517F9 /* Sharing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Sharing.swift; path = Source/SwiftyDropbox/Shared/Generated/Sharing.swift; sourceTree = ""; }; + 9FE83ADE360ECFB89A9F195F232E58D9 /* Blob.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Blob.swift; path = Sources/SQLite/Core/Blob.swift; sourceTree = ""; }; + A2745CACE4E1CC4B6A8752D8122EA9B2 /* GTMSessionFetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionFetcher.h; path = Source/GTMSessionFetcher.h; sourceTree = ""; }; A34489EBF25913D7D0197EFF7FA146A3 /* Pods-Delta.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Delta.debug.xcconfig"; sourceTree = ""; }; - A374908C0C4755AE6E7BA5BC3FE0165A /* png.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = png.h; sourceTree = ""; }; - A3AFBD4D6DD33E13C3465A15306A2B00 /* F3DBETA.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F3DBETA.h; sourceTree = ""; }; - A3C2952ABBB60A651284DE34817CDD0A /* defined_ptr.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = defined_ptr.h; sourceTree = ""; }; - A3CF93A75B3CFB18713CD89293600FB8 /* spc7110.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = spc7110.h; sourceTree = ""; }; - A3D65EB1B51D2762008ABC7E328FB4E6 /* GPU2D.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = GPU2D.cpp; sourceTree = ""; }; - A3EB9D3D3D24F94909D61899684B7A77 /* TexrectDrawer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TexrectDrawer.h; sourceTree = ""; }; - A484A1B2E22B7365FC565CB1D2CDDF4E /* ftdebug.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftdebug.h; sourceTree = ""; }; - A4DA561EFD34DE0379D02EC1F3D793B4 /* PaletteTexture.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = PaletteTexture.cpp; sourceTree = ""; }; - A54DF285E6ACE0FD412D98A086B82B96 /* RSTPersistentContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTPersistentContainer.m; path = Roxas/RSTPersistentContainer.m; sourceTree = ""; }; - A55C394180A7F5BED4BCC44E933F7F7D /* svttglyf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svttglyf.h; sourceTree = ""; }; - A593F9E4A4598D119B56497AC7331928 /* GBADeltaCore.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GBADeltaCore.debug.xcconfig; sourceTree = ""; }; - A5B49946963C58320761EF205659BBFE /* Coding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Coding.swift; path = Sources/SQLite/Typed/Coding.swift; sourceTree = ""; }; - A5B95194D64CEE2620808A3F54044158 /* GoogleAPIClientForREST.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleAPIClientForREST.release.xcconfig; sourceTree = ""; }; - A5D25A996047B964BB6083612C8E3C10 /* srtc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = srtc.h; sourceTree = ""; }; - A5DE0B1C0467C130DD9CC22C1D122EDC /* Debugger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Debugger.h; sourceTree = ""; }; - A5EDA5B2FBC98C0A7796342C667A915E /* ftpfr.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftpfr.h; sourceTree = ""; }; - A60275570183365454F240C304CB5477 /* TextureFilters_lq2x.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TextureFilters_lq2x.h; sourceTree = ""; }; - A604EDBD0ED6BCB60B4666DD06603598 /* MFiGameController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = MFiGameController.swift; sourceTree = ""; }; - A6A79C754A41EC8EACF9E49A64F066B6 /* NstPatcherIps.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstPatcherIps.hpp; sourceTree = ""; }; - A6D392CE7A577087ED1A339C6C0BBC11 /* FetchRemoteRecordsOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = FetchRemoteRecordsOperation.swift; sourceTree = ""; }; - A6DC5A0E4D6BFA588B4277D0DDEB1D3A /* Export.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Export.hpp; sourceTree = ""; }; - A706591632D0DD389D06A2E63F9B603A /* memmap.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = memmap.h; sourceTree = ""; }; - A711E43BDFD281D49F7ACEEACA63ABDD /* ZlutTexture.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ZlutTexture.cpp; sourceTree = ""; }; - A74A97B96B6E21A13679A8B0213D16D2 /* NstBoardDreamtech.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardDreamtech.hpp; sourceTree = ""; }; - A7580FDA9275A16B8BC75BE10F6DFF81 /* Standard.deltamapping */ = {isa = PBXFileReference; includeInIndex = 1; path = Standard.deltamapping; sourceTree = ""; }; - A7624756F2E7D96F00D6BA74A924876A /* UIResponder+FirstResponder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIResponder+FirstResponder.swift"; sourceTree = ""; }; - A7B8B5DA4434C64E0E25E63723B73B0A /* interpret.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = interpret.h; sourceTree = ""; }; - A7BB2BCF965C0CFF87F6B6493A78DBEC /* SPU.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SPU.h; sourceTree = ""; }; - A7BCE04E1ED27734F5F2FFB57E444B07 /* NstBoardWaixingSh2.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardWaixingSh2.hpp; sourceTree = ""; }; - A7C7A53DDC963B2490F956E3FF86722E /* VideoManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = VideoManager.swift; sourceTree = ""; }; - A7F7A6E55C8D16B705168398D41EFC3A /* RSTSearchController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTSearchController.m; path = Roxas/RSTSearchController.m; sourceTree = ""; }; - A86BBFC8A328FE8113CD7DCAEA82FB55 /* scoped_ptr.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = scoped_ptr.h; sourceTree = ""; }; - A8A39A015FAAB4B02C5DDC94DE475046 /* GTLRErrorObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRErrorObject.m; path = Source/Objects/GTLRErrorObject.m; sourceTree = ""; }; - A8B5032B26105CA4F0428341F62A22CC /* ftmoderr.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftmoderr.h; sourceTree = ""; }; - A8BFD150AB1327DE01F94CDCC51B3E4C /* RSTError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTError.h; path = Roxas/RSTError.h; sourceTree = ""; }; - A8E6AB2F458571355560DBA9096AB908 /* GTLRService.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRService.m; path = Source/Objects/GTLRService.m; sourceTree = ""; }; - A8ED0088CB2FADEB504C3D5066A2A331 /* NstBoardSunsoft1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSunsoft1.hpp; sourceTree = ""; }; - A8ED31574ED6705EB82A344C14221E7C /* NstBoardBmc800in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc800in1.hpp; sourceTree = ""; }; - A91527BD9D489D25E590B32690DD1FD2 /* TextureFilters.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TextureFilters.cpp; sourceTree = ""; }; - A926D3355F6CDDC80A17A8A29A62AF05 /* SDWebImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageManager.h; path = SDWebImage/SDWebImageManager.h; sourceTree = ""; }; - A9290CB996AE3BE06C249C534C73B0B6 /* Cheats.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Cheats.h; sourceTree = ""; }; - A960DE0A973CA5A4D413E15076178C57 /* GTMSessionFetcher-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GTMSessionFetcher-umbrella.h"; sourceTree = ""; }; - A96F1AF6EE27AE150CDEB7A987B02DAE /* CLSLogging.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSLogging.h; path = iOS/Crashlytics.framework/Headers/CLSLogging.h; sourceTree = ""; }; - A972E09BA9CC2B4E13DEEC72273122F5 /* GTLRBase64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRBase64.m; path = Source/Utilities/GTLRBase64.m; sourceTree = ""; }; - A97DFE65ECE733F3876CF13306D4C68B /* Paper.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Paper.swift; path = Source/SwiftyDropbox/Shared/Generated/Paper.swift; sourceTree = ""; }; - A98C01DAD78582641541607E126B72FB /* Log.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Log.h; sourceTree = ""; }; - A993D39512A6DFB0B6BC9868BB99AB8E /* Standard.deltamapping */ = {isa = PBXFileReference; includeInIndex = 1; name = Standard.deltamapping; path = DSDeltaCore/Standard.deltamapping; sourceTree = ""; }; - A99A7A7B9FB77409F4575F8FB00A0574 /* memory.c */ = {isa = PBXFileReference; includeInIndex = 1; path = memory.c; sourceTree = ""; }; - A9E0566BD9FE840B89D179FC1DE98762 /* RDP.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = RDP.cpp; sourceTree = ""; }; - A9F4D5E300A96F436A0772554431B81A /* GPU.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GPU.h; sourceTree = ""; }; - AA19922E3DF9F35E769BAB98CE4E9BA8 /* loadres.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = loadres.h; sourceTree = ""; }; - AA1C0B3274E804CB44DE0C80AC3E1E9F /* Response.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Response.swift; path = Source/Response.swift; sourceTree = ""; }; - AA41416AF760A4579E38926180FB7E98 /* Async.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Async.swift; path = Source/SwiftyDropbox/Shared/Generated/Async.swift; sourceTree = ""; }; - AA6DF08716A0603270762C90411D74F8 /* sdl_key_converter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = sdl_key_converter.h; sourceTree = ""; }; - AA7A4A8121BD105CCF35B3A9439144CB /* GBI.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = GBI.cpp; sourceTree = ""; }; - AA7AF49EDDC668587A726F59CAAE70DA /* GLideN64.ini */ = {isa = PBXFileReference; includeInIndex = 1; path = GLideN64.ini; sourceTree = ""; }; - AA9541EE30BB71FCCD4C17C22A48E84D /* NstCartridgeInes.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstCartridgeInes.hpp; sourceTree = ""; }; - AAB3476277B58FFBDD42805CCE15EB71 /* ARM.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ARM.cpp; sourceTree = ""; }; - AAFF25207CC13A8FEAED05C5BFA5C899 /* dummy_rsp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = dummy_rsp.h; sourceTree = ""; }; - AAFF741290EFA79792D192D817E9F84F /* Time.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Time.hpp; sourceTree = ""; }; - AB261C44EA772EEDDA15196F06238D47 /* DisplayWindow.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DisplayWindow.cpp; sourceTree = ""; }; - AB6205A6322E0AB9DB06D727D66FF2CD /* NstBoardKay.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardKay.hpp; sourceTree = ""; }; - AB7F635BCF0402E1F025A3881D64913F /* plugins_compat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = plugins_compat.h; sourceTree = ""; }; - AB908F46DC3EF545093A039507FB5ECB /* Crashlytics.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Crashlytics.debug.xcconfig; sourceTree = ""; }; - ABA1589F385B7F9A3694A4D20914974C /* DSi_SD.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DSi_SD.h; sourceTree = ""; }; - ABD749C2D181E66236B780B2F16DA464 /* Harmony.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Harmony.debug.xcconfig; sourceTree = ""; }; - AC15043F6EF032DF3E7AEDCD53E4227D /* wst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = wst.h; sourceTree = ""; }; - AC18F7C57EEA5823F6931A4F4DC3D8C2 /* ZSort.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ZSort.cpp; sourceTree = ""; }; - AC2DF45494986B62F7A3E6F8C593811E /* tima.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = tima.h; sourceTree = ""; }; - AC5241947289CF60377457F6EA7D2F58 /* ftrender.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftrender.h; sourceTree = ""; }; - AC54B6128FC352974C1A8FF402DCB502 /* arithmetics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = arithmetics.h; sourceTree = ""; }; - AC5B45A27A13095F80FE8A891D1E5735 /* pngget.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pngget.c; sourceTree = ""; }; - AC88DE94FE5CA1A718BDFCEEEEB04A8D /* F5Indi_Naboo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F5Indi_Naboo.h; sourceTree = ""; }; - AC89D5569A6FBDDE31EC55DBF2F86B2E /* AuthRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AuthRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/AuthRoutes.swift; sourceTree = ""; }; - AC9179BF930FDFF527CAA3A561F000AF /* Bundle+Resources.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Bundle+Resources.swift"; sourceTree = ""; }; - AC99C95A2973D6876BD5611B8046B243 /* profile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = profile.h; sourceTree = ""; }; - ACB7BE62D01D8529D18C2156032C50F9 /* NstCartridgeRomset.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstCartridgeRomset.hpp; sourceTree = ""; }; - AD38FECB05322CFA65D8B297F68349F8 /* DropboxClient.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DropboxClient.swift; path = Source/SwiftyDropbox/Shared/Handwritten/DropboxClient.swift; sourceTree = ""; }; - AD42DE387B2C0E917AB941E3FD7B6A93 /* remote.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = remote.h; sourceTree = ""; }; - AD5DDDE2BEA93A785ED850AB4D9BD35F /* ttunpat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ttunpat.h; sourceTree = ""; }; - AD693DEDED863272C9B25B41DD69C257 /* NstBoardWaixingPs2.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardWaixingPs2.hpp; sourceTree = ""; }; - AD7E8DA1695D9954D559B5D1CB60DE8D /* UIImage+MultiFormat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MultiFormat.m"; path = "SDWebImage/UIImage+MultiFormat.m"; sourceTree = ""; }; - AD8D9664E08A800A7FCCA31CC84E44EC /* NstTrackerRewinder.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstTrackerRewinder.hpp; sourceTree = ""; }; - ADD7C8EFEAF388836613108B496AEB00 /* L3D.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = L3D.cpp; sourceTree = ""; }; - ADDDC51C343FAF2F99EFEFB0B081E3A4 /* SoundBuffer.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = SoundBuffer.hpp; sourceTree = ""; }; - ADF793502FD046991EE487F895BA270F /* SMClassicCalloutView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SMClassicCalloutView.h; sourceTree = ""; }; - AE067DD6EDFB9B28CCAB86DABADC3349 /* ObjectHandle.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ObjectHandle.cpp; sourceTree = ""; }; + A3DED955C2C6340F0897CDDA63CFE9AC /* SQLite.swift.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SQLite.swift.release.xcconfig; sourceTree = ""; }; + A42DA3EAFBAEFBAB2167275E651A7665 /* SDImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCache.h; path = SDWebImage/SDImageCache.h; sourceTree = ""; }; + A51768E539528CEA1B7B97D0138CD35E /* NSConstraintConflict+Conveniences.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSConstraintConflict+Conveniences.m"; path = "Roxas/NSConstraintConflict+Conveniences.m"; sourceTree = ""; }; + A597A420DB5146A098F4AB91855B44DC /* NSFileManager+URLs.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSFileManager+URLs.m"; path = "Roxas/NSFileManager+URLs.m"; sourceTree = ""; }; + A5B3073C814FD6D70AD385DDB122AF81 /* NSError+LocalizedFailureDescription.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "NSError+LocalizedFailureDescription.swift"; sourceTree = ""; }; + A6D159495A1B644A49638E870FF87A7C /* TeamRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TeamRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/TeamRoutes.swift; sourceTree = ""; }; + A758F8304E0C509FBEAEEA7C0ABC213A /* RSTCollectionViewCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTCollectionViewCell.m; path = Roxas/RSTCollectionViewCell.m; sourceTree = ""; }; + A77B2AFA9090320120D02BCCF6E32E52 /* UsersCommon.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UsersCommon.swift; path = Source/SwiftyDropbox/Shared/Generated/UsersCommon.swift; sourceTree = ""; }; + A7E37EDDD47B8D03EB2F2F576E2A8600 /* Version+Revision.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Version+Revision.swift"; sourceTree = ""; }; + A849A2ACD3230CFB32C3D7A5796338FB /* SyncRecordsOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SyncRecordsOperation.swift; sourceTree = ""; }; + A8AB3DF42282AA17A580B967EF785501 /* SDWebImage-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-umbrella.h"; sourceTree = ""; }; + A9932CB6A29912491EF8B3967E40A8C5 /* NSBundle+Extensions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBundle+Extensions.m"; path = "Roxas/NSBundle+Extensions.m"; sourceTree = ""; }; + AA47CBCD26980FB1A639453C7DC7E3EE /* Contacts.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Contacts.swift; path = Source/SwiftyDropbox/Shared/Generated/Contacts.swift; sourceTree = ""; }; + AB09C444DC64973D518ED9948CC80C26 /* Service.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Service.swift; sourceTree = ""; }; + AC141F3396894BFC35CCC27F6A514EF9 /* RSTLaunchViewController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTLaunchViewController.m; path = Roxas/RSTLaunchViewController.m; sourceTree = ""; }; + AC51849BFBFA867B684764085D303953 /* DropboxService+Files.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DropboxService+Files.swift"; path = "Backends/Dropbox/Harmony-Dropbox/DropboxService+Files.swift"; sourceTree = ""; }; + AD8B24568C6B6828EC0236E1FCA637EF /* GTLRDuration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRDuration.m; path = Source/Objects/GTLRDuration.m; sourceTree = ""; }; + ADF302CCAEE58514EBF07820FB4B7910 /* DBChunkInputStream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DBChunkInputStream.h; path = Source/SwiftyDropbox/Shared/Handwritten/DBChunkInputStream.h; sourceTree = ""; }; AE1179D5EA23BDBED2AEC4F50068090B /* Pods-Delta.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Delta.modulemap"; sourceTree = ""; }; - AE315376CFFFA3D34AEFE17EB1F010F7 /* pakinfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pakinfo.h; sourceTree = ""; }; - AE652CE1AE3F3EB298D947261F75564B /* SoundFileWriter.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = SoundFileWriter.hpp; sourceTree = ""; }; - AE8FF7894487C1699C9C8BE1F0D8B3D5 /* DSi_Camera.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DSi_Camera.h; sourceTree = ""; }; - AE9168EADF3CD8BC34051068BDE4F19B /* NstBoardKonamiVrc1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardKonamiVrc1.hpp; sourceTree = ""; }; - AEC0015955B6C317179ECAEEE8FD46C5 /* GTLRDuration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRDuration.m; path = Source/Objects/GTLRDuration.m; sourceTree = ""; }; - AECE8E892CF20B68ACDC4FD0AEDF3B14 /* TxUtil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TxUtil.h; sourceTree = ""; }; - AF63924ECE87BC1FFA410F95D8F2BF95 /* Sensor.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Sensor.hpp; sourceTree = ""; }; - AF7E5DD1EC29C39C5361D565B80B1F4A /* storage_backend.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = storage_backend.h; sourceTree = ""; }; - AF8C7CEAE093526F24A7C6CAEF79D94E /* opengl_ColorBufferReaderWithPixelBuffer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = opengl_ColorBufferReaderWithPixelBuffer.h; sourceTree = ""; }; - AF9799175C20C8B2FCE36FED74E47B01 /* NstBoardNamcot.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardNamcot.hpp; sourceTree = ""; }; - AFDCE5601B93C61AFC1C8AA0B5227B87 /* Ext_TxFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Ext_TxFilter.h; sourceTree = ""; }; - B0047D3E45496267DC35BAFA423C7A92 /* F3DEX2CBFD.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F3DEX2CBFD.cpp; sourceTree = ""; }; - B03F08C3C42F47C763E6A4F9BA15FDFB /* NstBoardUnlKingOfFighters96.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardUnlKingOfFighters96.hpp; sourceTree = ""; }; - B04299FBE484CF4A076EBCBE3D52DA7C /* GBATypes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = GBATypes.m; sourceTree = ""; }; - B068E4E7AE4132AAFBBBCBD24D7A4C81 /* SDWebImageDownloaderOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderOperation.m; path = SDWebImage/SDWebImageDownloaderOperation.m; sourceTree = ""; }; + AEBC927D579F6BB580EC6EF0DE5387BA /* Roxas.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Roxas.h; path = Roxas/Roxas.h; sourceTree = ""; }; + AFC00C12856F54F96B1227FE75F81D65 /* RSTCollectionViewCell.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; name = RSTCollectionViewCell.xib; path = Roxas/RSTCollectionViewCell.xib; sourceTree = ""; }; + B02A952ED3771DEE753E9E1DB18B0CAB /* RemoteFile+File.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RemoteFile+File.swift"; sourceTree = ""; }; B0B214D775196BA7CA8E17E53048A493 /* libSDWebImage.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libSDWebImage.a; path = libSDWebImage.a; sourceTree = BUILT_PRODUCTS_DIR; }; - B0DFB82D9B5917CB78350818D3260E7B /* UIViewController+TransitionState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+TransitionState.m"; path = "Roxas/UIViewController+TransitionState.m"; sourceTree = ""; }; - B10B38D31A95FF99BBC00DA9C36C8D94 /* AggregateFunctions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AggregateFunctions.swift; path = Sources/SQLite/Typed/AggregateFunctions.swift; sourceTree = ""; }; - B124B8677E0B9063BDA8D9EABAC8CFAF /* DropboxService+Files.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DropboxService+Files.swift"; path = "Backends/Dropbox/Harmony-Dropbox/DropboxService+Files.swift"; sourceTree = ""; }; - B1668AC0D087551532B76ABF47AF6895 /* svsfnt.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svsfnt.h; sourceTree = ""; }; - B16D65599391107B17547743504F3F09 /* NstBoardSunsoft3.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSunsoft3.hpp; sourceTree = ""; }; - B189DC53FDFE10C190B9FBE91F050B55 /* KeyboardGameController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = KeyboardGameController.swift; sourceTree = ""; }; - B19869A46C0D54CF10CFA28DEDBA6863 /* SDWebImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-prefix.pch"; sourceTree = ""; }; - B19F0AD4ABC47A0641E683A2EBEC2805 /* NstInpMahjong.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpMahjong.hpp; sourceTree = ""; }; - B1A3A6D53350C28647A7D877E975305A /* Utf.inl */ = {isa = PBXFileReference; includeInIndex = 1; path = Utf.inl; sourceTree = ""; }; - B1CBBA370D9778B19123EFE9F6E17F58 /* NstIoAccessor.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstIoAccessor.hpp; sourceTree = ""; }; - B1EEAB97A99472A9C79337EA15AE222E /* aes.c */ = {isa = PBXFileReference; includeInIndex = 1; path = aes.c; sourceTree = ""; }; - B1FE60123D84FA8B290B36D0DA6860F0 /* GTMSessionFetcherLogging.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionFetcherLogging.m; path = Source/GTMSessionFetcherLogging.m; sourceTree = ""; }; - B214DD9EC77ECFC9421DE91EA0F6D699 /* GPU3D_Soft.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = GPU3D_Soft.cpp; sourceTree = ""; }; - B21937C70034B0E22B11F4F417521B94 /* opengl_BufferedDrawer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = opengl_BufferedDrawer.h; sourceTree = ""; }; - B21CEF422138419213CDA51B12B7D724 /* NstBoardBmcFk23c.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcFk23c.hpp; sourceTree = ""; }; - B23526A375A47D4DB7E41CEF2AD61087 /* SMCalloutView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SMCalloutView-dummy.m"; sourceTree = ""; }; - B23E65EABA52B43B87725C6E03A5F6DE /* recomp_types.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = recomp_types.h; sourceTree = ""; }; - B263B5B7D35ACDCD3A0F476C52C958E8 /* NstBoardMmc6.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardMmc6.hpp; sourceTree = ""; }; - B26927C64ADD96D6F1857718A8684983 /* m64p_types.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64p_types.h; sourceTree = ""; }; - B291972B633DC4A5B3842B0890871E1A /* UITableView+CellContent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableView+CellContent.m"; path = "Roxas/UITableView+CellContent.m"; sourceTree = ""; }; - B2B586D348CC154D7D85DA7980151DE8 /* NstBoardWaixing.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardWaixing.hpp; sourceTree = ""; }; - B2B8796FD94CC2CADD2AF1B5FC7F0BFA /* NstInpFamilyTrainer.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpFamilyTrainer.hpp; sourceTree = ""; }; - B2B9C1195CF19CBAB858C293A5A512CE /* GPU.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GPU.h; sourceTree = ""; }; - B2C4982438927CA0C1E755890CAA430B /* Harmony-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Harmony-prefix.pch"; sourceTree = ""; }; - B2DC17B4AF6D9CB3636E72FAE616CC65 /* RSTRelationshipPreservingMergePolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTRelationshipPreservingMergePolicy.h; path = Roxas/RSTRelationshipPreservingMergePolicy.h; sourceTree = ""; }; - B3052A9C7393257EAEF23078DBECD6B3 /* UIAlertAction+Actions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIAlertAction+Actions.m"; path = "Roxas/UIAlertAction+Actions.m"; sourceTree = ""; }; - B3498CD97929F748AC14046B1A226AA7 /* GBCTypes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = GBCTypes.m; sourceTree = ""; }; - B38950E29E7427B1B328DA4AB4E9B564 /* usec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = usec.h; sourceTree = ""; }; - B3AFC502DD1D86B9D684498892D0783A /* path.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = path.h; sourceTree = ""; }; - B44B12EC0A8A9CA8A8DB401C721C0548 /* NSLayoutConstraint+Edges.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSLayoutConstraint+Edges.m"; path = "Roxas/NSLayoutConstraint+Edges.m"; sourceTree = ""; }; - B4596D2D0AE2DB378A700A506C25739D /* workqueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = workqueue.h; sourceTree = ""; }; - B469CB48E051A7902C306D720CA859C8 /* GTLRErrorObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRErrorObject.h; path = Source/Objects/GTLRErrorObject.h; sourceTree = ""; }; - B4A632384D9C688D434380B6CCE7D1F7 /* RSTLoadOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTLoadOperation.m; path = Roxas/RSTLoadOperation.m; sourceTree = ""; }; - B4BFB7D39F6CF7F3B3B3BB96C9EAC314 /* OAuthMobile.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OAuthMobile.swift; path = Source/SwiftyDropbox/Platform/SwiftyDropbox_iOS/OAuthMobile.swift; sourceTree = ""; }; - B52BBFD364EC6A95EAE3BF36428E72CF /* zip.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = zip.h; sourceTree = ""; }; - B52DCF99725F280D96FEC3B36404D325 /* NstIoMap.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstIoMap.hpp; sourceTree = ""; }; - B5334B9A8D1F3E9EB246C2ABC04E2E6C /* NstDatabase.xml */ = {isa = PBXFileReference; includeInIndex = 1; path = NstDatabase.xml; sourceTree = ""; }; - B544AFAD35F7005CA06C8F02672B2757 /* NstBoardBmcY2k64in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcY2k64in1.hpp; sourceTree = ""; }; - B5507771F98C954AA584A3AE892FA2E4 /* NstBoardVsSystem.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardVsSystem.hpp; sourceTree = ""; }; - B57F863273D90CEC76B990C80BD0AFE0 /* aes.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = aes.hpp; sourceTree = ""; }; - B583513D16011258D024CAA92DE220E5 /* Packet.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Packet.hpp; sourceTree = ""; }; - B5B97EF7E578120D6762623183175FF5 /* xxhash.c */ = {isa = PBXFileReference; includeInIndex = 1; path = xxhash.c; sourceTree = ""; }; - B5D0963AEC82F7790AF09E7C8A829348 /* ZlutTexture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ZlutTexture.h; sourceTree = ""; }; - B5D47CF580AFCB1591BC83B9D2D53730 /* MelonDSDeltaCore-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MelonDSDeltaCore-prefix.pch"; sourceTree = ""; }; - B5DC276CC14F0847B9A8C006CE0B064D /* GTMSessionFetcher.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GTMSessionFetcher.modulemap; sourceTree = ""; }; - B5F7BAB167C49E106A6AA25C9C7B97EF /* retro_dirent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = retro_dirent.h; sourceTree = ""; }; - B609F94FF19E3C589A8FABD70BA44393 /* cstdint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = cstdint.h; sourceTree = ""; }; - B60D5BFD804E4CAE6D1316C0FB20DC96 /* NstBoardBmc15in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc15in1.hpp; sourceTree = ""; }; - B65032755EE4541256290B57E1CDC9A4 /* NstBoardWaixingZs.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardWaixingZs.hpp; sourceTree = ""; }; - B652670BE43DF580C036F800C9CFA84A /* readpng2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = readpng2.h; sourceTree = ""; }; - B6A9060BBDEC30B79FCD8A7D0B80BF8B /* NstBoardTaitoX1017.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardTaitoX1017.hpp; sourceTree = ""; }; - B6BAFAD7FC6CB3785A7435A2B33B2CCC /* fxp.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = fxp.h; sourceTree = ""; }; - B6DBA422D09B1A2E2BF52AA98368C295 /* NstIoPort.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstIoPort.hpp; sourceTree = ""; }; - B6DFEFF26687627684C117D75CEC98DD /* ftbdf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftbdf.h; sourceTree = ""; }; - B6FEFF8470EC4FA1F48C9E07912B9B60 /* N64.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = N64.cpp; sourceTree = ""; }; - B70EEB2277D9821CF8654045BFDC9254 /* slot1.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = slot1.h; sourceTree = ""; }; - B764EC210FA0F420D6494B25D25FFDE2 /* dummy_input.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = dummy_input.h; sourceTree = ""; }; - B76B12510BE2B141AE4835C5EF4036BC /* rumble_backend.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = rumble_backend.h; sourceTree = ""; }; - B76DD920CDBACABC13B3026F71CCE1EA /* NstBoardAxRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardAxRom.hpp; sourceTree = ""; }; - B76EFA7CCAC454819F26F621EF37AC11 /* Patch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Patch.h; sourceTree = ""; }; - B77443AF8AB2CB055594552F3A4DF312 /* F3DPD.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F3DPD.h; sourceTree = ""; }; - B7C8F6D3A9BCAC9898FFC9C88D00BAD4 /* Harmony.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = Harmony.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - B837C755947C65B18A89F3A0BADC7724 /* tttypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = tttypes.h; sourceTree = ""; }; - B838FF4D494014F467183E5F8652A99B /* NstBoardUnlTf1201.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardUnlTf1201.hpp; sourceTree = ""; }; - B874304CF42693BC245EEFD1ECE4AEDA /* F3D.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F3D.cpp; sourceTree = ""; }; - B87B82316F6E2AF77DEC3C71983960D8 /* Wifi.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Wifi.cpp; sourceTree = ""; }; - B88A4A4D429C70A73A2F3F183EC24732 /* SQLite.swift-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SQLite.swift-umbrella.h"; sourceTree = ""; }; - B8B0C6977911C21FE4D012F6677A1038 /* Drawable.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Drawable.hpp; sourceTree = ""; }; - B8C92AF7E7FC5A48D14201B637C3E202 /* S2DEX2.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = S2DEX2.cpp; sourceTree = ""; }; - B8EFAAF62D9F6506CF1FFF94ADE1F7B9 /* NstBoardNamcot34xx.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardNamcot34xx.hpp; sourceTree = ""; }; - B9103C0E62058A84C7C9BDF9F6915958 /* Request.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Request.swift; path = Source/Request.swift; sourceTree = ""; }; - B94E286F3F31AF33D0C10EE54989676E /* display.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = display.h; sourceTree = ""; }; - B9599505824F928A644466FC5D89F93C /* GTLRUploadParameters.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRUploadParameters.h; path = Source/Objects/GTLRUploadParameters.h; sourceTree = ""; }; - B9742202633EE18C3808232AF7BFDA3A /* NstBoardSachen74x374.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSachen74x374.hpp; sourceTree = ""; }; - B9A4AE4E227198A222EC04904FA67DCF /* ClipPolygon.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ClipPolygon.cpp; sourceTree = ""; }; - B9DA21EF87A522A040A130E53DCC3258 /* F3DEX2ACCLAIM.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F3DEX2ACCLAIM.cpp; sourceTree = ""; }; - B9F0DFCB779B9AF6CD5701965ECDFDDC /* instr_counters.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = instr_counters.h; sourceTree = ""; }; - B9F7EE490E3FCEADA9DFFE43323E3C02 /* pngwio.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pngwio.c; sourceTree = ""; }; - BA1F46281ACC03BA5632B185F2754D85 /* SMCalloutView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SMCalloutView-prefix.pch"; sourceTree = ""; }; - BA5A911460257B649D548DEC2743EBAC /* Standard.deltamapping */ = {isa = PBXFileReference; includeInIndex = 1; path = Standard.deltamapping; sourceTree = ""; }; - BA694E5052500D363828649B87D607DB /* NstBoardJalecoJf17.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardJalecoJf17.hpp; sourceTree = ""; }; - BADCCAE30E37C77B39E74D1A8BAAE7CA /* Roxas.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Roxas.release.xcconfig; sourceTree = ""; }; - BAE7CC5E61AD10E58132106C64073663 /* TeamPolicies.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TeamPolicies.swift; path = Source/SwiftyDropbox/Shared/Generated/TeamPolicies.swift; sourceTree = ""; }; - BAEDA8D403E529E72121F8EC6A91556E /* VI.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = VI.cpp; sourceTree = ""; }; - BB1A039FF5440BBD2EF096501C8ED363 /* GTLRQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRQuery.h; path = Source/Objects/GTLRQuery.h; sourceTree = ""; }; - BBB2272A01DC6ADE898D9C2687E972B6 /* instruction_attributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = instruction_attributes.h; sourceTree = ""; }; - BBB5D600AC9C95A64296B6A4B1CEAECF /* DepthBufferRender.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = DepthBufferRender.cpp; sourceTree = ""; }; - BBBCDA15DF519AF03646ED3FD16CC4A6 /* idec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = idec.h; sourceTree = ""; }; - BBEF1B582D9215342B3E1A926501B5AC /* Game.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Game.swift; sourceTree = ""; }; - BBF68C9FA5BA309DF08CDED46313E187 /* NstBoardBtlSuperBros11.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBtlSuperBros11.hpp; sourceTree = ""; }; - BBFF69619A4D7602B5E9CDB34E41A6A2 /* NDS.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = NDS.cpp; sourceTree = ""; }; - BC6E7572622F53C9063BA36BA8EA48A0 /* F3DAM.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F3DAM.cpp; sourceTree = ""; }; - BC8F75C1ECFF600FD8638F60D9896A26 /* Errors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Errors.swift; sourceTree = ""; }; - BC937779EB06E228801357D8302C3985 /* ftbzip2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftbzip2.h; sourceTree = ""; }; - BC9E8968583BFAD0D15B54B5E52F9947 /* Harmony.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Harmony.release.xcconfig; sourceTree = ""; }; - BCA5FCC7A25097011B93E01588B9F652 /* ttnameid.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ttnameid.h; sourceTree = ""; }; - BCB329591B61D72A62086E1CEB91A234 /* NstBoardBtl6035052.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBtl6035052.hpp; sourceTree = ""; }; - BCB81111BE67E8E2D3B9FE4038E241C5 /* F3DEX2.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F3DEX2.cpp; sourceTree = ""; }; - BCC5E70F6FBADBDE73B80CDF3668D546 /* NstHook.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstHook.hpp; sourceTree = ""; }; - BCCA1C95FD4883494B6FFD8509D3D035 /* opengl_UnbufferedDrawer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = opengl_UnbufferedDrawer.h; sourceTree = ""; }; - BCE3D49C34BE975F12EC26CFBD244645 /* NstBoardOpenCorp.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardOpenCorp.hpp; sourceTree = ""; }; - BCE78AB5A43B5301C404C71A9726679C /* Globals.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Globals.h; sourceTree = ""; }; - BD4FD5ECAA33E983C93BD04B1AEEDF59 /* SwiftyDropbox.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftyDropbox.release.xcconfig; sourceTree = ""; }; - BD6AC5484BE6F7AA12DEF9E8E08BC95F /* NstInpPad.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpPad.hpp; sourceTree = ""; }; - BD838C95DCFBB13B57FA390E013E6C96 /* NstBoardSachen.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSachen.hpp; sourceTree = ""; }; - BDA27BC884354F2D08D2AA05968914C7 /* NstBoardBmc31in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc31in1.hpp; sourceTree = ""; }; - BDA60DED9E65EB1430366F1A5F7D45D6 /* ARMJIT.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ARMJIT.cpp; sourceTree = ""; }; - BDB57DA469C8E283DC56CC0282A9DA80 /* NstBoardBtlTobidaseDaisakusen.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBtlTobidaseDaisakusen.hpp; sourceTree = ""; }; - BDCF481B7CADE27CDA57D025A3C16167 /* ftmac.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftmac.h; sourceTree = ""; }; - BE545AA1D1852AA8D0B5F0754FFA13B5 /* bsx.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = bsx.h; sourceTree = ""; }; - BE678FC4DC246B0D19DC3F53975AFFA0 /* GTLRBatchQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRBatchQuery.h; path = Source/Objects/GTLRBatchQuery.h; sourceTree = ""; }; - BEA7F11056D0F43EC8010E525D8CA634 /* ThreadLocalPtr.inl */ = {isa = PBXFileReference; includeInIndex = 1; path = ThreadLocalPtr.inl; sourceTree = ""; }; - BEB82CFF0DF8F66A85C52D4FE874D373 /* TxCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TxCache.h; sourceTree = ""; }; - BEC36720A23F7F9D127C45AD31BA84C6 /* font.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = font.h; sourceTree = ""; }; - BF13532696017B18EE5ACF4225924349 /* DeltaCore-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DeltaCore-umbrella.h"; sourceTree = ""; }; - BF75F4882CAD79A98615658198686DD7 /* cp15.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = cp15.h; sourceTree = ""; }; - BFBCE321AA4691CCAD5F6DFE0A431A0B /* interruptrequester.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = interruptrequester.h; sourceTree = ""; }; - BFC270FA492B80F26EE2D1971BDB032F /* gDP.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = gDP.h; sourceTree = ""; }; - BFCDF82DC04C88C75B3D8161C5D421F7 /* RSP.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RSP.h; sourceTree = ""; }; - BFD8A03EDF95491D3AF6B42EA8DF046C /* NstApiRewinder.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiRewinder.hpp; sourceTree = ""; }; - BFE33B2BC2B5DA3FAFA0EF4052914B10 /* gambatte.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = gambatte.h; sourceTree = ""; }; - BFFB99DA7E90D592C9D8D1B6704E4134 /* UploadRecordsOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = UploadRecordsOperation.swift; sourceTree = ""; }; - C00389F561DF027611FE10DCFAEBB459 /* GBCDeltaCore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBCDeltaCore.h; sourceTree = ""; }; - C0DB902F7F0B1CF4561E695E22CC5DAD /* NstInpSuborKeyboard.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpSuborKeyboard.hpp; sourceTree = ""; }; - C0E8F6CFDC4D94C86E323AD42D6B74FB /* ARMInterpreter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARMInterpreter.h; sourceTree = ""; }; - C10B0DD77FF57233C2D77462177B023F /* SDL_opengles2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SDL_opengles2.h; sourceTree = ""; }; - C15DC539AE9009D8DE1A22B7FDCA5FF1 /* Export.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Export.hpp; sourceTree = ""; }; - C180A7FFF5472B31D3BCF75A810DEAEC /* TextDrawer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TextDrawer.h; sourceTree = ""; }; - C18B6C47E8288613C0286D154B5B3E87 /* NESEmulatorBridge.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NESEmulatorBridge.swift; sourceTree = ""; }; - C18C884682C7ECAC03EECEC48850DEF4 /* RSTCollectionViewGridLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCollectionViewGridLayout.h; path = Roxas/RSTCollectionViewGridLayout.h; sourceTree = ""; }; + B0B6231BE1227B31701717B2F7041B26 /* Errors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Errors.swift; sourceTree = ""; }; + B136A2A8FE351E57E6D740927A61A3BA /* UIView+AnimatedHide.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+AnimatedHide.m"; path = "Roxas/UIView+AnimatedHide.m"; sourceTree = ""; }; + B143C6A637B6A820034EE1046A508B7E /* GTLRUploadParameters.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRUploadParameters.h; path = Source/Objects/GTLRUploadParameters.h; sourceTree = ""; }; + B183DCBE431E7ED474E0FD60332DF7F1 /* UIAlertAction+Actions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIAlertAction+Actions.m"; path = "Roxas/UIAlertAction+Actions.m"; sourceTree = ""; }; + B2323536FBE932E9A2BACA12C0F7DC43 /* RecordController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RecordController.swift; sourceTree = ""; }; + B23FDDFED8F7DEF10971E0852379C61F /* FinishDownloadingRecordsOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = FinishDownloadingRecordsOperation.swift; sourceTree = ""; }; + B31FBFB1194FC0975DE5F959F3A36920 /* Alamofire.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.release.xcconfig; sourceTree = ""; }; + B373A735DC64C323233F34AA09E35C8E /* RSTDynamicDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTDynamicDataSource.h; path = Roxas/RSTDynamicDataSource.h; sourceTree = ""; }; + B489C17E8479D70586B425CC5600A19F /* UsersRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UsersRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/UsersRoutes.swift; sourceTree = ""; }; + B4D188BDE57B76BB82EBA7CD056C4DDC /* RemoteRecord+Dropbox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RemoteRecord+Dropbox.swift"; sourceTree = ""; }; + B583D880F8890FE6879BF16245AE2686 /* GTMSessionFetcher-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GTMSessionFetcher-prefix.pch"; sourceTree = ""; }; + B5FEE3734DAC7833EE2F316A05E3FB4F /* RSTSeparatorView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTSeparatorView.m; path = Roxas/RSTSeparatorView.m; sourceTree = ""; }; + B6CF76900DF3A54275D6A5E4AC401AA9 /* TeamLogRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TeamLogRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/TeamLogRoutes.swift; sourceTree = ""; }; + B6DD4C4DC83CD268B10C477AFC1CEB9D /* GTLRQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRQuery.h; path = Source/Objects/GTLRQuery.h; sourceTree = ""; }; + B71726B9A158070BC9BE306D7A6C8542 /* SDWebImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloader.m; path = SDWebImage/SDWebImageDownloader.m; sourceTree = ""; }; + B75A96A9FA9A9EAEDEA8BA458DF1A190 /* Async.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Async.swift; path = Source/SwiftyDropbox/Shared/Generated/Async.swift; sourceTree = ""; }; + B813AD003C192F0CE40D777CA40C3215 /* DropboxTeamClient.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DropboxTeamClient.swift; path = Source/SwiftyDropbox/Shared/Handwritten/DropboxTeamClient.swift; sourceTree = ""; }; + B8521335C3585A819DC8326807FFF78F /* CLSReport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CLSReport.h; path = iOS/Crashlytics.framework/Headers/CLSReport.h; sourceTree = ""; }; + B9602429C0E7965A5BFA992A659449E4 /* NSBundle+Extensions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBundle+Extensions.h"; path = "Roxas/NSBundle+Extensions.h"; sourceTree = ""; }; + B9D09E169C57FC41506AE28BDF25F446 /* FABAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FABAttributes.h; path = iOS/Fabric.framework/Headers/FABAttributes.h; sourceTree = ""; }; + BBC90AE9673EB9380FC70F80D0A1A85A /* NSPersistentStore+Configuration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "NSPersistentStore+Configuration.swift"; sourceTree = ""; }; + BC20981A42A1EC4EADCE3CBB4B4A881D /* PaperRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PaperRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/PaperRoutes.swift; sourceTree = ""; }; + BCC0D0106CBF47F3718C75AB129B5F88 /* GTLRBatchQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRBatchQuery.m; path = Source/Objects/GTLRBatchQuery.m; sourceTree = ""; }; + BD1B5BEBA150B7B5A8A0CDF224654081 /* SDWebImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SDWebImage.modulemap; sourceTree = ""; }; + BE0CAD992714B9169EB415DCFD060199 /* Timeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Timeline.swift; path = Source/Timeline.swift; sourceTree = ""; }; + C0BE4BAC8AADD53ED7938EC7D7834EC0 /* Notifications.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Notifications.swift; path = Source/Notifications.swift; sourceTree = ""; }; C1998E0D8085221AD87F89B614C10E52 /* libGTMSessionFetcher.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libGTMSessionFetcher.a; path = libGTMSessionFetcher.a; sourceTree = BUILT_PRODUCTS_DIR; }; - C19B79D50E568B8585CEF38DDE067613 /* RSTHelperFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTHelperFile.h; path = Roxas/RSTHelperFile.h; sourceTree = ""; }; - C1B26C18B277B97813A2936C2A038AB9 /* ARMJIT_Compiler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARMJIT_Compiler.h; sourceTree = ""; }; - C1C79F685717D6A72816DDF8AF27113F /* UIDevice+Vibration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIDevice+Vibration.swift"; sourceTree = ""; }; - C1F370EE6E775263D2F455D399A21A6B /* gDP.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = gDP.cpp; sourceTree = ""; }; - C211F03F09C2912EFA66F80B077FE66E /* NstBoardGouder.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardGouder.hpp; sourceTree = ""; }; - C2794F0E81271A9277E8D45290A0CFD7 /* Data+Compression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Compression.swift"; path = "Sources/ZIPFoundation/Data+Compression.swift"; sourceTree = ""; }; - C290E38AA00434D6999E4E49F703E086 /* apu.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = apu.h; sourceTree = ""; }; - C2DB8E70C59303E250CEB59438096FBF /* freetype.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = freetype.h; sourceTree = ""; }; - C3864406D458455C70ECF31C7CC64D42 /* NstBoardCaltron.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardCaltron.hpp; sourceTree = ""; }; - C3914267B360E5CBD9B4004034A200D9 /* pngpread.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pngpread.c; sourceTree = ""; }; - C3B07408C73641A82FD1486ACA9BE491 /* NstBoardSunsoftDcs.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSunsoftDcs.hpp; sourceTree = ""; }; - C3B144DAC7663AA196FF05DB5F4FAEBE /* Alamofire.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Alamofire.release.xcconfig; sourceTree = ""; }; - C3EB10DDF80E759F5ABDC3B03239F8C0 /* RectangleShape.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = RectangleShape.hpp; sourceTree = ""; }; - C3F5F7CFA10B9A59EC34BF55C18409D4 /* opengl_Parameters.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_Parameters.cpp; sourceTree = ""; }; - C43CE2D8DBCA4BFAFD1EE83286D5548E /* Keyboard.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Keyboard.hpp; sourceTree = ""; }; - C4D94D5C2C4826A2B2D50690E7E30F1E /* pcap.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pcap.h; sourceTree = ""; }; - C4E7BA0D5AC9F82D2F7154C4C7B1C153 /* GPU3D.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = GPU3D.cpp; sourceTree = ""; }; - C509EB92ABE121E822A092CA6A457763 /* RSP.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = RSP.cpp; sourceTree = ""; }; - C51C1DA993826C004368CE57FAA6DB61 /* cheatSystem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = cheatSystem.h; sourceTree = ""; }; - C526F8C0BC1F7A1BE3449A79197ECC22 /* Answers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Answers.h; path = iOS/Crashlytics.framework/Headers/Answers.h; sourceTree = ""; }; - C5467F3A301E5ABC6E4E314092284C44 /* CRC32.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = CRC32.cpp; sourceTree = ""; }; - C55CAB73D64E01B12F41AE9E1185460A /* NstInpDoremikkoKeyboard.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpDoremikkoKeyboard.hpp; sourceTree = ""; }; - C578CF97F78BF8C15358F430AA30D615 /* opengl_ColorBufferReaderWithPixelBuffer.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_ColorBufferReaderWithPixelBuffer.cpp; sourceTree = ""; }; - C585C47CE6EF972B1E2B823683528538 /* TeamLog.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TeamLog.swift; path = Source/SwiftyDropbox/Shared/Generated/TeamLog.swift; sourceTree = ""; }; - C5A521BDA3D4D828577B2C553889402E /* RSTPlaceholderView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTPlaceholderView.h; path = Roxas/RSTPlaceholderView.h; sourceTree = ""; }; - C5D0C48AB270EA1136E55E203CF7D378 /* NSData+ImageContentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+ImageContentType.h"; path = "SDWebImage/NSData+ImageContentType.h"; sourceTree = ""; }; - C5E2A01A988D91DD8415895D818B7687 /* ColorBufferToRDRAMStub.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ColorBufferToRDRAMStub.h; sourceTree = ""; }; - C61BD8D70E274ABFA9A9BA6CC11DA6A9 /* ControllerSkinTraits.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ControllerSkinTraits.swift; sourceTree = ""; }; - C62697CDB1C461E116CFCE24721ACFE5 /* L3DEX.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = L3DEX.h; sourceTree = ""; }; - C636BE691B0B5DBF12D3F61CF9E86972 /* MemoryStatus.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MemoryStatus.h; sourceTree = ""; }; - C66E4CF3747F894C37EEF42EEFFF9721 /* RSTOperationQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTOperationQueue.h; path = Roxas/RSTOperationQueue.h; sourceTree = ""; }; - C7123B0D191661CE2885FB576763F310 /* NstApiFds.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiFds.hpp; sourceTree = ""; }; - C722FD717A34AA13B10C03AC368B1A00 /* opengl_ContextImpl.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_ContextImpl.cpp; sourceTree = ""; }; - C74EDB2CEE56DAB2BBA76496AD54D79B /* PropertyGroup+Harmony.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "PropertyGroup+Harmony.swift"; sourceTree = ""; }; - C77A008A6833C24467625CDA9DB340AA /* Account.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Account.swift; sourceTree = ""; }; - C7A9D7E3EC589A75AD2405C76234F641 /* GoogleToolboxForMac-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "GoogleToolboxForMac-dummy.m"; sourceTree = ""; }; - C7A9FF165EDCA96D78582A1BB3E3E34A /* cpumacro.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = cpumacro.h; sourceTree = ""; }; - C7D39EC0390EEA5EC08E4661DF2C8BD2 /* NstInpPartyTap.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpPartyTap.hpp; sourceTree = ""; }; - C7FDCAA2C2AE2F7710AFCA420D4D4BBF /* wglext.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = wglext.h; sourceTree = ""; }; - C822F4501F86A14953199438EDEAE4CE /* fttrigon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = fttrigon.h; sourceTree = ""; }; - C84C3D0F11A5EB1115FFB93D23447AE9 /* NetworkReachabilityManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NetworkReachabilityManager.swift; path = Source/NetworkReachabilityManager.swift; sourceTree = ""; }; - C85060AA2EE8986995684A00D189D358 /* FinishDownloadingRecordsOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = FinishDownloadingRecordsOperation.swift; sourceTree = ""; }; - C8903E4660C304885FB98A73B44961D8 /* NstBoardRexSoft.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardRexSoft.hpp; sourceTree = ""; }; - C896FF6056EF6073CCFEB25599D37DC1 /* StoneValidators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StoneValidators.swift; path = Source/SwiftyDropbox/Shared/Generated/StoneValidators.swift; sourceTree = ""; }; - C89942340BAE2264EC7E57948B2C55A8 /* NstBoardMmc4.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardMmc4.hpp; sourceTree = ""; }; - C8A455672E315E4E14C757C97BD055DC /* gfx3d.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = gfx3d.h; sourceTree = ""; }; - C8CE42F012549C258EDB2C3B537921E0 /* RemoteRecord+File.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RemoteRecord+File.swift"; sourceTree = ""; }; - C8D6AC695498645EEE4A66FCEF97D848 /* libN64DeltaCore.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libN64DeltaCore.a; path = libN64DeltaCore.a; sourceTree = BUILT_PRODUCTS_DIR; }; - C8ED8D35DD5BB35B47AEC9CE41BE374C /* Harmony.xcdatamodel */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = wrapper.xcdatamodel; path = Harmony.xcdatamodel; sourceTree = ""; }; - C91E1AA976A69AFEC09D7086375C3511 /* pngread.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pngread.c; sourceTree = ""; }; - C91EEA659866247E15C8B85344382246 /* DeltaCore.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = DeltaCore.modulemap; sourceTree = ""; }; - C921B9E65464CFFAF546C7BC52BC2690 /* UICollectionView+CellContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UICollectionView+CellContent.h"; path = "Roxas/UICollectionView+CellContent.h"; sourceTree = ""; }; - C948F7181BF61F2DFC5F685D88FE30CB /* GBADeltaCore.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBADeltaCore.h; sourceTree = ""; }; - C966592CD4157C1D20CE1334FB18D992 /* retro_environment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = retro_environment.h; sourceTree = ""; }; - C9DBA67E0E17459ADEA92DE98CCFABB5 /* NstBoardGxRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardGxRom.hpp; sourceTree = ""; }; - CA13F866561098C20DA5F46FB89C6E5E /* Context.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Context.hpp; sourceTree = ""; }; - CA1D9A0FCC95EC0A089280E4EC0A0A8E /* ftoption.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftoption.h; sourceTree = ""; }; - CA7154ABE8E0B943BBE44F6E93DA1720 /* pnglibconf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pnglibconf.h; sourceTree = ""; }; - CA8F5EA0023441E2DCC5D7A5DF068643 /* ARMInterpreter_Branch.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARMInterpreter_Branch.h; sourceTree = ""; }; - CAA72D7234A0B208E0C7AC4CCE7B3873 /* RSTCellContentDataSource_Subclasses.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCellContentDataSource_Subclasses.h; path = Roxas/RSTCellContentDataSource_Subclasses.h; sourceTree = ""; }; - CAB0449592C0DCA8414A2D8785033227 /* BaseTeam.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BaseTeam.swift; path = Source/SwiftyDropbox/Shared/Generated/BaseTeam.swift; sourceTree = ""; }; - CAF7DAE3D701F9616A709277BAC90365 /* Operators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Operators.swift; path = Sources/SQLite/Typed/Operators.swift; sourceTree = ""; }; - CB0111AD916628D17DBE1C3F2FED3100 /* SMCalloutView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SMCalloutView.m; sourceTree = ""; }; - CB35F2D9635EBE95CE46DBCD39714649 /* Context.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Context.h; sourceTree = ""; }; - CB38C82AA7D15949DDC3D86D8B3FAA39 /* pngconf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pngconf.h; sourceTree = ""; }; - CB39F9E318A0E5FA99D3AD25FB9CC78B /* GBCEmulatorBridge.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBCEmulatorBridge.h; sourceTree = ""; }; - CB3D1E54D3B130DA4EF1097A244D531E /* RDP.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = RDP.h; sourceTree = ""; }; - CB5D32825165CBF7693660E93DD662BE /* UIAlertAction+Actions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIAlertAction+Actions.h"; path = "Roxas/UIAlertAction+Actions.h"; sourceTree = ""; }; - CBBEE4D27B665A1DD4EDB8A509D41C6C /* SwiftyDropbox.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SwiftyDropbox.modulemap; sourceTree = ""; }; - CBCCD8C7C6480A54F79BDBCD6BAFC020 /* DropboxTransportClient.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DropboxTransportClient.swift; path = Source/SwiftyDropbox/Shared/Handwritten/DropboxTransportClient.swift; sourceTree = ""; }; - CBF54EAAEEF559EFA0CAE545447FBC66 /* NstBoardSunsoft2.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSunsoft2.hpp; sourceTree = ""; }; - CCC95DC3146675A3867C7281C91DDA27 /* NstBoardBmcSuper22Games.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcSuper22Games.hpp; sourceTree = ""; }; - CCC9814536B9DA40A8D7EBE1B1E6CE0E /* DownloadRecordsOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DownloadRecordsOperation.swift; sourceTree = ""; }; - CCCDBB91056DF2425CF5E3A355B295ED /* GBASockClient.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBASockClient.h; sourceTree = ""; }; - CCEBBE6CC544087FE52A0A6B44568B0B /* GBAinline.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBAinline.h; sourceTree = ""; }; - CCF3B37039138FDE454BCF2F1D72F9CF /* opengl_ColorBufferReaderWithReadPixels.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = opengl_ColorBufferReaderWithReadPixels.cpp; sourceTree = ""; }; - CD2DC61F1E167693CC02BAA00E7715F0 /* RSTDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTDefines.h; path = Roxas/RSTDefines.h; sourceTree = ""; }; - CDAEDE6317A2C17D4DB07ED6E3982F55 /* TaskDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TaskDelegate.swift; path = Source/TaskDelegate.swift; sourceTree = ""; }; - CDB8946D38B7595F8B990F42E4831438 /* xxh3.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = xxh3.h; sourceTree = ""; }; - CDB89D2DC9692722221DCE91A98ABF63 /* NstInpBandaiHyperShot.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpBandaiHyperShot.hpp; sourceTree = ""; }; - CE43456F279801002681E65B577EB400 /* m64p_frontend.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64p_frontend.h; sourceTree = ""; }; - CE47B9173973846BA966835EB7C3B4DF /* Archive+MemoryFile.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+MemoryFile.swift"; path = "Sources/ZIPFoundation/Archive+MemoryFile.swift"; sourceTree = ""; }; - CE5AA35EFFDA1B4E8AC02451AA774E76 /* cart.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = cart.h; sourceTree = ""; }; - CE94E0A2B88BE282A28CEA0301EB7547 /* osal_files.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = osal_files.h; sourceTree = ""; }; - CEDCE3534F394855D736E8914E2C28B8 /* m64p_vidext.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64p_vidext.h; sourceTree = ""; }; - CEF6999D9AC220EEF9CDCF5DC198B857 /* filters.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = filters.h; sourceTree = ""; }; - CEFFA33EF26C6E6BBBA92570888B7054 /* GTMSessionUploadFetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionUploadFetcher.m; path = Source/GTMSessionUploadFetcher.m; sourceTree = ""; }; - CF1439CA418CD15261C7A8EAE10EB5BC /* WifiAP.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = WifiAP.cpp; sourceTree = ""; }; - CF90FA724655A486BEA6C173143364AC /* memory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = memory.h; sourceTree = ""; }; - CF920BF2EAB09495473F0485AD759F94 /* NstBoardSxRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSxRom.hpp; sourceTree = ""; }; - CFFFDF983674973D9E671FB2EAD347EC /* cheats.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = cheats.h; sourceTree = ""; }; - D01B5BDC517C52E34E8E81885DDA7BC9 /* SDWebImageCompat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCompat.m; path = SDWebImage/SDWebImageCompat.m; sourceTree = ""; }; - D029C45D06455A369C00E2CE5B7A49A2 /* NstBoardExRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardExRom.hpp; sourceTree = ""; }; - D05E62B590D16E32DAA922D7272E54BE /* ARM_InstrTable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ARM_InstrTable.h; sourceTree = ""; }; - D081B4DEFA5B2B6ED41073152390B9BD /* NstBoardMxRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardMxRom.hpp; sourceTree = ""; }; - D11080B8D2F5E38C47C4098BD2FBA5AE /* TxTexCache.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TxTexCache.cpp; sourceTree = ""; }; - D122ED1B6CF59DF49BFB5F3708D5534F /* FrameBufferInfoAPI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FrameBufferInfoAPI.h; sourceTree = ""; }; - D145AF0D8138ED303A35F31CC28531D9 /* SwiftyDropbox-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftyDropbox-dummy.m"; sourceTree = ""; }; - D1476498A59B49640815E0E82A975A8E /* types.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = ""; }; - D15886D5D7DBE8A02EC868EBBE812F20 /* NstMachine.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstMachine.hpp; sourceTree = ""; }; - D191CFB4ED63F845055FB4308E16AE30 /* alist_naudio.c */ = {isa = PBXFileReference; includeInIndex = 1; path = alist_naudio.c; sourceTree = ""; }; - D196E82B652BFF0CF8DD7D134B12120D /* Team.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Team.swift; path = Source/SwiftyDropbox/Shared/Generated/Team.swift; sourceTree = ""; }; - D1A222E7AD9B04C4081BD98E461CB8DD /* internal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = internal.h; sourceTree = ""; }; - D1C42F98DA98FD0CD5BA3471E4ADD289 /* af_rtc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = af_rtc.h; sourceTree = ""; }; - D1DB056A6C494B4F71B95CDE5D8A8D2C /* NstBoardBmcSuperBig7in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcSuperBig7in1.hpp; sourceTree = ""; }; - D1E2911B0409362E1D0AF530431EF0B4 /* GTMNSString+URLArguments.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "GTMNSString+URLArguments.m"; path = "Foundation/GTMNSString+URLArguments.m"; sourceTree = ""; }; - D1EC922CB4C37FF078E2F2FA393D076C /* GTLRBatchQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRBatchQuery.m; path = Source/Objects/GTLRBatchQuery.m; sourceTree = ""; }; - D1FD02EE9A04D0E6FCD95A38B0D7368A /* NstBoardTxcMxmdhtwo.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardTxcMxmdhtwo.hpp; sourceTree = ""; }; - D205F13F881DDD5824256D1FD8747E00 /* Sharing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Sharing.swift; path = Source/SwiftyDropbox/Shared/Generated/Sharing.swift; sourceTree = ""; }; - D21720F624B8F46DC74D6175670521F8 /* GTMDebugThreadValidation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMDebugThreadValidation.h; path = DebugUtils/GTMDebugThreadValidation.h; sourceTree = ""; }; - D223DCFA57D6B7A3D80C036254D211B8 /* biopak.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = biopak.h; sourceTree = ""; }; - D22C92DE3FBE9F6DC63F2329F08E75E1 /* assemble.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = assemble.h; sourceTree = ""; }; - D23B0ACC1D905B07F7FC8240AB76D54A /* RSTCellContentChange.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTCellContentChange.m; path = Roxas/RSTCellContentChange.m; sourceTree = ""; }; - D2601C99EA17D1A82364DFE29F8CD5E0 /* SoundFileFactory.inl */ = {isa = PBXFileReference; includeInIndex = 1; path = SoundFileFactory.inl; sourceTree = ""; }; - D2BE8D3C7C22716378ACD8F7845D1027 /* RSTCellContentChange.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCellContentChange.h; path = Roxas/RSTCellContentChange.h; sourceTree = ""; }; - D3556B3B3C0BA74D240B42AF0934D7CC /* ftstream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftstream.h; sourceTree = ""; }; - D3739D93DFAC472E38C99F784BFDBEA0 /* NstCore.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstCore.hpp; sourceTree = ""; }; - D38B546A30886C0C9A47E36BFF53C9FC /* ROMReader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ROMReader.h; sourceTree = ""; }; - D3B1080EAE2B04F4B0C9A9132C3F2A6D /* SNESEmulatorBridge.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SNESEmulatorBridge.h; sourceTree = ""; }; - D3B5120B0C39B7F86050343E396C4A75 /* Standard.deltaskin */ = {isa = PBXFileReference; includeInIndex = 1; path = Standard.deltaskin; sourceTree = ""; }; - D3E5F59546B73B9E4E0DDE03CF8B3B55 /* skipsched.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = skipsched.h; sourceTree = ""; }; - D404DDEAA1780E4A8DC01E5DD107F23C /* ftvalid.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftvalid.h; sourceTree = ""; }; - D42421CB7ACD877300E845DA963BD693 /* SDWebImagePrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImagePrefetcher.h; path = SDWebImage/SDWebImagePrefetcher.h; sourceTree = ""; }; - D4908C00AB651611F3D7B3F87D1DB074 /* NstBoardBtlMarioBaby.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBtlMarioBaby.hpp; sourceTree = ""; }; - D4A4DC4C3072C0BFB04131DB11B904CB /* Roxas-Prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Roxas-Prefix.pch"; path = "Roxas/Roxas-Prefix.pch"; sourceTree = ""; }; - D4AB501DA42C0DAAF3C8C5BFDCA835B7 /* metaspu.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = metaspu.h; sourceTree = ""; }; - D4C010E8572FAE8B51DFDBF2300ECF30 /* libGBCDeltaCore.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libGBCDeltaCore.a; path = libGBCDeltaCore.a; sourceTree = BUILT_PRODUCTS_DIR; }; - D4C4889886A38026ACF6B2874E1522CB /* pngset.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pngset.c; sourceTree = ""; }; - D4DA42AD554868EE4E35A2197455BF64 /* RSTCollectionViewGridLayout.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTCollectionViewGridLayout.m; path = Roxas/RSTCollectionViewGridLayout.m; sourceTree = ""; }; - D5060FFC2F442DC6820A90A77A582841 /* DisplayWindow.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DisplayWindow.h; sourceTree = ""; }; - D514311967AB9AF3A26AC154E058CCD3 /* NstLog.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstLog.hpp; sourceTree = ""; }; - D55A1BA5813E4F75369459BAEC6308D4 /* ftsystem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftsystem.h; sourceTree = ""; }; - D55B643E64E489320CE54CCA55999775 /* bootrom_hle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = bootrom_hle.h; sourceTree = ""; }; - D55E6137C8C963C0E24FF6F3246DAA3D /* FABAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FABAttributes.h; path = iOS/Fabric.framework/Headers/FABAttributes.h; sourceTree = ""; }; - D5750EF90778F9C6487BCBA814D242A9 /* NstBoardBtlPikachuY2k.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBtlPikachuY2k.hpp; sourceTree = ""; }; - D57698179BDC95621501EA5819D5ABB3 /* Window.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Window.hpp; sourceTree = ""; }; - D590C9367D4C2F143D62824E62B38A22 /* NstBoardIremH3001.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardIremH3001.hpp; sourceTree = ""; }; - D59BB4845689600CF54D0F7796E34EC0 /* elf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = elf.h; sourceTree = ""; }; - D5D8FCC4E6844265B7C603660F589A79 /* NstApiInput.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiInput.hpp; sourceTree = ""; }; - D63DF8BC0893DD34539EDEF01E7690F8 /* GTLRObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRObject.m; path = Source/Objects/GTLRObject.m; sourceTree = ""; }; - D6888C59420839F1A4C9BFE9336F7FA7 /* GLideN64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GLideN64.h; sourceTree = ""; }; - D6950D50E9695976359606938A73508D /* dynamiclib.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = dynamiclib.h; sourceTree = ""; }; - D6956BD919116D3EA2388470C4B627D6 /* RenderTarget.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = RenderTarget.hpp; sourceTree = ""; }; - D6AE3D3CEA4A380A77F394C53E8FEBFB /* NDSCart.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NDSCart.h; sourceTree = ""; }; - D6BC47B1B65C5BC8C50A004A072F8A2B /* Config.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Config.cpp; sourceTree = ""; }; - D6DFFB6445DBBD4E7976B80BFB7D6BD7 /* NstBoardTengen.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardTengen.hpp; sourceTree = ""; }; - D6EEE05F6DA53633CA458BFC7773D9EC /* NstAssert.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstAssert.hpp; sourceTree = ""; }; - D6F197419FA933E40431ABE1A632D6FB /* DepthBufferToRDRAM.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DepthBufferToRDRAM.h; sourceTree = ""; }; - D7978FB4424D59EC66D8892793EEAC7C /* Vertex.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Vertex.hpp; sourceTree = ""; }; - D7BEDF5B516A1B0C298DFAE1D232DBB3 /* fb.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = fb.h; sourceTree = ""; }; - D7F113329CD0D192E2E394BC6F4F3A8E /* NstBoardFb.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardFb.hpp; sourceTree = ""; }; - D80C34DD4B034C77A1B7FF575359DC5D /* m64p_plugin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64p_plugin.h; sourceTree = ""; }; - D834A7F4976AEDBB55317196D3E8BD3B /* NstBoardRexSoftSl1632.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardRexSoftSl1632.hpp; sourceTree = ""; }; - D843AF4955FB13CED7AC2A50E53B88F6 /* L3DEX2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = L3DEX2.h; sourceTree = ""; }; - D850BF9E05BD4EFBC1DD2310343163E5 /* GameController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GameController.swift; sourceTree = ""; }; - D92F10A78D9A6F3A1C2BEE1030BB59F6 /* opengl_ColorBufferReaderWithBufferStorage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = opengl_ColorBufferReaderWithBufferStorage.h; sourceTree = ""; }; - D94C9F0AD0FE08D4EE6CBA57F100804D /* N64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = N64.h; sourceTree = ""; }; - D95BAC0F2D7AD6A2E990D3390C7331B8 /* DSTypes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = DSTypes.m; sourceTree = ""; }; - D963A8034D348DCEBA1D3691ADEB4E08 /* ftglyph.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftglyph.h; sourceTree = ""; }; - D97A30CDCA2EE5F0A46DC7E3DF87E796 /* NSUserDefaults+DynamicProperties.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSUserDefaults+DynamicProperties.m"; path = "Roxas/NSUserDefaults+DynamicProperties.m"; sourceTree = ""; }; - D99BDDF8334E70176E218DC0D4A89A58 /* rateest.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = rateest.h; sourceTree = ""; }; - D9A1C8FFB28389F2867F54A1083013A5 /* m64p_common.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64p_common.h; sourceTree = ""; }; - D9E9874C984615B07F0284BFA0B7360B /* PostProcessor.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = PostProcessor.cpp; sourceTree = ""; }; - D9ECECBEF35491F413B279B6A98E015B /* RSTError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTError.m; path = Roxas/RSTError.m; sourceTree = ""; }; - DA01508C45515F583F048D703F3BC886 /* NstBoardCnePsb.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardCnePsb.hpp; sourceTree = ""; }; - DA1799268D0F9DA29D547C39C65C63B6 /* video.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = video.h; sourceTree = ""; }; - DA605E65AD3BBD74F1D83EA92DC0236C /* glsl_CombinerProgramUniformFactory.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_CombinerProgramUniformFactory.cpp; sourceTree = ""; }; + C2E4A129BBEABD3561950AD3AC39E662 /* Harmony 2.xcdatamodel */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = wrapper.xcdatamodel; path = "Harmony 2.xcdatamodel"; sourceTree = ""; }; + C41B094C61D212712CD835C3A221D3CF /* UIImage+Manipulation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Manipulation.h"; path = "Roxas/UIImage+Manipulation.h"; sourceTree = ""; }; + C4C6D59DB50223D14136CA8CABE71C99 /* SQLite.swift-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SQLite.swift-prefix.pch"; sourceTree = ""; }; + C502187AC8986A6C13F8C50618BF74A6 /* GTLRDriveObjects.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDriveObjects.h; path = Source/GeneratedServices/Drive/GTLRDriveObjects.h; sourceTree = ""; }; + C51BB2F19042656DECF0A355EEE8B1FE /* GTLRRuntimeCommon.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRRuntimeCommon.m; path = Source/Objects/GTLRRuntimeCommon.m; sourceTree = ""; }; + C5337F14C4B4DF65DE3FDFC45FACAE01 /* SDImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCache.m; path = SDWebImage/SDImageCache.m; sourceTree = ""; }; + C5A4341628DB896D5045C1381D4F768D /* Common.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Common.swift; path = Source/SwiftyDropbox/Shared/Generated/Common.swift; sourceTree = ""; }; + C6C7C9E918A47FB7D6F6658594BA5615 /* GoogleToolboxForMac.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleToolboxForMac.debug.xcconfig; sourceTree = ""; }; + C6F1CC0D7A0F0AD93F5B13C2F6713C5F /* SMCalloutView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SMCalloutView-dummy.m"; sourceTree = ""; }; + C701B63124E39AA3072BFD49D65662A4 /* Setter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Setter.swift; path = Sources/SQLite/Typed/Setter.swift; sourceTree = ""; }; + C738A598915F88BA5E9E68898AEEA577 /* GoogleAPIClientForREST.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GoogleAPIClientForREST.modulemap; sourceTree = ""; }; + C8C546D15F9505DB74735363097583D5 /* SDWebImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloader.h; path = SDWebImage/SDWebImageDownloader.h; sourceTree = ""; }; + C9324F3ABCFF4F339C3BF451C3FFBB94 /* Version.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Version.swift; sourceTree = ""; }; + CA29336E01A953A70343EF7695C270A4 /* RemoteRecord.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RemoteRecord.swift; sourceTree = ""; }; + CAA97A6CE79C4809EBA5E4AF4CDE52FC /* GTLRUploadParameters.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRUploadParameters.m; path = Source/Objects/GTLRUploadParameters.m; sourceTree = ""; }; + CAE24913C0B1CFC0A73974AEB0754344 /* GoogleToolboxForMac.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GoogleToolboxForMac.modulemap; sourceTree = ""; }; + CAF635A58C76A181E571493C6F4A487C /* GTMSessionFetcher.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GTMSessionFetcher.modulemap; sourceTree = ""; }; + CB5F3AC61657BA6F0862591966B0F78B /* SDWebImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-prefix.pch"; sourceTree = ""; }; + CC41ACC92FF2C34B4BBFECBAEE992DDC /* FinishUploadingRecordsOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = FinishUploadingRecordsOperation.swift; sourceTree = ""; }; + CC538E7270C604A592B5B99AD1B686FD /* RSTHelperFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTHelperFile.m; path = Roxas/RSTHelperFile.m; sourceTree = ""; }; + CCD2E82081A9CD40B9258AE46DF75389 /* GTMNSDictionary+URLArguments.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "GTMNSDictionary+URLArguments.h"; path = "Foundation/GTMNSDictionary+URLArguments.h"; sourceTree = ""; }; + CD4490E074A906B05214E44C723CE239 /* GTMSessionUploadFetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionUploadFetcher.h; path = Source/GTMSessionUploadFetcher.h; sourceTree = ""; }; + CE252EE95D0B2FE67492E18BA47EE3D2 /* GoogleToolboxForMac-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleToolboxForMac-umbrella.h"; sourceTree = ""; }; + CED87ECBA050B60EAA82FBCB03CC593F /* SMCalloutView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SMCalloutView.debug.xcconfig; sourceTree = ""; }; + D091ABD1DCB16678D1F8C49A5CDA541C /* GTLRDriveQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRDriveQuery.m; path = Source/GeneratedServices/Drive/GTLRDriveQuery.m; sourceTree = ""; }; + D12B5D4C9BC18A6433F8876AB8C1849D /* GTMMIMEDocument.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMMIMEDocument.m; path = Source/GTMMIMEDocument.m; sourceTree = ""; }; + D24CB7FF1300E7C22CBAC0D39A1F203E /* RSTHelperFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTHelperFile.h; path = Roxas/RSTHelperFile.h; sourceTree = ""; }; + D3120939B6971DA8F719F7B238EF7A6C /* RSTCollectionViewCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCollectionViewCell.h; path = Roxas/RSTCollectionViewCell.h; sourceTree = ""; }; + D339DD3505283EE70C70980777E52454 /* DownloadRecordOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DownloadRecordOperation.swift; sourceTree = ""; }; + D3EDB0BB2DD3FCCA18812B93F89488FD /* DownloadRecordsOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DownloadRecordsOperation.swift; sourceTree = ""; }; + D45685541F9FDDAFC2135E99EB6062F4 /* Alamofire.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Alamofire.swift; path = Source/Alamofire.swift; sourceTree = ""; }; + D46484EB1DEE5A20471D2FA5462B213E /* UIView+WebCacheOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheOperation.m"; path = "SDWebImage/UIView+WebCacheOperation.m"; sourceTree = ""; }; + D4B8FD265B54C00C19CBEB64B04F1EAA /* RSTToastView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTToastView.h; path = Roxas/RSTToastView.h; sourceTree = ""; }; + D5C9580AC87AF10A56A35795A2BB0ED2 /* StoneValidators.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StoneValidators.swift; path = Source/SwiftyDropbox/Shared/Generated/StoneValidators.swift; sourceTree = ""; }; + D67E5D2FF8E7E31C4604718B8E3260BB /* SwiftyDropbox-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyDropbox-umbrella.h"; sourceTree = ""; }; + D77CD646F2813288F818F6C24219BD13 /* GTLRDateTime.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRDateTime.m; path = Source/Objects/GTLRDateTime.m; sourceTree = ""; }; + D7A860C858433F347A515665460A363A /* TransportConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TransportConfig.swift; path = Source/SwiftyDropbox/Shared/Handwritten/TransportConfig.swift; sourceTree = ""; }; + D7B3E5FDB7C50DF28247D34DF08D86DC /* RSTError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTError.h; path = Roxas/RSTError.h; sourceTree = ""; }; + D8B90997B6EEFAC69A88FD0627D7E701 /* SMCalloutView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SMCalloutView.modulemap; sourceTree = ""; }; + D8DEA5FD2BA1BEB9F3440F8D9DEABA3E /* ServiceOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ServiceOperation.swift; sourceTree = ""; }; + D915831E8F4887A23F86A1CDFC74DF86 /* UITableView+CellContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableView+CellContent.h"; path = "Roxas/UITableView+CellContent.h"; sourceTree = ""; }; + D97D50218F26FA896ABC058738BD76C7 /* Roxas.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Roxas.release.xcconfig; sourceTree = ""; }; + D9F0CD49DD9B2E3E2D8D280AB18F658B /* RSTToastView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTToastView.m; path = Roxas/RSTToastView.m; sourceTree = ""; }; + DA1A9014FCC98E975674F0DFBB5F7F2F /* NSManagedObject+Harmony.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "NSManagedObject+Harmony.swift"; sourceTree = ""; }; + DA2024F45CD548A78517D510532A59AD /* SQLite.swift.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SQLite.swift.debug.xcconfig; sourceTree = ""; }; + DA67BF8F08D3D5DD7D498B537919F5F5 /* UIButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+WebCache.m"; path = "SDWebImage/UIButton+WebCache.m"; sourceTree = ""; }; DA78D0D081686B5372F0FFAABDF5733A /* Pods-Delta-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Delta-acknowledgements.plist"; sourceTree = ""; }; - DA8B343AC9C1338C3570E381AFDEE8A9 /* F3DEX2.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F3DEX2.h; sourceTree = ""; }; - DA903654F5B5F89E74DAEDF6DDFE77D6 /* RSTSeparatorView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTSeparatorView.h; path = Roxas/RSTSeparatorView.h; sourceTree = ""; }; - DAC5B00D89BE3A1F8CE58319DBEC7878 /* GBASoundDriver.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = GBASoundDriver.mm; sourceTree = ""; }; - DB04E6CE68116BF5DB7ECFD8E183C1D6 /* NstFile.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstFile.hpp; sourceTree = ""; }; - DB24C7CDE3A7F0607B919C5070452FEC /* AudioManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AudioManager.swift; sourceTree = ""; }; - DBA5DD76F54ED88D4BD09E9745D87490 /* AREngine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = AREngine.h; sourceTree = ""; }; - DBAAF6DBA09834539A368667AF5A1211 /* GoogleAPIClientForREST.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleAPIClientForREST.debug.xcconfig; sourceTree = ""; }; DBC0113CF73BE24525E670D024A85BE7 /* libHarmony.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libHarmony.a; path = libHarmony.a; sourceTree = BUILT_PRODUCTS_DIR; }; - DC30E6531D1C727E6389B4A27F9674E0 /* Value.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Value.swift; path = Sources/SQLite/Core/Value.swift; sourceTree = ""; }; - DC5BA75262977CCE52E0E8BA86D4CCC7 /* ControllerInputView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ControllerInputView.swift; sourceTree = ""; }; - DC67F65D7368549BEDBF585E0E7C7FE6 /* SNESDeltaCore-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SNESDeltaCore-prefix.pch"; sourceTree = ""; }; - DC6FAF93284C148CBB1E3CD968DFEC92 /* RSTOperation_Subclasses.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTOperation_Subclasses.h; path = Roxas/RSTOperation_Subclasses.h; sourceTree = ""; }; - DC98B8EFB519AA44BD4A6F005DC7E68D /* GBCDeltaCore.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = GBCDeltaCore.modulemap; sourceTree = ""; }; - DD5DC51035BAC483EBAB6BD224394546 /* UICollectionViewCell+Nibs.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UICollectionViewCell+Nibs.h"; path = "Roxas/UICollectionViewCell+Nibs.h"; sourceTree = ""; }; - DDA8D710ED23A691D5634188624CAE95 /* NstBoardBmcA65as.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcA65as.hpp; sourceTree = ""; }; - DDB1E1F374DA86F155EC6B1D14298EA9 /* TxDbg.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TxDbg.h; sourceTree = ""; }; - DDD4F2F2C131066EB84145AC18A138C6 /* NstInpHoriTrack.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpHoriTrack.hpp; sourceTree = ""; }; - DE221800B54D7A157B8C6DA4FA6C36E1 /* PaletteTexture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PaletteTexture.h; sourceTree = ""; }; - DE246301115CDA2A2D69A325D9C15084 /* DS.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DS.swift; sourceTree = ""; }; - DE28AC43CC05A2A18BD33834DAD68546 /* NstBoardAgci.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardAgci.hpp; sourceTree = ""; }; - DE2C6C61CC67CA7469F056859895E872 /* NstApiBarcodeReader.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstApiBarcodeReader.hpp; sourceTree = ""; }; - DE616F927E6B6D55A9594C411E6872A0 /* rumblepak.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = rumblepak.h; sourceTree = ""; }; - DE635479904564D856572E7F742F8855 /* RSTSeparatorView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTSeparatorView.m; path = Roxas/RSTSeparatorView.m; sourceTree = ""; }; - DE8BBEE21041E1DDC6767E1CF2E08A2B /* seta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = seta.h; sourceTree = ""; }; - DE94A72C4101C8A8627C17AB51EABF9C /* UpdateRecordMetadataOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = UpdateRecordMetadataOperation.swift; sourceTree = ""; }; - DECA25BDA5E4F2C7DFA8FFBD44A21529 /* RSTCollectionViewCell.xib */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = file.xib; name = RSTCollectionViewCell.xib; path = Roxas/RSTCollectionViewCell.xib; sourceTree = ""; }; - DF0D847592520B9426DAA5EF56CB4F1F /* NstBoardKonamiVsSystem.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardKonamiVsSystem.hpp; sourceTree = ""; }; - DF12A2DEC0367BABE830FADACDDC802F /* ftmodapi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftmodapi.h; sourceTree = ""; }; - DF219081F2A7A82C574232E188237FBC /* WriteToRDRAM.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = WriteToRDRAM.h; sourceTree = ""; }; - DF4A1EFB2AC9B32C86EF2EBC32CA55E6 /* RemoteFile+Dropbox.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RemoteFile+Dropbox.swift"; sourceTree = ""; }; - DF652814DA2F4879D0FAAA481F19D537 /* RSTCellContentChangeOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCellContentChangeOperation.h; path = Roxas/RSTCellContentChangeOperation.h; sourceTree = ""; }; - DF6EA5934525711986F6816A1E10B4E9 /* gdbstub.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = gdbstub.h; sourceTree = ""; }; - DF8BA5722B5506BE400BB4B7092422A6 /* NstBoardWaixingFfv.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardWaixingFfv.hpp; sourceTree = ""; }; - DF90480F6504CD9B0A9049D6BACAC85A /* ai_controller.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ai_controller.h; sourceTree = ""; }; - DF9A0397B9040D8B612F61D4171FB406 /* video_capture_backend.c */ = {isa = PBXFileReference; includeInIndex = 1; path = video_capture_backend.c; sourceTree = ""; }; - DFA7713F9936F057BB5AE713D7A02EA7 /* NstBoardNitra.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardNitra.hpp; sourceTree = ""; }; - DFABA608C593B4B5CA40C1C7CEDA6927 /* spc7110dec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = spc7110dec.h; sourceTree = ""; }; - DFAFB6B7696267B9382EF7B0C076DF4F /* svpfr.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svpfr.h; sourceTree = ""; }; - E009A3CEF1D9267D9497C6C4C42A1DDF /* ftcache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftcache.h; sourceTree = ""; }; - E01361D50FD2CEB3E55AC9992E8FF8CE /* NstPins.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstPins.hpp; sourceTree = ""; }; - E064EB97821DE1B8BFCC21E48F3D5BA0 /* Data+Serialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Serialization.swift"; path = "Sources/ZIPFoundation/Data+Serialization.swift"; sourceTree = ""; }; - E073803913605D51FA5A80D6AFA5F21A /* EEprom.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = EEprom.h; sourceTree = ""; }; - E09088CC17E0FE2F8507057759ED8495 /* NstBoardBtlSmb2c.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBtlSmb2c.hpp; sourceTree = ""; }; - E092E67243EB5F2C7AA220780125DA0F /* NstBoardWaixingSecurity.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardWaixingSecurity.hpp; sourceTree = ""; }; - E099575E112559BF97F5D20E9E8630D0 /* N64Types.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = N64Types.h; sourceTree = ""; }; - E0C91ABB323E87C0696A57ECA95D9BF5 /* ftsizes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftsizes.h; sourceTree = ""; }; - E0FA70CD9D6CEE8BCE5E201406829944 /* UIScreen+ControllerSkin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIScreen+ControllerSkin.swift"; sourceTree = ""; }; - E14AA6A495A5CBF04B761FDA07B1F753 /* NstBoardNanjing.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardNanjing.hpp; sourceTree = ""; }; - E14EF2196DBABDCE807D82AB877627C5 /* NstInpMouse.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpMouse.hpp; sourceTree = ""; }; - E17E403846F48ECC1FB5E3ADD15CAF83 /* GameControllerStateManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = GameControllerStateManager.swift; sourceTree = ""; }; - E1A76606B0545B7E93314B51DC786688 /* NSConstraintConflict+Conveniences.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSConstraintConflict+Conveniences.h"; path = "Roxas/NSConstraintConflict+Conveniences.h"; sourceTree = ""; }; - E1A9CCAB6664B2A074EE28AABAB52B72 /* assem_x64.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = assem_x64.h; sourceTree = ""; }; - E202E5A6E4DD5B83A861BDABCE981EB2 /* SNESDeltaCore-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SNESDeltaCore-umbrella.h"; sourceTree = ""; }; - E2338F64347F1DE69B72D9080A4F89F0 /* glsl_FXAA.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_FXAA.cpp; sourceTree = ""; }; - E24F3C6FD9134EDD33136C2B924CE6D5 /* new_dynarec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = new_dynarec.h; sourceTree = ""; }; - E25B44BABC7528C07CC191BA85CCE447 /* SMCalloutView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SMCalloutView.modulemap; sourceTree = ""; }; - E26FEBA64D2374DAC135277E88C048E7 /* FilesRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FilesRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/FilesRoutes.swift; sourceTree = ""; }; - E296E74D5BB17E065FADEFAB60BF91B5 /* UsersCommon.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = UsersCommon.swift; path = Source/SwiftyDropbox/Shared/Generated/UsersCommon.swift; sourceTree = ""; }; - E33BDC5B4C13A1065C9739FE351C69FD /* Arm64Emitter.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Arm64Emitter.cpp; sourceTree = ""; }; - E3571A8F7620CB66A3CD66284D754F86 /* NstBoardCxRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardCxRom.hpp; sourceTree = ""; }; - E3781082E784F8730EA460122392ECA2 /* savestates.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = savestates.h; sourceTree = ""; }; - E3F8B5910C2A131F5DCC163AFEC5A94F /* TextureFilters_xbrz.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TextureFilters_xbrz.cpp; sourceTree = ""; }; - E3FF0CCAB2579FB3AFDE9E9E74A8CCA6 /* NstBoardBmcCtc65.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcCtc65.hpp; sourceTree = ""; }; - E3FFF2B354F5C1F93C7CE3EF232A44B0 /* NstTrackerMovie.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstTrackerMovie.hpp; sourceTree = ""; }; - E4713AD1D2C3007EBBF6A5594799CAA8 /* conffile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = conffile.h; sourceTree = ""; }; - E478395B4DE98AA28B40B0BB0713E520 /* NstBoardSunsoft5b.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSunsoft5b.hpp; sourceTree = ""; }; - E4951BD28EE605CC08BFD4677012B21D /* plugin_delta.c */ = {isa = PBXFileReference; includeInIndex = 1; path = plugin_delta.c; sourceTree = ""; }; - E4A6099E638BA490D0FA43608201D122 /* DSi_I2C.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DSi_I2C.h; sourceTree = ""; }; - E4BCA6B4ED56A16E766A6B739A0AB217 /* libretro.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = libretro.h; sourceTree = ""; }; - E4FFB7DF9BCF6F425B0D5C0C9A86E782 /* regcache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = regcache.h; sourceTree = ""; }; - E55F80EF7FF9BB234E4AA9B4D06F1C15 /* Database.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Database.h; sourceTree = ""; }; - E5A929646CF6948C6DD085FFFDCFEB2A /* RSTCellContentPrefetchingDataSource.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCellContentPrefetchingDataSource.h; path = Roxas/RSTCellContentPrefetchingDataSource.h; sourceTree = ""; }; - E5B244600E07D5FD3AADCF7D31EF42A9 /* assem_arm.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = assem_arm.h; sourceTree = ""; }; - E5C8402F009295924783BB22CD7E2300 /* DownloadRecordOperation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DownloadRecordOperation.swift; sourceTree = ""; }; - E5D97FFBC569CFB91783FD1DC1098F7D /* NstBoardSachenTca01.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSachenTca01.hpp; sourceTree = ""; }; - E5EEBBDBFD0865D20C8937D1EBDD4AB6 /* F3DPD.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = F3DPD.cpp; sourceTree = ""; }; - E5FEB6D7738FB80B9D922536722BCF7F /* RSTCollectionViewCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCollectionViewCell.h; path = Roxas/RSTCollectionViewCell.h; sourceTree = ""; }; - E61795F565BA313D631F9C1C0398B85E /* RSTHasher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTHasher.h; path = Roxas/RSTHasher.h; sourceTree = ""; }; - E62D7560CEDC11AB8A9C41117C73E387 /* NLS.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NLS.h; sourceTree = ""; }; - E62D7ACDAD9AB7541460CDCCF0827B6A /* mbc3_rtc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = mbc3_rtc.h; sourceTree = ""; }; - E640A55690FFDFEB9BA20EAE5A938A07 /* state_osd_elements.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = state_osd_elements.h; sourceTree = ""; }; - E68FD43545CD76F9AB1350FD2B577AED /* SocketHandle.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = SocketHandle.hpp; sourceTree = ""; }; - E6C0288667DD509927209D6381F60306 /* NSPredicate+Search.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSPredicate+Search.m"; path = "Roxas/NSPredicate+Search.m"; sourceTree = ""; }; - E6C9B6763FC803B3E3266F762DFABEC6 /* GoogleToolboxForMac.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleToolboxForMac.debug.xcconfig; sourceTree = ""; }; - E7294A191F7AC7765349928B17D20EAE /* GTLRDriveQuery.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDriveQuery.h; path = Source/GeneratedServices/Drive/GTLRDriveQuery.h; sourceTree = ""; }; - E74A96020ABE2A48563D951985291B19 /* fts3_tokenizer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = fts3_tokenizer.h; path = Sources/SQLiteObjc/fts3_tokenizer.h; sourceTree = ""; }; - E7A235EA31E0C5186C5FE456732B87C9 /* NSString+Localization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+Localization.h"; path = "Roxas/NSString+Localization.h"; sourceTree = ""; }; - E7D76D8068004B08B3FB0FB93605E4AD /* array.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = array.h; sourceTree = ""; }; - E7E0502382D7B2645187BA9806D311F6 /* NstBoardBmcSuperGun20in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcSuperGun20in1.hpp; sourceTree = ""; }; - E820CA086154606549F50A37722699CD /* NstBoardTengenRambo1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardTengenRambo1.hpp; sourceTree = ""; }; - E8AA1863B27BDEB42873D3218BAE286B /* SDL_config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SDL_config.h; sourceTree = ""; }; - E8CC4542B4D5A65D56F8C27DF076F553 /* NstBoardBandaiDatach.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBandaiDatach.hpp; sourceTree = ""; }; - E95EEA8B8765EBE1C1BBA81D951B9C66 /* NstBoardTaitoTc0190fmc.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardTaitoTc0190fmc.hpp; sourceTree = ""; }; - E9ABB79C4907847141EE35556B95D962 /* MelonDSEmulatorBridge.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MelonDSEmulatorBridge.h; sourceTree = ""; }; - E9D381CEE93CBAC589C6604F72A9CC39 /* TextureFilterHandler.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TextureFilterHandler.cpp; sourceTree = ""; }; - EA4903C023E7677D54CF9E99C7C36B67 /* NstVsSystem.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstVsSystem.hpp; sourceTree = ""; }; - EA54699E526C9FB651ED0197CF640FA2 /* hle_external.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = hle_external.h; sourceTree = ""; }; - EA5B505D84672E421965B4ED4DA13A4C /* NstBoardBmc20in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc20in1.hpp; sourceTree = ""; }; - EA6735B71BF0C9298798041E23627733 /* tile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = tile.h; sourceTree = ""; }; - EA7DF9CE0403C3BEFA2EC2A5C29F1CFD /* plugin_delta.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = plugin_delta.cpp; sourceTree = ""; }; - EB35FBF3BF9B38329D908A949EF02A97 /* bios.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = bios.h; sourceTree = ""; }; - EB58526AAC220B4F4D32EB70FB9FA1D9 /* NstBoardSachenSa0037.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSachenSa0037.hpp; sourceTree = ""; }; - EB61A68E006842F0E8F0ACF2E779F559 /* ucodes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ucodes.h; sourceTree = ""; }; - EBA27B0B1C5179248A1E5115709D824F /* ft2build.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ft2build.h; sourceTree = ""; }; - EBA3E6C841874984E34D25098CCFA20F /* NstBoardTaito.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardTaito.hpp; sourceTree = ""; }; - EBBF0F52DC2647A34571C5A29A7288EC /* F3DDKR.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F3DDKR.h; sourceTree = ""; }; - EBD465957DEA0FDAC85062F920F1CD4F /* clock_backend.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = clock_backend.h; sourceTree = ""; }; - EBDD40755140DC9ABADF7939C8DBACE9 /* Config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Config.h; sourceTree = ""; }; - EBF93D07F4B9DAD7347EC63599327763 /* Performance.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Performance.cpp; sourceTree = ""; }; - EC0F16885459523EC97FFA6EC3B324DA /* ContextImpl.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ContextImpl.h; sourceTree = ""; }; - EC10C1D9D6A74227024D832707016D1C /* preproc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = preproc.h; sourceTree = ""; }; - EC196E2AD3733D249167F1AC9B30712E /* Standard.deltamapping */ = {isa = PBXFileReference; includeInIndex = 1; name = Standard.deltamapping; path = GBADeltaCore/Standard.deltamapping; sourceTree = ""; }; - EC4989F2AA541A9B07E4D99182254D4F /* mupen64plus.ini */ = {isa = PBXFileReference; includeInIndex = 1; path = mupen64plus.ini; sourceTree = ""; }; - EC516D1637980A025ED3E81F54B865B1 /* BitmapProcessor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = BitmapProcessor.swift; sourceTree = ""; }; - EC547021A6C25CAC75D4CBEA991AF3F2 /* FileProperties.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FileProperties.swift; path = Source/SwiftyDropbox/Shared/Generated/FileProperties.swift; sourceTree = ""; }; - EC60C36FFBCE93CE35DCC1994E934E51 /* Types.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Types.h; sourceTree = ""; }; - EC72261E388EF6B78FAB023D9CC5D419 /* NDSSystem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = NDSSystem.h; sourceTree = ""; }; - EC7D812FBDF10DDBF8A0A3527249F79F /* GTMGatherInputStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMGatherInputStream.m; path = Source/GTMGatherInputStream.m; sourceTree = ""; }; - EC82FD320A0C3839759EC72B671260F7 /* Keys.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Keys.h; sourceTree = ""; }; - ECD0868BC2D1CFC2A22DDD56F79CF4B1 /* melonDS.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = melonDS.bundle; path = "MelonDSDeltaCore-melonDS.bundle"; sourceTree = BUILT_PRODUCTS_DIR; }; - ED21FF34110471A9F0568E2CE0E2248C /* F3DTEXA.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F3DTEXA.h; sourceTree = ""; }; - ED250D313A76B9709F1774AE007A3EA7 /* NstBoardAve.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardAve.hpp; sourceTree = ""; }; - ED28BE1D7327BA6ABFA7B757E13A6EBB /* SDWebImageCompat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCompat.h; path = SDWebImage/SDWebImageCompat.h; sourceTree = ""; }; - ED414DA09F5F73E17849E220C3C38FE8 /* ResourceBundle-Mupen64Plus-N64DeltaCore-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-Mupen64Plus-N64DeltaCore-Info.plist"; sourceTree = ""; }; - ED98D3CDD8B67DE813123392E2953CE8 /* UIButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+WebCache.h"; path = "SDWebImage/UIButton+WebCache.h"; sourceTree = ""; }; - EDB3D9DADFFA3C477901718D67DCB5CE /* GraphicsDrawer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GraphicsDrawer.h; sourceTree = ""; }; - EE0265AE025CC84336D2F23AB70FF51C /* CircleShape.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = CircleShape.hpp; sourceTree = ""; }; - EE78344F8EBA8AC77023F528A9B6884B /* armdis.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = armdis.h; sourceTree = ""; }; - EE88D048E0D8D237D067EFE90BCA3795 /* glext.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = glext.h; sourceTree = ""; }; - EE932796983B701EC66AC97AAA7E3958 /* RSTLaunchViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTLaunchViewController.h; path = Roxas/RSTLaunchViewController.h; sourceTree = ""; }; - EE94CF3C1A56D0C7DF3C5F9D41A48366 /* Thread.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Thread.cpp; sourceTree = ""; }; - EED57BCA844C7B79D93C00D5E728D535 /* dictionary.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = dictionary.h; sourceTree = ""; }; - EEDA2ECC059F3543D89E74A08C12E140 /* DSi_NDMA.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DSi_NDMA.h; sourceTree = ""; }; - EF0216D7E0044288639CA7E86870875B /* statemanager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = statemanager.h; sourceTree = ""; }; - EF1AA4BB7C7EA9D745AEBF944DC944BA /* FileRequests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FileRequests.swift; path = Source/SwiftyDropbox/Shared/Generated/FileRequests.swift; sourceTree = ""; }; - EF1BDE0E4CFE77E8821FFC82A99CB7E2 /* MelonDSDeltaCore.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MelonDSDeltaCore.modulemap; sourceTree = ""; }; - EF3D819417FD851E3EA790DF036DBEA4 /* GTMMIMEDocument.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMMIMEDocument.m; path = Source/GTMMIMEDocument.m; sourceTree = ""; }; - EFBE30994381264F2445BF70BEE39EE2 /* GTMSessionFetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTMSessionFetcher.m; path = Source/GTMSessionFetcher.m; sourceTree = ""; }; - EFE9040FC2B5FD87A1E50C89133C8CED /* m64p_debugger.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64p_debugger.h; sourceTree = ""; }; - EFEDF761A5B66736CF55093CB6485C6A /* Port.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Port.h; sourceTree = ""; }; - F01FE1957D23109377788923DE2AC6B5 /* Crashlytics.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Crashlytics.release.xcconfig; sourceTree = ""; }; - F0580B25207404969BA5267604ADBEFE /* NoiseTexture.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = NoiseTexture.cpp; sourceTree = ""; }; - F093A0AA955360C3E1886C377294286B /* Vector3.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Vector3.hpp; sourceTree = ""; }; - F0D69045548219AB3648E59524869CAA /* ResourceBundle-DSDeltaCore-DSDeltaCore-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-DSDeltaCore-DSDeltaCore-Info.plist"; sourceTree = ""; }; - F0E832BE9925100CCA463EDD16E27F2F /* NstBoardZz.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardZz.hpp; sourceTree = ""; }; - F10C0DF3E69DA0FDB0A55164F835A6B9 /* Config.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Config.h; sourceTree = ""; }; - F128339585E580A9E234A7EE4076A4BE /* Shader.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Shader.hpp; sourceTree = ""; }; - F13C7569E12A88F1E1ED5596F3479744 /* NSUserDefaults+DynamicProperties.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSUserDefaults+DynamicProperties.h"; path = "Roxas/NSUserDefaults+DynamicProperties.h"; sourceTree = ""; }; - F162A0151520364D914D677343BC081E /* cpu.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = cpu.h; sourceTree = ""; }; - F19D62D579ACE00507690054AA366BD9 /* NstInpKonamiHyperShot.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpKonamiHyperShot.hpp; sourceTree = ""; }; - F1B7B38160FBB40F6A58CE9397B82088 /* SQLiteObjc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SQLiteObjc.h; path = Sources/SQLiteObjc/include/SQLiteObjc.h; sourceTree = ""; }; - F1D0E74F872B2D64D94DDEE42849F609 /* GTLRObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRObject.h; path = Source/Objects/GTLRObject.h; sourceTree = ""; }; - F1F7E1A7090C639084C5B1F0FCB87AFF /* Mouse.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Mouse.hpp; sourceTree = ""; }; - F20FD15E6B1429D53EA9EECB0B17F55D /* sfnt.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = sfnt.h; sourceTree = ""; }; - F2252D4CB1E58BDCA95ED43B9F21586F /* callbacks.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = callbacks.h; sourceTree = ""; }; - F23F7AF28ACDC0A938F8FB795D8EF871 /* SDL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SDL.h; sourceTree = ""; }; - F242D59C89F73A5B3BF7834E21E3A571 /* NstBoardUnlN625092.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardUnlN625092.hpp; sourceTree = ""; }; - F265B3DDB1DC6C5CF0306B372210D001 /* DMA.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DMA.h; sourceTree = ""; }; - F269DBC118D8EAB0C04126CCE8F3643F /* biopak.c */ = {isa = PBXFileReference; includeInIndex = 1; path = biopak.c; sourceTree = ""; }; - F2746FFD43797BF0D3EA9D6E2A28CB9E /* mupen64plus_DisplayWindow.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = mupen64plus_DisplayWindow.cpp; sourceTree = ""; }; - F277C96C222F36E6CCE96F066C0292B9 /* Errors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Errors.swift; path = Sources/SQLite/Core/Errors.swift; sourceTree = ""; }; - F2A83A842DF214DF009C106E4C8C2F9D /* NstBoardBmc150in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc150in1.hpp; sourceTree = ""; }; - F2AA6DD879E5DA8688ACC774052AF22E /* fttypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = fttypes.h; sourceTree = ""; }; - F301E5CE692E47A2ECB5EAFAAB5FA614 /* TxFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TxFilter.h; sourceTree = ""; }; - F30E0BB406275FD00829195C22A80D4F /* ZIPFoundation-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ZIPFoundation-prefix.pch"; sourceTree = ""; }; - F3184A4B6B59C416EF7CBD384DF644AF /* NstBoardAcclaim.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardAcclaim.hpp; sourceTree = ""; }; - F31FAD638690962BD1EE3F696ABEFB09 /* m64p_types.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = m64p_types.h; sourceTree = ""; }; - F332361824DFCFC2AB5EB91B30975F82 /* GBAcpu.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBAcpu.h; sourceTree = ""; }; - F344EE5A9EBF490A69CDCA61BB37D194 /* libco.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = libco.h; sourceTree = ""; }; - F34749A9A557A7ADE2676021CDBAC6DC /* SDWebImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SDWebImage.modulemap; sourceTree = ""; }; - F35D8BC06AE7631CD983FB1019C80DCF /* DLTAMuteSwitchMonitor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = DLTAMuteSwitchMonitor.h; sourceTree = ""; }; - F361DBAEEABA43BEC6C118A99F58783F /* L3DEX2.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = L3DEX2.cpp; sourceTree = ""; }; - F375993EFF03EA6C6482B40DADC6850E /* ftpic.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftpic.h; sourceTree = ""; }; + DBEC7D1149716714F078F07B9BAE00E6 /* Crashlytics.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Crashlytics.release.xcconfig; sourceTree = ""; }; + DC73EA1B294021D3897C246C0477DE26 /* SwiftyDropbox.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SwiftyDropbox.h; path = Source/SwiftyDropbox/Shared/Handwritten/SwiftyDropbox.h; sourceTree = ""; }; + DCFC19BC3409D8B7B451D3611A917819 /* GTMSessionFetcherService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTMSessionFetcherService.h; path = Source/GTMSessionFetcherService.h; sourceTree = ""; }; + DD1DC3988E51D15B9E94BBD52E6165F5 /* UICollectionViewCell+Nibs.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UICollectionViewCell+Nibs.h"; path = "Roxas/UICollectionViewCell+Nibs.h"; sourceTree = ""; }; + DD2B3C41CADCDB9A2EABD96FEFC2449D /* HarmonyToHarmony2.xcmappingmodel */ = {isa = PBXFileReference; includeInIndex = 1; path = HarmonyToHarmony2.xcmappingmodel; sourceTree = ""; }; + DD4F2DC2C0E6FEF55D2573407B13787B /* SwiftyDropbox.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftyDropbox.release.xcconfig; sourceTree = ""; }; + DD5C7A7FE00BE29CFE3C990862EFBD7B /* GTMSessionFetcher-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GTMSessionFetcher-umbrella.h"; sourceTree = ""; }; + DD7C90E185D275725AA822E9A44469F1 /* RSTLaunchViewController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTLaunchViewController.h; path = Roxas/RSTLaunchViewController.h; sourceTree = ""; }; + DD835A67DEE7945EB1D1EF9E13AFC0D9 /* AnyCodable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AnyCodable.swift; sourceTree = ""; }; + DD997783DD8D3FF071362656F6CA8089 /* NSConstraintConflict+Conveniences.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSConstraintConflict+Conveniences.h"; path = "Roxas/NSConstraintConflict+Conveniences.h"; sourceTree = ""; }; + E00F0B88F32DFD6484C234F86CF5FB50 /* RSTCollectionViewGridLayout.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTCollectionViewGridLayout.h; path = Roxas/RSTCollectionViewGridLayout.h; sourceTree = ""; }; + E0D0E15186DB684064A51C1925872560 /* NSData+ImageContentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+ImageContentType.h"; path = "SDWebImage/NSData+ImageContentType.h"; sourceTree = ""; }; + E2003C240AFF0566DE36FA22E2D6796C /* GTLRFramework.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRFramework.h; path = Source/Utilities/GTLRFramework.h; sourceTree = ""; }; + E36C5F1FFD2FF2D7848B5A013B85577B /* SQLite.swift.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SQLite.swift.modulemap; sourceTree = ""; }; + E38504546C7DC8BF9137C8D301649C8E /* Request.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Request.swift; path = Source/Request.swift; sourceTree = ""; }; + E5C845833332C8E4966635273939A893 /* ManagedRecord.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ManagedRecord.swift; sourceTree = ""; }; + E60E2392C1A066712DCA131786D8353F /* DriveService+Files.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DriveService+Files.swift"; path = "Backends/Drive/Harmony-Drive/DriveService+Files.swift"; sourceTree = ""; }; + E68D11D9324AD01AFC7C42B7077DA092 /* Roxas-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Roxas-dummy.m"; sourceTree = ""; }; + E6B9F3E90F28D32445533FAA29AE51ED /* GTLRQuery.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRQuery.m; path = Source/Objects/GTLRQuery.m; sourceTree = ""; }; + E71B995352F5B5D730624F6E0B61EAB1 /* UIImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+WebCache.m"; path = "SDWebImage/UIImageView+WebCache.m"; sourceTree = ""; }; + E7B283AA2CF173414C0A5802ECFEC862 /* RSTArrayDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTArrayDataSource.m; path = Roxas/RSTArrayDataSource.m; sourceTree = ""; }; + E993E034DC38FEFB226C0BF4EDEA95D9 /* Custom.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Custom.swift; path = Source/SwiftyDropbox/Shared/Handwritten/Custom.swift; sourceTree = ""; }; + EA0FCDCE58DC43DD61C7972CFF58165A /* StoneBase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = StoneBase.swift; path = Source/SwiftyDropbox/Shared/Generated/StoneBase.swift; sourceTree = ""; }; + EA6921935F717D24F08DA345B384217E /* ResponseSerialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResponseSerialization.swift; path = Source/ResponseSerialization.swift; sourceTree = ""; }; + EBBB6B638293DF4772BCAA6CE4221E40 /* DropboxTransportClient.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DropboxTransportClient.swift; path = Source/SwiftyDropbox/Shared/Handwritten/DropboxTransportClient.swift; sourceTree = ""; }; + EBF5E9F21D0CF37992311F5A0E8D5D2B /* Record.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Record.swift; sourceTree = ""; }; + EBF9BA079C8B4F7AAD16EF95B1319533 /* FilesRoutes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FilesRoutes.swift; path = Source/SwiftyDropbox/Shared/Generated/FilesRoutes.swift; sourceTree = ""; }; + EC1D5886605D6AA857B1294C64A88931 /* DriveService.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DriveService.swift; path = "Backends/Drive/Harmony-Drive/DriveService.swift"; sourceTree = ""; }; + EC79FF57D7531AD04C143E3999102D9B /* RSTOperationQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTOperationQueue.h; path = Roxas/RSTOperationQueue.h; sourceTree = ""; }; + EC7B7502A435C89A67E3BB8FDD3E2F5D /* UIView+AnimatedHide.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+AnimatedHide.h"; path = "Roxas/UIView+AnimatedHide.h"; sourceTree = ""; }; + EDFAAE53B8E45FD949D7952EC2A138AB /* Team.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Team.swift; path = Source/SwiftyDropbox/Shared/Generated/Team.swift; sourceTree = ""; }; + EEA6FC50920D43291B0D917E68D03FAB /* NSUserDefaults+DynamicProperties.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSUserDefaults+DynamicProperties.m"; path = "Roxas/NSUserDefaults+DynamicProperties.m"; sourceTree = ""; }; + EF8958A15E98A901DBC0CFD03F65DA36 /* Roxas-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Roxas-umbrella.h"; sourceTree = ""; }; + EFA155B98CD8B997205991FC3F129723 /* RSTNibView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTNibView.m; path = Roxas/RSTNibView.m; sourceTree = ""; }; + EFA960D20478796B386E935916CD9C87 /* SDWebImageDecoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDecoder.m; path = SDWebImage/SDWebImageDecoder.m; sourceTree = ""; }; + F04A721BE6960E637CC03D557209FF65 /* Dictionary+Sequence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Dictionary+Sequence.swift"; sourceTree = ""; }; + F0BEE9C2C63738172378E0A44BF2FB42 /* SwiftyDropbox.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftyDropbox.debug.xcconfig; sourceTree = ""; }; + F109D2292569772B111800DBD7052988 /* FileRequests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FileRequests.swift; path = Source/SwiftyDropbox/Shared/Generated/FileRequests.swift; sourceTree = ""; }; + F18AA9436D607EF9E1DC5CA834CEC65F /* Roxas-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Roxas-prefix.pch"; sourceTree = ""; }; + F1AD1B41D23F04E3475D38F344E8D214 /* UIAlertAction+Actions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIAlertAction+Actions.h"; path = "Roxas/UIAlertAction+Actions.h"; sourceTree = ""; }; + F2D095C267A39D92899F611B66D0EFCC /* Value.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Value.swift; path = Sources/SQLite/Core/Value.swift; sourceTree = ""; }; F381603DE2011262E9A2C37926028861 /* Pods-Delta.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Delta.release.xcconfig"; sourceTree = ""; }; - F385FFE64099CB11245634D2B66248FE /* n64_cic_nus_6105.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = n64_cic_nus_6105.h; sourceTree = ""; }; - F39D6AD262133DC7EC88CCFC7215A97F /* Setter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Setter.swift; path = Sources/SQLite/Typed/Setter.swift; sourceTree = ""; }; - F3AD6D0701243C84DED62E7BE82A98D9 /* UIImage+PDF.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIImage+PDF.swift"; sourceTree = ""; }; - F3B086736AAA1DB3E1686132E2D41189 /* UISpringTimingParameters+Conveniences.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UISpringTimingParameters+Conveniences.h"; path = "Roxas/UISpringTimingParameters+Conveniences.h"; sourceTree = ""; }; - F3B28902F2FA18779F68EE9334C7DAAE /* NstImage.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstImage.hpp; sourceTree = ""; }; - F3B9A34A308C1DACD3B00CBA4D04F41F /* NstBoardSachenSa0036.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSachenSa0036.hpp; sourceTree = ""; }; - F3C364DFE470BB3B632D6815121F80C7 /* AnyKeyPath+StringValue.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "AnyKeyPath+StringValue.swift"; sourceTree = ""; }; - F3F1E51AE6F5BE0ACA847F1A9ACE7311 /* CustomTasks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CustomTasks.swift; path = Source/SwiftyDropbox/Shared/Handwritten/CustomTasks.swift; sourceTree = ""; }; - F41A2B09C72776BA6B5C0BC4B688C9FF /* VideoMode.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = VideoMode.hpp; sourceTree = ""; }; - F41D052495AB2789D36A7796B17EADD4 /* GoogleSignIn.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = GoogleSignIn.debug.xcconfig; sourceTree = ""; }; - F449670F55A999CFE1769E48D2557E1C /* NSPredicate+Search.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSPredicate+Search.h"; path = "Roxas/NSPredicate+Search.h"; sourceTree = ""; }; - F4567E4637DA3B5C60F7318FA9E969AE /* pngrtran.c */ = {isa = PBXFileReference; includeInIndex = 1; path = pngrtran.c; sourceTree = ""; }; - F463B69847F43B25F137A1213A0A0F9E /* RemoteRecord.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RemoteRecord.swift; sourceTree = ""; }; - F472A7F26975598CDEE2C77D9BA6E936 /* NstBoardDiscrete.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardDiscrete.hpp; sourceTree = ""; }; - F479D170EB4EF8FE5B9911A5F7E28C9D /* glsl_CombinerProgramBuilder.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_CombinerProgramBuilder.cpp; sourceTree = ""; }; - F486ACA4D64E794BD29DD65E3D3638BB /* gb_cart.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = gb_cart.h; sourceTree = ""; }; - F4A979B9FDFB02A9135A8DE1C16A4D0E /* TxImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TxImage.h; sourceTree = ""; }; - F4BD93EBB898827AF67732B5398A5020 /* GPU2D.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GPU2D.h; sourceTree = ""; }; - F4D10DD3D9ADA80E392F14E7BD19294C /* r4300_core.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = r4300_core.h; sourceTree = ""; }; - F4E029C6B1502E3C0F74D27B9EECBA1F /* DriveService+Versions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DriveService+Versions.swift"; path = "Backends/Drive/Harmony-Drive/DriveService+Versions.swift"; sourceTree = ""; }; - F5040FA5F2C10BA592D9F2AA3240BED7 /* UICollectionViewCell+Nibs.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UICollectionViewCell+Nibs.m"; path = "Roxas/UICollectionViewCell+Nibs.m"; sourceTree = ""; }; - F50917A4D4B27777FE66FE1D8F23BD24 /* ObjectHandle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ObjectHandle.h; sourceTree = ""; }; - F52CFA0D8CB9C39E3A30CC1BFEF5E12B /* KeyboardResponder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = KeyboardResponder.swift; sourceTree = ""; }; - F5BA07A2D7780313D79F2443FAA2DF41 /* md5.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = md5.h; sourceTree = ""; }; - F5DEB059629A947D90A58EBA2CAA95D0 /* ARMJIT_Compiler.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ARMJIT_Compiler.cpp; sourceTree = ""; }; - F5E0C5BD4404D72AE97B455739B66597 /* Socket.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = Socket.hpp; sourceTree = ""; }; - F5E76C4046670A82D2A4B977C8535413 /* NstBoardRumbleStation.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardRumbleStation.hpp; sourceTree = ""; }; - F5EA96C879945AA782B43E8FA302CAF0 /* UIImage+GIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+GIF.m"; path = "SDWebImage/UIImage+GIF.m"; sourceTree = ""; }; + F3899B5DF470A14F44821581624BD8C1 /* DBChunkInputStream.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DBChunkInputStream.m; path = Source/SwiftyDropbox/Shared/Handwritten/DBChunkInputStream.m; sourceTree = ""; }; + F4CF420B410FBBD4F0561EBE01AAE958 /* SyncCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SyncCoordinator.swift; path = Harmony/SyncCoordinator.swift; sourceTree = ""; }; + F4E0F905867C823DD587F6A0C9FF2AED /* GoogleSignIn.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = GoogleSignIn.bundle; path = Resources/GoogleSignIn.bundle; sourceTree = ""; }; + F5037560ABAFD8EFA7D72E3B2CDD1602 /* GoogleAPIClientForREST-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "GoogleAPIClientForREST-prefix.pch"; sourceTree = ""; }; + F53E57037FF88D31E90870F17E6CC5F5 /* SMCalloutView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SMCalloutView-prefix.pch"; sourceTree = ""; }; + F55FD3E4A10EB07482FD20815344FBBC /* GTLRDriveService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRDriveService.h; path = Source/GeneratedServices/Drive/GTLRDriveService.h; sourceTree = ""; }; + F577B3E9B2D8B8B2F6F1B64CE574E5FD /* SMCalloutView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SMCalloutView.h; sourceTree = ""; }; + F595CE922A51706859139752BC6F10B2 /* Query.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Query.swift; path = Sources/SQLite/Typed/Query.swift; sourceTree = ""; }; + F5B2FBBDB56AB50CB2010A04545B31A6 /* SQLite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SQLite.h; path = Sources/SQLite/SQLite.h; sourceTree = ""; }; F5FA45A44C42CC2CA3A324A3E914CE19 /* libSQLite.swift.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libSQLite.swift.a; path = libSQLite.swift.a; sourceTree = BUILT_PRODUCTS_DIR; }; - F6053E86238B20D5AB5C0D016FD76C54 /* NstBoardSuperGame.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardSuperGame.hpp; sourceTree = ""; }; - F61A7ADB7BA7193FE87B124A2230E8B7 /* VideoFormat.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = VideoFormat.swift; sourceTree = ""; }; - F63203C30119ECDD3B34CFDEFE95164C /* RSTToastView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTToastView.h; path = Roxas/RSTToastView.h; sourceTree = ""; }; - F643616FADBF7E6BC2A1186150E9FEB8 /* ftcalc.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftcalc.h; sourceTree = ""; }; - F65A5389BBD3EAB8C0EAB4FA39D5126E /* NstBoardQj.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardQj.hpp; sourceTree = ""; }; - F6A0E3246B3946FC0EF4B37B8CA993AA /* GBAGfx.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = GBAGfx.h; sourceTree = ""; }; - F6A27E44BB36718D04D772D7CA7AFDB1 /* String.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = String.hpp; sourceTree = ""; }; - F6A3B301C991075D4B3FF42F509F52CC /* PostProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = PostProcessor.h; sourceTree = ""; }; - F6A7E56CB63D6D8E0CDF3FA942D6464F /* cpuaddr.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = cpuaddr.h; sourceTree = ""; }; - F6B3A96C95DE502A6A601D2CF680FFDA /* Rect.inl */ = {isa = PBXFileReference; includeInIndex = 1; path = Rect.inl; sourceTree = ""; }; - F6E33B580B86B99E3F06C1706C55E0E4 /* ButtonsInputView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ButtonsInputView.swift; sourceTree = ""; }; - F7042EAD352C2910B271E66506CE6D47 /* NstBoardBmcGolden190in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcGolden190in1.hpp; sourceTree = ""; }; - F7084BF822C7A0087A22DBD99CA5F50B /* CombinerProgram.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = CombinerProgram.h; sourceTree = ""; }; - F727CF06AC29D239338AF25D01A38243 /* AudioRendering.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AudioRendering.swift; sourceTree = ""; }; - F74650D4B8781AB8E64A8CA694F1307D /* F3D.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = F3D.h; sourceTree = ""; }; - F76E0CFC8475B8821C6FB3C2660544DD /* StandardGameControllerInput.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = StandardGameControllerInput.swift; sourceTree = ""; }; - F780080F088472D2EA3AD73F9AC6B238 /* DropboxClientsManager.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DropboxClientsManager.swift; path = Source/SwiftyDropbox/Shared/Handwritten/DropboxClientsManager.swift; sourceTree = ""; }; - F785ADB3D15DFFCE14F3E3E225AD962C /* ftstdlib.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ftstdlib.h; sourceTree = ""; }; - F7BC33DDA3BE006651A2F49C655123F8 /* NstBoardFxRom.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardFxRom.hpp; sourceTree = ""; }; - F7DBAD3AB29B6419D008AA8066EDA2C1 /* ClipPolygon.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ClipPolygon.h; sourceTree = ""; }; - F7EDD8F96ECC1D4DB6AF3D0BAE03B280 /* RSTOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTOperation.m; path = Roxas/RSTOperation.m; sourceTree = ""; }; - F7F9371F009683A283C1E8EF6EE2393B /* agbprint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = agbprint.h; sourceTree = ""; }; - F809B8CB68A6A28D226F226F8AC25ACB /* RSTActivityIndicating.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTActivityIndicating.h; path = Roxas/RSTActivityIndicating.h; sourceTree = ""; }; - F840D02C8835AA39D02B6ABE9681A9AD /* svxf86nm.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svxf86nm.h; sourceTree = ""; }; - F85AC4CB7A35809FF805833CACD153C0 /* NstInpPowerPad.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstInpPowerPad.hpp; sourceTree = ""; }; - F8694E99071ADE337EEEA41E7C2CFD82 /* GTLRService.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRService.h; path = Source/Objects/GTLRService.h; sourceTree = ""; }; - F8A7678C2D0250B6A762204476642250 /* Turbo3D.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Turbo3D.h; sourceTree = ""; }; - F8AA8E3FF743A7D7D470B8EDF92A6C00 /* Thread+RealTime.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Thread+RealTime.swift"; sourceTree = ""; }; - F8CF8BE812823CA459587DFFF0F9B0DF /* Standard.deltamapping */ = {isa = PBXFileReference; includeInIndex = 1; name = Standard.deltamapping; path = GBCDeltaCore/Standard.deltamapping; sourceTree = ""; }; - F8E8726464D823B37E1B6D05F7E27255 /* TeamCommon.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TeamCommon.swift; path = Source/SwiftyDropbox/Shared/Generated/TeamCommon.swift; sourceTree = ""; }; - F93477FBF1E4488E506F9BB79AF57D38 /* libDeltaCore.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libDeltaCore.a; path = libDeltaCore.a; sourceTree = BUILT_PRODUCTS_DIR; }; - F94637A21D42A1D3D7F8F0AF2786C782 /* GTLRUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRUtilities.m; path = Source/Utilities/GTLRUtilities.m; sourceTree = ""; }; - F957191F16EB51F9ED580C979F2C6A56 /* DeltaCore.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = DeltaCore.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - F99896E3ECBE432B5D1400DC207AC694 /* NstBoardUnlWorldHero.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardUnlWorldHero.hpp; sourceTree = ""; }; - F9CB51830A19D7845E7B996477CD3A7E /* TxFilter.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = TxFilter.cpp; sourceTree = ""; }; - F9E3F8223A04B2A5A32807F8C0F4B2B5 /* ringbuffer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = ringbuffer.h; sourceTree = ""; }; - F9FF6F125A28116A8BF1C9F823696326 /* alist.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = alist.h; sourceTree = ""; }; - FA0EAC9414F0445D01B6398BB5FE1B37 /* NstZlib.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstZlib.hpp; sourceTree = ""; }; - FA1CFA44D4D6E92F65BC911088DBFAB8 /* ARMInterpreter_Branch.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = ARMInterpreter_Branch.cpp; sourceTree = ""; }; - FA293C63A8B24A15F71B9359696C4394 /* TxTexCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TxTexCache.h; sourceTree = ""; }; - FA400832D3E46B39D5EC83D09A7572FC /* libSNESDeltaCore.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libSNESDeltaCore.a; path = libSNESDeltaCore.a; sourceTree = BUILT_PRODUCTS_DIR; }; - FA4AEA75EC63BEFEF18086DCDB401648 /* dummy_audio.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = dummy_audio.h; sourceTree = ""; }; - FA5B2AFDA57147D8A9707EBFD0687B62 /* SNESDeltaCore.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SNESDeltaCore.debug.xcconfig; sourceTree = ""; }; - FA9F28EAD2B467DF6DA41196DBF9B8E4 /* NstStream.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstStream.hpp; sourceTree = ""; }; - FAA16CD6BB856E1F600CC6DC038A6801 /* DLTAMuteSwitchMonitor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = DLTAMuteSwitchMonitor.m; sourceTree = ""; }; - FAC23FED142F320FA9943449A514E1EB /* FIFOSampleBuffer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = FIFOSampleBuffer.h; sourceTree = ""; }; - FADAC750C6926F320BE0D25936C925C3 /* NstBoardJalecoJf19.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardJalecoJf19.hpp; sourceTree = ""; }; - FAE24C1E39D633454B1C309D12775BC5 /* NstBoardBmc9999999in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmc9999999in1.hpp; sourceTree = ""; }; - FAECC7C1429A920EDECC14CCF40B8BD7 /* NESEmulatorBridge.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = NESEmulatorBridge.cpp; sourceTree = ""; }; - FAFD8C47B27463105661192057489529 /* N64.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = N64.swift; sourceTree = ""; }; - FB23491CA81D5C2441595CFDB66E8D32 /* UIImageView+HighlightedWebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+HighlightedWebCache.h"; path = "SDWebImage/UIImageView+HighlightedWebCache.h"; sourceTree = ""; }; - FB787201018DEDE00599C797249329FE /* Harmony-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Harmony-umbrella.h"; sourceTree = ""; }; - FB7B9AA2049E61CFE3058E49DB95309B /* OGLRender.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = OGLRender.h; sourceTree = ""; }; - FBE558ED21912B2EE34190ECEADDE26E /* stream.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = stream.h; sourceTree = ""; }; - FC58D957FD250B9D3EA534C46DE7360D /* Parameter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = Parameter.h; sourceTree = ""; }; - FC5CD66C23C8B15B020AD1A0E066DE14 /* UIImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+WebCache.h"; path = "SDWebImage/UIImageView+WebCache.h"; sourceTree = ""; }; - FC8658703FB896059E27A58D32C6B0C5 /* NstBoardBmcGoldenCard6in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcGoldenCard6in1.hpp; sourceTree = ""; }; - FCA3A4E5B21B603E44C4DA3AB87595F8 /* GTLRUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRUtilities.h; path = Source/Utilities/GTLRUtilities.h; sourceTree = ""; }; - FD0BECC89A6590F418BA1CC26D59F237 /* svmm.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = svmm.h; sourceTree = ""; }; - FD1E386D12C53A3A0B1EF7F9E1841B0F /* Context.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = Context.cpp; sourceTree = ""; }; - FD3868B661FD904E2E969DEF510A58E2 /* TextureFilters_2xsai.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TextureFilters_2xsai.h; sourceTree = ""; }; + F6052475DCAFAECED7A4638CBEBD737C /* RSTConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTConstants.h; path = Roxas/RSTConstants.h; sourceTree = ""; }; + F65F4924DB258FF13BB1622BAAEE0E5F /* RSTCellContentDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTCellContentDataSource.m; path = Roxas/RSTCellContentDataSource.m; sourceTree = ""; }; + F71361CE81454B9351EF3DD4FD0F0635 /* RSTHasher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTHasher.h; path = Roxas/RSTHasher.h; sourceTree = ""; }; + F8583552E9E43FAA7F9D92C797A37FF9 /* RSTSeparatorView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTSeparatorView.h; path = Roxas/RSTSeparatorView.h; sourceTree = ""; }; + F8FFB2CD35CECB252C08AA9BBF8FC9AD /* GTLRBase64.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRBase64.m; path = Source/Utilities/GTLRBase64.m; sourceTree = ""; }; + F918B66FEBBFEA9B9BCBF350EDFCE150 /* OAuthMobile.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = OAuthMobile.swift; path = Source/SwiftyDropbox/Platform/SwiftyDropbox_iOS/OAuthMobile.swift; sourceTree = ""; }; + F950F0FEE40116F37DA6EDF3C3156597 /* Errors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Errors.swift; path = Sources/SQLite/Core/Errors.swift; sourceTree = ""; }; + F9BAD513155FD42507CA9552744A41E6 /* RSTOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTOperation.h; path = Roxas/RSTOperation.h; sourceTree = ""; }; + FAA33D4607A674D4B4CEC7E44CBB7F7F /* GTLRUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = GTLRUtilities.h; path = Source/Utilities/GTLRUtilities.h; sourceTree = ""; }; + FACB43496D5DC76E9AA82F06701E0448 /* RSTCompositeDataSource.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTCompositeDataSource.m; path = Roxas/RSTCompositeDataSource.m; sourceTree = ""; }; + FC31C1DE443CE579CAC65328AFD05E5E /* ManagedRecord+Predicates.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "ManagedRecord+Predicates.swift"; sourceTree = ""; }; FD519882861480B93B563B477CE1FA29 /* libGoogleAPIClientForREST.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libGoogleAPIClientForREST.a; path = libGoogleAPIClientForREST.a; sourceTree = BUILT_PRODUCTS_DIR; }; - FD54E6079E9F42AB9DFA70DC6CB773B4 /* dcheck.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = dcheck.h; sourceTree = ""; }; - FD926A875D2FBDFA56F862E68AF4755C /* NstBoardFujiya.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardFujiya.hpp; sourceTree = ""; }; - FDA103324CE11F224C8C8B8A2BC86352 /* NstBoardBmcSuperVision16in1.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBmcSuperVision16in1.hpp; sourceTree = ""; }; - FDA97DF09E3799641D19F3DC6F879DE0 /* UITableViewCell+CellContent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableViewCell+CellContent.h"; path = "Roxas/UITableViewCell+CellContent.h"; sourceTree = ""; }; - FDB106486A5BDBC079CB460CD73AA422 /* dd_controller.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = dd_controller.h; sourceTree = ""; }; - FDCC581E502759182D92640030424D5F /* MelonDSEmulatorBridge.mm */ = {isa = PBXFileReference; includeInIndex = 1; path = MelonDSEmulatorBridge.mm; sourceTree = ""; }; - FDE6D1B2F355A9CF0CF9790DABCFBF10 /* fxinst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = fxinst.h; sourceTree = ""; }; - FE1DD0DC6207F06FA49412EF39C53F61 /* GBCInputGetter.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = GBCInputGetter.cpp; sourceTree = ""; }; - FE37500E60282A9A4012827461E8C2AC /* RTree.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RTree.swift; path = Sources/SQLite/Extensions/RTree.swift; sourceTree = ""; }; - FE393A787CDB1368A55863B430DDD5C7 /* lua-engine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "lua-engine.h"; sourceTree = ""; }; - FE39951FAEE97B46CF8150651BDCA721 /* WindowHandle.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = WindowHandle.hpp; sourceTree = ""; }; - FE429DA70CDCA70BCDA625196C0BBE79 /* RSTNibView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTNibView.m; path = Roxas/RSTNibView.m; sourceTree = ""; }; - FE81E396E46844584FB6B2FF7E5F104C /* DSDeltaCore.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DSDeltaCore.release.xcconfig; sourceTree = ""; }; - FE8B468826973A5911865B4E08BA55EA /* alist.c */ = {isa = PBXFileReference; includeInIndex = 1; path = alist.c; sourceTree = ""; }; - FE93DEE394994F832D334D9E6E12A6A3 /* GPU.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = GPU.cpp; sourceTree = ""; }; - FEAA22126ACDA08EE9AC0FA9A9B6EC05 /* Custom.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Custom.swift; path = Source/SwiftyDropbox/Shared/Handwritten/Custom.swift; sourceTree = ""; }; - FED800917E3DBCFA484346FA1DE92AD0 /* TextureFilters_xbrz.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = TextureFilters_xbrz.h; sourceTree = ""; }; - FEF94987AE07AD572EFB75A21E59A063 /* NstBoardKonami.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardKonami.hpp; sourceTree = ""; }; - FF97EFD3A744B8AF2BB6EDBFDBD5E6D8 /* pixform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = pixform.h; sourceTree = ""; }; - FF9EEB9B0C1C0002A7675C4264080D00 /* NstBoardAveD1012.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardAveD1012.hpp; sourceTree = ""; }; - FF9F20847DEDE22F9482DF5E072188A8 /* NstBoardBandai.hpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.h; path = NstBoardBandai.hpp; sourceTree = ""; }; - FFBE6231F3C96E0F29DCACC0B2A7765E /* glsl_SpecialShadersFactory.cpp */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.cpp.cpp; path = glsl_SpecialShadersFactory.cpp; sourceTree = ""; }; + FDA221EAF1F8F41B3FAF8D8189E9E258 /* NSPredicate+Search.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSPredicate+Search.m"; path = "Roxas/NSPredicate+Search.m"; sourceTree = ""; }; + FE1BC1663278F2BD29760538D065DE9D /* RSTOperation_Subclasses.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RSTOperation_Subclasses.h; path = Roxas/RSTOperation_Subclasses.h; sourceTree = ""; }; + FE9A13F9787AF145CDE0DF4143F17F71 /* GTLRFramework.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = GTLRFramework.m; path = Source/Utilities/GTLRFramework.m; sourceTree = ""; }; + FEC5AB1219E742B719483DB3A7E17C4E /* RSTCellContentChange.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RSTCellContentChange.m; path = Roxas/RSTCellContentChange.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 0278C1310F2FC854B6D8D8B7C4899F3E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; 07C7603FFA3CB8DF7695C09A4C85DE4B /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -4110,8631 +1027,2243 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 1488024521E3F8E048FB39F8C5B4A4AC /* Frameworks */ = { + 302A7C5C7E043DB1ACB35D9232F2D4D9 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 1DF257C963786606A49029119D97D623 /* Frameworks */ = { + 330DB31EAF4B510A46EF34242AF8CB60 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 24D549263055335213CCD47E61AF1EC1 /* Frameworks */ = { + 373FAF5E443D6679532ACC75D39A2A05 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 36E56EB5253558614CE79301A749B02C /* Frameworks */ = { + 4DFC652A29D6153132CBAFD0A28904DC /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 373FAF5E443D6679532ACC75D39A2A05 /* Frameworks */ = { + 7493E42190EBEAA740FD633B30B8DE50 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 39A9B1F634A7D8F9D08DF03E65A7AF0D /* Frameworks */ = { + 83E6F56551D35482FE1861B7C021F61A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 45FE1226A33A60E16077252CDDDDBF2D /* Frameworks */ = { + 872C104A3266050144437694E83876B9 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 49E8DCF3C1E1BEF749AD9EFD56D6C7B4 /* Frameworks */ = { + BB6B1C21E27B56128CA5A2431C997CE4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 550AA98561B4CCBF05A114EA0F64C641 /* Frameworks */ = { + D0AB4FF4329C34D71D0BA178CDB4236F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 745F4853A6109BB9240488B605C5255A /* Frameworks */ = { + DF86A4ACA5B324235096A41793E2591C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 7493E42190EBEAA740FD633B30B8DE50 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 089179143612E83101FB10588A667346 /* Resources */ = { + isa = PBXGroup; + children = ( + F4E0F905867C823DD587F6A0C9FF2AED /* GoogleSignIn.bundle */, ); - runOnlyForDeploymentPostprocessing = 0; + name = Resources; + sourceTree = ""; }; - 7CAC5B43C0F8EE43F07B70E54ED0EFEB /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( + 08C58CF73AB8BFBF56E0EB8B4D727EE1 /* Pods-Delta */ = { + isa = PBXGroup; + children = ( + AE1179D5EA23BDBED2AEC4F50068090B /* Pods-Delta.modulemap */, + 21D6D1EB35E3D74EDEA3C2CD85A05F52 /* Pods-Delta-acknowledgements.markdown */, + DA78D0D081686B5372F0FFAABDF5733A /* Pods-Delta-acknowledgements.plist */, + 4F8D603EBE941AC871B0A2F47AD5B6D5 /* Pods-Delta-dummy.m */, + 409F0AD5337C7D82401596430BE50AB0 /* Pods-Delta-resources.sh */, + 37221D699E77B16EA4FE6C376B827730 /* Pods-Delta-umbrella.h */, + A34489EBF25913D7D0197EFF7FA146A3 /* Pods-Delta.debug.xcconfig */, + F381603DE2011262E9A2C37926028861 /* Pods-Delta.release.xcconfig */, ); - runOnlyForDeploymentPostprocessing = 0; + name = "Pods-Delta"; + path = "Target Support Files/Pods-Delta"; + sourceTree = ""; }; - 83E6F56551D35482FE1861B7C021F61A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( + 0E550D6146C076CB428565DC2CC3D5CE /* Harmony-Drive */ = { + isa = PBXGroup; + children = ( + EC1D5886605D6AA857B1294C64A88931 /* DriveService.swift */, + E60E2392C1A066712DCA131786D8353F /* DriveService+Files.swift */, + 6E2D61118AA3383BE1427AD561F7368E /* DriveService+Records.swift */, + 575CB1AB9032ECD41F06D203C4E64B0E /* DriveService+Versions.swift */, + 2811138859F1A616B8FCE61FD4C64700 /* Extensions */, ); - runOnlyForDeploymentPostprocessing = 0; + name = "Harmony-Drive"; + sourceTree = ""; }; - 872C104A3266050144437694E83876B9 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( + 12AA9695BAAA8EF3B99E5B269D41F983 /* Support Files */ = { + isa = PBXGroup; + children = ( + BD1B5BEBA150B7B5A8A0CDF224654081 /* SDWebImage.modulemap */, + 6DD6D3ECB0AA60B8483858D13383CDBF /* SDWebImage-dummy.m */, + CB5F3AC61657BA6F0862591966B0F78B /* SDWebImage-prefix.pch */, + A8AB3DF42282AA17A580B967EF785501 /* SDWebImage-umbrella.h */, + 4D6EF79D3CEDF22176E037E94AF82A40 /* SDWebImage.debug.xcconfig */, + 8438943FC79C2F08F98E93A1B0F37077 /* SDWebImage.release.xcconfig */, ); - runOnlyForDeploymentPostprocessing = 0; + name = "Support Files"; + path = "../Target Support Files/SDWebImage"; + sourceTree = ""; }; - 97FA1702BFA1F0E041B1E2C5C134BBEA /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( + 12EEF30C26AA897E36FE35C00F61BD47 /* Support Files */ = { + isa = PBXGroup; + children = ( + E36C5F1FFD2FF2D7848B5A013B85577B /* SQLite.swift.modulemap */, + 2B3E4E0BD549452A129407E9F4DF73D7 /* SQLite.swift-dummy.m */, + C4C6D59DB50223D14136CA8CABE71C99 /* SQLite.swift-prefix.pch */, + 24492A0EE90D47AE559514DC997E7AF1 /* SQLite.swift-umbrella.h */, + DA2024F45CD548A78517D510532A59AD /* SQLite.swift.debug.xcconfig */, + A3DED955C2C6340F0897CDDA63CFE9AC /* SQLite.swift.release.xcconfig */, ); - runOnlyForDeploymentPostprocessing = 0; + name = "Support Files"; + path = "../Target Support Files/SQLite.swift"; + sourceTree = ""; }; - A8F7ED8C6E8FF24472EEB6BDE9D273F4 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( + 168446AEBE5A3EAA21BF3EBB767F70FE /* GoogleSignIn */ = { + isa = PBXGroup; + children = ( + 44373D1901C32492E44EF6F1FA4B565C /* Frameworks */, + 089179143612E83101FB10588A667346 /* Resources */, + 460EB58A40AEE68F90E40CC06B845FCB /* Support Files */, ); - runOnlyForDeploymentPostprocessing = 0; + name = GoogleSignIn; + path = GoogleSignIn; + sourceTree = ""; }; - B80A59884AEC46F6702DAD4235E02625 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( + 187E47DF0B08173F16CF674706632D0E /* Support Files */ = { + isa = PBXGroup; + children = ( + 9AC67F7F185BEF874EEAEB0A2FD9DBA1 /* Harmony.modulemap */, + 6C217B1D470D67BFDE20D91DEF2F3C0C /* Harmony-dummy.m */, + 7F3FF3A19661A95D806B423923D49521 /* Harmony-prefix.pch */, + 7632D02ABB0ADB8514EF7C1E9DDD782B /* Harmony-umbrella.h */, + 674DA6ED603959E5F24CB282D3656C0A /* Harmony.debug.xcconfig */, + 16CB5FC0E533EEE1D7568404E10D67A9 /* Harmony.release.xcconfig */, ); - runOnlyForDeploymentPostprocessing = 0; + name = "Support Files"; + path = "../../Pods/Target Support Files/Harmony"; + sourceTree = ""; }; - BB6B1C21E27B56128CA5A2431C997CE4 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( + 19CDC1509506D97276218BFB2876D1C0 /* Fabric */ = { + isa = PBXGroup; + children = ( + B9D09E169C57FC41506AE28BDF25F446 /* FABAttributes.h */, + 988C700EAC6CFAEFFA2D7AA935237F98 /* Fabric.h */, + C5C9CF0B8182ACDFAAC26BB714C495AF /* Frameworks */, + 81BF4F61FB3D1AA8FDEAA979F0F51B09 /* Support Files */, ); - runOnlyForDeploymentPostprocessing = 0; + name = Fabric; + path = Fabric; + sourceTree = ""; }; - C610C62585E9296CFA84B45E8A41F8C8 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( + 1C898A65006033C2CF0449C5A862E4BE /* Drive */ = { + isa = PBXGroup; + children = ( + 58EEEED1C715D914278ED0DBB32F3829 /* GTLRDrive.h */, + C502187AC8986A6C13F8C50618BF74A6 /* GTLRDriveObjects.h */, + 6DB86817F8E387CD37052ED22E7F2A95 /* GTLRDriveObjects.m */, + 13243B038BA4A8CCE05818902554AEBA /* GTLRDriveQuery.h */, + D091ABD1DCB16678D1F8C49A5CDA541C /* GTLRDriveQuery.m */, + F55FD3E4A10EB07482FD20815344FBBC /* GTLRDriveService.h */, + 0C12A43A8E9C71B79865C9DE33398566 /* GTLRDriveService.m */, ); - runOnlyForDeploymentPostprocessing = 0; - }; - CA5C0D24E9EF27B7B8B5CFA885D9146C /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D0AB4FF4329C34D71D0BA178CDB4236F /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E97AC62D61AC37400C2B01133164C9C8 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - EA3BC1A215375BC8E4FBA46DD671FF92 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F300B90E27A67D3919921AF01EECE6DE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F6CA344BE9328D032E851ED3CC7FE2A9 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FA289BB8BBD71C35A28D27C0A80A8C9E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 009F0CC285F6BA78E9A92285E866A377 /* Crashlytics */ = { - isa = PBXGroup; - children = ( - 50AB12044ABB6573A85B1B594DFD3566 /* ANSCompatibility.h */, - C526F8C0BC1F7A1BE3449A79197ECC22 /* Answers.h */, - 2C9B018595CD9C8401E17A0CED6F461B /* CLSAttributes.h */, - A96F1AF6EE27AE150CDEB7A987B02DAE /* CLSLogging.h */, - 478FF66EA47351596632AC605ADC8D1D /* CLSReport.h */, - 13E613695F9989137A9FF581460F493C /* CLSStackFrame.h */, - 63596961E529E55CE62A0623E1E98848 /* Crashlytics.h */, - DAB3A620E6753672E6B5D0FDD42AD39A /* Frameworks */, - 4D92D1A8EF32BA646425361261FC2014 /* Support Files */, - ); - name = Crashlytics; - path = Crashlytics; + name = Drive; sourceTree = ""; }; - 0128BF0DC27374D2B9067EED26E48D8A /* PublicApi */ = { + 1D18E7139FC4556D1707DB5BB9FD2F13 /* Support Files */ = { isa = PBXGroup; children = ( - 72C1083AD34F4F2C3F51C52B8BD27F4C /* android_hardware_buffer_compat.h */, - 6B4F51183AC9E8A568E66894754B3C3B /* check.h */, - FD54E6079E9F42AB9DFA70DC6CB773B4 /* dcheck.h */, + D8B90997B6EEFAC69A88FD0627D7E701 /* SMCalloutView.modulemap */, + C6F1CC0D7A0F0AD93F5B13C2F6713C5F /* SMCalloutView-dummy.m */, + F53E57037FF88D31E90870F17E6CC5F5 /* SMCalloutView-prefix.pch */, + 390CA71F71BE3F9AD8524364A21EB203 /* SMCalloutView-umbrella.h */, + CED87ECBA050B60EAA82FBCB03CC593F /* SMCalloutView.debug.xcconfig */, + 23E95DC8F822E1258BBE968D4052D39A /* SMCalloutView.release.xcconfig */, ); - name = PublicApi; - path = PublicApi; + name = "Support Files"; + path = "../Target Support Files/SMCalloutView"; sourceTree = ""; }; - 03A64B69D1F97D2EB5ABAAD291CE8D73 /* desmume */ = { + 24BD7B6987E5F77ECD4730D861CDAB54 /* Types */ = { isa = PBXGroup; children = ( - 4863F58B53F0131352B6628AA2473A10 /* src */, + DD835A67DEE7945EB1D1EF9E13AFC0D9 /* AnyCodable.swift */, + B0B6231BE1227B31701717B2F7041B26 /* Errors.swift */, + 96951DA3D56E7525403BD8C89A47BA17 /* SyncProgress.swift */, ); - name = desmume; - path = desmume; + name = Types; + path = Harmony/Types; sourceTree = ""; }; - 03C9422833DBACD9A8747AB1F6699293 /* Pod */ = { + 2676B2B68FC678D7E37CA4D22FF257C3 /* Pods */ = { isa = PBXGroup; children = ( - 136F62DF1339E133946A641685928749 /* SNESDeltaCore.podspec */, + 6F4DD93ADF8E2D4C128083684AC7849B /* Alamofire */, + 9CC86905783BC179929448926DD38BA5 /* Crashlytics */, + 19CDC1509506D97276218BFB2876D1C0 /* Fabric */, + 7452095D3AEBA523354637A17FFF655E /* GoogleAPIClientForREST */, + 168446AEBE5A3EAA21BF3EBB767F70FE /* GoogleSignIn */, + 72857708672FDE187C775A91F138F872 /* GoogleToolboxForMac */, + 54D4CC13712550903AE11D1BF8A8F1F9 /* GTMSessionFetcher */, + DD30560301D8B85295F333F5A439F04B /* SDWebImage */, + 68E816CBA0BFF375803D2D147C531B2E /* SMCalloutView */, + B8A658CA70CA481F4B1A9C8B49189A7C /* SQLite.swift */, + 72FF584E43471D689689BB176290CDEE /* SwiftyDropbox */, ); - name = Pod; + name = Pods; sourceTree = ""; }; - 055CBD7DD21321B9C85695F79AE6A150 /* oglft */ = { + 2811138859F1A616B8FCE61FD4C64700 /* Extensions */ = { isa = PBXGroup; children = ( - 30F6CAA659D4D94BBF65DF1CE1D40AB8 /* OGLFT.h */, + B02A952ED3771DEE753E9E1DB18B0CAB /* RemoteFile+File.swift */, + 143BD292AEF9C3E011136A57C9DF912E /* RemoteRecord+File.swift */, + 17170F0CA233C9110181F74544CE1B5C /* Result+Drive.swift */, + A7E37EDDD47B8D03EB2F2F576E2A8600 /* Version+Revision.swift */, ); - name = oglft; - path = oglft; + name = Extensions; + path = "Backends/Drive/Harmony-Drive/Extensions"; sourceTree = ""; }; - 05960DA526551A8475475D8107FD51A0 /* Support Files */ = { + 2C26391E4F4F62754BFC13DD87793788 /* Support Files */ = { isa = PBXGroup; children = ( - A2A6EF7556A167FB0E866734AC01F331 /* ResourceBundle-SNESDeltaCore-SNESDeltaCore-Info.plist */, - 310D5F95C0B429799D0905D4C3CC4089 /* SNESDeltaCore.modulemap */, - 2F843E73027A5BE68E6CA51088F469B2 /* SNESDeltaCore-dummy.m */, - DC67F65D7368549BEDBF585E0E7C7FE6 /* SNESDeltaCore-prefix.pch */, - E202E5A6E4DD5B83A861BDABCE981EB2 /* SNESDeltaCore-umbrella.h */, - FA5B2AFDA57147D8A9707EBFD0687B62 /* SNESDeltaCore.debug.xcconfig */, - 3DCBB7A27AD42575D6ED0104FBB160BC /* SNESDeltaCore.release.xcconfig */, + 57B10A5E7CD0D0BE440B250F11B2BBAB /* Roxas.modulemap */, + E68D11D9324AD01AFC7C42B7077DA092 /* Roxas-dummy.m */, + F18AA9436D607EF9E1DC5CA834CEC65F /* Roxas-prefix.pch */, + EF8958A15E98A901DBC0CFD03F65DA36 /* Roxas-umbrella.h */, + 6489AF4920604679F13DAC243B172A5E /* Roxas.debug.xcconfig */, + D97D50218F26FA896ABC058738BD76C7 /* Roxas.release.xcconfig */, ); name = "Support Files"; - path = "../../Pods/Target Support Files/SNESDeltaCore"; + path = "../../Pods/Target Support Files/Roxas"; sourceTree = ""; }; - 0733C7D2737E3066C78522E25ADEBFCD /* Types */ = { + 32C415356C303CAF8C78D68EDAB1A737 /* Pod */ = { isa = PBXGroup; children = ( - 526503C9D0166487853FEE7E30181783 /* ExtensibleEnums.swift */, + 431C45E062587B95BE6B5235A45E749F /* Harmony.podspec */, ); - name = Types; - path = DeltaCore/Types; + name = Pod; sourceTree = ""; }; - 087AE74B19D3349B2EEBC310C1ED991D /* src */ = { + 3525EFD530F26B69478C4CD4529BA7B0 /* Core Data */ = { isa = PBXGroup; children = ( - 9998929B47BFB3D5C9FB8D8B6A9D4556 /* bitmap_font.h */, - 2167141E4D27BFEEF859D04CC1F29060 /* counterdef.h */, - F162A0151520364D914D677343BC081E /* cpu.h */, - 0412CEFEC42589B89CE79F45788534DE /* initstate.h */, - 587876311AB9A43EF1E3013A16FA8F9C /* insertion_sort.h */, - 8E9F665C35592449F64CC06B2E19D1F7 /* interrupter.h */, - BFBCE321AA4691CCAD5F6DFE0A431A0B /* interruptrequester.h */, - CF90FA724655A486BEA6C173143364AC /* memory.h */, - 5E454B0889C6F765CDE3DB450589EE1C /* minkeeper.h */, - 801D06493D0A4FDBEBD0B4D257BAC5A3 /* osd_element.h */, - 0D0D65E295D5B00C78421E3AE72589FF /* savestate.h */, - 712309395CD5253158D97121E47F79D0 /* sound.h */, - E640A55690FFDFEB9BA20EAE5A938A07 /* state_osd_elements.h */, - 30CD7C1C723193A167A0753FFE763A28 /* statesaver.h */, - AC2DF45494986B62F7A3E6F8C593811E /* tima.h */, - DA1799268D0F9DA29D547C39C65C63B6 /* video.h */, - ); - name = src; - path = src; + 9F52A4835492A6E203E4D74C4AE86C58 /* MergePolicy.swift */, + B2323536FBE932E9A2BACA12C0F7DC43 /* RecordController.swift */, + ); + name = "Core Data"; + path = "Harmony/Core Data"; sourceTree = ""; }; - 08C58CF73AB8BFBF56E0EB8B4D727EE1 /* Pods-Delta */ = { + 3DF5AFF059EB646F51C4452287C54C9A /* Support Files */ = { isa = PBXGroup; children = ( - AE1179D5EA23BDBED2AEC4F50068090B /* Pods-Delta.modulemap */, - 21D6D1EB35E3D74EDEA3C2CD85A05F52 /* Pods-Delta-acknowledgements.markdown */, - DA78D0D081686B5372F0FFAABDF5733A /* Pods-Delta-acknowledgements.plist */, - 4F8D603EBE941AC871B0A2F47AD5B6D5 /* Pods-Delta-dummy.m */, - 409F0AD5337C7D82401596430BE50AB0 /* Pods-Delta-resources.sh */, - 37221D699E77B16EA4FE6C376B827730 /* Pods-Delta-umbrella.h */, - A34489EBF25913D7D0197EFF7FA146A3 /* Pods-Delta.debug.xcconfig */, - F381603DE2011262E9A2C37926028861 /* Pods-Delta.release.xcconfig */, + 1029FD4152EBC91C29AA34F8963A0805 /* Alamofire.modulemap */, + 4340A4F731B942E068A6B6F08CE738CA /* Alamofire-dummy.m */, + 871CE360CEA3654D2792FB1A91BC9FD6 /* Alamofire-prefix.pch */, + 50C5B9AA89857E20671F13F6A5717299 /* Alamofire-umbrella.h */, + 1B4A80294AD5192C9FCD1275553F2D93 /* Alamofire.debug.xcconfig */, + B31FBFB1194FC0975DE5F959F3A36920 /* Alamofire.release.xcconfig */, ); - name = "Pods-Delta"; - path = "Target Support Files/Pods-Delta"; + name = "Support Files"; + path = "../Target Support Files/Alamofire"; sourceTree = ""; }; - 09641B484179AA16F49FB945CF4A6DFB /* Harmony-Dropbox */ = { + 44373D1901C32492E44EF6F1FA4B565C /* Frameworks */ = { isa = PBXGroup; children = ( - 0C480DC524814D199544CFC4E5FFF079 /* DropboxService.swift */, - B124B8677E0B9063BDA8D9EABAC8CFAF /* DropboxService+Files.swift */, - 4FCE6CDCA42B06EE0F325B6800001633 /* DropboxService+Records.swift */, - 26C1CA5165F63DB19C3707B2831921CD /* DropboxService+Versions.swift */, - A6FF7363E781344B08B07ADFE185C70A /* Extensions */, + 0BC20764A2D0F997CAEA5DA92CAECDCC /* GoogleSignIn.framework */, ); - name = "Harmony-Dropbox"; + name = Frameworks; sourceTree = ""; }; - 09DDB94F18DBC0FD433191CBFE31AA7E /* Support Files */ = { + 460EB58A40AEE68F90E40CC06B845FCB /* Support Files */ = { isa = PBXGroup; children = ( - CBBEE4D27B665A1DD4EDB8A509D41C6C /* SwiftyDropbox.modulemap */, - D145AF0D8138ED303A35F31CC28531D9 /* SwiftyDropbox-dummy.m */, - 674B43A90EAC668AF859CC16F6048DC4 /* SwiftyDropbox-prefix.pch */, - 0D57E07B7CA9C82C9090FC455119B46B /* SwiftyDropbox-umbrella.h */, - 6AE80E95610AC55EF36C52FE2399360A /* SwiftyDropbox.debug.xcconfig */, - BD4FD5ECAA33E983C93BD04B1AEEDF59 /* SwiftyDropbox.release.xcconfig */, + 03CBC6D6463E2AFC7FD88AD23E8D4CB0 /* GoogleSignIn.debug.xcconfig */, + 6E7A43CE0B0458FE46C514110873F37A /* GoogleSignIn.release.xcconfig */, ); name = "Support Files"; - path = "../Target Support Files/SwiftyDropbox"; - sourceTree = ""; - }; - 0A0EFD80E22D317AB1A588570B854015 /* backends */ = { - isa = PBXGroup; - children = ( - 1A8F278C27D9D292DDB8DB3A1C033408 /* clock_ctime_plus_delta.h */, - 6F3C633420539DB6E775C732226165BB /* dummy_video_capture.c */, - 95CD9DA178E8F2C3E9F09D0EA74AB12F /* file_storage.h */, - 13920DC0557B7192075A9B94C4DFCAE0 /* api */, - 73D02C7F746F71295866DBB467595576 /* plugins_compat */, - ); - name = backends; - path = backends; + path = "../Target Support Files/GoogleSignIn"; sourceTree = ""; }; - 0A95B6906C738BFA36DD7F2DCDAF795A /* Inputs */ = { + 462EA281E9382502250A77F732C0F6C0 /* Defines */ = { isa = PBXGroup; children = ( - D850BF9E05BD4EFBC1DD2310343163E5 /* GameController.swift */, - 523F0E989B05847985E89FFE04B20FF3 /* Input.swift */, + 18F66715A19114346F3E056B7F1416D4 /* GTMDefines.h */, ); - name = Inputs; - path = Inputs; + name = Defines; sourceTree = ""; }; - 0AD1505C1C8C54C38E713E7138217CBD /* osal */ = { + 54D4CC13712550903AE11D1BF8A8F1F9 /* GTMSessionFetcher */ = { isa = PBXGroup; children = ( - D6950D50E9695976359606938A73508D /* dynamiclib.h */, - 2525F0080E1D579ED304839BC0840B29 /* files.h */, - EC10C1D9D6A74227024D832707016D1C /* preproc.h */, + FD875969FEC6541A862344D6A1406ABF /* Core */, + E3E813B99BFEAD6FC7F2AE33331BC449 /* Full */, + 66D308C191EA914BD00EA1DA033C2DF8 /* Support Files */, ); - name = osal; - path = osal; + name = GTMSessionFetcher; + path = GTMSessionFetcher; sourceTree = ""; }; - 0B348EFA5E7998F230B209FD6C6FF433 /* Controller Skin */ = { + 5731D12756FDE9A8BE06D92B69807F2E /* NSDictionary+URLArguments */ = { isa = PBXGroup; children = ( - 66BA1FE632C0B1ECE6A8C517A5BA2BFD /* Standard.deltaskin */, + CCD2E82081A9CD40B9258AE46DF75389 /* GTMNSDictionary+URLArguments.h */, + 98F518F5DC6FB2FEC7C37CE05451F51B /* GTMNSDictionary+URLArguments.m */, ); - name = "Controller Skin"; - path = "GBADeltaCore/Controller Skin"; + name = "NSDictionary+URLArguments"; sourceTree = ""; }; - 0C888F3FD10EC86D40DB44CC18A50276 /* Download */ = { + 5904368E1C4EA27CD8A4A4EC3D60298D /* Migrations */ = { isa = PBXGroup; children = ( - E5C8402F009295924783BB22CD7E2300 /* DownloadRecordOperation.swift */, - CCC9814536B9DA40A8D7EBE1B1E6CE0E /* DownloadRecordsOperation.swift */, - C85060AA2EE8986995684A00D189D358 /* FinishDownloadingRecordsOperation.swift */, + DD2B3C41CADCDB9A2EABD96FEFC2449D /* HarmonyToHarmony2.xcmappingmodel */, ); - name = Download; - path = Download; - sourceTree = ""; - }; - 0CC2188DE901AF8A7776179292B4335B /* ARMJIT_A64 */ = { - isa = PBXGroup; - children = ( - 092B175C98B8DD1277A2B83BCDEB8E72 /* ARMJIT_ALU.cpp */, - 197AB7559D7FCC3DEA076C76F04A7D7B /* ARMJIT_Branch.cpp */, - F5DEB059629A947D90A58EBA2CAA95D0 /* ARMJIT_Compiler.cpp */, - 4D8916F809917C9FF65ECB1F790C1B4C /* ARMJIT_Compiler.h */, - 8DB676A86CDC3E0F880FFFEFE1C8E884 /* ARMJIT_Linkage.s */, - 00AED56AB957744DE9F059CB2835BE16 /* ARMJIT_LoadStore.cpp */, - ); - name = ARMJIT_A64; - path = ARMJIT_A64; - sourceTree = ""; - }; - 0D7E46CA21516E2D401D2D1802560930 /* GBCDeltaCore */ = { - isa = PBXGroup; - children = ( - 82FD9E8B7BF5BE252E26FF5614F77535 /* GBC.swift */, - C00389F561DF027611FE10DCFAEBB459 /* GBCDeltaCore.h */, - 59656032F62F540B87B07F06B61AFDC8 /* Bridge */, - 782212121F0CC115D039CE672662D4AF /* Model */, - A2F673033B47246E1C79E13788F3F764 /* Types */, - ); - name = GBCDeltaCore; - path = GBCDeltaCore; + name = Migrations; + path = "Harmony/Model/Core Data/Migrations"; sourceTree = ""; }; - 0D8DFC60849E0E266A7C51C8CD09A8A6 /* ini */ = { + 59F8E0B81923179808A032CA1DDAC456 /* Products */ = { isa = PBXGroup; children = ( - AA7AF49EDDC668587A726F59CAAE70DA /* GLideN64.ini */, - 0ABD9F1CCDFA6E2A04D431A1AA997A70 /* GLideN64.custom.ini */, + 5D797E9A5C5782CE845840781FA1CC81 /* libAlamofire.a */, + FD519882861480B93B563B477CE1FA29 /* libGoogleAPIClientForREST.a */, + 251C6319AD50CB50F18D50CBF727F8B2 /* libGoogleToolboxForMac.a */, + C1998E0D8085221AD87F89B614C10E52 /* libGTMSessionFetcher.a */, + DBC0113CF73BE24525E670D024A85BE7 /* libHarmony.a */, + 9CA80A61ABF26FA89F4E22A30284B0DD /* libPods-Delta.a */, + 4405793D5AF1EFD9D2BDA30AA0D2E514 /* libRoxas.a */, + B0B214D775196BA7CA8E17E53048A493 /* libSDWebImage.a */, + 53A730F4F4248E7E3F38F8409A2DE97C /* libSMCalloutView.a */, + F5FA45A44C42CC2CA3A324A3E914CE19 /* libSQLite.swift.a */, + 1CBA76EDD27FA2D20B1EA0F0BF7F082C /* libSwiftyDropbox.a */, ); - name = ini; - path = ini; + name = Products; sourceTree = ""; }; - 0EB7F900C37C585D4B801E4D319CDB13 /* si */ = { + 619AF919A3D7151B29F5DC0EC31F5858 /* Frameworks */ = { isa = PBXGroup; children = ( - 79E0EDA5AC69A3E5E4CB871209E7050A /* si_controller.h */, + 706BF7C3B4BF64271D623F58DE3CA39A /* Crashlytics.framework */, ); - name = si; - path = si; + name = Frameworks; sourceTree = ""; }; - 0FA5B378EDF8CAED69471450D6B10773 /* win32 */ = { + 625DAF32D1D46966D948860AAC0A2C3C /* Delete */ = { isa = PBXGroup; children = ( - A32E44B26076FC3AD91BC42EC4BCDB70 /* Dialogs.h */, + 395B3990222DB4ACFD33DFE4AA965D9F /* DeleteRecordOperation.swift */, + 8F9A608AE45DDBBB79571812788A19E8 /* DeleteRecordsOperation.swift */, ); - name = win32; - path = win32; + name = Delete; + path = Delete; sourceTree = ""; }; - 11D71C4CB7D70BC32896C99FBC8C8B42 /* Extensions */ = { + 633F0811BD16BF25B42660643D24030D /* Operations */ = { isa = PBXGroup; children = ( - 52B8EEAB10DB9698731B5793936A672F /* RemoteFile+File.swift */, - C8CE42F012549C258EDB2C3B537921E0 /* RemoteRecord+File.swift */, - 47021C79C17197132C70681E80FE73E7 /* Result+Drive.swift */, - 6C3C0CF8A1A1493173F125B368A6482D /* Version+Revision.swift */, + 92BAD4F6E4F15BF8E973D865E7BF4B67 /* Operation.swift */, + D8DEA5FD2BA1BEB9F3440F8D9DEABA3E /* ServiceOperation.swift */, + A849A2ACD3230CFB32C3D7A5796338FB /* SyncRecordsOperation.swift */, + 9F615FC7021AE681990E2B62F25A8FE9 /* Conflict */, + 625DAF32D1D46966D948860AAC0A2C3C /* Delete */, + D654BDAB16508BDCED669374F180CA0E /* Download */, + D714EED3B07FB7F1B7A1BEA1915C2B34 /* Misc. */, + B755C9E3920D11AC40C0456805E4417E /* Parent Operations */, + 63A86D798955B237B863F1EEAEA96939 /* Upload */, ); - name = Extensions; - path = "Backends/Drive/Harmony-Drive/Extensions"; - sourceTree = ""; - }; - 1242D67A4807DDA3758CA53045738A82 /* Graphics */ = { - isa = PBXGroup; - children = ( - 0FA52329FB92261328CE11D29DA4729D /* BlendMode.hpp */, - EE0265AE025CC84336D2F23AB70FF51C /* CircleShape.hpp */, - 8FEBFCD698F542D5FE33636ACFE7EA51 /* Color.hpp */, - 4F6CBBBE0FC5A1BB0CEFDE577C32F89D /* ConvexShape.hpp */, - B8B0C6977911C21FE4D012F6677A1038 /* Drawable.hpp */, - 3C088076202E6D23B33C392A77F70C8F /* Export.hpp */, - 47B1F503E42D737626E2EA908A16CD96 /* Font.hpp */, - 6FBA8F55F87E9996DF830682679860C1 /* Glsl.hpp */, - 82770B1F5AE682EA3C86E83763CB6687 /* Glsl.inl */, - 17FBBA801F9904108D40D6A38C38A7E6 /* Glyph.hpp */, - 5D8D98D7B531E3E46BB6AE4A6C935FAA /* Image.hpp */, - 03453E71D56AD80B009C9115E50535E5 /* PrimitiveType.hpp */, - 91B02935A6F9394D3AD6C23B416F1111 /* Rect.hpp */, - F6B3A96C95DE502A6A601D2CF680FFDA /* Rect.inl */, - C3EB10DDF80E759F5ABDC3B03239F8C0 /* RectangleShape.hpp */, - 79E016DBE78B56C94199CFAF25741154 /* RenderStates.hpp */, - D6956BD919116D3EA2388470C4B627D6 /* RenderTarget.hpp */, - 485A4F25E48D04C70FE5F69AB8CA4E92 /* RenderTexture.hpp */, - 74B045D25124BB876E6586B6145E1B2C /* RenderWindow.hpp */, - F128339585E580A9E234A7EE4076A4BE /* Shader.hpp */, - 5AAF27B93CC50C84527A4CDC44DFBE0F /* Shape.hpp */, - 9FC37464ADA7CDFAE036562BE52B77CC /* Sprite.hpp */, - 70ADC0C7F86D3D6EE6794D1AAC94C7CB /* Text.hpp */, - 11554AB04BFF1801C106090854AC67EB /* Texture.hpp */, - 733F12E405AFBD29E85D0D8B66566F83 /* Transform.hpp */, - 1368CB59650BD7265E79FE33C2A10149 /* Transformable.hpp */, - D7978FB4424D59EC66D8892793EEAC7C /* Vertex.hpp */, - 41086B657465737EAC2D550B6731543D /* VertexArray.hpp */, - 6464DF7A6164101B5FB673424724943C /* View.hpp */, - ); - name = Graphics; - path = Graphics; + name = Operations; + path = Harmony/Operations; sourceTree = ""; }; - 129E714EB792A0367A8ACDC297B0921A /* standard */ = { + 63A86D798955B237B863F1EEAEA96939 /* Upload */ = { isa = PBXGroup; children = ( - B10B38D31A95FF99BBC00DA9C36C8D94 /* AggregateFunctions.swift */, - 586B03C24E0DFB57820EDB31B86EFDC1 /* Blob.swift */, - A5B49946963C58320761EF205659BBFE /* Coding.swift */, - 8D7F02896E229D7D3C9C8484A39D3F5A /* Collation.swift */, - 6C1E4CF0FFCC19C1AD6905DE817C17EA /* Connection.swift */, - 81FAD8256834DC35886EFCF3F5F2715E /* CoreFunctions.swift */, - 6F67C72AC639FF2FE8B8682CBADFEA91 /* CustomFunctions.swift */, - 34B9FC0547132313C6B66562D7FB6FE6 /* DateAndTimeFunctions.swift */, - F277C96C222F36E6CCE96F066C0292B9 /* Errors.swift */, - 1E2085B3FF507E08C3040D7E3D3C295B /* Expression.swift */, - 23337F04F86774C07156F65B6DF86644 /* Foundation.swift */, - E74A96020ABE2A48563D951985291B19 /* fts3_tokenizer.h */, - 2887F0AA90E8BCE5770880C29DE7A352 /* FTS4.swift */, - 19DAEF74182F401F21DF4FA82B1FD4B2 /* FTS5.swift */, - 82D1AD4741CA6ABB465A5B94AA51CEE6 /* Helpers.swift */, - CAF7DAE3D701F9616A709277BAC90365 /* Operators.swift */, - 0EC698B7882B84A8292DBB86C9F1ECA7 /* Query.swift */, - FE37500E60282A9A4012827461E8C2AC /* RTree.swift */, - 3464E71D1132BB4ECDA6EE3AD5D9C854 /* Schema.swift */, - F39D6AD262133DC7EC88CCFC7215A97F /* Setter.swift */, - 12FF6FB31C4FC8525FF9C9D35EDCABC3 /* SQLite.h */, - F1B7B38160FBB40F6A58CE9397B82088 /* SQLiteObjc.h */, - 906A51BA9CD5D535CC8438E8AE2856A1 /* SQLiteObjc.m */, - 30B4C2B542657C7F8695159F71616D5B /* Statement.swift */, - DC30E6531D1C727E6389B4A27F9674E0 /* Value.swift */, + CC41ACC92FF2C34B4BBFECBAEE992DDC /* FinishUploadingRecordsOperation.swift */, + 0669C4806F3DC553E91D77B3EC76CBEA /* PrepareUploadingRecordsOperation.swift */, + 153E7223CA8FFA2C187FCFA10F553DB4 /* UploadRecordOperation.swift */, + 9D6242834425C46B4C3E553C5FCD96E2 /* UploadRecordsOperation.swift */, ); - name = standard; + name = Upload; + path = Upload; sourceTree = ""; }; - 13920DC0557B7192075A9B94C4DFCAE0 /* api */ = { + 644D3B22B44048B3701A00A5835620CF /* Core Data */ = { isa = PBXGroup; children = ( - 394FDA370F48D26EA3EF604C1CFC33BC /* audio_out_backend.h */, - EBD465957DEA0FDAC85062F920F1CD4F /* clock_backend.h */, - 6D6356DD5E0F82DF844E098F33714D4A /* controller_input_backend.h */, - 82F7DDA0B0454BF03B850DCA4B50D958 /* joybus.h */, - B76B12510BE2B141AE4835C5EF4036BC /* rumble_backend.h */, - AF7E5DD1EC29C39C5361D565B80B1F4A /* storage_backend.h */, - DF9A0397B9040D8B612F61D4171FB406 /* video_capture_backend.c */, - 0A62C9BB8CA481EC37AC2E39EC49D42D /* video_capture_backend.h */, - ); - name = api; - path = api; + 55BF7CA893445A871DECBB9C564A9A9C /* LocalRecord.swift */, + 3E855251AD0E12C6E0F746D7AF8E2699 /* ManagedAccount.swift */, + E5C845833332C8E4966635273939A893 /* ManagedRecord.swift */, + 6DFC8462E87F1A24AE70F9FCDBDEE905 /* RecordRepresentation.swift */, + 354509C6EB5B13866598B2FA3731D2BB /* RemoteFile.swift */, + CA29336E01A953A70343EF7695C270A4 /* RemoteRecord.swift */, + ); + name = "Core Data"; + path = "Core Data"; sourceTree = ""; }; - 1435E327C40236C938C3F31DEEFD64E0 /* MelonDSDeltaCore */ = { + 6546F845C92C75E1F0C070452BBEC09D /* NSString+URLArguments */ = { isa = PBXGroup; children = ( - 8EBCB963DFF67E5AE40BA13ED1A01887 /* MelonDS.swift */, - 3C6B3BB0BD1C5AB90126FB0F27180451 /* MelonDSDeltaCore.h */, - A198D15970BC614EA89279CE55AC3FAD /* Bridge */, - 1E199D1A382056704E1D620CC88D2D49 /* Types */, + 150A205C7D47E4B8B2B1D8A98C88949B /* GTMNSString+URLArguments.h */, + 2DD584D4AAB2DEBCA6D7596A944054C5 /* GTMNSString+URLArguments.m */, ); - name = MelonDSDeltaCore; - path = MelonDSDeltaCore; + name = "NSString+URLArguments"; sourceTree = ""; }; - 153056187C2919053D9759A64BD233B3 /* Support Files */ = { + 66D308C191EA914BD00EA1DA033C2DF8 /* Support Files */ = { isa = PBXGroup; children = ( - B5DC276CC14F0847B9A8C006CE0B064D /* GTMSessionFetcher.modulemap */, - 2BBE4EB7361152D3172AB0C275C92415 /* GTMSessionFetcher-dummy.m */, - 57B181D60AC201D8FEBD7C8BE993EEDD /* GTMSessionFetcher-prefix.pch */, - A960DE0A973CA5A4D413E15076178C57 /* GTMSessionFetcher-umbrella.h */, - 9A994D0970557F8DBF425A2E6710A042 /* GTMSessionFetcher.debug.xcconfig */, - 7D657B72C28A6793148493FF9DEAA8A6 /* GTMSessionFetcher.release.xcconfig */, + CAF635A58C76A181E571493C6F4A487C /* GTMSessionFetcher.modulemap */, + 3C9B1C8A3927DBD36AEF7189D04F872C /* GTMSessionFetcher-dummy.m */, + B583D880F8890FE6879BF16245AE2686 /* GTMSessionFetcher-prefix.pch */, + DD5C7A7FE00BE29CFE3C990862EFBD7B /* GTMSessionFetcher-umbrella.h */, + 164A379BC4A71BBEC7AB773B8C57B1C1 /* GTMSessionFetcher.debug.xcconfig */, + 01CE7BCEE359799F962EE8AD463359F3 /* GTMSessionFetcher.release.xcconfig */, ); name = "Support Files"; path = "../Target Support Files/GTMSessionFetcher"; sourceTree = ""; }; - 1685B4AC685D5A4E808B8A61C3B15E61 /* xxhash */ = { + 676024B4C78EE0921FC9B6DCE97B64CB /* Harmony-Dropbox */ = { isa = PBXGroup; children = ( - 27A46A6FADC3B6A55AAA46E5DDA935F9 /* xxhash.h */, + 994471510E3F8110E8E5C89D839C15A4 /* DropboxService.swift */, + AC51849BFBFA867B684764085D303953 /* DropboxService+Files.swift */, + 86F67A3D1CDD7354DAACCDBE6B83E00A /* DropboxService+Records.swift */, + 27CFBFE38EE3E62A2AE3BEA0AE5017FB /* DropboxService+Versions.swift */, + A4574D2FC4F72211C337D533084D2BEE /* Extensions */, ); - name = xxhash; - path = xxhash; + name = "Harmony-Dropbox"; sourceTree = ""; }; - 1733F323075FB5D03F9330D32E0A5860 /* desmume */ = { + 68E816CBA0BFF375803D2D147C531B2E /* SMCalloutView */ = { isa = PBXGroup; children = ( - 03A64B69D1F97D2EB5ABAAD291CE8D73 /* desmume */, + F577B3E9B2D8B8B2F6F1B64CE574E5FD /* SMCalloutView.h */, + 30C25451FF334947DA958DAD43A4FF2C /* SMCalloutView.m */, + 94D66E33D9DD856007A9C14EB1634262 /* SMClassicCalloutView.h */, + 653E5BD75990FD287A14F29C045BF213 /* SMClassicCalloutView.m */, + 1D18E7139FC4556D1707DB5BB9FD2F13 /* Support Files */, ); - name = desmume; - path = desmume; - sourceTree = ""; - }; - 1DDD1C99C2D6ADEEAC927A2EAA7A3011 /* contrib */ = { - isa = PBXGroup; - children = ( - 872E08DD99AF8F58A68B260E3C968F50 /* gregbook */, - 86D3933DB9ED55F95FB6923ADBA42EFB /* libtests */, - CB3D42BEAE3B72A0E2B846EA0A691E6B /* pngminim */, - 623EE6B481A71CDE910DC9DE0651695E /* tools */, - BF8310E19549A469BDF8A0E814F5BBA1 /* visupng */, - ); - name = contrib; - path = contrib; + name = SMCalloutView; + path = SMCalloutView; sourceTree = ""; }; - 1E199D1A382056704E1D620CC88D2D49 /* Types */ = { - isa = PBXGroup; - children = ( - 0B45E63BD8B6C5862B91606D0270E31A /* MelonDSTypes.h */, - 38E6E1D069F7CEA691074A413DC56ADB /* MelonDSTypes.m */, + 6F4DD93ADF8E2D4C128083684AC7849B /* Alamofire */ = { + isa = PBXGroup; + children = ( + 027610765D53D8F4007C5B40194FC19D /* AFError.swift */, + D45685541F9FDDAFC2135E99EB6062F4 /* Alamofire.swift */, + 890F95B5CA062D9B6154E9EFF0DD5AFB /* DispatchQueue+Alamofire.swift */, + 68BEE73B150BEA72E8CDCDC7AD7FFE45 /* MultipartFormData.swift */, + 077D5EF387B2ED64EEDCDB2F4654113D /* NetworkReachabilityManager.swift */, + C0BE4BAC8AADD53ED7938EC7D7834EC0 /* Notifications.swift */, + 03A2CFC64216406ECCD6DF6C2170F4CD /* ParameterEncoding.swift */, + E38504546C7DC8BF9137C8D301649C8E /* Request.swift */, + 1CB6AA43134D6305B9DEAF3D96B1DE26 /* Response.swift */, + EA6921935F717D24F08DA345B384217E /* ResponseSerialization.swift */, + 85DA9DA81CE6AB2A37F0C59609E6F9D5 /* Result.swift */, + 170B362921153BB970E770297EBD180D /* ServerTrustPolicy.swift */, + 7FA63AFAD02B836FD0B1EC4CB4230DDA /* SessionDelegate.swift */, + 34777F37FD7075222B0F5F8E54FEDEB7 /* SessionManager.swift */, + 13ADD1A95E06BEFD5750FBEB3A1569DE /* TaskDelegate.swift */, + BE0CAD992714B9169EB415DCFD060199 /* Timeline.swift */, + 3E73A39BA15BE5DDB7864D0CFAC81A83 /* Validation.swift */, + 3DF5AFF059EB646F51C4452287C54C9A /* Support Files */, ); - name = Types; - path = Types; + name = Alamofire; + path = Alamofire; sourceTree = ""; }; - 1E5B261DFFAFBF20E38675C589F334CD /* Support Files */ = { + 72857708672FDE187C775A91F138F872 /* GoogleToolboxForMac */ = { isa = PBXGroup; children = ( - E25B44BABC7528C07CC191BA85CCE447 /* SMCalloutView.modulemap */, - B23526A375A47D4DB7E41CEF2AD61087 /* SMCalloutView-dummy.m */, - BA1F46281ACC03BA5632B185F2754D85 /* SMCalloutView-prefix.pch */, - 5209BE954A7C39272EDD3AEE95066684 /* SMCalloutView-umbrella.h */, - 598055BE88FB8053259FAF21F5B8BAD1 /* SMCalloutView.debug.xcconfig */, - 9A69779C7CE90E43C61DC0446CE1DBB5 /* SMCalloutView.release.xcconfig */, + F456D8DBB6B558706BCF50C2670FDDD1 /* DebugUtils */, + 462EA281E9382502250A77F732C0F6C0 /* Defines */, + 5731D12756FDE9A8BE06D92B69807F2E /* NSDictionary+URLArguments */, + 6546F845C92C75E1F0C070452BBEC09D /* NSString+URLArguments */, + 8D6DA263726012D567A043549D1D2979 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/SMCalloutView"; - sourceTree = ""; - }; - 1E68152625EDA7EB8623A0C0B1AF1524 /* common */ = { - isa = PBXGroup; - children = ( - 2E0B065D9F78196FA831FEB44937FFCA /* array.h */, - 51330273926D351DE423DA0A6912700D /* ConfigManager.h */, - B609F94FF19E3C589A8FABD70BA44393 /* cstdint.h */, - EED57BCA844C7B79D93C00D5E728D535 /* dictionary.h */, - 9E1301D5DCEF622F5A8BD8C7EBCB993D /* ffmpeg.h */, - 5533E0BAB4A8B8C7A82F115001CBBFCA /* iniparser.h */, - A01BF8A0B070CCDA516A64A4C89CD25A /* memgzio.h */, - B76EFA7CCAC454819F26F621EF37AC11 /* Patch.h */, - EFEDF761A5B66736CF55093CB6485C6A /* Port.h */, - 62B2D0722AA443F0E94D3013076DE1D7 /* ringbuffer.h */, - 00FF6FEE16F201CDAA6008DA1B3519F9 /* SoundDriver.h */, - 8507F39645E5ABFF0C41AC54EC5033C1 /* SoundSDL.h */, - 5DAC4F6C655170F1792945609E111C63 /* Types.h */, - ); - name = common; - path = common; - sourceTree = ""; - }; - 1EB3DFD0061639588BC5135378EB1669 /* N64DeltaCore */ = { - isa = PBXGroup; - children = ( - FAFD8C47B27463105661192057489529 /* N64.swift */, - 9EDB28B68E79CA9174572B03583BAA09 /* N64DeltaCore.h */, - BA5A911460257B649D548DEC2743EBAC /* Standard.deltamapping */, - 303C4779CFC3D328FA683F7BEF7ECAFC /* Bridge */, - DF95E00D17C1BD21706B03ABB7737A38 /* Controller Skin */, - EAF7F5D8717DB2EC4CAE7880FA03603B /* Types */, - ); - name = N64DeltaCore; - path = N64DeltaCore; + name = GoogleToolboxForMac; + path = GoogleToolboxForMac; sourceTree = ""; }; - 1EF66F6FF8DDD583EA54CE2ABA394808 /* Video */ = { - isa = PBXGroup; - children = ( - EC516D1637980A025ED3E81F54B865B1 /* BitmapProcessor.swift */, - 39AF6EAE7D1AEFBD13D88A8BB33A9336 /* OpenGLESProcessor.swift */, - F61A7ADB7BA7193FE87B124A2230E8B7 /* VideoFormat.swift */, - A7C7A53DDC963B2490F956E3FF86722E /* VideoManager.swift */, + 72FF584E43471D689689BB176290CDEE /* SwiftyDropbox */ = { + isa = PBXGroup; + children = ( + B75A96A9FA9A9EAEDEA8BA458DF1A190 /* Async.swift */, + 67B168193A9B9A7114A6D66720C71E6A /* Auth.swift */, + 7994ABEE8624B64EAD90EABC91D012B2 /* AuthRoutes.swift */, + 45C6535D41D319C5D33F481A8D50F760 /* Base.swift */, + 64034B603637F76695726D8E9224EF12 /* BaseTeam.swift */, + C5A4341628DB896D5045C1381D4F768D /* Common.swift */, + AA47CBCD26980FB1A639453C7DC7E3EE /* Contacts.swift */, + 8EA6604C4C374FADB751B07390263397 /* ContactsRoutes.swift */, + E993E034DC38FEFB226C0BF4EDEA95D9 /* Custom.swift */, + 3F090A5D74FACCC582CBC07FD017F492 /* CustomRoutes.swift */, + 6F569EDFDA62114944EC1BE586F8F916 /* CustomTasks.swift */, + ADF302CCAEE58514EBF07820FB4B7910 /* DBChunkInputStream.h */, + F3899B5DF470A14F44821581624BD8C1 /* DBChunkInputStream.m */, + 6C55207AB65A6D380BFB3D304035DB1C /* DropboxClient.swift */, + 2F033C26C41BA521B8838CD0887AC919 /* DropboxClientsManager.swift */, + B813AD003C192F0CE40D777CA40C3215 /* DropboxTeamClient.swift */, + EBBB6B638293DF4772BCAA6CE4221E40 /* DropboxTransportClient.swift */, + 330FF8B4474DCC45B35FE08AB784032B /* FileProperties.swift */, + 98811B0AE8FC082046E0ADF4574AD3A4 /* FilePropertiesRoutes.swift */, + F109D2292569772B111800DBD7052988 /* FileRequests.swift */, + 07B86FE9509734983A9AC8CDAC6CE183 /* FileRequestsRoutes.swift */, + 533E2FA1D163737F1075C3ED7A38D5CF /* Files.swift */, + EBF9BA079C8B4F7AAD16EF95B1319533 /* FilesRoutes.swift */, + 269E709D185D5CA2CDCD39DC8DD5DEC8 /* OAuth.swift */, + F918B66FEBBFEA9B9BCBF350EDFCE150 /* OAuthMobile.swift */, + 7F6764818F9C610E4A853F410D1E68FB /* Paper.swift */, + BC20981A42A1EC4EADCE3CBB4B4A881D /* PaperRoutes.swift */, + 527E89C27D4189749BDAD24EECCD32FC /* SDKConstants.swift */, + 616AA8C503BA79082DDDC3A78D524494 /* SeenState.swift */, + 9FD3E5D0769094E755103884495517F9 /* Sharing.swift */, + 4E4B8BAE36970525F2C28726D9295208 /* SharingRoutes.swift */, + EA0FCDCE58DC43DD61C7972CFF58165A /* StoneBase.swift */, + 4AB4D9CCF9277B0AAD20AF4BCBDCC7E8 /* StoneSerializers.swift */, + D5C9580AC87AF10A56A35795A2BB0ED2 /* StoneValidators.swift */, + DC73EA1B294021D3897C246C0477DE26 /* SwiftyDropbox.h */, + EDFAAE53B8E45FD949D7952EC2A138AB /* Team.swift */, + 7BD1DCE8B41E489F31B299E91C0CC70C /* TeamCommon.swift */, + 80FF2E256C5932A731650E5E37414ADB /* TeamLog.swift */, + B6CF76900DF3A54275D6A5E4AC401AA9 /* TeamLogRoutes.swift */, + 0DAEC064FED2041B3CF4D2D6DCEB4021 /* TeamPolicies.swift */, + A6D159495A1B644A49638E870FF87A7C /* TeamRoutes.swift */, + D7A860C858433F347A515665460A363A /* TransportConfig.swift */, + 5BABD2E6B672E5887AD123221C23427C /* Users.swift */, + A77B2AFA9090320120D02BCCF6E32E52 /* UsersCommon.swift */, + B489C17E8479D70586B425CC5600A19F /* UsersRoutes.swift */, + EF55C999832B5E9157D8743AA985F61F /* Support Files */, ); - name = Video; - path = Video; + name = SwiftyDropbox; + path = SwiftyDropbox; sourceTree = ""; }; - 1F6E4299814AA2229C5B7F888878F9E2 /* Types */ = { + 7452095D3AEBA523354637A17FFF655E /* GoogleAPIClientForREST */ = { isa = PBXGroup; children = ( - 54883D2F73AE4EE2DE2C218D4A5DB739 /* SNESTypes.h */, - 10278A245A36FD880F3207EA5EF9E82E /* SNESTypes.m */, + 854E8BCB7C7CBA727A5BC5D329BF4DC4 /* Core */, + 1C898A65006033C2CF0449C5A862E4BE /* Drive */, + DE0E41E1B7F74BBFC6A7C310C6E77BF1 /* Support Files */, ); - name = Types; - path = Types; + name = GoogleAPIClientForREST; + path = GoogleAPIClientForREST; sourceTree = ""; }; - 21E3AF05B088F5BE9C3B3300323A58B1 /* Model */ = { + 81BF4F61FB3D1AA8FDEAA979F0F51B09 /* Support Files */ = { isa = PBXGroup; children = ( - 407496B379E009BB38F5D88F433827EB /* Cheat.swift */, - A17DF16EB61E5ED813980444D9917B0C /* CheatFormat.swift */, - 54528B8321960A24E37B5ACDBBC4E842 /* ControllerSkin.swift */, - C61BD8D70E274ABFA9A9BA6CC11DA6A9 /* ControllerSkinTraits.swift */, - BBEF1B582D9215342B3E1A926501B5AC /* Game.swift */, - 744CDC36A5FA9F4BF452E5F54C93E619 /* GameControllerInputMapping.swift */, - E17E403846F48ECC1FB5E3ADD15CAF83 /* GameControllerStateManager.swift */, - 5BC872B7044AA807CA7EBB604D434866 /* SaveState.swift */, - AC59D5166EA862BE2AB55FCCA4AAA2E7 /* Inputs */, + 5CF5B360D328C8B35503CA26B4FFAFE3 /* Fabric.debug.xcconfig */, + 4987017F0B6FF9A772765AD621009DE1 /* Fabric.release.xcconfig */, ); - name = Model; - path = DeltaCore/Model; + name = "Support Files"; + path = "../Target Support Files/Fabric"; sourceTree = ""; }; - 228FA8748601A2EE4B21161E81835AA4 /* GoogleAPIClientForREST */ = { - isa = PBXGroup; - children = ( - C6160687C7FB523D45EFF836774FB4EC /* Core */, - 481ED60E33EE09552AC37427329E94E5 /* Drive */, - 2F79BB26FB709FFE055009A206613571 /* Support Files */, + 854E8BCB7C7CBA727A5BC5D329BF4DC4 /* Core */ = { + isa = PBXGroup; + children = ( + 784F252B00C093E4B76B5330B3E96D29 /* GTLRBase64.h */, + F8FFB2CD35CECB252C08AA9BBF8FC9AD /* GTLRBase64.m */, + 23BBDAF15F9E75C4E419D86C6ED3E6E2 /* GTLRBatchQuery.h */, + BCC0D0106CBF47F3718C75AB129B5F88 /* GTLRBatchQuery.m */, + 39368FCD9E3F800D5CC9ED6F7E6E2FBA /* GTLRBatchResult.h */, + 27687C530D6A8E1D650850CBA5252CCF /* GTLRBatchResult.m */, + 35853860780F7CD1E52A5B698C070DB0 /* GTLRDateTime.h */, + D77CD646F2813288F818F6C24219BD13 /* GTLRDateTime.m */, + 8FB4B0452C796E5FB31A64D7A44B53E6 /* GTLRDefines.h */, + 5912D32B0858F53EFA8326868F9C6376 /* GTLRDuration.h */, + AD8B24568C6B6828EC0236E1FCA637EF /* GTLRDuration.m */, + 41C3873012793660F0D7FC67115DC0C2 /* GTLRErrorObject.h */, + 87FD769EBB243EFD035EA713B8B145C5 /* GTLRErrorObject.m */, + E2003C240AFF0566DE36FA22E2D6796C /* GTLRFramework.h */, + FE9A13F9787AF145CDE0DF4143F17F71 /* GTLRFramework.m */, + 7BC2274A09D9C43A3672A1B5D31398FE /* GTLRObject.h */, + 9304976C28337B980C64A1D91C8AF382 /* GTLRObject.m */, + B6DD4C4DC83CD268B10C477AFC1CEB9D /* GTLRQuery.h */, + E6B9F3E90F28D32445533FAA29AE51ED /* GTLRQuery.m */, + 4D5314EB9184C09220720983913CFDCE /* GTLRRuntimeCommon.h */, + C51BB2F19042656DECF0A355EEE8B1FE /* GTLRRuntimeCommon.m */, + 03DA5500E4A7496201826C8C95636FD5 /* GTLRService.h */, + 3D102F1530DD768EE61A6780CC10945E /* GTLRService.m */, + B143C6A637B6A820034EE1046A508B7E /* GTLRUploadParameters.h */, + CAA97A6CE79C4809EBA5E4AF4CDE52FC /* GTLRUploadParameters.m */, + 75B174C18ECA7E9C4F8B0778F4546A60 /* GTLRURITemplate.h */, + 9DD0C64E90429209275BAACF02C906D5 /* GTLRURITemplate.m */, + FAA33D4607A674D4B4CEC7E44CBB7F7F /* GTLRUtilities.h */, + 94668AB9EEABC1C5F9D732F0607DE3D0 /* GTLRUtilities.m */, ); - name = GoogleAPIClientForREST; - path = GoogleAPIClientForREST; + name = Core; sourceTree = ""; }; - 2481C244F65AA9BCE7946426CF86D311 /* N64DeltaCore-RSP */ = { + 8D50AA6060BADF92D6E07BE0E95CBC5D /* Development Pods */ = { isa = PBXGroup; children = ( - E4951BD28EE605CC08BFD4677012B21D /* plugin_delta.c */, + AF3F9FC620541240AF9284C5BA9E95A5 /* Harmony */, + E675F9C0826DBC59EC49C2730732EAA6 /* Roxas */, ); - name = "N64DeltaCore-RSP"; - path = "N64DeltaCore-RSP"; + name = "Development Pods"; sourceTree = ""; }; - 25AF69533EA9D363E0F62101B8BF962F /* Support Files */ = { + 8D6DA263726012D567A043549D1D2979 /* Support Files */ = { isa = PBXGroup; children = ( - 938A5B97E785BDB6AB90DC57C73C6EEA /* GBADeltaCore.modulemap */, - 570B8665DEC55171C47D8724F8B931AA /* GBADeltaCore-dummy.m */, - 93A121B571D4B11C8FA8B0A1137CA0DD /* GBADeltaCore-prefix.pch */, - 147BC96402CD809FAF20E2C6BFF3ECB7 /* GBADeltaCore-umbrella.h */, - A593F9E4A4598D119B56497AC7331928 /* GBADeltaCore.debug.xcconfig */, - 921321EFE30058B51BD783A8231B1644 /* GBADeltaCore.release.xcconfig */, - 371D45AAD910B37E9CBCC278DCA3A677 /* ResourceBundle-GBADeltaCore-GBADeltaCore-Info.plist */, + CAE24913C0B1CFC0A73974AEB0754344 /* GoogleToolboxForMac.modulemap */, + 7E5DD6A57AD32001B35729CD3C312BD8 /* GoogleToolboxForMac-dummy.m */, + 4F16B9AC0801DFA17A61396AF203B6FC /* GoogleToolboxForMac-prefix.pch */, + CE252EE95D0B2FE67492E18BA47EE3D2 /* GoogleToolboxForMac-umbrella.h */, + C6C7C9E918A47FB7D6F6658594BA5615 /* GoogleToolboxForMac.debug.xcconfig */, + 0C4A92751B307E7BECA584FAAE5D0EF6 /* GoogleToolboxForMac.release.xcconfig */, ); name = "Support Files"; - path = "../../Pods/Target Support Files/GBADeltaCore"; + path = "../Target Support Files/GoogleToolboxForMac"; sourceTree = ""; }; - 269081536499B6611035A9CFD78CE651 /* ri */ = { - isa = PBXGroup; - children = ( - A05D21B831E3C9BA3583F94F739FD73A /* ri_controller.h */, + 8F64B769D21D6923FBD2F87E54D7FF08 /* Core */ = { + isa = PBXGroup; + children = ( + E0D0E15186DB684064A51C1925872560 /* NSData+ImageContentType.h */, + 563FDE54145A22888CAFD77A857389B1 /* NSData+ImageContentType.m */, + A42DA3EAFBAEFBAB2167275E651A7665 /* SDImageCache.h */, + C5337F14C4B4DF65DE3FDFC45FACAE01 /* SDImageCache.m */, + 04CA1767316952F9A341BB308D5DFF62 /* SDWebImageCompat.h */, + 86B069F806610A53B6B5097DC57C7881 /* SDWebImageCompat.m */, + 21CC13037EB3BB52515BA531C4ED26F3 /* SDWebImageDecoder.h */, + EFA960D20478796B386E935916CD9C87 /* SDWebImageDecoder.m */, + C8C546D15F9505DB74735363097583D5 /* SDWebImageDownloader.h */, + B71726B9A158070BC9BE306D7A6C8542 /* SDWebImageDownloader.m */, + 21FC6F1E89DDD57A49BA988A818F9DE7 /* SDWebImageDownloaderOperation.h */, + 9CF24E328C4F51F71C34162874902931 /* SDWebImageDownloaderOperation.m */, + 1723CFFB2D87113E2298943283B66733 /* SDWebImageManager.h */, + 14122C8627076BD7BE84D6459E02802D /* SDWebImageManager.m */, + 882644118240178432B7BD688490FD24 /* SDWebImageOperation.h */, + 716975BE9CD340CF781E0AF49D8555F6 /* SDWebImagePrefetcher.h */, + 28EA63DED260AC3D10888E6B160715D7 /* SDWebImagePrefetcher.m */, + 39179376792F76422466948387B42807 /* UIButton+WebCache.h */, + DA67BF8F08D3D5DD7D498B537919F5F5 /* UIButton+WebCache.m */, + 42AED944C954072538C8520967AC8034 /* UIImage+GIF.h */, + 3F1C0690FFC4BEC08FD35AC6E956901F /* UIImage+GIF.m */, + 6AFFCCC1C14E863EACE17B7906A9F5F7 /* UIImage+MultiFormat.h */, + 5FFA2F4ACD8A60D36B57704367A98B2F /* UIImage+MultiFormat.m */, + 32D381ADD4F43FBEF880D04E34438F4B /* UIImageView+HighlightedWebCache.h */, + 218B7A0E4B70FEE5CAA47739B8007C50 /* UIImageView+HighlightedWebCache.m */, + 2CA4601D3B9A95C5B7028B04BB611234 /* UIImageView+WebCache.h */, + E71B995352F5B5D730624F6E0B61EAB1 /* UIImageView+WebCache.m */, + 7345B422CE7E5E83753F7A060FF2D300 /* UIView+WebCacheOperation.h */, + D46484EB1DEE5A20471D2FA5462B213E /* UIView+WebCacheOperation.m */, ); - name = ri; - path = ri; + name = Core; sourceTree = ""; }; - 26D5A9A59F030AA7B56AE7787DAB8EC4 /* nestopia */ = { + 9CC86905783BC179929448926DD38BA5 /* Crashlytics */ = { isa = PBXGroup; children = ( - 715819160F37B5D1EF4DB0F3977C1E08 /* source */, + 8193F3ABA6FA2FBE0BE62849C8B8D43C /* ANSCompatibility.h */, + 2A9AD8EA71EC22FD543DD487E2DB0156 /* Answers.h */, + 7D74B23EB57FCB0E3488FC3A6F88A191 /* CLSAttributes.h */, + 05F23A206ADEC8E199E13E100C5F5F23 /* CLSLogging.h */, + B8521335C3585A819DC8326807FFF78F /* CLSReport.h */, + 65CA7F5911D0A25087F844E89720FD78 /* CLSStackFrame.h */, + 5BB937F65EB3918CE1BB8B3B3B84D185 /* Crashlytics.h */, + 619AF919A3D7151B29F5DC0EC31F5858 /* Frameworks */, + C38C21CACAF867FA8E4F1573F4147B37 /* Support Files */, ); - name = nestopia; - path = nestopia; + name = Crashlytics; + path = Crashlytics; sourceTree = ""; }; - 2715FC23F67EABAA17EF70510ACF5CFE /* subprojects */ = { + 9F615FC7021AE681990E2B62F25A8FE9 /* Conflict */ = { isa = PBXGroup; children = ( - DBAA5242E5BE70FF6001BAC9EC053947 /* md5 */, - BEFD49A3AFA1CC9846030C9E11165E38 /* minizip */, - 055CBD7DD21321B9C85695F79AE6A150 /* oglft */, - 1685B4AC685D5A4E808B8A61C3B15E61 /* xxhash */, + 4A992173756B082143E3F3D99D31FE8A /* ConflictRecordOperation.swift */, + 1DE26BCA8EA6B8834D47A3AC680BDF05 /* ConflictRecordsOperation.swift */, ); - name = subprojects; - path = subprojects; + name = Conflict; + path = Conflict; sourceTree = ""; }; - 286C3B8D78E0A77F9B2D31B27F5049A9 /* frontend */ = { + A2E3ECC286DD3D25E2F22E7090BD07C4 /* Pod */ = { isa = PBXGroup; children = ( - 4A3A6846371C78AEC1A70D5869741757 /* qt_sdl */, + 19D3742E1BD9215B99FF252AD2D90C5C /* Roxas.podspec */, + 2AC6E063E21E140BC48DA9F82D584277 /* Roxas-Prefix.pch */, ); - name = frontend; - path = frontend; + name = Pod; sourceTree = ""; }; - 2A4D74C9D467468EFCA8893B6056F58A /* NSDictionary+URLArguments */ = { - isa = PBXGroup; - children = ( - 1C84F28BC8941E34DD2FCD83B3BA50C0 /* GTMNSDictionary+URLArguments.h */, - 8638968DC3BD54DEE2C5F9056D50F226 /* GTMNSDictionary+URLArguments.m */, + A380869A9329F0C3D88DAE37434F2878 /* standard */ = { + isa = PBXGroup; + children = ( + 725B2447703DDB1DC47E54D23D6B5609 /* AggregateFunctions.swift */, + 9FE83ADE360ECFB89A9F195F232E58D9 /* Blob.swift */, + 6591BB3EFD2C2F62DD4AA134D08304C3 /* Coding.swift */, + 467C63094078513311E3A036679DB046 /* Collation.swift */, + 0823A19D9EA78FEDA83C7DE2B6025CC9 /* Connection.swift */, + 1EB24A740C7D16547D29F2B8136765C5 /* CoreFunctions.swift */, + 6CA2772AD93DCDBC01C2E7384538B9AF /* CustomFunctions.swift */, + 2B804EB0CB6865001DB214BEA57C73FC /* DateAndTimeFunctions.swift */, + F950F0FEE40116F37DA6EDF3C3156597 /* Errors.swift */, + 645056EFF3FD5F3115893C78A2343F92 /* Expression.swift */, + 65A0AD4AC201EB8D96B8F23E0695AD06 /* Foundation.swift */, + 898274DFDBF0966DEFFE52F556DE9705 /* fts3_tokenizer.h */, + 38D7384818AF68440B2244375F9AA33C /* FTS4.swift */, + 2E4CF20C467CA0FE8755D1BD38D66D70 /* FTS5.swift */, + 92A31A082A6C5A376495F4E8C563AE3F /* Helpers.swift */, + 668F04939465474860821A00FCE198D6 /* Operators.swift */, + F595CE922A51706859139752BC6F10B2 /* Query.swift */, + 78D45C1AD1DB0DE9B1EC5920BC41CC0A /* RTree.swift */, + 0FA7B59A3C84216C1D1F39923230CE76 /* Schema.swift */, + C701B63124E39AA3072BFD49D65662A4 /* Setter.swift */, + F5B2FBBDB56AB50CB2010A04545B31A6 /* SQLite.h */, + 88A4F52882FCCF2DE266E99C040AE7CD /* SQLiteObjc.h */, + 325F1227EC21B365B6312234134BA6F9 /* SQLiteObjc.m */, + 6CBDB4B38203396A8BDBB2611783C40B /* Statement.swift */, + F2D095C267A39D92899F611B66D0EFCC /* Value.swift */, ); - name = "NSDictionary+URLArguments"; - sourceTree = ""; - }; - 2AA7126289AF78F284308F7FA890C444 /* gba */ = { - isa = PBXGroup; - children = ( - F7F9371F009683A283C1E8EF6EE2393B /* agbprint.h */, - EE78344F8EBA8AC77023F528A9B6884B /* armdis.h */, - EB35FBF3BF9B38329D908A949EF02A97 /* bios.h */, - A14CF7FB0D07E8BBB27335EBE6620A79 /* BreakpointStructures.h */, - A9290CB996AE3BE06C249C534C73B0B6 /* Cheats.h */, - 8EC39A3749E9EBACB0290ED500AF5A7C /* CheatSearch.h */, - E073803913605D51FA5A80D6AFA5F21A /* EEprom.h */, - D59BB4845689600CF54D0F7796E34EC0 /* elf.h */, - 6BE39081BB452BD5A1ED6F8D2A9E2783 /* ereader.h */, - 17D454191F3B342960C868B8F442F1C9 /* Flash.h */, - 72928BD1EC814259B5C12FB7891C8143 /* GBA.h */, - F332361824DFCFC2AB5EB91B30975F82 /* GBAcpu.h */, - 86340807BB987EFFF2BFA97977E4B822 /* gbafilter.h */, - F6A0E3246B3946FC0EF4B37B8CA993AA /* GBAGfx.h */, - CCEBBE6CC544087FE52A0A6B44568B0B /* GBAinline.h */, - 4D53470E41BA15EE30530C3840BE8FCE /* GBALink.h */, - CCCDBB91056DF2425CF5E3A355B295ED /* GBASockClient.h */, - BCE78AB5A43B5301C404C71A9726679C /* Globals.h */, - AD42DE387B2C0E917AB941E3FD7B6A93 /* remote.h */, - 4CA5583ED66F123D9936860E31100A9D /* RTC.h */, - 611D6252349AD28AC0199F62077C7B57 /* Sound.h */, - 2C523CCC02512580019DBDA6D94FA69D /* Sram.h */, - ); - name = gba; - path = gba; + name = standard; sourceTree = ""; }; - 2ABE2B7331A6B7CCD2ED6CE8F923D864 /* Defines */ = { + A4574D2FC4F72211C337D533084D2BEE /* Extensions */ = { isa = PBXGroup; children = ( - 629F6A26E346FCCB87CF068FC152224D /* GTMDefines.h */, + 614B12A54165D2E147D0F59BE6F7F0E4 /* PropertyGroup+Harmony.swift */, + 45DFDB7A1A2A362862480B1832FA055C /* RemoteFile+Dropbox.swift */, + B4D188BDE57B76BB82EBA7CD056C4DDC /* RemoteRecord+Dropbox.swift */, + 64D30120C2D5B20D076A14852E1448C9 /* Result+Dropbox.swift */, + 003F7FFCE2F47651CEE774F0DE200F14 /* Version+Dropbox.swift */, ); - name = Defines; + name = Extensions; + path = "Backends/Dropbox/Harmony-Dropbox/Extensions"; sourceTree = ""; }; - 2AD8ACDCFF0C6135D603DDB74D2C91A5 /* metaspu */ = { + AF3F9FC620541240AF9284C5BA9E95A5 /* Harmony */ = { isa = PBXGroup; children = ( - D4AB501DA42C0DAAF3C8C5BFDCA835B7 /* metaspu.h */, - 5E068EE6E9B5BA6765CAC8C1DBA5E090 /* SndOut.h */, - 9AEC8FEFD4C192D5613456A708462BD2 /* SoundTouch */, - 0FA5B378EDF8CAED69471450D6B10773 /* win32 */, + 670595C2D7BD6AD4D6570F4F0E86A2FB /* Harmony.h */, + 02F78662647C8B3C01B06CCA204E1BB4 /* Harmony.xcdatamodeld */, + F4CF420B410FBBD4F0561EBE01AAE958 /* SyncCoordinator.swift */, + 3525EFD530F26B69478C4CD4529BA7B0 /* Core Data */, + C64DBD23E3475AA47CDCEDB928A53827 /* Extensions */, + 0E550D6146C076CB428565DC2CC3D5CE /* Harmony-Drive */, + 676024B4C78EE0921FC9B6DCE97B64CB /* Harmony-Dropbox */, + 5904368E1C4EA27CD8A4A4EC3D60298D /* Migrations */, + FEECCE36CB9C4DD33C6BB89DE2E58B4F /* Model */, + 633F0811BD16BF25B42660643D24030D /* Operations */, + 32C415356C303CAF8C78D68EDAB1A737 /* Pod */, + E1FF980EB07BE16A51245651810554BA /* Protocols */, + 187E47DF0B08173F16CF674706632D0E /* Support Files */, + 24BD7B6987E5F77ECD4730D861CDAB54 /* Types */, ); - name = metaspu; - path = metaspu; + name = Harmony; + path = ../External/Harmony; sourceTree = ""; }; - 2B5D5311CCF519A1185531079D8F0E87 /* vssystem */ = { + B755C9E3920D11AC40C0456805E4417E /* Parent Operations */ = { isa = PBXGroup; children = ( - 2FABFE400E3964CCCE1DD3091F585C5C /* NstVsRbiBaseball.hpp */, - 1AA9684D3082E9D448C5105427C93B9C /* NstVsSuperXevious.hpp */, - EA4903C023E7677D54CF9E99C7C36B67 /* NstVsSystem.hpp */, - 744D3216390476216DCF11BE485E9B7B /* NstVsTkoBoxing.hpp */, + 4E9718BC8CC41735731EFA5AE4C887C6 /* BatchRecordOperation.swift */, + 327851A9D684728F563951E6CF957362 /* RecordOperation.swift */, ); - name = vssystem; - path = vssystem; + name = "Parent Operations"; + path = "Parent Operations"; sourceTree = ""; }; - 2DA816901E19006E92562853F7BE5BEE /* Delete */ = { + B8A658CA70CA481F4B1A9C8B49189A7C /* SQLite.swift */ = { isa = PBXGroup; children = ( - 6471F262D66398DA1B0CB29F07AAE7F8 /* DeleteRecordOperation.swift */, - 1588287F115BFA204CA5E4A5780A8821 /* DeleteRecordsOperation.swift */, + A380869A9329F0C3D88DAE37434F2878 /* standard */, + 12EEF30C26AA897E36FE35C00F61BD47 /* Support Files */, ); - name = Delete; - path = Delete; + name = SQLite.swift; + path = SQLite.swift; sourceTree = ""; }; - 2DB9A1109491F18BD375640AD7F609ED /* N64DeltaCore */ = { + BDDCAA316B6C4E2A467D14C79E23372C /* Targets Support Files */ = { isa = PBXGroup; children = ( - DF10A582877486663BF403D04C791112 /* libMupen64Plus */, - 8764E4EF1B0A6D8D603F9DE34CD3218B /* Mupen64Plus */, - 1EB3DFD0061639588BC5135378EB1669 /* N64DeltaCore */, - 62EE0290A273F0F0AE08E2030BB36F59 /* Pod */, - 7930A2F6E6BE260521186D2B103ABE74 /* RSP */, - 6388895AFD3378B07E84916941F749C2 /* Support Files */, - 63D891D51B690CFA519973EA8DD24088 /* Video */, - ); - name = N64DeltaCore; - path = ../Cores/N64DeltaCore; + 08C58CF73AB8BFBF56E0EB8B4D727EE1 /* Pods-Delta */, + ); + name = "Targets Support Files"; sourceTree = ""; }; - 2F79BB26FB709FFE055009A206613571 /* Support Files */ = { + C38C21CACAF867FA8E4F1573F4147B37 /* Support Files */ = { isa = PBXGroup; children = ( - 9AD902A56CCE972EB5C283E7E6C49040 /* GoogleAPIClientForREST.modulemap */, - 268A80FCD8A58CFE6C097469D5AF1C00 /* GoogleAPIClientForREST-dummy.m */, - 829735A0F9CEBD3D7585C21C3AC6FD0B /* GoogleAPIClientForREST-prefix.pch */, - 3834E77F63953D87853DE315E253E447 /* GoogleAPIClientForREST-umbrella.h */, - DBAAF6DBA09834539A368667AF5A1211 /* GoogleAPIClientForREST.debug.xcconfig */, - A5B95194D64CEE2620808A3F54044158 /* GoogleAPIClientForREST.release.xcconfig */, + 386D15C03B379B542FF0410F231BA99F /* Crashlytics.debug.xcconfig */, + DBEC7D1149716714F078F07B9BAE00E6 /* Crashlytics.release.xcconfig */, ); name = "Support Files"; - path = "../Target Support Files/GoogleAPIClientForREST"; - sourceTree = ""; - }; - 2FD4F05EE9F3EF5FC1D377A92C6802DA /* cart */ = { - isa = PBXGroup; - children = ( - D1C42F98DA98FD0CD5BA3471E4ADD289 /* af_rtc.h */, - CE5AA35EFFDA1B4E8AC02451AA774E76 /* cart.h */, - 7B4FABA9D9901362C87EB1E8D05ED709 /* cart_rom.h */, - 9DD22189C4F71FFD1596B0827A6F70AF /* eeprom.h */, - 3084DE1F8EACD7F5FE7A7BCAAB89F024 /* flashram.h */, - 9F69C54FACCF68A3770D4110941A594E /* sram.h */, - ); - name = cart; - path = cart; + path = "../Target Support Files/Crashlytics"; sourceTree = ""; }; - 303C4779CFC3D328FA683F7BEF7ECAFC /* Bridge */ = { + C5C9CF0B8182ACDFAAC26BB714C495AF /* Frameworks */ = { isa = PBXGroup; children = ( - 7137BA5D5A9D9C8100F36AA2BDBE55A0 /* N64EmulatorBridge.h */, - 341202BB825E444CFFD1E90327ECF6E3 /* N64EmulatorBridge.m */, + 8AB3F9BCFFE3A0E850757B2047103ACD /* Fabric.framework */, ); - name = Bridge; - path = Bridge; + name = Frameworks; sourceTree = ""; }; - 312FC3C9DA41D86E9BD7060619C617F8 /* DSDeltaCore */ = { + C64DBD23E3475AA47CDCEDB928A53827 /* Extensions */ = { isa = PBXGroup; children = ( - DE246301115CDA2A2D69A325D9C15084 /* DS.swift */, - 4621CF9E2ACD10284ED172A2D068CC35 /* Bridge */, - C5FED9E911F3A488AB29E8A827A9D873 /* Types */, + 80067C5F868766B0F35A2739F5EE8C83 /* AnyKeyPath+StringValue.swift */, + F04A721BE6960E637CC03D557209FF65 /* Dictionary+Sequence.swift */, + 55D9EA5E839848FDCCD51E9C9EC6015A /* HarmonyMetadataKey+Keys.swift */, + 4CD0E20BB338DC7A5D9B5A7B4135F2C3 /* JSONDecoder+ManagedObjectContext.swift */, + 92278C21D42FE3CA639D84B8AC7E7EC9 /* KeyedContainers+ManagedValues.swift */, + FC31C1DE443CE579CAC65328AFD05E5E /* ManagedRecord+Predicates.swift */, + 6A4557094546318F4BB1CB7515DBDBB0 /* ManagedRecord+Uploading.swift */, + A5B3073C814FD6D70AD385DDB122AF81 /* NSError+LocalizedFailureDescription.swift */, + 26DC99E91CDEE86C52E9E0324D1EA501 /* NSManagedObject+Conveniences.swift */, + DA1A9014FCC98E975674F0DFBB5F7F2F /* NSManagedObject+Harmony.swift */, + 787A86333DCB72C06010245EDE6B0712 /* NSManagedObjectContext+Harmony.swift */, + BBC90AE9673EB9380FC70F80D0A1A85A /* NSPersistentStore+Configuration.swift */, + 5DD63E31BA02D76CA3E8415ABF10117E /* Result+Success.swift */, + 1D275B8855202007D0EF4ECAE74754C4 /* UserDefaults+Harmony.swift */, ); - name = DSDeltaCore; - path = DSDeltaCore; - sourceTree = ""; - }; - 31D8661CECDA73EC69B0A804FB723768 /* inc */ = { - isa = PBXGroup; - children = ( - 1ECF91681BBAC22AEA1F41C9E36BED75 /* png.h */, - 1B6E687133DA65575671ECF759A9C445 /* pngconf.h */, - CA7154ABE8E0B943BBE44F6E93DA1720 /* pnglibconf.h */, - 0298D777037EF857AD75D99B849F5C96 /* pngstruct.h */, - 6F06E96B244C279983A107F0118F85A7 /* zconf.h */, - 687DDD5F49284502650169241BB52820 /* zlib.h */, - ); - name = inc; - path = inc; + name = Extensions; + path = Harmony/Extensions; sourceTree = ""; }; - 326D30B621FED0EA9DFB6D009E4D9886 /* NESDeltaCore */ = { + CF1408CF629C7361332E53B88F7BD30C = { isa = PBXGroup; children = ( - 87B6C441197B192D53DA8C45CE3C83AC /* NESDeltaCore */, - 26D5A9A59F030AA7B56AE7787DAB8EC4 /* nestopia */, - 734B43D6C4DA867A95882564CAFC421D /* NestopiaJS */, - 4C139F9E9168514506376BE6A9E55904 /* Pod */, - EE6519880B0CA1CAD77D5755F2395D6C /* Support Files */, - ); - name = NESDeltaCore; - path = ../Cores/NESDeltaCore; + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, + 8D50AA6060BADF92D6E07BE0E95CBC5D /* Development Pods */, + D89477F20FB1DE18A04690586D7808C4 /* Frameworks */, + 2676B2B68FC678D7E37CA4D22FF257C3 /* Pods */, + 59F8E0B81923179808A032CA1DDAC456 /* Products */, + BDDCAA316B6C4E2A467D14C79E23372C /* Targets Support Files */, + ); sourceTree = ""; }; - 34F30EC317BE34781B937BB67C662CC1 /* freetype */ = { + D654BDAB16508BDCED669374F180CA0E /* Download */ = { isa = PBXGroup; children = ( - 74CE92CD39CA4E9D94A70558012E488A /* include */, + D339DD3505283EE70C70980777E52454 /* DownloadRecordOperation.swift */, + D3EDB0BB2DD3FCCA18812B93F89488FD /* DownloadRecordsOperation.swift */, + B23FDDFED8F7DEF10971E0852379C61F /* FinishDownloadingRecordsOperation.swift */, ); - name = freetype; - path = freetype; + name = Download; + path = Download; sourceTree = ""; }; - 34FAD58A01011689A7FB7D94C6D02851 /* internal */ = { + D714EED3B07FB7F1B7A1BEA1915C2B34 /* Misc. */ = { isa = PBXGroup; children = ( - 4815EF7101896F6F995409EF989502BA /* autohint.h */, - F643616FADBF7E6BC2A1186150E9FEB8 /* ftcalc.h */, - A484A1B2E22B7365FC565CB1D2CDDF4E /* ftdebug.h */, - 8739733EF235CA35583DA8672E19ED27 /* ftdriver.h */, - 02286DDAB8EB849E5F4F631424338597 /* ftgloadr.h */, - 60EB3614E3542E46227BEDDBFB4808BE /* ftmemory.h */, - 0D7706E78AF395B0BF7A33A65155FE3D /* ftobjs.h */, - F375993EFF03EA6C6482B40DADC6850E /* ftpic.h */, - 6C878F2CCB482C22A82B135EDBCB366B /* ftrfork.h */, - 30D5361B1F9F184F5C39F254FC6B9567 /* ftserv.h */, - D3556B3B3C0BA74D240B42AF0934D7CC /* ftstream.h */, - 4BB6746A6A1D9BA44003CF2F72104128 /* fttrace.h */, - D404DDEAA1780E4A8DC01E5DD107F23C /* ftvalid.h */, - D1A222E7AD9B04C4081BD98E461CB8DD /* internal.h */, - 547D76089FF424DC84616A35ACD84FF0 /* psaux.h */, - 6580F4C2274C34D00440BE9DA14D9163 /* pshints.h */, - F20FD15E6B1429D53EA9EECB0B17F55D /* sfnt.h */, - 3FA356CE28CDB87E135DA1A52E713731 /* t1types.h */, - B837C755947C65B18A89F3A0BADC7724 /* tttypes.h */, - 7AEC798A76DA81AD1CA40CA2A00BF918 /* services */, - ); - name = internal; - path = internal; + 40FBB0398022B16CA2ADEF30CB2CBEEC /* FetchRemoteRecordsOperation.swift */, + 8AF7510AB9F67B49A8568C2B7C761D71 /* UpdateRecordMetadataOperation.swift */, + ); + name = Misc.; + path = Misc.; sourceTree = ""; }; - 37A13D22D37F4CBE50B9E137E884332C /* Pods */ = { + D89477F20FB1DE18A04690586D7808C4 /* Frameworks */ = { isa = PBXGroup; children = ( - 40C5F442233EAF3D2D8F7F4D767AC3D8 /* Alamofire */, - 009F0CC285F6BA78E9A92285E866A377 /* Crashlytics */, - 767F33825DE0F39188233463ECBDF664 /* Fabric */, - 228FA8748601A2EE4B21161E81835AA4 /* GoogleAPIClientForREST */, - 97745B3B38E6073A9771423FCAB2F249 /* GoogleSignIn */, - 7AB57013EE6E9FF32B0E460C137984BD /* GoogleToolboxForMac */, - C84950D48B648DFC85215E0934082867 /* GTMSessionFetcher */, - 8FDE4525075516E90A9286C18AA7F0FD /* SDWebImage */, - 9C42098D9CF012CF305746841BDC6BF2 /* SMCalloutView */, - 97C18C4F2DEF2C74145C683D8870C6D7 /* SQLite.swift */, - 7CBC032BF922DFB50EEAB6D72B91354A /* SwiftyDropbox */, - 66BDA1DDF054BE81384AB85BFA7630C1 /* ZIPFoundation */, ); - name = Pods; + name = Frameworks; sourceTree = ""; }; - 37CFB106841C290630DEC18FC4EBEEEC /* Model */ = { + DD30560301D8B85295F333F5A439F04B /* SDWebImage */ = { isa = PBXGroup; children = ( - 5E1362D6590872B3446A7C9C52AC059F /* CheatProtocol.swift */, - 9E824187F69AED458A810430496F8133 /* ControllerSkinProtocol.swift */, - 53F2B0E17BC3AC9D7A5FE0A938140BC3 /* GameControllerInputMappingProtocol.swift */, - 863440A2EA28833532DAD4455C9604FE /* GameProtocol.swift */, - 5F44618E11608446BE1A156B606343A8 /* SaveStateProtocol.swift */, + 8F64B769D21D6923FBD2F87E54D7FF08 /* Core */, + 12AA9695BAAA8EF3B99E5B269D41F983 /* Support Files */, ); - name = Model; - path = Model; + name = SDWebImage; + path = SDWebImage; sourceTree = ""; }; - 3AE88A74464A60A2942101006AED0A4A /* Pod */ = { + DE0E41E1B7F74BBFC6A7C310C6E77BF1 /* Support Files */ = { isa = PBXGroup; children = ( - 4BE0A770159267F78EB0BE67410B05BE /* GBADeltaCore.podspec */, + C738A598915F88BA5E9E68898AEEA577 /* GoogleAPIClientForREST.modulemap */, + 073FADF4D5B878E152DF3856F015EE2D /* GoogleAPIClientForREST-dummy.m */, + F5037560ABAFD8EFA7D72E3B2CDD1602 /* GoogleAPIClientForREST-prefix.pch */, + 9513E61E8CF8CA83CB229CB898FB8FFB /* GoogleAPIClientForREST-umbrella.h */, + 1753A5241A5788A0023D64CB7CFC5107 /* GoogleAPIClientForREST.debug.xcconfig */, + 2678266B2B8D8A2855A5908D7923283D /* GoogleAPIClientForREST.release.xcconfig */, ); - name = Pod; + name = "Support Files"; + path = "../Target Support Files/GoogleAPIClientForREST"; sourceTree = ""; }; - 3BADE1B6FD7BE2FE9645CB603A786468 /* inc */ = { + E1FF980EB07BE16A51245651810554BA /* Protocols */ = { isa = PBXGroup; children = ( - 6C0EA7F202AF8D11BCE267EAC22A4F68 /* callbacks.h */, - 49EB67E2385654A06128B5AF86E06198 /* debugger.h */, - 7D633EBBEE9DD8266E21025C31FB5CF2 /* m64p_common.h */, - 688AA690103545651BEA6FC225889217 /* m64p_config.h */, - 69F6D09E39DCE61200F1255426706BDD /* m64p_debugger.h */, - CE43456F279801002681E65B577EB400 /* m64p_frontend.h */, - 044383445DA33997C0572B2EC796AF21 /* m64p_plugin.h */, - B26927C64ADD96D6F1857718A8684983 /* m64p_types.h */, - 73CEB369FBA056E331F0DC448A726D0E /* m64p_vidext.h */, - 34F30EC317BE34781B937BB67C662CC1 /* freetype */, - 8820DAC9E60DE6675759180EAC68F231 /* GL */, - ); - name = inc; - path = inc; + 1F2F80F4679A5572917EC18888BE71E2 /* RecordEntry.swift */, + AB09C444DC64973D518ED9948CC80C26 /* Service.swift */, + 7B5A2732251DB4000415E75BE99B6062 /* Syncable.swift */, + ); + name = Protocols; + path = Harmony/Protocols; sourceTree = ""; }; - 3BEBA4D65C17F897DA5DB5F0CF56635E /* mupen64plus */ = { + E3E813B99BFEAD6FC7F2AE33331BC449 /* Full */ = { isa = PBXGroup; children = ( - F2746FFD43797BF0D3EA9D6E2A28CB9E /* mupen64plus_DisplayWindow.cpp */, + 2084F64AD29D9ECB72822B91C45E7091 /* GTMGatherInputStream.h */, + 3C86ED7C3E410FD2D8BEC98751E7F21C /* GTMGatherInputStream.m */, + 61C43BDE058ECC24885E698E51468B08 /* GTMMIMEDocument.h */, + D12B5D4C9BC18A6433F8876AB8C1849D /* GTMMIMEDocument.m */, + 4822BB758BBE41E64BE422EA089585C2 /* GTMReadMonitorInputStream.h */, + 70D716720D6847D1C1BC0D9510525175 /* GTMReadMonitorInputStream.m */, ); - name = mupen64plus; - path = mupen64plus; + name = Full; sourceTree = ""; }; - 3D09F53360BA251802D04ABB6FCF2E8B /* Unix */ = { - isa = PBXGroup; - children = ( - 25917FDD71079A0F43811D467EC6CC40 /* ThreadImpl.cpp */, - 49D99B744B7B1A1BEEAC63A74EC018FC /* ThreadImpl.hpp */, + E675F9C0826DBC59EC49C2730732EAA6 /* Roxas */ = { + isa = PBXGroup; + children = ( + B9602429C0E7965A5BFA992A659449E4 /* NSBundle+Extensions.h */, + A9932CB6A29912491EF8B3967E40A8C5 /* NSBundle+Extensions.m */, + DD997783DD8D3FF071362656F6CA8089 /* NSConstraintConflict+Conveniences.h */, + A51768E539528CEA1B7B97D0138CD35E /* NSConstraintConflict+Conveniences.m */, + 2526EFE37DE949B59F28B5B1BFB4EE23 /* NSFileManager+URLs.h */, + A597A420DB5146A098F4AB91855B44DC /* NSFileManager+URLs.m */, + 106A0359BFB2E7A3185787044BD7F329 /* NSLayoutConstraint+Edges.h */, + 61966463CBC71ED02A3E101494AC9086 /* NSLayoutConstraint+Edges.m */, + 8DA649E84D76C639CF89CE073B97125A /* NSPredicate+Search.h */, + FDA221EAF1F8F41B3FAF8D8189E9E258 /* NSPredicate+Search.m */, + 514A7039E91889B99572BDC6A5C18356 /* NSString+Localization.h */, + 934018CB19D9EB2B799350E4BEBB20FC /* NSString+Localization.m */, + 31B604391F6CE905C37BC1B57DF00498 /* NSUserDefaults+DynamicProperties.h */, + EEA6FC50920D43291B0D917E68D03FAB /* NSUserDefaults+DynamicProperties.m */, + AEBC927D579F6BB580EC6EF0DE5387BA /* Roxas.h */, + 3B03A5BFC038EAEFDE6C37E989D208EE /* RSTActivityIndicating.h */, + 76B865E16D6331F37FD025B724C6D9F4 /* RSTArrayDataSource.h */, + E7B283AA2CF173414C0A5802ECFEC862 /* RSTArrayDataSource.m */, + 90ABADB85250EDEB806688C92B98A056 /* RSTBlockOperation.h */, + 9D2B20ED20AF4ABA225D32763743F699 /* RSTBlockOperation.m */, + 1854B53E0BD73B3D105F6DDF3BC2F70C /* RSTCellContentCell.h */, + 1819C8AFA9C10BF9BED7A829346CA636 /* RSTCellContentChange.h */, + FEC5AB1219E742B719483DB3A7E17C4E /* RSTCellContentChange.m */, + 593435A0CD2605934645CDA04568CA26 /* RSTCellContentChangeOperation.h */, + 93D00DF366B8E0DFFA6ACDDB3D8CD5E9 /* RSTCellContentChangeOperation.m */, + 14CAE3FC87389C6B6A49F795D683F781 /* RSTCellContentDataSource.h */, + F65F4924DB258FF13BB1622BAAEE0E5F /* RSTCellContentDataSource.m */, + 3226341D0A0C2F09E9C5EE00D06A7517 /* RSTCellContentDataSource_Subclasses.h */, + 7F072EE3507CBD2134100DA9E25F9860 /* RSTCellContentPrefetchingDataSource.h */, + 631FDCF5623C5A48ACB6BD748EA090EC /* RSTCellContentView.h */, + D3120939B6971DA8F719F7B238EF7A6C /* RSTCollectionViewCell.h */, + A758F8304E0C509FBEAEEA7C0ABC213A /* RSTCollectionViewCell.m */, + AFC00C12856F54F96B1227FE75F81D65 /* RSTCollectionViewCell.xib */, + E00F0B88F32DFD6484C234F86CF5FB50 /* RSTCollectionViewGridLayout.h */, + 1B7836BE5B529EA32A19CCCE49C91CA6 /* RSTCollectionViewGridLayout.m */, + 74D4F586F68FEE99E3E4248E0E3BD177 /* RSTCompositeDataSource.h */, + FACB43496D5DC76E9AA82F06701E0448 /* RSTCompositeDataSource.m */, + F6052475DCAFAECED7A4638CBEBD737C /* RSTConstants.h */, + 10F04D2F075E09D618DE1491C773E57D /* RSTDefines.h */, + B373A735DC64C323233F34AA09E35C8E /* RSTDynamicDataSource.h */, + 6B0C96EEE8BB175E992057B639666986 /* RSTDynamicDataSource.m */, + D7B3E5FDB7C50DF28247D34DF08D86DC /* RSTError.h */, + 109F136B231E5899017103D0E3E4CF32 /* RSTError.m */, + 3A5C2722E51AEC178E7F784349E1C6ED /* RSTFetchedResultsDataSource.h */, + 7DD1D0E6200107424B7024889A647F94 /* RSTFetchedResultsDataSource.m */, + F71361CE81454B9351EF3DD4FD0F0635 /* RSTHasher.h */, + 8588CE713C88B9E6A4A835773131C383 /* RSTHasher.m */, + D24CB7FF1300E7C22CBAC0D39A1F203E /* RSTHelperFile.h */, + CC538E7270C604A592B5B99AD1B686FD /* RSTHelperFile.m */, + DD7C90E185D275725AA822E9A44469F1 /* RSTLaunchViewController.h */, + AC141F3396894BFC35CCC27F6A514EF9 /* RSTLaunchViewController.m */, + 6818DE698B7C244C6A7117D0403EB58A /* RSTLoadOperation.h */, + 47BB770EC52793E6D64F4EC7A03B206B /* RSTLoadOperation.m */, + 2C24EE324BE60AF0E81E6E7833979A18 /* RSTNavigationController.h */, + 71BC1B535CFCE3126C56F52DD66FAB73 /* RSTNavigationController.m */, + 31CBAF6EB7C773654369987E2F6A8341 /* RSTNibView.h */, + EFA155B98CD8B997205991FC3F129723 /* RSTNibView.m */, + F9BAD513155FD42507CA9552744A41E6 /* RSTOperation.h */, + 6A2B6D89BA49499D48BD566164CAC09B /* RSTOperation.m */, + FE1BC1663278F2BD29760538D065DE9D /* RSTOperation_Subclasses.h */, + EC79FF57D7531AD04C143E3999102D9B /* RSTOperationQueue.h */, + 0A72B76741B4B4C3A7056BCE54B5E767 /* RSTOperationQueue.m */, + 971A03A698C27E134415B6A1BCC73D06 /* RSTPersistentContainer.h */, + 3A7D0A97105EA87651DB5999A685D0BB /* RSTPersistentContainer.m */, + 2C4D79AFBA1CA341C6A6B3A46012D512 /* RSTPlaceholderView.h */, + 6C417FF7A8D0C337B615D8B06070CC18 /* RSTPlaceholderView.m */, + 2F0833EC5BE1C316EC6365EF11660043 /* RSTPlaceholderView.xib */, + 2D8960DC903FF8290DD8DF8C73948BB1 /* RSTRelationshipPreservingMergePolicy.h */, + 7BCB85A76CF766C0F24C828044FBFF67 /* RSTRelationshipPreservingMergePolicy.m */, + 342AE849C236F7165CA45E0C22B2AF44 /* RSTSearchController.h */, + 59626F7798BEF3B2E0BA66EE0728F49E /* RSTSearchController.m */, + F8583552E9E43FAA7F9D92C797A37FF9 /* RSTSeparatorView.h */, + B5FEE3734DAC7833EE2F316A05E3FB4F /* RSTSeparatorView.m */, + 2ACF272C0DD8E70962D180D393182970 /* RSTTintedImageView.h */, + 04B9EB1046F7946327ED535CA93D72CF /* RSTTintedImageView.m */, + D4B8FD265B54C00C19CBEB64B04F1EAA /* RSTToastView.h */, + D9F0CD49DD9B2E3E2D8D280AB18F658B /* RSTToastView.m */, + F1AD1B41D23F04E3475D38F344E8D214 /* UIAlertAction+Actions.h */, + B183DCBE431E7ED474E0FD60332DF7F1 /* UIAlertAction+Actions.m */, + 3E68150D1F72CC502516BA7F5B6F46E8 /* UICollectionView+CellContent.h */, + 67171B182B66B992DB05C17163644E23 /* UICollectionView+CellContent.m */, + 1D7980D69C299BBA0F307475AB007E1A /* UICollectionViewCell+CellContent.h */, + 5A38B17016D4FE44653121F0230F5529 /* UICollectionViewCell+CellContent.m */, + DD1DC3988E51D15B9E94BBD52E6165F5 /* UICollectionViewCell+Nibs.h */, + 2580A4A555312C496A5873799DA66677 /* UICollectionViewCell+Nibs.m */, + C41B094C61D212712CD835C3A221D3CF /* UIImage+Manipulation.h */, + 3EB2315ADE9FD5AB5D13CFB5648C59A8 /* UIImage+Manipulation.m */, + 0913C43FFE347F02B2B129F1048D05F1 /* UIKit+ActivityIndicating.h */, + 52C44BE7B3E49A07B14A7C3FA8470C56 /* UIKit+ActivityIndicating.m */, + 950CD3BC7E1EB772BBBFB8B5D3EF4BBC /* UISpringTimingParameters+Conveniences.h */, + 074086C0D7D585641C9D4E9AFC4FE4A2 /* UISpringTimingParameters+Conveniences.m */, + D915831E8F4887A23F86A1CDFC74DF86 /* UITableView+CellContent.h */, + 23C608791908CF3DE346DFBA6D8F3EE9 /* UITableView+CellContent.m */, + 02E2FC53073880496A8D17A990849C07 /* UITableViewCell+CellContent.h */, + 01D17E092AEC5A0E894155B6FA77DA30 /* UITableViewCell+CellContent.m */, + EC7B7502A435C89A67E3BB8FDD3E2F5D /* UIView+AnimatedHide.h */, + B136A2A8FE351E57E6D740927A61A3BA /* UIView+AnimatedHide.m */, + 4DFADDC6F34642773FC6D98814359205 /* UIViewController+TransitionState.h */, + 43C9361EBA8A37B58FC640ADA480FBE2 /* UIViewController+TransitionState.m */, + A2E3ECC286DD3D25E2F22E7090BD07C4 /* Pod */, + 2C26391E4F4F62754BFC13DD87793788 /* Support Files */, ); - name = Unix; - path = Unix; + name = Roxas; + path = ../External/Roxas; sourceTree = ""; }; - 3DAEBBBA933327153C1A5F18A797BE49 /* Cores */ = { + EF55C999832B5E9157D8743AA985F61F /* Support Files */ = { isa = PBXGroup; children = ( - 7CE2844DE2F965D57AF2B9A38F4F4B70 /* DeltaCoreProtocol.swift */, - 0E134F4CF807C51D786E91CB577B584E /* EmulatorBridging.swift */, + 221C1B46A82DC0F622CDFA9CC67DE317 /* SwiftyDropbox.modulemap */, + 97B62592CB380C117D0C6FD312E122CC /* SwiftyDropbox-dummy.m */, + 5CB806CF4B5F9F987FA06DB399CBF2CB /* SwiftyDropbox-prefix.pch */, + D67E5D2FF8E7E31C4604718B8E3260BB /* SwiftyDropbox-umbrella.h */, + F0BEE9C2C63738172378E0A44BF2FB42 /* SwiftyDropbox.debug.xcconfig */, + DD4F2DC2C0E6FEF55D2573407B13787B /* SwiftyDropbox.release.xcconfig */, ); - name = Cores; - path = DeltaCore/Cores; + name = "Support Files"; + path = "../Target Support Files/SwiftyDropbox"; sourceTree = ""; }; - 40C5F442233EAF3D2D8F7F4D767AC3D8 /* Alamofire */ = { + F456D8DBB6B558706BCF50C2670FDDD1 /* DebugUtils */ = { isa = PBXGroup; children = ( - 70B04C9F57267E03F1342083D92F72DD /* AFError.swift */, - 059E076DC22B421E03349A4BC56852DD /* Alamofire.swift */, - 61EE3CF1533FE896277A8399AB5697AE /* DispatchQueue+Alamofire.swift */, - 0BBF21DB7D0A3DEFC2DB5CF5C384EC77 /* MultipartFormData.swift */, - C84C3D0F11A5EB1115FFB93D23447AE9 /* NetworkReachabilityManager.swift */, - 03368477B0F9F367CC8C9443F31F2918 /* Notifications.swift */, - 5A0A83DB759E9397D1C0559D05F620AF /* ParameterEncoding.swift */, - B9103C0E62058A84C7C9BDF9F6915958 /* Request.swift */, - AA1C0B3274E804CB44DE0C80AC3E1E9F /* Response.swift */, - 745C7BD034F68630CA1462CB29BF3051 /* ResponseSerialization.swift */, - 798D5972AD9FFEB025B0DC380ACFC440 /* Result.swift */, - 87B8D974016F8FF0B7457CF079A700AB /* ServerTrustPolicy.swift */, - 48A7DBA86C0D8564FAED27D377B220EC /* SessionDelegate.swift */, - 4D480F6ED4062D534F79485C9C8C741A /* SessionManager.swift */, - CDAEDE6317A2C17D4DB07ED6E3982F55 /* TaskDelegate.swift */, - 0ECCD45E4DF53FED6DA4A6938B32FD27 /* Timeline.swift */, - 599A968786BB3CEF39D154E679D99110 /* Validation.swift */, - EB34A2FC74D6227E23516B7948BC9D0F /* Support Files */, + 3829020F4459CB123EB43F75C89CC930 /* GTMDebugSelectorValidation.h */, + 619BFB4BE368F906AA4A8EDECB4C1E80 /* GTMDebugThreadValidation.h */, + 352EA461943DF04A227376E366F2CEAB /* GTMMethodCheck.h */, ); - name = Alamofire; - path = Alamofire; + name = DebugUtils; sourceTree = ""; }; - 411CCD233F29EAD26706B07FE1DB055E /* Core */ = { + FD875969FEC6541A862344D6A1406ABF /* Core */ = { isa = PBXGroup; children = ( - C5D0C48AB270EA1136E55E203CF7D378 /* NSData+ImageContentType.h */, - 131DE5B5A662F4982F678A6226865295 /* NSData+ImageContentType.m */, - 288F0A8E1830BC9A6DEE1E4E0D082A8D /* SDImageCache.h */, - 921AD788C442F823555202B44D3AF160 /* SDImageCache.m */, - ED28BE1D7327BA6ABFA7B757E13A6EBB /* SDWebImageCompat.h */, - D01B5BDC517C52E34E8E81885DDA7BC9 /* SDWebImageCompat.m */, - 9FBEDF35986AA4976C5186CACDC036A7 /* SDWebImageDecoder.h */, - A1DC4D0732A2D4A00391980B544DCC7A /* SDWebImageDecoder.m */, - 3983F1895BAF52B55FBA7C3CA41B9A63 /* SDWebImageDownloader.h */, - 0578BFC4BF51617091C2DE4924C3A501 /* SDWebImageDownloader.m */, - A024A97ADEDE582E9EDA110E6B1AF889 /* SDWebImageDownloaderOperation.h */, - B068E4E7AE4132AAFBBBCBD24D7A4C81 /* SDWebImageDownloaderOperation.m */, - A926D3355F6CDDC80A17A8A29A62AF05 /* SDWebImageManager.h */, - 520D9B2D1F6739C099B2819925297F07 /* SDWebImageManager.m */, - 26ECC555C3C58DB5AFADDF0AA680057C /* SDWebImageOperation.h */, - D42421CB7ACD877300E845DA963BD693 /* SDWebImagePrefetcher.h */, - 602F93ECC989A3FB6D04031D00DE62E5 /* SDWebImagePrefetcher.m */, - ED98D3CDD8B67DE813123392E2953CE8 /* UIButton+WebCache.h */, - 60815A565ED55CD68EB1B67F9D360CFF /* UIButton+WebCache.m */, - 13BAA83DB690C1835AB70FD3FC749AFF /* UIImage+GIF.h */, - F5EA96C879945AA782B43E8FA302CAF0 /* UIImage+GIF.m */, - 568BC6B386F0E084601CBF273D6953BA /* UIImage+MultiFormat.h */, - AD7E8DA1695D9954D559B5D1CB60DE8D /* UIImage+MultiFormat.m */, - FB23491CA81D5C2441595CFDB66E8D32 /* UIImageView+HighlightedWebCache.h */, - 98D8B9C03706EA64A98272C9B5617C09 /* UIImageView+HighlightedWebCache.m */, - FC5CD66C23C8B15B020AD1A0E066DE14 /* UIImageView+WebCache.h */, - 3877506BCB9C396099DE5A88C9255153 /* UIImageView+WebCache.m */, - 2BF527A86BB1F33B31BB0F79626623B7 /* UIView+WebCacheOperation.h */, - 6497DCF700203B483AC09F89101261EB /* UIView+WebCacheOperation.m */, + A2745CACE4E1CC4B6A8752D8122EA9B2 /* GTMSessionFetcher.h */, + 68671438132F11B6C9569C0CA93DF99E /* GTMSessionFetcher.m */, + 8D3659B01B09AAE42557E524A27316EF /* GTMSessionFetcherLogging.h */, + 9B92A814F5D5ED402320C4ACCDA8CB15 /* GTMSessionFetcherLogging.m */, + DCFC19BC3409D8B7B451D3611A917819 /* GTMSessionFetcherService.h */, + 853CB1BB7D85A6528B399DAC229AAB8D /* GTMSessionFetcherService.m */, + CD4490E074A906B05214E44C723CE239 /* GTMSessionUploadFetcher.h */, + 98DF1E5529C077369D7120476DA5063B /* GTMSessionUploadFetcher.m */, ); name = Core; sourceTree = ""; }; - 414C0CAE33C5297A74940AE88BEB6357 /* Controller Skin */ = { + FEECCE36CB9C4DD33C6BB89DE2E58B4F /* Model */ = { isa = PBXGroup; children = ( - 90750F17E4FE1687675390836DF8A844 /* Standard.deltaskin */, + 6CC3A88F6A10243620F79D46751C74A4 /* Account.swift */, + 0ED91C6668413918BB957ADDC0973CC2 /* File.swift */, + EBF5E9F21D0CF37992311F5A0E8D5D2B /* Record.swift */, + C9324F3ABCFF4F339C3BF451C3FFBB94 /* Version.swift */, + 644D3B22B44048B3701A00A5835620CF /* Core Data */, ); - name = "Controller Skin"; - path = "SNESDeltaCore/Controller Skin"; + name = Model; + path = Harmony/Model; sourceTree = ""; }; - 41C6B2A9B3387B384985935F045B38FC /* Support Files */ = { - isa = PBXGroup; - children = ( - C91EEA659866247E15C8B85344382246 /* DeltaCore.modulemap */, - 353752D35D9CE2E270057B7B1D0F9609 /* DeltaCore-dummy.m */, - 780C942D05B3A6D0A57D5B0EA2C85490 /* DeltaCore-prefix.pch */, - BF13532696017B18EE5ACF4225924349 /* DeltaCore-umbrella.h */, - 2732AC8F246A18F0714B4321F54DD531 /* DeltaCore.debug.xcconfig */, - 4BC067CAFA13189984037CEC34AF2FB1 /* DeltaCore.release.xcconfig */, - 756A8C82990C25488A72294E1DB16515 /* ResourceBundle-DeltaCore-DeltaCore-Info.plist */, - ); - name = "Support Files"; - path = "../../Pods/Target Support Files/DeltaCore"; - sourceTree = ""; - }; - 425B9209A294EFBF0D35BB9662645494 /* Mupen64Plus */ = { - isa = PBXGroup; - children = ( - 72E01D5AC6F7FE21BC018BB70AA15265 /* mupen64plus-rsp-hle */, +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 0F98179C5FEF8F450830B39C4F9ADAEA /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 936BC9EA5CE7B566A4CCF233FCE0AE24 /* GoogleToolboxForMac-umbrella.h in Headers */, + 740A2860BCECD96F23906C89ECBF06B6 /* GTMDebugSelectorValidation.h in Headers */, + 87FD44E2378591F0A3649E1C7FC70D9F /* GTMDebugThreadValidation.h in Headers */, + C3C81C1F255B2982D7DDF74E77D11CA3 /* GTMDefines.h in Headers */, + A5516CA09D787850C6944D246A789265 /* GTMMethodCheck.h in Headers */, + 2AA763973449BB2716075B46318092F3 /* GTMNSDictionary+URLArguments.h in Headers */, + E1DD8AFCF27A7530A8E41887F2EEACB9 /* GTMNSString+URLArguments.h in Headers */, ); - name = Mupen64Plus; - path = Mupen64Plus; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; - 426A608862B6711311B1B7B3A45DB83A /* mupenplus */ = { - isa = PBXGroup; - children = ( - 4ED50A9D084C1B30671775C625A024C9 /* GLideN64_mupenplus.h */, - 7C7452868988A93760A7A50A3744B7F2 /* MemoryStatus_mupenplus.cpp */, + 12C6F90746C89ACD2C642508705F0B1D /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + C2C5E95A3778956D900630B30127E6BC /* GoogleAPIClientForREST-umbrella.h in Headers */, + D21FA0B1E677F37B8B6816C9FC08EC82 /* GTLRBase64.h in Headers */, + 003DA77373EA7A6C58230A3B5C8BD2C9 /* GTLRBatchQuery.h in Headers */, + 766306BF1B7A65F4DD5A68DA683A729B /* GTLRBatchResult.h in Headers */, + D3402FEC79C759B618D76054EA4AFA74 /* GTLRDateTime.h in Headers */, + BF007953AD85268DAADE95A4578790FE /* GTLRDefines.h in Headers */, + D25EE90E04D6167B04E134E40B324AB1 /* GTLRDrive.h in Headers */, + D0A677BC713110416D5C821975836C37 /* GTLRDriveObjects.h in Headers */, + FFED35B78D0E0C68526F3E3BB920230D /* GTLRDriveQuery.h in Headers */, + 469EAF80560362FC2EA1F8545DB6B051 /* GTLRDriveService.h in Headers */, + 6E435A3888414096AB38942CC2017635 /* GTLRDuration.h in Headers */, + EA757276E51B372186AA7CBF54417409 /* GTLRErrorObject.h in Headers */, + 0DF3091B2BEA6F68C30A9F70E0C34EBD /* GTLRFramework.h in Headers */, + 3AF8C64F61ED8696423A082EAD71334C /* GTLRObject.h in Headers */, + C6625E357CAC034BB823DD859355FB88 /* GTLRQuery.h in Headers */, + EE00773DEB5849BDFE00AD4CE6FB8EB9 /* GTLRRuntimeCommon.h in Headers */, + 2E7CF2452B84932D8BC4721944148FD4 /* GTLRService.h in Headers */, + 3FBEC30670787C8E30826F4C08A5EE05 /* GTLRUploadParameters.h in Headers */, + 428EFC8EA34D19BDE99A1DB7B9ED5511 /* GTLRURITemplate.h in Headers */, + C0284CAA9055BDD1995683D6BCCE283A /* GTLRUtilities.h in Headers */, ); - name = mupenplus; - path = mupenplus; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; - 430A8F7B1125ED20C83FE364C9C68700 /* Harmony-Drive */ = { - isa = PBXGroup; - children = ( - 85E469198AF1A954FE1092AC0B7CC6E5 /* DriveService.swift */, - 12F16DEA29CA98647E7B1B64C4AFEFA1 /* DriveService+Files.swift */, - 041D9AF191E8EDD43E963D7D217446D1 /* DriveService+Records.swift */, - F4E029C6B1502E3C0F74D27B9EECBA1F /* DriveService+Versions.swift */, - 11D71C4CB7D70BC32896C99FBC8C8B42 /* Extensions */, + 1B49CC4458968A0208E4E8C08B83035D /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + F414B9330A7EB830B46671D3302554AD /* Pods-Delta-umbrella.h in Headers */, ); - name = "Harmony-Drive"; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; - 436E6987663F1DA9FDD171E9BC13426C /* Support Files */ = { - isa = PBXGroup; - children = ( - 005FC9907E7BDC0BEFC3ADF4DDF1EE39 /* GoogleToolboxForMac.modulemap */, - C7A9D7E3EC589A75AD2405C76234F641 /* GoogleToolboxForMac-dummy.m */, - 3E7B7BF0A743BE6F53D69481DCC503FE /* GoogleToolboxForMac-prefix.pch */, - 5EF06F8F27ABEC737DD25CCD173676AF /* GoogleToolboxForMac-umbrella.h */, - E6C9B6763FC803B3E3266F762DFABEC6 /* GoogleToolboxForMac.debug.xcconfig */, - 540AD95463DB65E077F08253A77C4865 /* GoogleToolboxForMac.release.xcconfig */, + 26CD12A0A8FED394729931D851C1BDFE /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + C9898D393FDF7E17C404424E76078E76 /* NSData+ImageContentType.h in Headers */, + 20983A4E2B0967B542119114AB073BB7 /* SDImageCache.h in Headers */, + 32C5649F56A9F2DE34AC6EF9FCA33323 /* SDWebImage-umbrella.h in Headers */, + BCCF0B9F15A1651547EADC31A6CEB5C2 /* SDWebImageCompat.h in Headers */, + DBF0A6C0BE990638F43CB71209C4E731 /* SDWebImageDecoder.h in Headers */, + 488875F3618617406AB771502A10BE59 /* SDWebImageDownloader.h in Headers */, + 07BB377F31975D34EB8CCC8C3E05597F /* SDWebImageDownloaderOperation.h in Headers */, + 32F7E2ACCA4602AE9DE680A9D70EE36F /* SDWebImageManager.h in Headers */, + 52722B0030C7E925E9C8304457491FFB /* SDWebImageOperation.h in Headers */, + E0584F089FB27ABA38D5D355721DE37C /* SDWebImagePrefetcher.h in Headers */, + 16BA02E314DD1557E7856374C52DA346 /* UIButton+WebCache.h in Headers */, + 6A245DCAC5A1FD3F8943F4FD3E1473EE /* UIImage+GIF.h in Headers */, + B2413D48BE65FF8FD294A53D5C5B760D /* UIImage+MultiFormat.h in Headers */, + BCC3B83B11F726387F8C0A3568E470D1 /* UIImageView+HighlightedWebCache.h in Headers */, + E9D90305973DEDEC0F4BFB33B4281876 /* UIImageView+WebCache.h in Headers */, + 8AD3B7AB59719794E86F41BA43AA9BB7 /* UIView+WebCacheOperation.h in Headers */, ); - name = "Support Files"; - path = "../Target Support Files/GoogleToolboxForMac"; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; - 4621CF9E2ACD10284ED172A2D068CC35 /* Bridge */ = { - isa = PBXGroup; - children = ( - 0D333C14DCFA672B937D7D69CEB91B12 /* DSEmulatorBridge.mm */, + 4D20B65F8A01B69A2EE52CE9C42885C2 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 523CDD45B576DF460142986ED78872D1 /* NSBundle+Extensions.h in Headers */, + F8F2AB48AEF8879E24090F392019A94D /* NSConstraintConflict+Conveniences.h in Headers */, + 5F3A51D09091B71867AAFAC37577E26C /* NSFileManager+URLs.h in Headers */, + 2BF9AA3C8DCD2E53B2672B033ACCAED7 /* NSLayoutConstraint+Edges.h in Headers */, + 028F50DDEA0C74B2152F35BD8054E9CA /* NSPredicate+Search.h in Headers */, + AE778C15392B6BB14EFBD7566B066E19 /* NSString+Localization.h in Headers */, + 63625B3B16AECD2C36D6DDD1A0F1ED51 /* NSUserDefaults+DynamicProperties.h in Headers */, + 8E6DD8D082B706385CA9CCAFF242639A /* Roxas-umbrella.h in Headers */, + 1640317306E07F9116FCFDE165C4EF46 /* Roxas.h in Headers */, + 7E2BDF8E2F051BE89228B0252B352ACA /* RSTActivityIndicating.h in Headers */, + 4D465D666BB8D6765017DA206D93F437 /* RSTArrayDataSource.h in Headers */, + FE79EA3D2FCE8C853F813601CA885C3C /* RSTBlockOperation.h in Headers */, + D0C35FB6379840B7CE1D8640DBAC7ADC /* RSTCellContentCell.h in Headers */, + E6A302DAC5456189F0F4F02849F31183 /* RSTCellContentChange.h in Headers */, + 57B9B205F478D8686A2987D5D67A4EC7 /* RSTCellContentChangeOperation.h in Headers */, + EF2C57FB1711ACD9C4ACBA052BD1D8BB /* RSTCellContentDataSource.h in Headers */, + 8EBC4A9C9218F1F50AEE7DBF30904E88 /* RSTCellContentDataSource_Subclasses.h in Headers */, + 6C476D938B5238A5629316C2A1E1630E /* RSTCellContentPrefetchingDataSource.h in Headers */, + D6BB7F0B578691B2B50C2B55CF82D04C /* RSTCellContentView.h in Headers */, + 962EEE40115CEAEDA23B24392137DDFB /* RSTCollectionViewCell.h in Headers */, + B6FE9A5B8C570BB172DEBEEA52B07EA6 /* RSTCollectionViewGridLayout.h in Headers */, + 65C4412365A7D373B0B795CD88281AEB /* RSTCompositeDataSource.h in Headers */, + D59755AAA20B7642DA738C61BF166D35 /* RSTConstants.h in Headers */, + E0FEB9F2594867F338970BC1663CA68F /* RSTDefines.h in Headers */, + 9B2B7AA09946D29AB32ECD25B071CC66 /* RSTDynamicDataSource.h in Headers */, + CC17AC1E67F027CD4D4E05728F078DE9 /* RSTError.h in Headers */, + 7A1B39218E711151DBD6F6DD40FF6A45 /* RSTFetchedResultsDataSource.h in Headers */, + 219B30F934EC147CA5F9BB687D1C2B48 /* RSTHasher.h in Headers */, + 8579C616BEE23F634991C444DFB04D32 /* RSTHelperFile.h in Headers */, + 38A16AE1A89524FEC7401068F9CF2AD6 /* RSTLaunchViewController.h in Headers */, + 0907182A9B6F4063380F68FF2A27D32F /* RSTLoadOperation.h in Headers */, + 8DE558A74684C997EB5A9ED8113D1107 /* RSTNavigationController.h in Headers */, + 54F68E7364F5722EBB502DCB06F3939B /* RSTNibView.h in Headers */, + A6ACF61B5114756307947455B4EF98C1 /* RSTOperation.h in Headers */, + 87F651DB89D0F80F855B1F36CA256EDB /* RSTOperation_Subclasses.h in Headers */, + EDB9F82968EBFE551EC3E554DBB15022 /* RSTOperationQueue.h in Headers */, + 8475C04E15B4B2A8867CC3208FF8514C /* RSTPersistentContainer.h in Headers */, + F46F0BD6E9E3963197729FC246F2AABE /* RSTPlaceholderView.h in Headers */, + C5FB1A3038B4CAF65AF081B2C08AB634 /* RSTRelationshipPreservingMergePolicy.h in Headers */, + 18D01659E688A01C11D0415BA0C63995 /* RSTSearchController.h in Headers */, + 5CC6CF445EA35510B757F056528651A7 /* RSTSeparatorView.h in Headers */, + CB4515808CDEBACB83C26CF08552CC8A /* RSTTintedImageView.h in Headers */, + B5A33D72F642157329F8DF95133FBDC1 /* RSTToastView.h in Headers */, + FDE5050AE0464FB05B1147E05397E429 /* UIAlertAction+Actions.h in Headers */, + D19690C03A254AF4C2A1731CD68A6EF5 /* UICollectionView+CellContent.h in Headers */, + A078B7B76A3011311A4A3F20EF47D0F7 /* UICollectionViewCell+CellContent.h in Headers */, + A7DA64C60CB93199F81658ACDA16381A /* UICollectionViewCell+Nibs.h in Headers */, + 0CBB49C1EDF99134742427FC7DA6B098 /* UIImage+Manipulation.h in Headers */, + 8CBECB899C76ABC3DA36DF47F65FFB0C /* UIKit+ActivityIndicating.h in Headers */, + 5A3743D5E2635A29A0E16B926E2E0521 /* UISpringTimingParameters+Conveniences.h in Headers */, + C4E4DF46F173736444DF635DFEF27A16 /* UITableView+CellContent.h in Headers */, + FA635085E863B88998D22968947580AA /* UITableViewCell+CellContent.h in Headers */, + 76092388BB96A8DB2A8F0792582DC68A /* UIView+AnimatedHide.h in Headers */, + AA993C63C74CFC865F2DF37BD6329A09 /* UIViewController+TransitionState.h in Headers */, ); - name = Bridge; - path = Bridge; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; - 4796385DB6264FFFC4FA4A5852C0503C /* Types */ = { - isa = PBXGroup; - children = ( - 9733C7EBAFF0927A8F7A245AE45E8DBB /* GBATypes.h */, - B04299FBE484CF4A076EBCBE3D52DA7C /* GBATypes.m */, + 6DB5FFA1EE15C256CE1EAC6DDB551DB3 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + BB0CFB82073B9090363ADA3150515534 /* Harmony-umbrella.h in Headers */, + F9C55374D299754191544942F0147195 /* Harmony.h in Headers */, ); - name = Types; - path = Types; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; - 47C98A43905AD5F255C5F34DB19A258A /* x64 */ = { - isa = PBXGroup; - children = ( - E1A9CCAB6664B2A074EE28AABAB52B72 /* assem_x64.h */, + B52063D31A47694C5832DB0144982ED5 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 3522984A23D0983D50F2F60CD2B9F2C9 /* SMCalloutView-umbrella.h in Headers */, + F47DE4860ED00EA4CDC661D662F1681B /* SMCalloutView.h in Headers */, + 953B0BA08374FEB6F8BA47C9EE30878C /* SMClassicCalloutView.h in Headers */, ); - name = x64; - path = x64; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; - 481ED60E33EE09552AC37427329E94E5 /* Drive */ = { - isa = PBXGroup; - children = ( - 4CB7FC1BCCB48A79D26DDA5099AB7393 /* GTLRDrive.h */, - 7C6BC0D076F377BD8D6A2EAB196A9653 /* GTLRDriveObjects.h */, - 5DD7DBBB3619EE9EEDB725158C211C8C /* GTLRDriveObjects.m */, - E7294A191F7AC7765349928B17D20EAE /* GTLRDriveQuery.h */, - 501510C0AB0C2749A39F8FE21E2FDE4E /* GTLRDriveQuery.m */, - 1C5F8657F7A40B8346317B773095E039 /* GTLRDriveService.h */, - 17191C33E01881A9A1CB215D6932040B /* GTLRDriveService.m */, + B715D763CE3F7AD2FFB3E12167F759CF /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 39E36E16FF2FAB77065F3E24D90D594B /* GTMGatherInputStream.h in Headers */, + AD6656B872B98CDE4BAC39B6E10CF595 /* GTMMIMEDocument.h in Headers */, + 89F637B6A72C84461E7E5E6395896B4B /* GTMReadMonitorInputStream.h in Headers */, + 0BC29A4D141721CED777951AFB6285DC /* GTMSessionFetcher-umbrella.h in Headers */, + 43A6F36EC82583DFC3F1B2EB25F87C7E /* GTMSessionFetcher.h in Headers */, + 6252AC3C230BC83234C9D7D7F17455E5 /* GTMSessionFetcherLogging.h in Headers */, + F1DCBDDEE6EC2B1512E4A288D7ADF679 /* GTMSessionFetcherService.h in Headers */, + 12EB6F66719644A22679C7B30EA4F9DA /* GTMSessionUploadFetcher.h in Headers */, ); - name = Drive; - sourceTree = ""; - }; - 4863F58B53F0131352B6628AA2473A10 /* src */ = { - isa = PBXGroup; - children = ( - 04B2AF5D701B0D23097F0DEE8A870933 /* arm_jit.h */, - 59D02EBAC62E4ADEF5A49D60E9C42AEB /* armcpu.h */, - 57C2AF90F5D25906D579D1BD54E1894D /* bios.h */, - C51C1DA993826C004368CE57FAA6DB61 /* cheatSystem.h */, - A138D602A8841343DB1C84E0E4269422 /* commandline.h */, - 1E6091FE660CAF4367DBF5FFF46CC56D /* common.h */, - BF75F4882CAD79A98615658198686DD7 /* cp15.h */, - E55F80EF7FF9BB234E4AA9B4D06F1C15 /* Database.h */, - 093735AEE369C11535CD28A29C719205 /* debug.h */, - 9B95FB2C3FC8B2A397359CB1368E031E /* driver.h */, - 9AAEFE6F2984D8240D2B90773A6550F4 /* emufile.h */, - 09BB48FFF01B32D25101EAE9D7DC9584 /* encrypt.h */, - 6FC0331C8792784F0B18ABC1E76D97EB /* FIFO.h */, - 8E3FA1069F1A405E4462E3D83816F39E /* firmware.h */, - DF6EA5934525711986F6816A1E10B4E9 /* gdbstub.h */, - C8A455672E315E4E14C757C97BD055DC /* gfx3d.h */, - B2B9C1195CF19CBAB858C293A5A512CE /* GPU.h */, - BBB2272A01DC6ADE898D9C2687E972B6 /* instruction_attributes.h */, - 6F169330A819E3D0505CAD19B390990A /* instructions.h */, - FE393A787CDB1368A55863B430DDD5C7 /* lua-engine.h */, - 39F57C8AD257C3DD8BC2E22B11EE1356 /* matrix.h */, - 6538E1750A003E112A1253284036FAD7 /* mc.h */, - 5020C256BF6AA1E14A6F7333CC1DF504 /* mem.h */, - 4DFFB1E8202B4205DB65C0986BE9DE17 /* mic.h */, - 6B7C4AC83A510BBC0B84764C2FFEAD86 /* MMU.h */, - A1109774AE36DB58ADFFBB7C828D8C33 /* MMU_timing.h */, - 9DB763486903A82BC9B03EBE994F8276 /* movie.h */, - EC72261E388EF6B78FAB023D9CC5D419 /* NDSSystem.h */, - FB7B9AA2049E61CFE3058E49DB95309B /* OGLRender.h */, - 790609C487C0DE4A1E6385276B1FD602 /* OGLRender_3_2.h */, - 316682D383C84DADE373A0AF5248B438 /* PACKED.h */, - 1121FEE3395F16CC1F8194DF4B4B26F5 /* PACKED_END.h */, - B3AFC502DD1D86B9D684498892D0783A /* path.h */, - 936486BEC6113E922ACF1D26C14FA268 /* rasterize.h */, - 4FB4BB99FC8FCE6E7BDCD8CFD99B1318 /* readwrite.h */, - 4C6B9BE868EA37768F174927D00C38BB /* registers.h */, - 27972C0F459B8A35484EEEFEB34D2439 /* render3D.h */, - D38B546A30886C0C9A47E36BFF53C9FC /* ROMReader.h */, - 4F005622B9BC67B664A26431CCCC72A4 /* rtc.h */, - 8EFD8985D9D458061044366EA21D92D1 /* saves.h */, - 8EDF76EEB504EA9C6E5BC40133A1CD4A /* scmrev.h */, - B70EEB2277D9821CF8654045BFDC9254 /* slot1.h */, - 55EA6B0BBE6DAB6FF866AED1005E8999 /* slot2.h */, - 888E286567DA558A37D75C91A18A8003 /* SPU.h */, - 9E92E2C982AE53605508C9330424A1A4 /* texcache.h */, - D1476498A59B49640815E0E82A975A8E /* types.h */, - 6D83D5A2599C2FB66047AFC3E59C193B /* version.h */, - 16D924FA316C3348F749FFABFBDFCCF4 /* wifi.h */, - F1EA809FD50B47C62E421341AA7295B2 /* libretro-common */, - 2AD8ACDCFF0C6135D603DDB74D2C91A5 /* metaspu */, - ); - name = src; - path = src; - sourceTree = ""; - }; - 4927B9B438CDC0A2A1F236A9B0E7C7CB /* System */ = { - isa = PBXGroup; - children = ( - 8790DC1F754E5B29AE549062EC5965BF /* Err.cpp */, - 3E14F2824F466613E0B904E85B7F7D90 /* String.cpp */, - EE94CF3C1A56D0C7DF3C5F9D41A48366 /* Thread.cpp */, - 18BBE5534A3581E4BA37CEB930381E8F /* Time.cpp */, - 3D09F53360BA251802D04ABB6FCF2E8B /* Unix */, - ); - name = System; - path = System; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; - 4A3A6846371C78AEC1A70D5869741757 /* qt_sdl */ = { - isa = PBXGroup; - children = ( - 4CAD2DA398BD46993458E28459856C65 /* PlatformConfig.cpp */, - 44C09EBEC04D075143364B842FD33FA1 /* PlatformConfig.h */, + D89663E2DB8D7DD0634E5C6BF3CD44A2 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 7C223CCCA8FDA2AFC24233CF2C80D507 /* fts3_tokenizer.h in Headers */, + BFF536B78DC4850A4A285C1D03F56057 /* SQLite.h in Headers */, + DB5891014AF5583F4CE70D67063FEBF4 /* SQLite.swift-umbrella.h in Headers */, + 58670BDA59BC1476ECD1AE42A65DEDB4 /* SQLiteObjc.h in Headers */, ); - name = qt_sdl; - path = qt_sdl; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; - 4BD5923E42F8E36D18FDA8D4D5471D9F /* Protocols */ = { - isa = PBXGroup; - children = ( - 0A95B6906C738BFA36DD7F2DCDAF795A /* Inputs */, - 37CFB106841C290630DEC18FC4EBEEEC /* Model */, - 53CC743624E5F70C4B19A416550D65F6 /* Rendering */, + DA327FA8288BD9E808AD950153D6638C /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 9CF692BD464C27BA082BE1DCA7A9D45C /* Alamofire-umbrella.h in Headers */, ); - name = Protocols; - path = DeltaCore/Protocols; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; - 4C139F9E9168514506376BE6A9E55904 /* Pod */ = { - isa = PBXGroup; - children = ( - 65BAB4D3BC57DD688735D0D8DC9DE780 /* NESDeltaCore.podspec */, + F1802B63CE83F2F958797D8B834B4932 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 0EEC9C614955F557094164E6D5B6B16C /* DBChunkInputStream.h in Headers */, + DB17AEA169FA03900C8747C780B84E62 /* SwiftyDropbox-umbrella.h in Headers */, + AABAC6829E32CF2839CDBE3776917088 /* SwiftyDropbox.h in Headers */, ); - name = Pod; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; - 4D92D1A8EF32BA646425361261FC2014 /* Support Files */ = { - isa = PBXGroup; - children = ( - AB908F46DC3EF545093A039507FB5ECB /* Crashlytics.debug.xcconfig */, - F01FE1957D23109377788923DE2AC6B5 /* Crashlytics.release.xcconfig */, +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 33C94426DAF58519DC6806AF4C44C9E7 /* Pods-Delta */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4B27E4B16A7605E7DE9ADB3F8632D6DC /* Build configuration list for PBXNativeTarget "Pods-Delta" */; + buildPhases = ( + 1B49CC4458968A0208E4E8C08B83035D /* Headers */, + 9616278F3B848970FCFD4EC64C16134F /* Sources */, + 330DB31EAF4B510A46EF34242AF8CB60 /* Frameworks */, ); - name = "Support Files"; - path = "../Target Support Files/Crashlytics"; - sourceTree = ""; - }; - 4DDC6412619D3199AA595F6024657FB5 /* Core Data */ = { - isa = PBXGroup; - children = ( - 82650D769E277B9C3FD6AC694C6B03E4 /* LocalRecord.swift */, - 363DEF338B382D949239646D27C8B705 /* ManagedAccount.swift */, - 7C1A8604278515F1FAEA173BA8B23ACC /* ManagedRecord.swift */, - 93A9285617980163E2A30BF8523D50B7 /* RecordRepresentation.swift */, - 2F4835ABD4E04214332523B9D3BEAFBD /* RemoteFile.swift */, - F463B69847F43B25F137A1213A0A0F9E /* RemoteRecord.swift */, + buildRules = ( ); - name = "Core Data"; - path = "Core Data"; - sourceTree = ""; - }; - 4DEB71DCF9958F3A0DF5F05E85ECADF1 /* SDL */ = { - isa = PBXGroup; - children = ( - F23F7AF28ACDC0A938F8FB795D8EF871 /* SDL.h */, - E8AA1863B27BDEB42873D3218BAE286B /* SDL_config.h */, - 4F72DFF72A7603776855C1953DA931FE /* SDL_opengl.h */, - C10B0DD77FF57233C2D77462177B023F /* SDL_opengles2.h */, - 2830FE29E3519CEA36C6CF556F3B5A96 /* SDL_thread.h */, - ); - name = SDL; - path = SDL; - sourceTree = ""; - }; - 4EAB75CBF2E1F0BFBC7D83B97F8D0A9F /* Emulator Core */ = { - isa = PBXGroup; - children = ( - 5224985FFC1BAE799009B16684F7FA41 /* EmulatorCore.swift */, - F90622E5A8795BB92FD3A34733D8D994 /* Audio */, - 1EF66F6FF8DDD583EA54CE2ABA394808 /* Video */, + dependencies = ( + 9C4DD81F2C5071D3C40022AD0923A459 /* PBXTargetDependency */, + 6806AF99DF8DEB7F3A4B2A14E2EFDB17 /* PBXTargetDependency */, + 46C89FE25C5E13C1971BEB4B859724A2 /* PBXTargetDependency */, + 6FB4C935648E486D6B31C0B73BC0B367 /* PBXTargetDependency */, + 2559B5875E8FC668AB7ADAD6BCC389BA /* PBXTargetDependency */, + EAEC81DE293125F15431A2B613238932 /* PBXTargetDependency */, + B81FCB662926DCF2A28A3320500F6AED /* PBXTargetDependency */, + 6E90825FA34CBDE9A69A0CD6ABE430D3 /* PBXTargetDependency */, + C8560B49FBF24D6BC40E1AFB6248ED1C /* PBXTargetDependency */, + 0B8608D70F38B7735930069411EE899F /* PBXTargetDependency */, + 41436174FCACDDC73E78CB93BE5201F5 /* PBXTargetDependency */, + 3A4F40847CCD9786665400688F2747E6 /* PBXTargetDependency */, + C391B56F5AE9E98BEDA4719075450B1D /* PBXTargetDependency */, ); - name = "Emulator Core"; - path = "DeltaCore/Emulator Core"; - sourceTree = ""; - }; - 4EC1DB54AEDF384EF298116EBCF84D3E /* input */ = { - isa = PBXGroup; - children = ( - 2060BEC6373E7074778796B2882427C6 /* NstInpAdapter.hpp */, - CDB89D2DC9692722221DCE91A98ABF63 /* NstInpBandaiHyperShot.hpp */, - 880BCBB221781A1D9A6709B5E32370AF /* NstInpBarcodeWorld.hpp */, - 568598CD538601D8444402BA45158972 /* NstInpCrazyClimber.hpp */, - 8D9FD7E98122AE3C538E44DAD93660A5 /* NstInpDevice.hpp */, - C55CAB73D64E01B12F41AE9E1185460A /* NstInpDoremikkoKeyboard.hpp */, - 740E7BE309FA13ED2283E325FC79E5E3 /* NstInpExcitingBoxing.hpp */, - 452601ACDD42FBCEC74336E592C77C3C /* NstInpFamilyKeyboard.hpp */, - B2B8796FD94CC2CADD2AF1B5FC7F0BFA /* NstInpFamilyTrainer.hpp */, - DDD4F2F2C131066EB84145AC18A138C6 /* NstInpHoriTrack.hpp */, - F19D62D579ACE00507690054AA366BD9 /* NstInpKonamiHyperShot.hpp */, - B19F0AD4ABC47A0641E683A2EBEC2805 /* NstInpMahjong.hpp */, - E14EF2196DBABDCE807D82AB877627C5 /* NstInpMouse.hpp */, - 0076E431BB930E51DBC57C8AEFD62756 /* NstInpOekaKidsTablet.hpp */, - 522E10247FC8ACD4BE627867F65F14EE /* NstInpPachinko.hpp */, - BD6AC5484BE6F7AA12DEF9E8E08BC95F /* NstInpPad.hpp */, - 7399F092CF6A11F36EBBE6E4BB641D7B /* NstInpPaddle.hpp */, - C7D39EC0390EEA5EC08E4661DF2C8BD2 /* NstInpPartyTap.hpp */, - 4D1FFAF53C44FFA11AC01AACBF26DE9B /* NstInpPokkunMoguraa.hpp */, - 96B9C98AE2FB1703F672AE93E973DBA9 /* NstInpPowerGlove.hpp */, - F85AC4CB7A35809FF805833CACD153C0 /* NstInpPowerPad.hpp */, - 20F16E20EF20C537D00F04D36BF7621E /* NstInpRob.hpp */, - C0DB902F7F0B1CF4561E695E22CC5DAD /* NstInpSuborKeyboard.hpp */, - 8BB755876312B736E34924DCD04E0CEF /* NstInpTopRider.hpp */, - 7593F2C4D1EBF407C79C29024347ED4B /* NstInpTurboFile.hpp */, - A1D2CF25FCF73AEE83F94574C7DA7428 /* NstInpZapper.hpp */, - ); - name = input; - path = input; - sourceTree = ""; + name = "Pods-Delta"; + productName = "Pods-Delta"; + productReference = 9CA80A61ABF26FA89F4E22A30284B0DD /* libPods-Delta.a */; + productType = "com.apple.product-type.library.static"; }; - 51893AF62226FF4A07BE630D867F4686 /* Extensions */ = { - isa = PBXGroup; - children = ( - F3C364DFE470BB3B632D6815121F80C7 /* AnyKeyPath+StringValue.swift */, - 6E97DEFC9165A7CCB6BE870FF57D35B2 /* Dictionary+Sequence.swift */, - 0BEB3827C8A17F678E0D54A0BDE059CD /* HarmonyMetadataKey+Keys.swift */, - 5688AC534E934DF9CFDBC41CCDCC2B07 /* JSONDecoder+ManagedObjectContext.swift */, - 080E3EE451ACCC00BBE495E36322F9E8 /* KeyedContainers+ManagedValues.swift */, - 551B991A9910D6231DE6094D5CD3843A /* ManagedRecord+Predicates.swift */, - 71E7492287A3D967246142FEE6D2D82D /* ManagedRecord+Uploading.swift */, - 3396C683FAA03430577E635BCF62F26A /* NSError+LocalizedFailureDescription.swift */, - 4CDE7591635439F04D25CB09FFCE239A /* NSManagedObject+Conveniences.swift */, - 383D238B9AD27238B5FF136875540E61 /* NSManagedObject+Harmony.swift */, - 1BB981783C8679FA4F70C50DDA25D8F0 /* NSManagedObjectContext+Harmony.swift */, - 5BAC4820CB7E84EEF39B9060D0DCC6AD /* NSPersistentStore+Configuration.swift */, - 29A03F7FAF6D322856360C07028E6E5C /* Result+Success.swift */, - 4D49B524E10D67094A1B3F467E42C56F /* UserDefaults+Harmony.swift */, + 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */ = { + isa = PBXNativeTarget; + buildConfigurationList = 30A0CB7B1940C25C2F4F333351C10E42 /* Build configuration list for PBXNativeTarget "SDWebImage" */; + buildPhases = ( + 26CD12A0A8FED394729931D851C1BDFE /* Headers */, + BEB1EE0820D4CC88754367FD7B075D1A /* Sources */, + 373FAF5E443D6679532ACC75D39A2A05 /* Frameworks */, ); - name = Extensions; - path = Harmony/Extensions; - sourceTree = ""; - }; - 531F63E584D37BC223D52393B9181544 /* ai */ = { - isa = PBXGroup; - children = ( - DF90480F6504CD9B0A9049D6BACAC85A /* ai_controller.h */, + buildRules = ( ); - name = ai; - path = ai; - sourceTree = ""; - }; - 5343B0CF242C9C0144DB4388B0551DFE /* BufferCopy */ = { - isa = PBXGroup; - children = ( - 7E219B1C9FDC46CA814F1FCE79246ED1 /* ColorBufferToRDRAM.cpp */, - 602E22953C1047191A4952E0E7D831F7 /* ColorBufferToRDRAM.h */, - C5E2A01A988D91DD8415895D818B7687 /* ColorBufferToRDRAMStub.h */, - 52ADDAAB32E3E424FF10779C91A60F3B /* DepthBufferToRDRAM.cpp */, - D6F197419FA933E40431ABE1A632D6FB /* DepthBufferToRDRAM.h */, - 5C3F7D8CB2B7777AFFE1AD102BE934F1 /* RDRAMtoColorBuffer.cpp */, - 10EBAD36C2ED7A905B9424840A4DCF06 /* RDRAMtoColorBuffer.h */, - DF219081F2A7A82C574232E188237FBC /* WriteToRDRAM.h */, - ); - name = BufferCopy; - path = BufferCopy; - sourceTree = ""; - }; - 53CC743624E5F70C4B19A416550D65F6 /* Rendering */ = { - isa = PBXGroup; - children = ( - F727CF06AC29D239338AF25D01A38243 /* AudioRendering.swift */, - 5511EA930503B498E2FDCA7FE9E5C746 /* VideoRendering.swift */, + dependencies = ( ); - name = Rendering; - path = Rendering; - sourceTree = ""; + name = SDWebImage; + productName = SDWebImage; + productReference = B0B214D775196BA7CA8E17E53048A493 /* libSDWebImage.a */; + productType = "com.apple.product-type.library.static"; }; - 59656032F62F540B87B07F06B61AFDC8 /* Bridge */ = { - isa = PBXGroup; - children = ( - CB39F9E318A0E5FA99D3AD25FB9CC78B /* GBCEmulatorBridge.h */, - 380F35715DCAE202AD5A7B1926282538 /* GBCEmulatorBridge.mm */, - FE1DD0DC6207F06FA49412EF39C53F61 /* GBCInputGetter.cpp */, - 262A3C5FD00372D13A236F66AD846D0A /* GBCInputGetter.h */, + 3F2C1776D90B62B156DB52C41A5C419C /* SQLite.swift */ = { + isa = PBXNativeTarget; + buildConfigurationList = 4831832D716DE9C50FF96385B6482F4A /* Build configuration list for PBXNativeTarget "SQLite.swift" */; + buildPhases = ( + D89663E2DB8D7DD0634E5C6BF3CD44A2 /* Headers */, + 5EE6B8A56A8A13C9228CFEE7FC036FA2 /* Sources */, + 83E6F56551D35482FE1861B7C021F61A /* Frameworks */, + FBDBDFFAD990AD9508B3EFA011AEFC86 /* Copy generated compatibility header */, ); - name = Bridge; - path = Bridge; - sourceTree = ""; - }; - 5AC034AE770399B30150D629DF8BCC3C /* Core Data */ = { - isa = PBXGroup; - children = ( - 1E342E417EC24F205B22FF3D839E0828 /* MergePolicy.swift */, - 0ACEC14D6FB9D130B1AA90332A47685F /* RecordController.swift */, + buildRules = ( ); - name = "Core Data"; - path = "Harmony/Core Data"; - sourceTree = ""; - }; - 5BC5CCFB87476B25558EEA50182342DF /* common */ = { - isa = PBXGroup; - children = ( - 97A544C5CBC9D92E0315967EFEF1D6E4 /* CommonAPIImpl_common.cpp */, + dependencies = ( ); - name = common; - path = common; - sourceTree = ""; + name = SQLite.swift; + productName = SQLite.swift; + productReference = F5FA45A44C42CC2CA3A324A3E914CE19 /* libSQLite.swift.a */; + productType = "com.apple.product-type.library.static"; }; - 5D37B3F42B55B445DE014F814BE0752E /* Pod */ = { - isa = PBXGroup; - children = ( - B7C8F6D3A9BCAC9898FFC9C88D00BAD4 /* Harmony.podspec */, - ); - name = Pod; - sourceTree = ""; - }; - 5D9715A727616984AF4E827AAEC7E7E1 /* paks */ = { - isa = PBXGroup; - children = ( - F269DBC118D8EAB0C04126CCE8F3643F /* biopak.c */, - D223DCFA57D6B7A3D80C036254D211B8 /* biopak.h */, - 57C9A208489979480CC1B74420A1477C /* mempak.h */, - DE616F927E6B6D55A9594C411E6872A0 /* rumblepak.h */, - 59B129A50A11DD8DA172A571557AC9EE /* transferpak.h */, - ); - name = paks; - path = paks; - sourceTree = ""; - }; - 5F367EF45196EF0904C5391E210E7129 /* Support Files */ = { - isa = PBXGroup; - children = ( - F34749A9A557A7ADE2676021CDBAC6DC /* SDWebImage.modulemap */, - 187CA309F162A5C8E844D881DBC4B533 /* SDWebImage-dummy.m */, - B19869A46C0D54CF10CFA28DEDBA6863 /* SDWebImage-prefix.pch */, - 9D1E150EA94D5A0A5026F379E1681155 /* SDWebImage-umbrella.h */, - 5D042F73BB66CA682FF5DD25BC25323C /* SDWebImage.debug.xcconfig */, - 481B0FB19748AA00058AAB4125E08BF8 /* SDWebImage.release.xcconfig */, + 5CB4163F0A6D4BDE0A490758A78BA43D /* Harmony */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3C98678E8C686DBBBBE87622A916830D /* Build configuration list for PBXNativeTarget "Harmony" */; + buildPhases = ( + 6DB5FFA1EE15C256CE1EAC6DDB551DB3 /* Headers */, + 14D1EC3D03BF1404CE997CB43CB63F1B /* Sources */, + D0AB4FF4329C34D71D0BA178CDB4236F /* Frameworks */, + 0EF9318551E6AEC5C2F230F1CA944D42 /* Copy generated compatibility header */, ); - name = "Support Files"; - path = "../Target Support Files/SDWebImage"; - sourceTree = ""; - }; - 5FABAC7F1EA0A8121225AB0383DC1BCC /* N64DeltaCore-Video */ = { - isa = PBXGroup; - children = ( - EA7DF9CE0403C3BEFA2EC2A5C29F1CFD /* plugin_delta.cpp */, - 73DE9A2DA3844302000F020E82B3907E /* TxDbg_ios.mm */, + buildRules = ( ); - name = "N64DeltaCore-Video"; - path = "N64DeltaCore-Video"; - sourceTree = ""; - }; - 623EE6B481A71CDE910DC9DE0651695E /* tools */ = { - isa = PBXGroup; - children = ( - 67348E30C729A5B75CDEC762C64536A8 /* sRGB.h */, + dependencies = ( + EBA5DA2DF83C9668C332E0D215338655 /* PBXTargetDependency */, + 443DAD9C255A22C693E52F856C1843D1 /* PBXTargetDependency */, + 8ECB50C6B51D3D90D23627FAB1D087BC /* PBXTargetDependency */, + 9A44DD53DBF85FE44F7FFBB2806EEA57 /* PBXTargetDependency */, ); - name = tools; - path = tools; - sourceTree = ""; + name = Harmony; + productName = Harmony; + productReference = DBC0113CF73BE24525E670D024A85BE7 /* libHarmony.a */; + productType = "com.apple.product-type.library.static"; }; - 62EE0290A273F0F0AE08E2030BB36F59 /* Pod */ = { - isa = PBXGroup; - children = ( - 62948D9125AC2952787D5A61ACFECA41 /* N64DeltaCore.podspec */, + B5D1BA64AC676FF46408FCDE19A05767 /* Roxas */ = { + isa = PBXNativeTarget; + buildConfigurationList = D4AAE8817A76FBD95C5FD15E42AF387D /* Build configuration list for PBXNativeTarget "Roxas" */; + buildPhases = ( + 4D20B65F8A01B69A2EE52CE9C42885C2 /* Headers */, + 633E0A53A04723A0CA292BC40F320D0F /* Sources */, + 302A7C5C7E043DB1ACB35D9232F2D4D9 /* Frameworks */, ); - name = Pod; - sourceTree = ""; - }; - 6388895AFD3378B07E84916941F749C2 /* Support Files */ = { - isa = PBXGroup; - children = ( - 2E790CA18214A8F0659F420BC35A3F52 /* N64DeltaCore.modulemap */, - 707B35765CF23935D0DC98EB64D4A890 /* N64DeltaCore-dummy.m */, - 0FB8381D72C7CBA7A5B6978C78B0B89A /* N64DeltaCore-prefix.pch */, - 2A44F89C6169A0FE46A8371E6FE25915 /* N64DeltaCore-umbrella.h */, - 530DFDEF529BB6EF5B319101803D204C /* N64DeltaCore.debug.xcconfig */, - 527B0D212D04816961FAE82E46B743AF /* N64DeltaCore.release.xcconfig */, - ED414DA09F5F73E17849E220C3C38FE8 /* ResourceBundle-Mupen64Plus-N64DeltaCore-Info.plist */, + buildRules = ( ); - name = "Support Files"; - path = "../../Pods/Target Support Files/N64DeltaCore"; - sourceTree = ""; - }; - 63D891D51B690CFA519973EA8DD24088 /* Video */ = { - isa = PBXGroup; - children = ( - 762B736BEDD217A1436FFBBFC4B311D6 /* Mupen64Plus */, - 5FABAC7F1EA0A8121225AB0383DC1BCC /* N64DeltaCore-Video */, + dependencies = ( ); - name = Video; - sourceTree = ""; + name = Roxas; + productName = Roxas; + productReference = 4405793D5AF1EFD9D2BDA30AA0D2E514 /* libRoxas.a */; + productType = "com.apple.product-type.library.static"; }; - 63E68CA669EBCE20FB0EBE9CC3F9A237 /* Pod */ = { - isa = PBXGroup; - children = ( - 2C1862864C90F04F6E185CC8801D55CE /* DSDeltaCore.podspec */, + D20492B6476142DCA0C455340876BB98 /* SMCalloutView */ = { + isa = PBXNativeTarget; + buildConfigurationList = BB07493EBFDFDB75360BF9DF17195333 /* Build configuration list for PBXNativeTarget "SMCalloutView" */; + buildPhases = ( + B52063D31A47694C5832DB0144982ED5 /* Headers */, + 811F13FE55E873CE6C1956757840D7C7 /* Sources */, + 7493E42190EBEAA740FD633B30B8DE50 /* Frameworks */, ); - name = Pod; - sourceTree = ""; - }; - 64B9A9935D687DBE8ACB68CBC927788A /* SFML */ = { - isa = PBXGroup; - children = ( - 6B8024BA5712C26C7AC2CE666D859911 /* Audio.hpp */, - 46198453B4E430C9A0F4D46092ABB409 /* Config.hpp */, - 2A6DDA9A28D50AE8C256E76E3FA2B06A /* Graphics.hpp */, - 4065CD95013A44798CC6DD2F2C1FE455 /* Main.hpp */, - A20561CBEF0349CDEDA9CE05847510FB /* Network.hpp */, - 0210B8395AFA6316B71DF870E830AED2 /* OpenGL.hpp */, - 2D7834312949A2FBE54E8269384FD6E1 /* System.hpp */, - D57698179BDC95621501EA5819D5ABB3 /* Window.hpp */, - 727AE202676AD38BB130116B394F67C6 /* Audio */, - 1242D67A4807DDA3758CA53045738A82 /* Graphics */, - DAB487278FF770286A9BD50FEDB4EF7F /* Network */, - C80D664220A86E6BB50355EC6C9C3CAE /* System */, - C142E6A33E0580642C37C293F0EF4D90 /* Window */, - ); - name = SFML; - path = SFML; - sourceTree = ""; - }; - 6520D728E92968E078B4F24F91ECBE6A /* rcp */ = { - isa = PBXGroup; - children = ( - 531F63E584D37BC223D52393B9181544 /* ai */, - A645D23A63C46AB490DF9816C20F80A3 /* mi */, - 911C6F9710073B10E7738FF758A74171 /* pi */, - 6DE9CAB7FFB66392EB6D221054F5D04A /* rdp */, - 269081536499B6611035A9CFD78CE651 /* ri */, - 9343C983BBABF936B98A023BE9FBF194 /* rsp */, - 0EB7F900C37C585D4B801E4D319CDB13 /* si */, - 9E66250E9CF32AEEFDED2C2A32F745A4 /* vi */, - ); - name = rcp; - path = rcp; - sourceTree = ""; - }; - 6674CFF9206DF0D97B51605618A112AC /* Types */ = { - isa = PBXGroup; - children = ( - 38E017C7FDE637C847376F4854015030 /* AnyCodable.swift */, - BC8F75C1ECFF600FD8638F60D9896A26 /* Errors.swift */, - 45ADD1597F370D16BB2235D82EFB16A4 /* SyncProgress.swift */, + buildRules = ( ); - name = Types; - path = Harmony/Types; - sourceTree = ""; - }; - 66BDA1DDF054BE81384AB85BFA7630C1 /* ZIPFoundation */ = { - isa = PBXGroup; - children = ( - 4C48CBBB6A97428E4D4CBC314A140585 /* Archive.swift */, - CE47B9173973846BA966835EB7C3B4DF /* Archive+MemoryFile.swift */, - 602A09D764BF391459201D3C894EE108 /* Archive+Reading.swift */, - 7E950C5201F678049BF12854FA5D327A /* Archive+Writing.swift */, - C2794F0E81271A9277E8D45290A0CFD7 /* Data+Compression.swift */, - E064EB97821DE1B8BFCC21E48F3D5BA0 /* Data+Serialization.swift */, - 18B8DECBB8717BFBD8259BF1384944BA /* Entry.swift */, - 779480D51F350F2ABC3479ACDA749DEB /* FileManager+ZIP.swift */, - D53E5E39034806EB8B0622E79CD828A9 /* Support Files */, - ); - name = ZIPFoundation; - path = ZIPFoundation; - sourceTree = ""; - }; - 6B3F3CD396B692AD978B4DD934D91AD0 /* Support Files */ = { - isa = PBXGroup; - children = ( - 175A71504D934211FCC245712633EBF6 /* Fabric.debug.xcconfig */, - 553931D6CFC09E8F76B87ACF1E671321 /* Fabric.release.xcconfig */, + dependencies = ( ); - name = "Support Files"; - path = "../Target Support Files/Fabric"; - sourceTree = ""; + name = SMCalloutView; + productName = SMCalloutView; + productReference = 53A730F4F4248E7E3F38F8409A2DE97C /* libSMCalloutView.a */; + productType = "com.apple.product-type.library.static"; }; - 6CFEAB67407CA6E204AC07CFA5178CAC /* xxHash */ = { - isa = PBXGroup; - children = ( - B5B97EF7E578120D6762623183175FF5 /* xxhash.c */, - 7D955DD7861E1B37BA3C7B1ECB55AACB /* xxhash.h */, + D47C581D39D227080F83B16A22A56664 /* GoogleToolboxForMac */ = { + isa = PBXNativeTarget; + buildConfigurationList = 710AF554780E0DDC06CD55C0824DB0AF /* Build configuration list for PBXNativeTarget "GoogleToolboxForMac" */; + buildPhases = ( + 0F98179C5FEF8F450830B39C4F9ADAEA /* Headers */, + D4EB3A51EE792791BF31DB977C1114C5 /* Sources */, + 4DFC652A29D6153132CBAFD0A28904DC /* Frameworks */, ); - name = xxHash; - path = xxHash; - sourceTree = ""; - }; - 6DE9CAB7FFB66392EB6D221054F5D04A /* rdp */ = { - isa = PBXGroup; - children = ( - D7BEDF5B516A1B0C298DFAE1D232DBB3 /* fb.h */, - 9C7F4857C4B19B71934451055891D8A1 /* rdp_core.h */, + buildRules = ( ); - name = rdp; - path = rdp; - sourceTree = ""; - }; - 6E1A05341FD4DD4AE345869F6FF2397F /* Support Files */ = { - isa = PBXGroup; - children = ( - EF1BDE0E4CFE77E8821FFC82A99CB7E2 /* MelonDSDeltaCore.modulemap */, - 409552CF37EE4A6C9432067647521E81 /* MelonDSDeltaCore-dummy.m */, - B5D47CF580AFCB1591BC83B9D2D53730 /* MelonDSDeltaCore-prefix.pch */, - 405AE5BB47C904F85227A7D7E3D69897 /* MelonDSDeltaCore-umbrella.h */, - 10DBE8DD414F72ABA414D15368484C5E /* MelonDSDeltaCore.debug.xcconfig */, - 99AEE6ADFB88CAB41DFBDDECF8B7708E /* MelonDSDeltaCore.release.xcconfig */, - 70BD655CF29FC526DC262C88E22935CF /* ResourceBundle-melonDS-MelonDSDeltaCore-Info.plist */, + dependencies = ( ); - name = "Support Files"; - path = "../../Pods/Target Support Files/MelonDSDeltaCore"; - sourceTree = ""; + name = GoogleToolboxForMac; + productName = GoogleToolboxForMac; + productReference = 251C6319AD50CB50F18D50CBF727F8B2 /* libGoogleToolboxForMac.a */; + productType = "com.apple.product-type.library.static"; }; - 70557903D3E0CC80504A2C76F1AE9BA3 /* Upload */ = { - isa = PBXGroup; - children = ( - 1042E787D1679AEC49E4043D8A845056 /* FinishUploadingRecordsOperation.swift */, - 10AAA4BA9B93CDC6C54F5CB519CD2FEF /* PrepareUploadingRecordsOperation.swift */, - 80E5FA9A1C688ECDCB3DD69B330B5FCE /* UploadRecordOperation.swift */, - BFFB99DA7E90D592C9D8D1B6704E4134 /* UploadRecordsOperation.swift */, + D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */ = { + isa = PBXNativeTarget; + buildConfigurationList = D2C52F7C31F8F18B3E7649A2B825768D /* Build configuration list for PBXNativeTarget "GTMSessionFetcher" */; + buildPhases = ( + B715D763CE3F7AD2FFB3E12167F759CF /* Headers */, + 0F356666BA38C004ACD3218C473661FF /* Sources */, + 872C104A3266050144437694E83876B9 /* Frameworks */, ); - name = Upload; - path = Upload; - sourceTree = ""; - }; - 715819160F37B5D1EF4DB0F3977C1E08 /* source */ = { - isa = PBXGroup; - children = ( - 78C4506AF877D7E3A1585DBB4BFBCEEE /* core */, + buildRules = ( ); - name = source; - path = source; - sourceTree = ""; - }; - 727AE202676AD38BB130116B394F67C6 /* Audio */ = { - isa = PBXGroup; - children = ( - 5FFAA11B975ADF2D653B7E7145581C16 /* AlResource.hpp */, - A6DC5A0E4D6BFA588B4277D0DDEB1D3A /* Export.hpp */, - 4CE7A665B6FEEE6CB7D5AF994E4687CD /* InputSoundFile.hpp */, - 56588EA7D5FBE2DA4FBDE668B0CE31D0 /* Listener.hpp */, - 5642A014AB6854D5C0608BAEF6A00401 /* Music.hpp */, - 218734C95C38F03799176148123C5A20 /* OutputSoundFile.hpp */, - 7EA0070E428C8FC47BE2AB57F71D09C0 /* Sound.hpp */, - ADDDC51C343FAF2F99EFEFB0B081E3A4 /* SoundBuffer.hpp */, - 9DB51A53121923A71D5DD76A329E4809 /* SoundBufferRecorder.hpp */, - 29F95C4455432D889D0D66C71EA6F3B5 /* SoundFileFactory.hpp */, - D2601C99EA17D1A82364DFE29F8CD5E0 /* SoundFileFactory.inl */, - 9C759217D7F7F9F5528B957A3C21E86B /* SoundFileReader.hpp */, - AE652CE1AE3F3EB298D947261F75564B /* SoundFileWriter.hpp */, - 6946D483214CA66E8CC3E5647EA18AEF /* SoundRecorder.hpp */, - 6F47CA53E91124FF1F8F6E6AB50123F0 /* SoundSource.hpp */, - 50AE80DCB539B14771E2023FB4C50510 /* SoundStream.hpp */, - ); - name = Audio; - path = Audio; - sourceTree = ""; - }; - 72C377A83102710C5D9F59161CCA9D38 /* dolphin */ = { - isa = PBXGroup; - children = ( - E33BDC5B4C13A1065C9739FE351C69FD /* Arm64Emitter.cpp */, - 45B2FAE49683908828C8F53DDE48A790 /* Arm64Emitter.h */, + dependencies = ( ); - name = dolphin; - path = dolphin; - sourceTree = ""; + name = GTMSessionFetcher; + productName = GTMSessionFetcher; + productReference = C1998E0D8085221AD87F89B614C10E52 /* libGTMSessionFetcher.a */; + productType = "com.apple.product-type.library.static"; }; - 72E01D5AC6F7FE21BC018BB70AA15265 /* mupen64plus-rsp-hle */ = { - isa = PBXGroup; - children = ( - E490CDC8368C50AFD21F6304112DDC4F /* src */, + D7958E869B6C0073DB3025514393D7A3 /* GoogleAPIClientForREST */ = { + isa = PBXNativeTarget; + buildConfigurationList = 90C26BDA90A9831C30C653B5D2AF1843 /* Build configuration list for PBXNativeTarget "GoogleAPIClientForREST" */; + buildPhases = ( + 12C6F90746C89ACD2C642508705F0B1D /* Headers */, + EF7586674F4859C6764E29EA2044B8F2 /* Sources */, + BB6B1C21E27B56128CA5A2431C997CE4 /* Frameworks */, ); - name = "mupen64plus-rsp-hle"; - path = "mupen64plus-rsp-hle"; - sourceTree = ""; - }; - 734B43D6C4DA867A95882564CAFC421D /* NestopiaJS */ = { - isa = PBXGroup; - children = ( - FAECC7C1429A920EDECC14CCF40B8BD7 /* NESEmulatorBridge.cpp */, - B5334B9A8D1F3E9EB246C2ABC04E2E6C /* NstDatabase.xml */, + buildRules = ( ); - name = NestopiaJS; - path = NestopiaJS; - sourceTree = ""; - }; - 73D02C7F746F71295866DBB467595576 /* plugins_compat */ = { - isa = PBXGroup; - children = ( - AB7F635BCF0402E1F025A3881D64913F /* plugins_compat.h */, + dependencies = ( + 372712E6BD5664E59FC971DA434373E2 /* PBXTargetDependency */, ); - name = plugins_compat; - path = plugins_compat; - sourceTree = ""; - }; - 74CE92CD39CA4E9D94A70558012E488A /* include */ = { - isa = PBXGroup; - children = ( - C2DB8E70C59303E250CEB59438096FBF /* freetype.h */, - EBA27B0B1C5179248A1E5115709D824F /* ft2build.h */, - 11D049BB4980BC282A583112800A2ADE /* ftadvanc.h */, - 9E0449EB27DDA97EA184D6B13F251535 /* ftautoh.h */, - 30BD2AE5598700A110AD39F55A8D4A0C /* ftbbox.h */, - B6DFEFF26687627684C117D75CEC98DD /* ftbdf.h */, - 9672B0303F5AE277B3ACBA2384B33261 /* ftbitmap.h */, - BC937779EB06E228801357D8302C3985 /* ftbzip2.h */, - E009A3CEF1D9267D9497C6C4C42A1DDF /* ftcache.h */, - 6495040233A41FA50D3F1DE4DDF33E32 /* ftcffdrv.h */, - 15D5D5B75D61919734F2AC90A1DD9349 /* ftchapters.h */, - 7903BE329F1F1D43823E9EE7CDC9E0B9 /* ftcid.h */, - 219053C1325BB6D1B9487B652A3E1F43 /* fterrdef.h */, - 8A2029B01D666F7328468AC09DA067F2 /* fterrors.h */, - 1120279C7F510A700C88E61A835EF714 /* ftgasp.h */, - D963A8034D348DCEBA1D3691ADEB4E08 /* ftglyph.h */, - 2B51A3520C584D8ABB256211A2A7A8DB /* ftgxval.h */, - 2835CF0D5E4AC0B96436BED66036CC25 /* ftgzip.h */, - 3017F6DD22747AB519633C5ECB17E967 /* ftimage.h */, - 197C2B5C1992F892153FA855D779D3A3 /* ftincrem.h */, - 159E762F2DEA7F0461C30023E534AE64 /* ftlcdfil.h */, - 2AB6FC8C7DD1084EC3948A0C27CB95AD /* ftlist.h */, - 57AE215B9677AF8BE68A3EEDA7D902AD /* ftlzw.h */, - BDCF481B7CADE27CDA57D025A3C16167 /* ftmac.h */, - 41CEE23CCD9B2202EA3DB8407D932735 /* ftmm.h */, - DF12A2DEC0367BABE830FADACDDC802F /* ftmodapi.h */, - A8B5032B26105CA4F0428341F62A22CC /* ftmoderr.h */, - 89DDD93BACEF9EB671526569CA75051C /* ftotval.h */, - 4CFCF1DB3C261E9BFAB2C58E1EF33E65 /* ftoutln.h */, - A5EDA5B2FBC98C0A7796342C667A915E /* ftpfr.h */, - AC5241947289CF60377457F6EA7D2F58 /* ftrender.h */, - E0C91ABB323E87C0696A57ECA95D9BF5 /* ftsizes.h */, - 5259B445D4AD112126EABD5D05F3DDA0 /* ftsnames.h */, - 4763DEBE73DBBA8B553A7B98D5B7CCE7 /* ftstroke.h */, - 211630FF3DC8E93C7BB79421F0894487 /* ftsynth.h */, - D55A1BA5813E4F75369459BAEC6308D4 /* ftsystem.h */, - C822F4501F86A14953199438EDEAE4CE /* fttrigon.h */, - 15A8530EE36D88106BF630FB90768067 /* ftttdrv.h */, - F2AA6DD879E5DA8688ACC774052AF22E /* fttypes.h */, - 45D4C75AC56E110104DCADA137055D6C /* ftwinfnt.h */, - 6F8311A2029FEA937C1C42B5E445E925 /* ftxf86.h */, - 06E7BD279F6B1FA895B61355C1EAB07A /* t1tables.h */, - BCA5FCC7A25097011B93E01588B9F652 /* ttnameid.h */, - 326C18DCCA9E4564F2B41EAF145F3947 /* tttables.h */, - 63C50712020BD8781CB13285A7347D60 /* tttags.h */, - AD5DDDE2BEA93A785ED850AB4D9BD35F /* ttunpat.h */, - 942DA1BF6AF1403DBD8D390CC4E0C042 /* config */, - 34FAD58A01011689A7FB7D94C6D02851 /* internal */, - ); - name = include; - path = include; - sourceTree = ""; + name = GoogleAPIClientForREST; + productName = GoogleAPIClientForREST; + productReference = FD519882861480B93B563B477CE1FA29 /* libGoogleAPIClientForREST.a */; + productType = "com.apple.product-type.library.static"; }; - 75316DA5FE1CBCBBBF62CE6972920D20 /* Core */ = { - isa = PBXGroup; - children = ( - 9265E3D9F1667F3A362493594E094FAD /* GTMSessionFetcher.h */, - EFBE30994381264F2445BF70BEE39EE2 /* GTMSessionFetcher.m */, - 498BEFABF329CA81DB038DAEE4DA86DB /* GTMSessionFetcherLogging.h */, - B1FE60123D84FA8B290B36D0DA6860F0 /* GTMSessionFetcherLogging.m */, - 7F7ED6CE3BC682B49D8D74C14E481F37 /* GTMSessionFetcherService.h */, - 551F767B133FD2219158C4BD484F80BC /* GTMSessionFetcherService.m */, - 94F5D89236B344C4DD052FE9AB17ACC3 /* GTMSessionUploadFetcher.h */, - CEFFA33EF26C6E6BBBA92570888B7054 /* GTMSessionUploadFetcher.m */, + EAAA1AD3A8A1B59AB91319EE40752C6D /* Alamofire */ = { + isa = PBXNativeTarget; + buildConfigurationList = 20F50134A7EBE5BBF644BED665FB3400 /* Build configuration list for PBXNativeTarget "Alamofire" */; + buildPhases = ( + DA327FA8288BD9E808AD950153D6638C /* Headers */, + ADA8A824FC0DF194C0EEA41A4A09871D /* Sources */, + 07C7603FFA3CB8DF7695C09A4C85DE4B /* Frameworks */, + 4F61BF6CCE774E66CD281745D52A182D /* Copy generated compatibility header */, ); - name = Core; - sourceTree = ""; - }; - 755747E18A6F54E373510ADBD08E6723 /* Products */ = { - isa = PBXGroup; - children = ( - 54ECA01A22C32DC89AB39DF9BFFD5FB6 /* DeltaCore.bundle */, - 4A6CEB53419EF6042E06B56676D1DAF8 /* DSDeltaCore.bundle */, - 30131336E11D11700AC99D314BDC275C /* GBADeltaCore.bundle */, - 1F23DBC67505E77BE77552D6D84A3DAA /* GBCDeltaCore.bundle */, - 5D797E9A5C5782CE845840781FA1CC81 /* libAlamofire.a */, - F93477FBF1E4488E506F9BB79AF57D38 /* libDeltaCore.a */, - 8DF503EB5BF2CD824792BFD2BBC0992F /* libDSDeltaCore.a */, - 85A4BD81985AEDB6D9BA5E50804225D0 /* libGBADeltaCore.a */, - D4C010E8572FAE8B51DFDBF2300ECF30 /* libGBCDeltaCore.a */, - FD519882861480B93B563B477CE1FA29 /* libGoogleAPIClientForREST.a */, - 251C6319AD50CB50F18D50CBF727F8B2 /* libGoogleToolboxForMac.a */, - C1998E0D8085221AD87F89B614C10E52 /* libGTMSessionFetcher.a */, - DBC0113CF73BE24525E670D024A85BE7 /* libHarmony.a */, - 4C22C82316853ABB688358B93486CF8E /* libMelonDSDeltaCore.a */, - C8D6AC695498645EEE4A66FCEF97D848 /* libN64DeltaCore.a */, - 1E5356E04E92615CFF0666E5987CE594 /* libNESDeltaCore.a */, - 9CA80A61ABF26FA89F4E22A30284B0DD /* libPods-Delta.a */, - 4405793D5AF1EFD9D2BDA30AA0D2E514 /* libRoxas.a */, - B0B214D775196BA7CA8E17E53048A493 /* libSDWebImage.a */, - 53A730F4F4248E7E3F38F8409A2DE97C /* libSMCalloutView.a */, - FA400832D3E46B39D5EC83D09A7572FC /* libSNESDeltaCore.a */, - F5FA45A44C42CC2CA3A324A3E914CE19 /* libSQLite.swift.a */, - 1CBA76EDD27FA2D20B1EA0F0BF7F082C /* libSwiftyDropbox.a */, - 48A4A6EDC08C8AC933D0DCD507E9D173 /* libZIPFoundation.a */, - ECD0868BC2D1CFC2A22DDD56F79CF4B1 /* melonDS.bundle */, - 9816EFF6A2268AAEA7B1C19BBE416477 /* Mupen64Plus.bundle */, - 487C7DB0A7257F16983BEF8324BEF561 /* NESDeltaCore.bundle */, - 7D751206A951D9727B38F71A2BB990AA /* SNESDeltaCore.bundle */, + buildRules = ( ); - name = Products; - sourceTree = ""; - }; - 762B736BEDD217A1436FFBBFC4B311D6 /* Mupen64Plus */ = { - isa = PBXGroup; - children = ( - 8CF9CA056B2528391D9AB51C1795208E /* GLideN64 */, - C62F31F10679EDB07AEFDF5C343632D4 /* libpng */, - E8C848FCBF0626F152FAAE9CD3710D74 /* mupen64plus-core */, + dependencies = ( ); - name = Mupen64Plus; - path = Mupen64Plus; - sourceTree = ""; + name = Alamofire; + productName = Alamofire; + productReference = 5D797E9A5C5782CE845840781FA1CC81 /* libAlamofire.a */; + productType = "com.apple.product-type.library.static"; }; - 767F33825DE0F39188233463ECBDF664 /* Fabric */ = { - isa = PBXGroup; - children = ( - D55E6137C8C963C0E24FF6F3246DAA3D /* FABAttributes.h */, - 67EBFE3C6348F22E3FACE3590580BB37 /* Fabric.h */, - 87B42D8199F3AAFDAA7D64F8D0460B7A /* Frameworks */, - 6B3F3CD396B692AD978B4DD934D91AD0 /* Support Files */, + FF39B7A1D9F00620D9F56635ABBB2C03 /* SwiftyDropbox */ = { + isa = PBXNativeTarget; + buildConfigurationList = AC88BDD15F87D276844BEC202AFCCD4D /* Build configuration list for PBXNativeTarget "SwiftyDropbox" */; + buildPhases = ( + F1802B63CE83F2F958797D8B834B4932 /* Headers */, + F5C847D7C38A271171A22BD44ED2D420 /* Sources */, + DF86A4ACA5B324235096A41793E2591C /* Frameworks */, + 683E3BA28E5F99D70B5F5E9B3839AA0C /* Copy generated compatibility header */, ); - name = Fabric; - path = Fabric; - sourceTree = ""; - }; - 7747232A25A1C0076DC901E161E792AE /* Extensions */ = { - isa = PBXGroup; - children = ( - AC9179BF930FDFF527CAA3A561F000AF /* Bundle+Resources.swift */, - 0259D8CA3A04B7E37CABE7D5A3591E5C /* CGGeometry+Dictionary.swift */, - 5220D87AAC76334A81776593C96297A3 /* CharacterSet+Hexadecimals.swift */, - F8AA8E3FF743A7D7D470B8EDF92A6C00 /* Thread+RealTime.swift */, - 44DB938AD9F0914B6AF9E0B000CC58D4 /* UIApplication+AppExtension.swift */, - C1C79F685717D6A72816DDF8AF27113F /* UIDevice+Vibration.swift */, - F3AD6D0701243C84DED62E7BE82A98D9 /* UIImage+PDF.swift */, - A7624756F2E7D96F00D6BA74A924876A /* UIResponder+FirstResponder.swift */, - E0FA70CD9D6CEE8BCE5E201406829944 /* UIScreen+ControllerSkin.swift */, + buildRules = ( ); - name = Extensions; - path = DeltaCore/Extensions; - sourceTree = ""; - }; - 774E21ED78BE63857812B5970D9F6E94 /* Support Files */ = { - isa = PBXGroup; - children = ( - F41D052495AB2789D36A7796B17EADD4 /* GoogleSignIn.debug.xcconfig */, - 36CE82CF693A751E8245859F6F1F0059 /* GoogleSignIn.release.xcconfig */, + dependencies = ( + F4723A2AC758D3E0C54C4E091477EA52 /* PBXTargetDependency */, ); - name = "Support Files"; - path = "../Target Support Files/GoogleSignIn"; - sourceTree = ""; + name = SwiftyDropbox; + productName = SwiftyDropbox; + productReference = 1CBA76EDD27FA2D20B1EA0F0BF7F082C /* libSwiftyDropbox.a */; + productType = "com.apple.product-type.library.static"; }; - 782212121F0CC115D039CE672662D4AF /* Model */ = { - isa = PBXGroup; - children = ( - 69E6AFEACD7BEB734D1577E24B12AD23 /* GBCCheat.h */, - 2930CA273D36A22F50BBB9A5FFA20234 /* GBCCheat.m */, +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + BFDFE7DC352907FC980B868725387E98 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1100; + LastUpgradeCheck = 1100; + }; + buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; + compatibilityVersion = "Xcode 11.0"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, ); - name = Model; - path = Model; - sourceTree = ""; - }; - 78C4506AF877D7E3A1585DBB4BFBCEEE /* core */ = { - isa = PBXGroup; - children = ( - 8583D92D723450970BC33F1F5722C843 /* NstApu.hpp */, - D6EEE05F6DA53633CA458BFC7773D9EC /* NstAssert.hpp */, - 8699788A2F916F63C3E5BC8B912860F4 /* NstBarcodeReader.hpp */, - 4DC8C2032362A67FFC8D61332A8A5102 /* NstBase.hpp */, - 57142BF28E3E1A201DA08502346590D0 /* NstCartridge.hpp */, - AA9541EE30BB71FCCD4C17C22A48E84D /* NstCartridgeInes.hpp */, - ACB7BE62D01D8529D18C2156032C50F9 /* NstCartridgeRomset.hpp */, - 15E96F458A9FF48D4761260EE9CC09C1 /* NstCartridgeUnif.hpp */, - 22CC2E1906731DDBC31544D499B26974 /* NstCheats.hpp */, - 318A8A10BD843993BF6B77BA3E4503D7 /* NstChecksum.hpp */, - 00E90E8D37F1149602CB0A8EAE2315BD /* NstChips.hpp */, - D3739D93DFAC472E38C99F784BFDBEA0 /* NstCore.hpp */, - 8E665A40195D9376CB33914492D8C9F6 /* NstCpu.hpp */, - 467F53FD7271C63510E4CE72A2081426 /* NstCrc32.hpp */, - 6197473267332EA94817882913954E6B /* NstDipSwitches.hpp */, - 530AF83C27378A750E91268E5BC0BB92 /* NstFds.hpp */, - DB04E6CE68116BF5DB7ECFD8E183C1D6 /* NstFile.hpp */, - 2C2F671219B5C8A4155CFC50FF35CE74 /* NstFpuPrecision.hpp */, - BCC5E70F6FBADBDE73B80CDF3668D546 /* NstHook.hpp */, - F3B28902F2FA18779F68EE9334C7DAAE /* NstImage.hpp */, - 63554737D96E02FD0ADBE502A0DF7F70 /* NstImageDatabase.hpp */, - B1CBBA370D9778B19123EFE9F6E17F58 /* NstIoAccessor.hpp */, - 5319520781E4552200187ABF1B7EF34E /* NstIoLine.hpp */, - B52DCF99725F280D96FEC3B36404D325 /* NstIoMap.hpp */, - B6DBA422D09B1A2E2BF52AA98368C295 /* NstIoPort.hpp */, - D514311967AB9AF3A26AC154E058CCD3 /* NstLog.hpp */, - D15886D5D7DBE8A02EC868EBBE812F20 /* NstMachine.hpp */, - 6C8A537D1535D916E2EFA09239248332 /* NstMemory.hpp */, - 4D7CA6BBD3A7CE421859CF75E8BBFBC7 /* NstNsf.hpp */, - 8738A81CD26E2DD7D3D470F3FBACA59F /* NstPatcher.hpp */, - A6A79C754A41EC8EACF9E49A64F066B6 /* NstPatcherIps.hpp */, - 6CFD2D37762609104C0268903A5B6220 /* NstPatcherUps.hpp */, - E01361D50FD2CEB3E55AC9992E8FF8CE /* NstPins.hpp */, - 2F13F915B99C517D9153F031465EAC1F /* NstPpu.hpp */, - 1D1F31A13F1FBF95445EA192197633DE /* NstProperties.hpp */, - 9E829053598FCB2162A7028C5496201F /* NstRam.hpp */, - 5FD11B56A547151D7998EE69BE6D6099 /* NstSha1.hpp */, - 148A77A98A1FE40B0594CC4E60C228D3 /* NstSoundPcm.hpp */, - 27D3B21A69C25C9875EE21E693E04929 /* NstSoundPlayer.hpp */, - 4D1FA0EBBF5F6CF83EED39B0A6232946 /* NstSoundRenderer.hpp */, - 31BA01A55D20E1D2E1B775E15F86FBC9 /* NstState.hpp */, - FA9F28EAD2B467DF6DA41196DBF9B8E4 /* NstStream.hpp */, - 45203999A84E8BC466D11878D26EB94B /* NstTimer.hpp */, - 0EE5EA87866BE9F75ADE0CEC54CD3C3E /* NstTracker.hpp */, - E3FFF2B354F5C1F93C7CE3EF232A44B0 /* NstTrackerMovie.hpp */, - AD8D9664E08A800A7FCCA31CC84E44EC /* NstTrackerRewinder.hpp */, - 558D9D4AF4FD877E9D9E664114B314BD /* NstVector.hpp */, - 974F93E63CE627277EF8D2353E2919F1 /* NstVideoFilter2xSaI.hpp */, - 9952547823CAC65BEE64985C660ACB9C /* NstVideoFilterHqX.hpp */, - 128FABE87B95008533D496EE889613EA /* NstVideoFilterNone.hpp */, - 56D000E50D07021FF07AAC165778A791 /* NstVideoFilterNtsc.hpp */, - 3F45EBDD3BFEC8ABC543D2F91E639B31 /* NstVideoFilterScaleX.hpp */, - 9C3D8F92D8501FC968C6E29C8CDE5588 /* NstVideoFilterxBR.hpp */, - 00BD1BC7C8465752CB8C9BBBE279E1FB /* NstVideoRenderer.hpp */, - 43581617364040436E9EE723D0F60BCE /* NstVideoScreen.hpp */, - 84F0ADD65E108164F9714F7992472ABE /* NstXml.hpp */, - FA0EAC9414F0445D01B6398BB5FE1B37 /* NstZlib.hpp */, - 96FACD7286C4F9523442BB0A10E06FDF /* api */, - AC9EEBCB7905D7289F5D1276B435469A /* board */, - 4EC1DB54AEDF384EF298116EBCF84D3E /* input */, - 2B5D5311CCF519A1185531079D8F0E87 /* vssystem */, - ); - name = core; - path = core; - sourceTree = ""; - }; - 78E6ACF116049CF6D9E180767B411F7E /* Graphics */ = { - isa = PBXGroup; - children = ( - 3B19F94B88659C7D37F232351127EABC /* ColorBufferReader.cpp */, - 78248727BCE6BF8A4103526F1DD2CF55 /* ColorBufferReader.h */, - 5372B3163E9573C6D5D374AB075EDCEF /* CombinerProgram.cpp */, - F7084BF822C7A0087A22DBD99CA5F50B /* CombinerProgram.h */, - FD1E386D12C53A3A0B1EF7F9E1841B0F /* Context.cpp */, - CB35F2D9635EBE95CE46DBCD39714649 /* Context.h */, - EC0F16885459523EC97FFA6EC3B324DA /* ContextImpl.h */, - 8B3253523DE4A52CDBFB6532071CF62A /* FramebufferTextureFormats.h */, - AE067DD6EDFB9B28CCAB86DABADC3349 /* ObjectHandle.cpp */, - F50917A4D4B27777FE66FE1D8F23BD24 /* ObjectHandle.h */, - FC58D957FD250B9D3EA534C46DE7360D /* Parameter.h */, - 2064A148CF875274B060142217B611AA /* Parameters.h */, - 8178B2C482B362D277805FFAD09D4CEA /* PixelBuffer.h */, - 04F05000812B8F68BC675FCB4E41F352 /* ShaderProgram.h */, - 7FE9CF4308B70FDCA519EA8C0F8E5C58 /* OpenGLContext */, - ); - name = Graphics; - path = Graphics; - sourceTree = ""; - }; - 7930A2F6E6BE260521186D2B103ABE74 /* RSP */ = { - isa = PBXGroup; - children = ( - 425B9209A294EFBF0D35BB9662645494 /* Mupen64Plus */, - 2481C244F65AA9BCE7946426CF86D311 /* N64DeltaCore-RSP */, - ); - name = RSP; - sourceTree = ""; - }; - 7953976BC55043608F91FE8C29C10F79 /* gb */ = { - isa = PBXGroup; - children = ( - F486ACA4D64E794BD29DD65E3D3638BB /* gb_cart.h */, - 5C15A4C716F94FC120B8A44EE878A850 /* m64282fp.h */, - E62D7ACDAD9AB7541460CDCCF0827B6A /* mbc3_rtc.h */, - ); - name = gb; - path = gb; - sourceTree = ""; - }; - 7A99C42EAF3B605E867117F29CCECB6B /* x86 */ = { - isa = PBXGroup; - children = ( - 9FC61E19871FEA3703E55822D0376AE0 /* assem_x86.h */, + mainGroup = CF1408CF629C7361332E53B88F7BD30C; + productRefGroup = 59F8E0B81923179808A032CA1DDAC456 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + EAAA1AD3A8A1B59AB91319EE40752C6D /* Alamofire */, + C0E41540D6862472ED7F2FA11669BE1F /* Crashlytics */, + ABB048B191245233986A7CD75FE412A5 /* Fabric */, + D7958E869B6C0073DB3025514393D7A3 /* GoogleAPIClientForREST */, + CAD3534FC55B0333104E5117C0A9A324 /* GoogleSignIn */, + D47C581D39D227080F83B16A22A56664 /* GoogleToolboxForMac */, + D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */, + 5CB4163F0A6D4BDE0A490758A78BA43D /* Harmony */, + 33C94426DAF58519DC6806AF4C44C9E7 /* Pods-Delta */, + B5D1BA64AC676FF46408FCDE19A05767 /* Roxas */, + 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */, + D20492B6476142DCA0C455340876BB98 /* SMCalloutView */, + 3F2C1776D90B62B156DB52C41A5C419C /* SQLite.swift */, + FF39B7A1D9F00620D9F56635ABBB2C03 /* SwiftyDropbox */, ); - name = x86; - path = x86; - sourceTree = ""; }; - 7AB57013EE6E9FF32B0E460C137984BD /* GoogleToolboxForMac */ = { - isa = PBXGroup; - children = ( - B31C19BDA103ED7CBF60EAD41A0CCFF6 /* DebugUtils */, - 2ABE2B7331A6B7CCD2ED6CE8F923D864 /* Defines */, - 2A4D74C9D467468EFCA8893B6056F58A /* NSDictionary+URLArguments */, - AFEE717218FFFF8DBCAE0A28F9C15D3C /* NSString+URLArguments */, - 436E6987663F1DA9FDD171E9BC13426C /* Support Files */, +/* End PBXProject section */ + +/* Begin PBXShellScriptBuildPhase section */ + 0EF9318551E6AEC5C2F230F1CA944D42 /* Copy generated compatibility header */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( ); - name = GoogleToolboxForMac; - path = GoogleToolboxForMac; - sourceTree = ""; - }; - 7AB7113400CF5409B7283CB5902E367E /* GLideNHQ */ = { - isa = PBXGroup; - children = ( - 41DB39ED4A9987FCCAE6804933525696 /* bldno.h */, - AFDCE5601B93C61AFC1C8AA0B5227B87 /* Ext_TxFilter.h */, - A91527BD9D489D25E590B32690DD1FD2 /* TextureFilters.cpp */, - 32E230B70DE950F781B65B2E6AE5E992 /* TextureFilters.h */, - 1CD471C7753A26A428B594E2A77FBEDD /* TextureFilters_2xsai.cpp */, - FD3868B661FD904E2E969DEF510A58E2 /* TextureFilters_2xsai.h */, - 4D1729EA5F00D4A1D4318B501343CA4A /* TextureFilters_hq2x.cpp */, - 57CE43337560DB685A64E57DC336CFCA /* TextureFilters_hq2x.h */, - 157D57C1EE8530CB6DD38493ACCD624B /* TextureFilters_hq4x.cpp */, - 25EC9E35D1E0371FDC76C142DA25855C /* TextureFilters_hq4x.h */, - A60275570183365454F240C304CB5477 /* TextureFilters_lq2x.h */, - E3F8B5910C2A131F5DCC163AFEC5A94F /* TextureFilters_xbrz.cpp */, - FED800917E3DBCFA484346FA1DE92AD0 /* TextureFilters_xbrz.h */, - 912F269028E7AF5014AC2F20248AA813 /* TxCache.cpp */, - BEB82CFF0DF8F66A85C52D4FE874D373 /* TxCache.h */, - DDB1E1F374DA86F155EC6B1D14298EA9 /* TxDbg.h */, - F9CB51830A19D7845E7B996477CD3A7E /* TxFilter.cpp */, - F301E5CE692E47A2ECB5EAFAAB5FA614 /* TxFilter.h */, - 42337BE4912F6FDB485C8933BF93360F /* TxFilterExport.cpp */, - 5DF031ED2E064E1AC6802B1154B81D64 /* TxHiResCache.cpp */, - 4E43C59A5B93F18A57BAB4238BB9EB74 /* TxHiResCache.h */, - 1B9C12C74DF9350F294A3E0A86E79688 /* TxImage.cpp */, - F4A979B9FDFB02A9135A8DE1C16A4D0E /* TxImage.h */, - 382AEC1D29962D722D89667A4472393D /* TxInternal.h */, - 64B7CA4681C35B6964EC793BCED8C6C4 /* TxQuantize.cpp */, - 92EAC7CE772F5EEE8CA0E1D5CC0DF8DA /* TxQuantize.h */, - 82671B748A7E74AAEE8C91F00CD2BC98 /* TxReSample.cpp */, - 78AB21416B984D35625ECC2BA9CD8E4A /* TxReSample.h */, - D11080B8D2F5E38C47C4098BD2FBA5AE /* TxTexCache.cpp */, - FA293C63A8B24A15F71B9359696C4394 /* TxTexCache.h */, - 9BF7FD2B19DF65538E3B5A98731A2AEE /* TxUtil.cpp */, - AECE8E892CF20B68ACDC4FD0AEDF3B14 /* TxUtil.h */, - 61ED4053EA35D4EEFE0F4F1201CAB911 /* txWidestringWrapper.cpp */, - 48585412562980D0D4B25991D9CBCDF2 /* txWidestringWrapper.h */, - 31D8661CECDA73EC69B0A804FB723768 /* inc */, - ); - name = GLideNHQ; - path = GLideNHQ; - sourceTree = ""; - }; - 7AEC798A76DA81AD1CA40CA2A00BF918 /* services */ = { - isa = PBXGroup; - children = ( - 37E6416FF8041B0018F081486F5DA69C /* svbdf.h */, - 317B88402DB12FDB873F4186C2C36DE8 /* svcid.h */, - 4885792B83557D1EEC027BB0F203C247 /* svgldict.h */, - 955B912BE5DE9EC545281531DEA7BF23 /* svgxval.h */, - 594F0432C6D677F2914EF89B34E3BA62 /* svkern.h */, - FD0BECC89A6590F418BA1CC26D59F237 /* svmm.h */, - 696393FF8398B97B4AE77FDD717BCE6D /* svotval.h */, - DFAFB6B7696267B9382EF7B0C076DF4F /* svpfr.h */, - 454C8212A9EA068C8FB926E200CAFA57 /* svpostnm.h */, - 970287FEF0704F01287D296CEF107F35 /* svprop.h */, - 2C1A0B8A722E9E636C72E8A570382A4A /* svpscmap.h */, - 9ADD34F7EAAFEB87DB50E40EC1A3BFCB /* svpsinfo.h */, - B1668AC0D087551532B76ABF47AF6895 /* svsfnt.h */, - 6C47161890D8A6119D7B00B61D034DE0 /* svttcmap.h */, - 8A286F1433B0665E6746E6D25CDD2F31 /* svtteng.h */, - A55C394180A7F5BED4BCC44E933F7F7D /* svttglyf.h */, - 7A361316A00767E4447E32728D710E69 /* svwinfnt.h */, - F840D02C8835AA39D02B6ABE9681A9AD /* svxf86nm.h */, - ); - name = services; - path = services; - sourceTree = ""; - }; - 7C3AE5058D4F12796CF17BA158E14150 /* subprojects */ = { - isa = PBXGroup; - children = ( - 96F25B18D3D1D9BF73AABEEA33EC2308 /* xxhash */, + inputFileListPaths = ( ); - name = subprojects; - path = subprojects; - sourceTree = ""; - }; - 7CBC032BF922DFB50EEAB6D72B91354A /* SwiftyDropbox */ = { - isa = PBXGroup; - children = ( - AA41416AF760A4579E38926180FB7E98 /* Async.swift */, - 10640380C87A1BC9B04007C2A3C1F529 /* Auth.swift */, - AC89D5569A6FBDDE31EC55DBF2F86B2E /* AuthRoutes.swift */, - 8257136F31A37672447D5F2FCF46FE10 /* Base.swift */, - CAB0449592C0DCA8414A2D8785033227 /* BaseTeam.swift */, - 41719ACD881D756B29502E6C40D1DBA6 /* Common.swift */, - 8B0E21ABA43A14EB561A436856C8C529 /* Contacts.swift */, - 124410B31A9E378F93FDB8A1B6FA19A2 /* ContactsRoutes.swift */, - FEAA22126ACDA08EE9AC0FA9A9B6EC05 /* Custom.swift */, - 9428B8A7A37F792EB00157F40ED883BB /* CustomRoutes.swift */, - F3F1E51AE6F5BE0ACA847F1A9ACE7311 /* CustomTasks.swift */, - 43949B838135A4C9AF88A573B762A429 /* DBChunkInputStream.h */, - 1F2DBB27BEEB1C9D7D604A978D9DD6B6 /* DBChunkInputStream.m */, - AD38FECB05322CFA65D8B297F68349F8 /* DropboxClient.swift */, - F780080F088472D2EA3AD73F9AC6B238 /* DropboxClientsManager.swift */, - 8F9F113CDF0897B7162BDC16B4BEEA31 /* DropboxTeamClient.swift */, - CBCCD8C7C6480A54F79BDBCD6BAFC020 /* DropboxTransportClient.swift */, - EC547021A6C25CAC75D4CBEA991AF3F2 /* FileProperties.swift */, - 3FA1B8883F6CAED73B7A39FB514ECF59 /* FilePropertiesRoutes.swift */, - EF1AA4BB7C7EA9D745AEBF944DC944BA /* FileRequests.swift */, - 52146E42B2E7458AB8F550EAAB719074 /* FileRequestsRoutes.swift */, - 33FE7D465ECFED221B87424469C67A9C /* Files.swift */, - E26FEBA64D2374DAC135277E88C048E7 /* FilesRoutes.swift */, - 6AC9CEAA77814183897B01BB7820D72D /* OAuth.swift */, - B4BFB7D39F6CF7F3B3B3BB96C9EAC314 /* OAuthMobile.swift */, - A97DFE65ECE733F3876CF13306D4C68B /* Paper.swift */, - 344175CF76093086EA58BEBC8AD0E014 /* PaperRoutes.swift */, - A03E19C0995989B6E3E1FFC99B95C5D2 /* SDKConstants.swift */, - 83BBBD73DC5C5BDA24F97461BDDEA0D7 /* SeenState.swift */, - D205F13F881DDD5824256D1FD8747E00 /* Sharing.swift */, - 7D8FC7A21B622E0C6CA1737C2DBD7EE2 /* SharingRoutes.swift */, - 73C973D6C8F68D6041F1D72D7FDFBAA9 /* StoneBase.swift */, - 79488326ACD741DA78E6F8BFDA889395 /* StoneSerializers.swift */, - C896FF6056EF6073CCFEB25599D37DC1 /* StoneValidators.swift */, - 9B90429F17069F50CA065D66C7BA9614 /* SwiftyDropbox.h */, - D196E82B652BFF0CF8DD7D134B12120D /* Team.swift */, - F8E8726464D823B37E1B6D05F7E27255 /* TeamCommon.swift */, - C585C47CE6EF972B1E2B823683528538 /* TeamLog.swift */, - 1CD8779AE248D2A01EAEB45063005C71 /* TeamLogRoutes.swift */, - BAE7CC5E61AD10E58132106C64073663 /* TeamPolicies.swift */, - 9F02264297230F05D9C1178C000E04EC /* TeamRoutes.swift */, - 874D46F582C919DAECAE2F7A7A611809 /* TransportConfig.swift */, - 2915B37F1313A778ECAC05BE22A03BC3 /* Users.swift */, - E296E74D5BB17E065FADEFAB60BF91B5 /* UsersCommon.swift */, - 00454C669FBEBF5003E744A5BB78F1E9 /* UsersRoutes.swift */, - 09DDB94F18DBC0FD433191CBFE31AA7E /* Support Files */, + inputPaths = ( + "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", + "${PODS_ROOT}/Headers/Public/Harmony/Harmony.modulemap", + "${PODS_ROOT}/Headers/Public/Harmony/Harmony-umbrella.h", ); - name = SwiftyDropbox; - path = SwiftyDropbox; - sourceTree = ""; - }; - 7D90A7BDA85FCD1DC7F23479F5DE415A /* SNESDeltaCore */ = { - isa = PBXGroup; - children = ( - 158E8A68318036DF5BDF9D8C5088B15B /* Standard.deltamapping */, - 414C0CAE33C5297A74940AE88BEB6357 /* Controller Skin */, - 03C9422833DBACD9A8747AB1F6699293 /* Pod */, - CCD9B2243790B830DC1BBDC11FAE6701 /* snes9x */, - BA314CC04E07D8A8467CF52E1ED1666C /* SNESDeltaCore */, - 05960DA526551A8475475D8107FD51A0 /* Support Files */, - ); - name = SNESDeltaCore; - path = ../Cores/SNESDeltaCore; - sourceTree = ""; - }; - 7E20B36CA33D1F1A9C76C73567E5DCAE /* include */ = { - isa = PBXGroup; - children = ( - BFE33B2BC2B5DA3FAFA0EF4052914B10 /* gambatte.h */, - 301E160410CC65E23A409444566E5122 /* gbint.h */, - 54756783282D97BCFC98529F64C6C44C /* inputgetter.h */, - AA19922E3DF9F35E769BAB98CE4E9BA8 /* loadres.h */, - AE315376CFFFA3D34AEFE17EB1F010F7 /* pakinfo.h */, - ); - name = include; - path = include; - sourceTree = ""; - }; - 7F36CEA654897B58341774FF289042CB /* SFML */ = { - isa = PBXGroup; - children = ( - 4927B9B438CDC0A2A1F236A9B0E7C7CB /* System */, + name = "Copy generated compatibility header"; + outputFileListPaths = ( ); - name = SFML; - path = SFML; - sourceTree = ""; - }; - 7FE9CF4308B70FDCA519EA8C0F8E5C58 /* OpenGLContext */ = { - isa = PBXGroup; - children = ( - 72896C94A5DD519E2F9AB3E4B5D45DDB /* GLFunctions.cpp */, - 35E9790D73322BBCEF673DA489A9D57E /* GLFunctions.h */, - 12212BF1052061C6C55854070D63C2EE /* opengl_Attributes.cpp */, - 02AD1F679FF728B6511BF017E73D0150 /* opengl_Attributes.h */, - 6D3156A703D60028628632452506690B /* opengl_BufferedDrawer.cpp */, - B21937C70034B0E22B11F4F417521B94 /* opengl_BufferedDrawer.h */, - 3B5D17EDC9CD7D8A8AB79211F9C821AF /* opengl_BufferManipulationObjectFactory.cpp */, - 594730077EE56666BFA076748A7727BF /* opengl_BufferManipulationObjectFactory.h */, - 1DAA1C81B0721C4B4DACA87D160BCEA4 /* opengl_CachedFunctions.cpp */, - 568A2546CA38DCB268734B2B99202A99 /* opengl_CachedFunctions.h */, - 7D29EE4FC407EB1CD9E31FF0194ABD04 /* opengl_ColorBufferReaderWithBufferStorage.cpp */, - D92F10A78D9A6F3A1C2BEE1030BB59F6 /* opengl_ColorBufferReaderWithBufferStorage.h */, - 1DBB96D9A562E2F0DB417F2C9C265840 /* opengl_ColorBufferReaderWithEGLImage.h */, - C578CF97F78BF8C15358F430AA30D615 /* opengl_ColorBufferReaderWithPixelBuffer.cpp */, - AF8C7CEAE093526F24A7C6CAEF79D94E /* opengl_ColorBufferReaderWithPixelBuffer.h */, - CCF3B37039138FDE454BCF2F1D72F9CF /* opengl_ColorBufferReaderWithReadPixels.cpp */, - 3A847A9F7AACCBECC646C5B42B6CF314 /* opengl_ColorBufferReaderWithReadPixels.h */, - C722FD717A34AA13B10C03AC368B1A00 /* opengl_ContextImpl.cpp */, - 9E9CDE82CCB93756FEC5D7573B4EDC45 /* opengl_ContextImpl.h */, - 87F005CEE9EE7E4C64FA78613A4C7A75 /* opengl_GLInfo.cpp */, - 937B73F8FBAE7506CA34734C3D196DA3 /* opengl_GLInfo.h */, - 286E77C6AFB14927B14098D9B094F2EE /* opengl_GraphicsDrawer.h */, - C3F5F7CFA10B9A59EC34BF55C18409D4 /* opengl_Parameters.cpp */, - 83E1AEBAC7522B8885FDC3AB45444BBA /* opengl_TextureManipulationObjectFactory.cpp */, - 87B4445E4B265DF8E6B30B539916E635 /* opengl_TextureManipulationObjectFactory.h */, - 6A18BBED29892E9EFCA98778363056D1 /* opengl_UnbufferedDrawer.cpp */, - BCCA1C95FD4883494B6FFD8509D3D035 /* opengl_UnbufferedDrawer.h */, - 84F897EBE76A1FDAD4E64AC50CF7138F /* opengl_Utils.cpp */, - 865A3063B5602032ACECBE1CF2D6C9B8 /* opengl_Utils.h */, - B9E7EC2759EBD795A430BF4B1AACD901 /* GLSL */, - C007B4C0335945308075AA7204EBD055 /* GraphicBuffer */, - 3BEBA4D65C17F897DA5DB5F0CF56635E /* mupen64plus */, - ); - name = OpenGLContext; - path = OpenGLContext; - sourceTree = ""; - }; - 812B989FB6B0DB416B1E84ECB5F05AFA /* Roxas */ = { - isa = PBXGroup; - children = ( - 95EE0A30DD5CF66C076753559A7A9A82 /* NSBundle+Extensions.h */, - 56994A64B20CCE99B153081DAFA29660 /* NSBundle+Extensions.m */, - E1A76606B0545B7E93314B51DC786688 /* NSConstraintConflict+Conveniences.h */, - 4EB03D7F307B30D54D56BB45569E0F91 /* NSConstraintConflict+Conveniences.m */, - 3096BFB6C852C462F98480FFFED51237 /* NSFileManager+URLs.h */, - 642D1E9C093B844DD73C3012A1D48864 /* NSFileManager+URLs.m */, - 6AF33200C7D32C8EACD8B8539DB45BC2 /* NSLayoutConstraint+Edges.h */, - B44B12EC0A8A9CA8A8DB401C721C0548 /* NSLayoutConstraint+Edges.m */, - F449670F55A999CFE1769E48D2557E1C /* NSPredicate+Search.h */, - E6C0288667DD509927209D6381F60306 /* NSPredicate+Search.m */, - E7A235EA31E0C5186C5FE456732B87C9 /* NSString+Localization.h */, - 910356BEBB46C3A3795DFE61CA0E7710 /* NSString+Localization.m */, - F13C7569E12A88F1E1ED5596F3479744 /* NSUserDefaults+DynamicProperties.h */, - D97A30CDCA2EE5F0A46DC7E3DF87E796 /* NSUserDefaults+DynamicProperties.m */, - 56472B809613E73F5088D9AD78569F17 /* Roxas.h */, - F809B8CB68A6A28D226F226F8AC25ACB /* RSTActivityIndicating.h */, - 75E436302DDA837379AD674034926994 /* RSTArrayDataSource.h */, - 7927E71FEC78E28D29A5D662C311BC33 /* RSTArrayDataSource.m */, - 016137700A393C705D49F7700387559F /* RSTBlockOperation.h */, - 7200A0EBB1017B42A5ED7871A39CD7F9 /* RSTBlockOperation.m */, - 27C74EF552116A38298E8B90B63D8BA7 /* RSTCellContentCell.h */, - D2BE8D3C7C22716378ACD8F7845D1027 /* RSTCellContentChange.h */, - D23B0ACC1D905B07F7FC8240AB76D54A /* RSTCellContentChange.m */, - DF652814DA2F4879D0FAAA481F19D537 /* RSTCellContentChangeOperation.h */, - 0ABCF5B1CE696822E3D35879D26BA13C /* RSTCellContentChangeOperation.m */, - 992E41C587003D0F3D48E308026E7D20 /* RSTCellContentDataSource.h */, - 6EC38AE281F34E72E7CC057B65C594C2 /* RSTCellContentDataSource.m */, - CAA72D7234A0B208E0C7AC4CCE7B3873 /* RSTCellContentDataSource_Subclasses.h */, - E5A929646CF6948C6DD085FFFDCFEB2A /* RSTCellContentPrefetchingDataSource.h */, - 08EDC180A033F4B94CE18522ACAA32A7 /* RSTCellContentView.h */, - E5FEB6D7738FB80B9D922536722BCF7F /* RSTCollectionViewCell.h */, - 72495D65818F9E9082E5D51130B42F8D /* RSTCollectionViewCell.m */, - DECA25BDA5E4F2C7DFA8FFBD44A21529 /* RSTCollectionViewCell.xib */, - C18C884682C7ECAC03EECEC48850DEF4 /* RSTCollectionViewGridLayout.h */, - D4DA42AD554868EE4E35A2197455BF64 /* RSTCollectionViewGridLayout.m */, - 146F91901EB4D4897CEB5F05C1DFC621 /* RSTCompositeDataSource.h */, - 8B0025AC37F3C2C359FCD899F2657855 /* RSTCompositeDataSource.m */, - 5C04A35FFE570B909C8AD5A9DB8AF26B /* RSTConstants.h */, - CD2DC61F1E167693CC02BAA00E7715F0 /* RSTDefines.h */, - 4420379BF6BC85F46BB80BEEBEFFB501 /* RSTDynamicDataSource.h */, - 532D7ED0B8685A85D6778DA70F40CCE4 /* RSTDynamicDataSource.m */, - A8BFD150AB1327DE01F94CDCC51B3E4C /* RSTError.h */, - D9ECECBEF35491F413B279B6A98E015B /* RSTError.m */, - 142802887860A760D41945F9E1502AC8 /* RSTFetchedResultsDataSource.h */, - 270A6C4B2DD7C3357F8FE302128EA6B9 /* RSTFetchedResultsDataSource.m */, - E61795F565BA313D631F9C1C0398B85E /* RSTHasher.h */, - 4154C8125893A215BDBB6750B27BF5F1 /* RSTHasher.m */, - C19B79D50E568B8585CEF38DDE067613 /* RSTHelperFile.h */, - 347CC7843D628E9B8272356340CC5194 /* RSTHelperFile.m */, - EE932796983B701EC66AC97AAA7E3958 /* RSTLaunchViewController.h */, - 1E0F5180476B30D192E39DFD70423E9F /* RSTLaunchViewController.m */, - 88FE6D2D3AEDF7639DF54D6DF699015D /* RSTLoadOperation.h */, - B4A632384D9C688D434380B6CCE7D1F7 /* RSTLoadOperation.m */, - A2868D67456C98A05671BCD211FF9F38 /* RSTNavigationController.h */, - 51CD45974E7379356760ED0390E5B807 /* RSTNavigationController.m */, - 581A65FCD0F46B12750D1A97347AB2B5 /* RSTNibView.h */, - FE429DA70CDCA70BCDA625196C0BBE79 /* RSTNibView.m */, - 6B875B7DA1EFD84AC25989918583DB09 /* RSTOperation.h */, - F7EDD8F96ECC1D4DB6AF3D0BAE03B280 /* RSTOperation.m */, - DC6FAF93284C148CBB1E3CD968DFEC92 /* RSTOperation_Subclasses.h */, - C66E4CF3747F894C37EEF42EEFFF9721 /* RSTOperationQueue.h */, - 4894D3FB33675CE3D668287298DD06EA /* RSTOperationQueue.m */, - 0DB969D2164DC5204825E7F482BFF821 /* RSTPersistentContainer.h */, - A54DF285E6ACE0FD412D98A086B82B96 /* RSTPersistentContainer.m */, - C5A521BDA3D4D828577B2C553889402E /* RSTPlaceholderView.h */, - 3A45A0771D00FB91CCC82B95621F18F1 /* RSTPlaceholderView.m */, - 4A00BB67172A848AF5BB8EC367582905 /* RSTPlaceholderView.xib */, - B2DC17B4AF6D9CB3636E72FAE616CC65 /* RSTRelationshipPreservingMergePolicy.h */, - 09D17B1A4E6711C38BB3E0CEF87E4B69 /* RSTRelationshipPreservingMergePolicy.m */, - 2C31B46F7AC04C4AD902BD8C6D0A36FD /* RSTSearchController.h */, - A7F7A6E55C8D16B705168398D41EFC3A /* RSTSearchController.m */, - DA903654F5B5F89E74DAEDF6DDFE77D6 /* RSTSeparatorView.h */, - DE635479904564D856572E7F742F8855 /* RSTSeparatorView.m */, - 14EE139D9368B6A33F60729F41BD17CE /* RSTTintedImageView.h */, - 8120D6CFBB7E4E028442630DE245EA89 /* RSTTintedImageView.m */, - F63203C30119ECDD3B34CFDEFE95164C /* RSTToastView.h */, - 4D0F7001B895CE5DC852EF08B9A72594 /* RSTToastView.m */, - CB5D32825165CBF7693660E93DD662BE /* UIAlertAction+Actions.h */, - B3052A9C7393257EAEF23078DBECD6B3 /* UIAlertAction+Actions.m */, - C921B9E65464CFFAF546C7BC52BC2690 /* UICollectionView+CellContent.h */, - 41DD9A08F62AAB32A0CBE59D30E7671E /* UICollectionView+CellContent.m */, - 384E92393CF9B3934AA1459082E32EEE /* UICollectionViewCell+CellContent.h */, - 6888FE71E929391D179F01C2EFB7B9CB /* UICollectionViewCell+CellContent.m */, - DD5DC51035BAC483EBAB6BD224394546 /* UICollectionViewCell+Nibs.h */, - F5040FA5F2C10BA592D9F2AA3240BED7 /* UICollectionViewCell+Nibs.m */, - 24173745FD3ED83170E3C0D27045BDA1 /* UIImage+Manipulation.h */, - 5EBCBF05A13053079CD97F27B623EABF /* UIImage+Manipulation.m */, - 454BB0507C489FE093E5C018F2741A75 /* UIKit+ActivityIndicating.h */, - 311ED734D1D039BFD75B4EE89CD9835B /* UIKit+ActivityIndicating.m */, - F3B086736AAA1DB3E1686132E2D41189 /* UISpringTimingParameters+Conveniences.h */, - 982A1762207DCCB41B6F126DFC0E741A /* UISpringTimingParameters+Conveniences.m */, - 3E6F82D29353E7C4BB91DFDD062C0295 /* UITableView+CellContent.h */, - B291972B633DC4A5B3842B0890871E1A /* UITableView+CellContent.m */, - FDA97DF09E3799641D19F3DC6F879DE0 /* UITableViewCell+CellContent.h */, - 99557512F6F1C9CB9AB24DCF9D1AEAD6 /* UITableViewCell+CellContent.m */, - 7E6049D392CB3FBCC2B72A8A6687EB69 /* UIView+AnimatedHide.h */, - 2078C8A75422F49B73A18A8341966ECA /* UIView+AnimatedHide.m */, - 9ED61F68B6658C6137ADBD037F7D43EF /* UIViewController+TransitionState.h */, - B0DFB82D9B5917CB78350818D3260E7B /* UIViewController+TransitionState.m */, - DAF83F106CEE1AF0CB41C3D3AE1E08E2 /* Pod */, - B98E8058048BB836CA8AEEB6119094A6 /* Support Files */, + outputPaths = ( + "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", + "${BUILT_PRODUCTS_DIR}/Harmony-umbrella.h", + "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", ); - name = Roxas; - path = ../External/Roxas; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/Harmony/Harmony.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/Harmony/Harmony-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; }; - 81ACA10962E6A65DD01F57C606D35AE6 /* Support Files */ = { - isa = PBXGroup; - children = ( - DC98B8EFB519AA44BD4A6F005DC7E68D /* GBCDeltaCore.modulemap */, - 68777C729F38ACE487C5E6C1604FAD18 /* GBCDeltaCore-dummy.m */, - 973778669A7B93DFC19BDCA51E2A5DDD /* GBCDeltaCore-prefix.pch */, - 31ABC87581C86AA32FF41CEDD6ED1F9E /* GBCDeltaCore-umbrella.h */, - 496461CDF0EEA20700EA04A0AD896DD0 /* GBCDeltaCore.debug.xcconfig */, - 9B3504BF3C9DA060E193A650BBB63861 /* GBCDeltaCore.release.xcconfig */, - 57FC8B13E87BE34997D550F1ABDDF530 /* ResourceBundle-GBCDeltaCore-GBCDeltaCore-Info.plist */, + 4F61BF6CCE774E66CD281745D52A182D /* Copy generated compatibility header */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( ); - name = "Support Files"; - path = "../../Pods/Target Support Files/GBCDeltaCore"; - sourceTree = ""; - }; - 8260819F46CF078FEDF8A74D85F29905 /* Model */ = { - isa = PBXGroup; - children = ( - C77A008A6833C24467625CDA9DB340AA /* Account.swift */, - 1FB44FFA4D02A1F2C432FD1A64C9A3C0 /* File.swift */, - 3BB41410B47E8A68D39475A239D30265 /* Record.swift */, - 93AF0E5AB88071086B8030C74B51B509 /* Version.swift */, - 4DDC6412619D3199AA595F6024657FB5 /* Core Data */, + inputFileListPaths = ( ); - name = Model; - path = Harmony/Model; - sourceTree = ""; - }; - 86D3933DB9ED55F95FB6923ADBA42EFB /* libtests */ = { - isa = PBXGroup; - children = ( - 13A74768D1214D8C9ACE6E7A1CF5CC68 /* pngstest-errors.h */, + inputPaths = ( + "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", + "${PODS_ROOT}/Headers/Public/Alamofire/Alamofire.modulemap", + "${PODS_ROOT}/Headers/Public/Alamofire/Alamofire-umbrella.h", ); - name = libtests; - path = libtests; - sourceTree = ""; - }; - 872E08DD99AF8F58A68B260E3C968F50 /* gregbook */ = { - isa = PBXGroup; - children = ( - 8BC0A7E7D462F731C717C1500217AE22 /* readpng.h */, - B652670BE43DF580C036F800C9CFA84A /* readpng2.h */, - 35F2300F0A4A50AD3C435334DD6D3A93 /* writepng.h */, + name = "Copy generated compatibility header"; + outputFileListPaths = ( ); - name = gregbook; - path = gregbook; - sourceTree = ""; - }; - 8764E4EF1B0A6D8D603F9DE34CD3218B /* Mupen64Plus */ = { - isa = PBXGroup; - children = ( - C37CFFB134B15A131907442B1FDA155B /* GLideN64 */, - D340C5D5E5F31AEB5C1EFF510971CDEB /* mupen64plus-core */, + outputPaths = ( + "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", + "${BUILT_PRODUCTS_DIR}/Alamofire-umbrella.h", + "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", ); - name = Mupen64Plus; - path = Mupen64Plus; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/Alamofire/Alamofire.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/Alamofire/Alamofire-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; }; - 87B42D8199F3AAFDAA7D64F8D0460B7A /* Frameworks */ = { - isa = PBXGroup; - children = ( - 29919E9648C822A2B4D58714161F47A8 /* Fabric.framework */, + 683E3BA28E5F99D70B5F5E9B3839AA0C /* Copy generated compatibility header */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( ); - name = Frameworks; - sourceTree = ""; - }; - 87B6C441197B192D53DA8C45CE3C83AC /* NESDeltaCore */ = { - isa = PBXGroup; - children = ( - 25991D07DD8D96C5AAA906563DBDDC97 /* NES.swift */, - 3BB11FD20DEECB8B6C10A1E5AB5E3050 /* NESDeltaCore.h */, - A7580FDA9275A16B8BC75BE10F6DFF81 /* Standard.deltamapping */, - A2AB43C2E133F6467E8CD2C769B4726A /* Bridge */, - B011DF1986606CA93EAAB4BEB0C84AB1 /* Controller Skin */, - ); - name = NESDeltaCore; - path = NESDeltaCore; - sourceTree = ""; - }; - 8820DAC9E60DE6675759180EAC68F231 /* GL */ = { - isa = PBXGroup; - children = ( - 5705E41354AA6B3ECEF15EF9280D870C /* glcorearb.h */, - EE88D048E0D8D237D067EFE90BCA3795 /* glext.h */, - 26D2A5D5698537BF5D54176EFAAE1D21 /* glxext.h */, - C7FDCAA2C2AE2F7710AFCA420D4D4BBF /* wglext.h */, + inputFileListPaths = ( ); - name = GL; - path = GL; - sourceTree = ""; - }; - 88667F1262CA040FDDC222012EB0231C /* Full */ = { - isa = PBXGroup; - children = ( - 7AEEEEBC25EAA4D178CE03F03D008923 /* GTMGatherInputStream.h */, - EC7D812FBDF10DDBF8A0A3527249F79F /* GTMGatherInputStream.m */, - 053CC9F79B24C95D4BA1804F4282EC93 /* GTMMIMEDocument.h */, - EF3D819417FD851E3EA790DF036DBEA4 /* GTMMIMEDocument.m */, - 56C4158DD79B8800FDBEF6D1FD40BEBE /* GTMReadMonitorInputStream.h */, - 4CBFEACE2F6510E0AC190F950DC15702 /* GTMReadMonitorInputStream.m */, + inputPaths = ( + "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", + "${PODS_ROOT}/Headers/Public/SwiftyDropbox/SwiftyDropbox.modulemap", + "${PODS_ROOT}/Headers/Public/SwiftyDropbox/SwiftyDropbox-umbrella.h", ); - name = Full; - sourceTree = ""; - }; - 894BAE60FD5052909C1128ADA39CA7A1 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 699BB5E960F7F5A50C96A562EA76EE9C /* GoogleSignIn.framework */, + name = "Copy generated compatibility header"; + outputFileListPaths = ( ); - name = Frameworks; - sourceTree = ""; - }; - 8BB28772DB0C78E431BECC9145244776 /* GBADeltaCore */ = { - isa = PBXGroup; - children = ( - 169187B6163B3872887502BA489EDDB9 /* GBA.swift */, - C948F7181BF61F2DFC5F685D88FE30CB /* GBADeltaCore.h */, - ADEFB1890E88A102DD7E5D0851B7FCFA /* Bridge */, - 4796385DB6264FFFC4FA4A5852C0503C /* Types */, + outputPaths = ( + "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", + "${BUILT_PRODUCTS_DIR}/SwiftyDropbox-umbrella.h", + "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", ); - name = GBADeltaCore; - path = GBADeltaCore; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SwiftyDropbox/SwiftyDropbox.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SwiftyDropbox/SwiftyDropbox-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; }; - 8CF9CA056B2528391D9AB51C1795208E /* GLideN64 */ = { - isa = PBXGroup; - children = ( - A1D53EFDF98713032130A867BDE33714 /* src */, + FBDBDFFAD990AD9508B3EFA011AEFC86 /* Copy generated compatibility header */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( ); - name = GLideN64; - path = GLideN64; - sourceTree = ""; - }; - 8FDE4525075516E90A9286C18AA7F0FD /* SDWebImage */ = { - isa = PBXGroup; - children = ( - 411CCD233F29EAD26706B07FE1DB055E /* Core */, - 5F367EF45196EF0904C5391E210E7129 /* Support Files */, + inputFileListPaths = ( ); - name = SDWebImage; - path = SDWebImage; - sourceTree = ""; - }; - 911C6F9710073B10E7738FF758A74171 /* pi */ = { - isa = PBXGroup; - children = ( - 9AA4A76158FC76286A207229EAE68AC7 /* pi_controller.h */, + inputPaths = ( + "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", + "${PODS_ROOT}/Headers/Public/SQLite/SQLite.swift.modulemap", + "${PODS_ROOT}/Headers/Public/SQLite/SQLite.swift-umbrella.h", ); - name = pi; - path = pi; - sourceTree = ""; - }; - 91559130FF24D38A85DDDCE5DF25F1BF /* preader */ = { - isa = PBXGroup; - children = ( - 0266BC5A5AEA109DBA257B1168D3B572 /* pngusr.h */, + name = "Copy generated compatibility header"; + outputFileListPaths = ( ); - name = preader; - path = preader; - sourceTree = ""; - }; - 92B457A8D260FD8FD0B3001022710A22 /* x86_64 */ = { - isa = PBXGroup; - children = ( - 9A0F202FAF19801B8E53A77AE636FB69 /* assemble.h */, - 89F36C2AA5330EF25066707DB208553A /* assemble_struct.h */, - A7B8B5DA4434C64E0E25E63723B73B0A /* interpret.h */, - E4FFB7DF9BCF6F425B0D5C0C9A86E782 /* regcache.h */, + outputPaths = ( + "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", + "${BUILT_PRODUCTS_DIR}/SQLite.swift-umbrella.h", + "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", ); - name = x86_64; - path = x86_64; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SQLite/SQLite.swift.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SQLite/SQLite.swift-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; }; - 9343C983BBABF936B98A023BE9FBF194 /* rsp */ = { - isa = PBXGroup; - children = ( - 2B4F5E9F6D351ACA4ED2773D5967D0B8 /* rsp_core.h */, +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 0F356666BA38C004ACD3218C473661FF /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + FF47124336E697A518CE2C93B8E88C2C /* GTMGatherInputStream.m in Sources */, + FA577995260851815A34580C95A493FE /* GTMMIMEDocument.m in Sources */, + A4CDAB56ED7EA775F1A4AF9BC6C5E712 /* GTMReadMonitorInputStream.m in Sources */, + D9D678A3261AB86A7637EB79F73B0D27 /* GTMSessionFetcher-dummy.m in Sources */, + A6173C5A991255ED8E9DF5B7A8B26CA7 /* GTMSessionFetcher.m in Sources */, + D3DEAD4C77A168D67D3EC458661D424E /* GTMSessionFetcherLogging.m in Sources */, + EE4994A811223017B6C5EE3AC8A4FDAF /* GTMSessionFetcherService.m in Sources */, + EE2019BF5CB64FFF4F1A0E423383637C /* GTMSessionUploadFetcher.m in Sources */, ); - name = rsp; - path = rsp; - sourceTree = ""; - }; - 942DA1BF6AF1403DBD8D390CC4E0C042 /* config */ = { - isa = PBXGroup; - children = ( - 862818885E4A3970FBC4F00ED5C43436 /* ftconfig.h */, - 6DFCA97B33E59049B25A0D843E635862 /* ftheader.h */, - 8C8286295216A610FA45355A6513DD88 /* ftmodule.h */, - CA1D9A0FCC95EC0A089280E4EC0A0A8E /* ftoption.h */, - F785ADB3D15DFFCE14F3E3E225AD962C /* ftstdlib.h */, - ); - name = config; - path = config; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; - 95AA9FE7FC9405F6815FEF8888D30F1F /* pif */ = { - isa = PBXGroup; - children = ( - D55B643E64E489320CE54CCA55999775 /* bootrom_hle.h */, - 401540A57A1384B5E8EE6E0E120864A6 /* cic.h */, - F385FFE64099CB11245634D2B66248FE /* n64_cic_nus_6105.h */, - 6C76D76ED7F98CCF93BF79937C57766B /* pif.h */, - ); - name = pif; - path = pif; - sourceTree = ""; - }; - 960E1D165355A784DF995DD2928CD27C /* api */ = { - isa = PBXGroup; - children = ( - F2252D4CB1E58BDCA95ED43B9F21586F /* callbacks.h */, - 7C3746C40CCF7D523A9AC470BCAE5EEB /* debugger.h */, - D9A1C8FFB28389F2867F54A1083013A5 /* m64p_common.h */, - 3A031D54C3566192B22B6125DEE873DC /* m64p_config.h */, - EFE9040FC2B5FD87A1E50C89133C8CED /* m64p_debugger.h */, - 448C776591E6FF4483CD588C7CD03019 /* m64p_frontend.h */, - D80C34DD4B034C77A1B7FF575359DC5D /* m64p_plugin.h */, - F31FAD638690962BD1EE3F696ABEFB09 /* m64p_types.h */, - CEDCE3534F394855D736E8914E2C28B8 /* m64p_vidext.h */, - 67CDDFF4AEF95E7B369C55FD208FF20F /* vidext.h */, - 829C35143E7D2B6838F3B70A9F749491 /* vidext_sdl2_compat.h */, - ); - name = api; - path = api; - sourceTree = ""; - }; - 96F25B18D3D1D9BF73AABEEA33EC2308 /* xxhash */ = { - isa = PBXGroup; - children = ( - 3B0F8366B012EA89F3FA3A0034DD1EE4 /* xxhash.c */, - ); - name = xxhash; - path = xxhash; - sourceTree = ""; - }; - 96FACD7286C4F9523442BB0A10E06FDF /* api */ = { - isa = PBXGroup; - children = ( - 26D4C43C09D79EF32F5F974C5A89B879 /* NstApi.hpp */, - DE2C6C61CC67CA7469F056859895E872 /* NstApiBarcodeReader.hpp */, - 4C2B0EF2438B6A4D26AF5ED81619C0B0 /* NstApiCartridge.hpp */, - 48DD0C01F114EEE16D0CEAF82A837D15 /* NstApiCheats.hpp */, - 2CD07024D87D55F9ADE70163DA7DF8C7 /* NstApiConfig.hpp */, - 359963C733B79E463294068D0FD5E8D4 /* NstApiDipSwitches.hpp */, - 518DB5C5187A3B396F541FAA09FAC646 /* NstApiEmulator.hpp */, - C7123B0D191661CE2885FB576763F310 /* NstApiFds.hpp */, - D5D8FCC4E6844265B7C603660F589A79 /* NstApiInput.hpp */, - 0DC064148B8ABE064913E82A5953AAD6 /* NstApiMachine.hpp */, - 6285F7319217715F0E3DA364BB1818DA /* NstApiMovie.hpp */, - 19BDE821F69D4EED1DE355E465F11DC0 /* NstApiNsf.hpp */, - BFD8A03EDF95491D3AF6B42EA8DF046C /* NstApiRewinder.hpp */, - 66FF3C9AA7350341B382B354F3D7E089 /* NstApiSound.hpp */, - 2E80F033B66109666D4F9EEE71E6C2B0 /* NstApiTapeRecorder.hpp */, - 27BD06691828D334895C216BFE8EE776 /* NstApiUser.hpp */, - 64EDE4DCAD9981AA23A033A7716C28DE /* NstApiVideo.hpp */, - ); - name = api; - path = api; - sourceTree = ""; - }; - 973066835E252184DCCED210BF28C03E /* Protocols */ = { - isa = PBXGroup; - children = ( - 755132A40834082A80F3E5C61393429B /* RecordEntry.swift */, - 3CDB380E3F71C06D4C88A675AE2BDDFD /* Service.swift */, - A10405CD77CC06E92C329D2A7A416975 /* Syncable.swift */, + 14D1EC3D03BF1404CE997CB43CB63F1B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 24B7C521DEBEFF6FEDE5A739AD245FF7 /* Account.swift in Sources */, + 8BBEB7CBD2DC6BDB53EC1C7F71F82A18 /* AnyCodable.swift in Sources */, + 96EB6181A20B51DFF979A731FDEE8E48 /* AnyKeyPath+StringValue.swift in Sources */, + B47C861F95112C613F72B9CAF4784FC4 /* BatchRecordOperation.swift in Sources */, + 236758569C4C8EA07F763EE8EB40C9C5 /* ConflictRecordOperation.swift in Sources */, + D6721B35D8B2CAAB96A5AB588F69A333 /* ConflictRecordsOperation.swift in Sources */, + D3914BDD63258B8237AD94F7377B9607 /* DeleteRecordOperation.swift in Sources */, + 32B45CCB0228F26D882FADFAACA6B5F2 /* DeleteRecordsOperation.swift in Sources */, + 774C4531614059D12553CA96F3C3803F /* Dictionary+Sequence.swift in Sources */, + D847D7DD39249AE3F8B937E71D2D8549 /* DownloadRecordOperation.swift in Sources */, + 50FEDFF1ECA9D67217CDAD7559CB2238 /* DownloadRecordsOperation.swift in Sources */, + 64CEE5DE93A64F4E59437CDD6E9AEC4F /* DriveService+Files.swift in Sources */, + B588B4C4C276D0350E74F83ED36DDC37 /* DriveService+Records.swift in Sources */, + 62F18B0609BD1B5FB65F41B8BA0522A1 /* DriveService+Versions.swift in Sources */, + BFB9E16A473FC19EC99F355011C34A45 /* DriveService.swift in Sources */, + 9086BE0B6C355410CE0B96054778A491 /* DropboxService+Files.swift in Sources */, + 049BC1B479F9F0BF40FC2598D8FF8C51 /* DropboxService+Records.swift in Sources */, + 6084A5F08E94885B9A72BF363F734560 /* DropboxService+Versions.swift in Sources */, + D164118F5D9342A86BA96D252D7C6870 /* DropboxService.swift in Sources */, + B00CBB6A581E7D28860CA36877B7FC17 /* Errors.swift in Sources */, + 8AC6F20C75D0D6031EDD553A3DA1BF04 /* FetchRemoteRecordsOperation.swift in Sources */, + B2EB8D4FFEC6DC5D343DFE0CB523C720 /* File.swift in Sources */, + E3FF5DACA1ACEFE447EA8EB66169219C /* FinishDownloadingRecordsOperation.swift in Sources */, + 6AF6908C5E85F1F2D7059ACAC9FE9FD1 /* FinishUploadingRecordsOperation.swift in Sources */, + A5C0AE4E9AED3A8854E26FC94B2645A0 /* Harmony-dummy.m in Sources */, + EBE61162E7C42E3C10C4F44C4C6CA4A2 /* HarmonyMetadataKey+Keys.swift in Sources */, + 164BAC914BBAA929ADDE2137EA9543B9 /* JSONDecoder+ManagedObjectContext.swift in Sources */, + BB91F0F9900A599B5FC87A4538B32EC5 /* KeyedContainers+ManagedValues.swift in Sources */, + 8072A010724983CD7E104EE24B7D0414 /* LocalRecord.swift in Sources */, + 89DBEF18B9EED15232C28ACA49912590 /* ManagedAccount.swift in Sources */, + 0A599F9C0D150C29B68E5AAD2F6E6376 /* ManagedRecord+Predicates.swift in Sources */, + FFB82AAAE70D1401F93C370E00A47AE0 /* ManagedRecord+Uploading.swift in Sources */, + 7834512950AF020BFE17B0D7D3D488EB /* ManagedRecord.swift in Sources */, + 8F9DE07FB0B100BA997E1B57AA2EE210 /* MergePolicy.swift in Sources */, + 8252CD5963E6264A2C53AE79EB3381FD /* NSError+LocalizedFailureDescription.swift in Sources */, + A007940F022B62E013F1F7B8E1B12D0A /* NSManagedObject+Conveniences.swift in Sources */, + 737E71E865A1787DBC95577C9D9E732D /* NSManagedObject+Harmony.swift in Sources */, + EF9EA527BA1D415C6EBCDDB70A504961 /* NSManagedObjectContext+Harmony.swift in Sources */, + 436B412B5F49A5A2C494C62D8BC5E966 /* NSPersistentStore+Configuration.swift in Sources */, + 2B58F319B8E9BF654A4EC197D5F1A4C4 /* Operation.swift in Sources */, + ECC25F7B2B3C29BC76DCAC098A583D27 /* PrepareUploadingRecordsOperation.swift in Sources */, + DFAE61CAD0C9E0D221B0B8A65C574C77 /* PropertyGroup+Harmony.swift in Sources */, + EDF25F3AD609519E7D04C76049DF6B88 /* Record.swift in Sources */, + B560E458E433DDCF624D34FE1E40087C /* RecordController.swift in Sources */, + 6CACD7273395DC0CA5018433BD81DCAA /* RecordEntry.swift in Sources */, + 00CEE4E02C6D213E9AFAA1BC64BB2CCC /* RecordOperation.swift in Sources */, + 1075C0BF05B5F1DFD3331537AEF56082 /* RecordRepresentation.swift in Sources */, + 5DF91E6EAAC076130B2EFA4657BD483F /* RemoteFile+Dropbox.swift in Sources */, + AF51B60F90BDABD26AE53E2294FFA0E1 /* RemoteFile+File.swift in Sources */, + C5028985B9FCE24D815EA3F82FF7FA33 /* RemoteFile.swift in Sources */, + 1E03EC6139CCC4410F54BD3D7D143F1B /* RemoteRecord+Dropbox.swift in Sources */, + ACEEC71563EFD5FC1366E48A03F44ECA /* RemoteRecord+File.swift in Sources */, + 101A15CF34E5E8ECC203BEC92668B14E /* RemoteRecord.swift in Sources */, + C11404A581B684B89073D59DACA5C59B /* Result+Drive.swift in Sources */, + 0C7F4768121EBCC0C8EBD0D94855ADC2 /* Result+Dropbox.swift in Sources */, + F0F423C8BE9E56382244511DB80F737A /* Result+Success.swift in Sources */, + E49F4908A8DF8637A3944DFC53BA890C /* Service.swift in Sources */, + 804406B9137B455C59CDD15878E8DB63 /* ServiceOperation.swift in Sources */, + 9D5990198CE8DEF226EA2DB004E55FCC /* Syncable.swift in Sources */, + 4216808C752A41DEBD20BD33047A6564 /* SyncCoordinator.swift in Sources */, + 59E8ABF034C6D4AC8237C5B47F455BE1 /* SyncProgress.swift in Sources */, + 169BD797475549B0DCB3334A81FF252B /* SyncRecordsOperation.swift in Sources */, + 2D0C1D6DC71F2E1D4229D57F3DC3F2D8 /* UpdateRecordMetadataOperation.swift in Sources */, + 7CEB79F98C23C3B429CC3545D30DD529 /* UploadRecordOperation.swift in Sources */, + BBB7B546DA75412C4E2623C173D916B2 /* UploadRecordsOperation.swift in Sources */, + D58CE6E7A372533BE5037B5CC5535EB7 /* UserDefaults+Harmony.swift in Sources */, + 0559206519929E651DBE5D57A53A07AD /* Version+Dropbox.swift in Sources */, + C0690B14B39CADE96E4EC96B8A40BF18 /* Version+Revision.swift in Sources */, + 60BC657F99AB8AB86516B7C8D67B0996 /* Version.swift in Sources */, ); - name = Protocols; - path = Harmony/Protocols; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; - 97745B3B38E6073A9771423FCAB2F249 /* GoogleSignIn */ = { - isa = PBXGroup; - children = ( - 894BAE60FD5052909C1128ADA39CA7A1 /* Frameworks */, - CF5F7EC6E0C5BAD54926F88715D9FD4C /* Resources */, - 774E21ED78BE63857812B5970D9F6E94 /* Support Files */, + 5EE6B8A56A8A13C9228CFEE7FC036FA2 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 30E3FF5DE72D56612993D499EBED8C9B /* AggregateFunctions.swift in Sources */, + 12AEC0B4C35E8BDE4366D57CE6805481 /* Blob.swift in Sources */, + D8F09E6FFEAEFBFFA69546C6F36EF74F /* Coding.swift in Sources */, + 85290514199956D820FB90C92DBD0002 /* Collation.swift in Sources */, + 68F7071AB87ED8CB4B8CF11F7BF9A78E /* Connection.swift in Sources */, + 8043A7E0B334D03CF18AF57B63B8B407 /* CoreFunctions.swift in Sources */, + A902E94BC79F6FA99E9BB0300EA305B3 /* CustomFunctions.swift in Sources */, + 921C1F239586B4E7118399375F45BAB5 /* DateAndTimeFunctions.swift in Sources */, + BC4EB746D2E13352424A93FDC7A52F78 /* Errors.swift in Sources */, + 2D87E1AEC45003E3C2203D5A623DB6E1 /* Expression.swift in Sources */, + 566B02F81167FAAB363014E42ED15BFF /* Foundation.swift in Sources */, + B592BEA6F00B6CB2A68FF21EE18DCCE5 /* FTS4.swift in Sources */, + CBD00AD2D050E606B432EF764F0443EF /* FTS5.swift in Sources */, + E78529FBA5C035888371AE6EE12276A8 /* Helpers.swift in Sources */, + 3D38D3143F60F22FF8148BA31C508E73 /* Operators.swift in Sources */, + 94D28595353D013C0530A91A7AA81FCF /* Query.swift in Sources */, + CB7A5FD2D111FB945D4C60F8F9CEB90A /* RTree.swift in Sources */, + 26D84D2836C13B2D939D5A5E2B1BD47B /* Schema.swift in Sources */, + FDFC423A4243CFA179481946B523C999 /* Setter.swift in Sources */, + DB02626D12C516C4CD6A9EA98D20A50A /* SQLite.swift-dummy.m in Sources */, + 6EAC3C9446063F09611B9BE55D8D34C1 /* SQLiteObjc.m in Sources */, + C72087EDCF1BAE223A1BB8C94BA87329 /* Statement.swift in Sources */, + F167CCE2838CD4DF3161F75877A2858C /* Value.swift in Sources */, ); - name = GoogleSignIn; - path = GoogleSignIn; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; - 97835A5FB7D9D233181411E73D085DCC /* apu */ = { - isa = PBXGroup; - children = ( - C290E38AA00434D6999E4E49F703E086 /* apu.h */, - 79D7ED8877867FB9C7D2E9F9FA848BDA /* hermite_resampler.h */, - 29E7F21E3BF4B2EDD2254AB12681340C /* resampler.h */, - 577979F3FAA02788C1868C7CBE2CDB85 /* ring_buffer.h */, + 633E0A53A04723A0CA292BC40F320D0F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8186688A59EA541796C0942D7FDE1D9F /* NSBundle+Extensions.m in Sources */, + 737F23C79530D779222E1A44A32B3569 /* NSConstraintConflict+Conveniences.m in Sources */, + 6460CB341EFC266FE9706D49DFBD6922 /* NSFileManager+URLs.m in Sources */, + 811B153C15A6CA3C89994342271E3AFE /* NSLayoutConstraint+Edges.m in Sources */, + 08518BB31A3DEF4D9AABFEF81DC7935B /* NSPredicate+Search.m in Sources */, + 70372F5EFB462A396FD6CE09A4473540 /* NSString+Localization.m in Sources */, + 8B0F0D4050D5F1C4C84AE59D0783E2AE /* NSUserDefaults+DynamicProperties.m in Sources */, + 8830F72A45BBBEF3E27012947EDCAE79 /* Roxas-dummy.m in Sources */, + 766BBC38536CCEA992FDE2D33DCD8609 /* RSTArrayDataSource.m in Sources */, + A66A864BEF85DCA6F5178352082DFDA5 /* RSTBlockOperation.m in Sources */, + D348A6D97464C7DF00A7DEC2677040D3 /* RSTCellContentChange.m in Sources */, + 35EF2D249B949EBEE6D6FFE7274998D0 /* RSTCellContentChangeOperation.m in Sources */, + 727C746735011E2CB4CC7397CB40F1E7 /* RSTCellContentDataSource.m in Sources */, + D7A38183B12CD757E00F20A9DFB6FE95 /* RSTCollectionViewCell.m in Sources */, + C94D716D53BA480D2C1490D4D57D55A9 /* RSTCollectionViewGridLayout.m in Sources */, + 403A644EA6A2E5AFD1D407AB9315832E /* RSTCompositeDataSource.m in Sources */, + 406C732C798D861F71B3708A0C52C458 /* RSTDynamicDataSource.m in Sources */, + 1589485924D4156B3F3B5A9DD67E873E /* RSTError.m in Sources */, + 365A4114A18EFAC1823ABAF50A8A8801 /* RSTFetchedResultsDataSource.m in Sources */, + BFD435E2C759E82667C53915E1F70A02 /* RSTHasher.m in Sources */, + EBD00D0F07FF7FAC57B2F8DAA3674274 /* RSTHelperFile.m in Sources */, + DCC963FA18AC3D5E98226236B48365EE /* RSTLaunchViewController.m in Sources */, + 77709CE836C8953882A15D7EF263CD50 /* RSTLoadOperation.m in Sources */, + 42FAFF0239C6D39B3D58A3C36EF164D8 /* RSTNavigationController.m in Sources */, + 78FC545494412EFE918D4D4E690167CA /* RSTNibView.m in Sources */, + 3EB27ADA37EFBB2216166A7B496CBDB3 /* RSTOperation.m in Sources */, + C515138F500627017548FE417BF4DF90 /* RSTOperationQueue.m in Sources */, + 1F068B85EA8E02D269648D9AC8B7FC14 /* RSTPersistentContainer.m in Sources */, + 6B866AF94EDBF9079BFFAFB546B5F6FF /* RSTPlaceholderView.m in Sources */, + 2FFF4B4B32D0F97D23F83C5B48ABDDE4 /* RSTRelationshipPreservingMergePolicy.m in Sources */, + 566B75E2B73627E3CF5C65FAB87E7AC2 /* RSTSearchController.m in Sources */, + 4F225AB2F8B4DB682C7DD6425781CC49 /* RSTSeparatorView.m in Sources */, + 91032A6455A3898BB38A1E4C2BF2A2E0 /* RSTTintedImageView.m in Sources */, + 4F7D9679A8CAB7BC3FAF662016CB112E /* RSTToastView.m in Sources */, + 01102A0A267609441BA91C3329987354 /* UIAlertAction+Actions.m in Sources */, + 02F8F35275949DE0FB81139C1E6718F4 /* UICollectionView+CellContent.m in Sources */, + B51108555B71EF86610CB07052A83F49 /* UICollectionViewCell+CellContent.m in Sources */, + D25EF967C85DDD0C8F2FE70EA9E57935 /* UICollectionViewCell+Nibs.m in Sources */, + 32A2A368353B18B17C0C0271D45EFD8C /* UIImage+Manipulation.m in Sources */, + A81C3E45CCF87B85F8CC6334E492C628 /* UIKit+ActivityIndicating.m in Sources */, + 08884CD7C73D3B147893EDEDF21B3D2A /* UISpringTimingParameters+Conveniences.m in Sources */, + 92749A5C0935A1A960F2F3E6E5684630 /* UITableView+CellContent.m in Sources */, + 8807F65AAEA86F06D27DA9B6BBCF1D83 /* UITableViewCell+CellContent.m in Sources */, + A7C2D5CBF1DD8598E75EFDE2329992A2 /* UIView+AnimatedHide.m in Sources */, + 1F785AC147825C148A0F30C76299D9D4 /* UIViewController+TransitionState.m in Sources */, ); - name = apu; - path = apu; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; - 97C18C4F2DEF2C74145C683D8870C6D7 /* SQLite.swift */ = { - isa = PBXGroup; - children = ( - 129E714EB792A0367A8ACDC297B0921A /* standard */, - FC18A141231F5F8AF364EAEA504A1027 /* Support Files */, + 811F13FE55E873CE6C1956757840D7C7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9C8A0C2204C091124D6C64F86A690F9F /* SMCalloutView-dummy.m in Sources */, + AECB1619CFCEF7A7234852F00CB0C5C0 /* SMCalloutView.m in Sources */, + EBC516586457D8BA8B838FF0A74F6192 /* SMClassicCalloutView.m in Sources */, ); - name = SQLite.swift; - path = SQLite.swift; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; - 9A6D2708293DA4B80EF178F7DECA5BBB /* xxhash */ = { - isa = PBXGroup; - children = ( - CDB8946D38B7595F8B990F42E4831438 /* xxh3.h */, - 5A617EF2F76A9BA5753AEDEAD7937E43 /* xxhash.c */, - 8991F8D9FAC3A697B63046BF35BD3FC4 /* xxhash.h */, + 9616278F3B848970FCFD4EC64C16134F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3B62B82D261E401D9CA025196D0DB561 /* Pods-Delta-dummy.m in Sources */, ); - name = xxhash; - path = xxhash; - sourceTree = ""; - }; - 9AEC8FEFD4C192D5613456A708462BD2 /* SoundTouch */ = { - isa = PBXGroup; - children = ( - 96E188C108DEE0C4CDF36B16B432DEE5 /* AAFilter.h */, - 00FDF8DB9C55F7BD5ECBB83F1E9CD043 /* BPMDetect.h */, - 2CAEB53047F521490F56979320D6CAE8 /* cpu_detect.h */, - FAC23FED142F320FA9943449A514E1EB /* FIFOSampleBuffer.h */, - 2FC4B3331E3D5016224691B97B18E8ED /* FIFOSamplePipe.h */, - 141E1B266EA682B6640983E0A2AA47D7 /* FIRFilter.h */, - 2DE74F67CDAB85D054D711218E1334CA /* RateTransposer.h */, - 10444DBFBA879846A3CEEE82FFDFF4C6 /* SoundTouch.h */, - 4A985E790712C4FBE9D43545565A765F /* STTypes.h */, - 652ED46B907A7ECE96808F0BA5F1AB39 /* TDStretch.h */, - 3EFDA177554BE503A74EED13D07C6F88 /* WavFile.h */, - ); - name = SoundTouch; - path = SoundTouch; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; - 9B0DAFC39A255D316CA8A42F66597E60 /* Controller Skin */ = { - isa = PBXGroup; - children = ( - 297E2444FDCEA0CA8DEE259009AC453D /* Standard.deltaskin */, + ADA8A824FC0DF194C0EEA41A4A09871D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D7002BA4BF48E276D34405B85D636DC /* AFError.swift in Sources */, + 1AAB4E66BB2F67D75ED31A969FB90445 /* Alamofire-dummy.m in Sources */, + D8524A5C842C0580F42718FE94C8F791 /* Alamofire.swift in Sources */, + 8310901E730FB822677EDAAF25893BE6 /* DispatchQueue+Alamofire.swift in Sources */, + C2EB4CB575EA9821E30A317574865D17 /* MultipartFormData.swift in Sources */, + 6853624E43A5EB0CA069A0F55C3C315C /* NetworkReachabilityManager.swift in Sources */, + 00808122820CCB7D640A23AF2F851D96 /* Notifications.swift in Sources */, + F9F08CA61836853CAE7455D76939D98B /* ParameterEncoding.swift in Sources */, + FF31B5BBE13193F204040DE66FF15F02 /* Request.swift in Sources */, + 2CFB7E4AB44C35953034CE00C927B1F8 /* Response.swift in Sources */, + 494BF218C4F917D55808751F21518F3F /* ResponseSerialization.swift in Sources */, + 6A386F883B6F86FCA792C8C1134057CA /* Result.swift in Sources */, + 51882AB1BF2D64307CB26E25DB7A43C2 /* ServerTrustPolicy.swift in Sources */, + AF02EA0DAD3FAC51CB5E859F81786EC6 /* SessionDelegate.swift in Sources */, + B560A089A1D47EC1F0B26533258C7317 /* SessionManager.swift in Sources */, + B422DCB989FF675D287C579D280F8253 /* TaskDelegate.swift in Sources */, + 626863FBB1F3C943ACB548FFB7A85E8C /* Timeline.swift in Sources */, + 3E82C4D5935E02D385D773C59D424ADD /* Validation.swift in Sources */, ); - name = "Controller Skin"; - path = "GBCDeltaCore/Controller Skin"; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; - 9C42098D9CF012CF305746841BDC6BF2 /* SMCalloutView */ = { - isa = PBXGroup; - children = ( - 8F3B43B9B9A8070F8E97D878287EAEDF /* SMCalloutView.h */, - CB0111AD916628D17DBE1C3F2FED3100 /* SMCalloutView.m */, - ADF793502FD046991EE487F895BA270F /* SMClassicCalloutView.h */, - 32A7FC18682D076FF7779592F09D9ED6 /* SMClassicCalloutView.m */, - 1E5B261DFFAFBF20E38675C589F334CD /* Support Files */, + BEB1EE0820D4CC88754367FD7B075D1A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1541CD75ED87DD98D3FB227978648F92 /* NSData+ImageContentType.m in Sources */, + 122A53C6A8CE37059A0CF1D111472CDD /* SDImageCache.m in Sources */, + 6EA0A6FE9CCD2699B6BEF34376E9649F /* SDWebImage-dummy.m in Sources */, + 88D0FB6855DF889BF0C5BE417F016C3E /* SDWebImageCompat.m in Sources */, + FA9B5DF268C458C80AA79A7FBD2A08BD /* SDWebImageDecoder.m in Sources */, + 920D6388A019BAE183B76F28E00899AB /* SDWebImageDownloader.m in Sources */, + E0B3B5EFD0E958737E6D09B5135C5ED9 /* SDWebImageDownloaderOperation.m in Sources */, + 6322A14CBDF57EF29695F820A403EDE2 /* SDWebImageManager.m in Sources */, + CDD28AC1BB0F07E4991F10641F3B3ACD /* SDWebImagePrefetcher.m in Sources */, + 4948EB328DD7614DF746912086A18D65 /* UIButton+WebCache.m in Sources */, + EAFAB542A9C64CFCE6CE22241E05F94A /* UIImage+GIF.m in Sources */, + 6EE9ACB0AB0E0CB81A490F499EBEFF29 /* UIImage+MultiFormat.m in Sources */, + F54EE04CAD7C3199596833B62C4C5955 /* UIImageView+HighlightedWebCache.m in Sources */, + FFB60CE26BC4B7CC1FB0A8E9DA386F70 /* UIImageView+WebCache.m in Sources */, + 29962679E9012751AD784D26C64074A6 /* UIView+WebCacheOperation.m in Sources */, ); - name = SMCalloutView; - path = SMCalloutView; - sourceTree = ""; - }; - 9D526D8FC420E85DC116401623B55A2D /* GLideNUI */ = { - isa = PBXGroup; - children = ( - 9F7FDCCFB6F765E955939AC3412E3FD9 /* AboutDialog.h */, - 6853448A3628EAC1116E6AF78A25E1E3 /* ConfigDialog.h */, - 3385A18479B75880DE010A2772BB6529 /* FullscreenResolutions.h */, - 8F1515158687796190C1EF96243E6A9E /* GLideNUI.h */, - 09E5B4348EEE6DE2928156FCF07670E8 /* Settings.h */, - ); - name = GLideNUI; - path = GLideNUI; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; - 9E66250E9CF32AEEFDED2C2A32F745A4 /* vi */ = { - isa = PBXGroup; - children = ( - 9B405C81D69384A18E8F08EDB915B086 /* vi_controller.h */, + D4EB3A51EE792791BF31DB977C1114C5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B2CD7F146E941A2FEB554A340AEA6FD2 /* GoogleToolboxForMac-dummy.m in Sources */, + 7CCF98713FAC347B5665DB0A0EBA4BE9 /* GTMNSDictionary+URLArguments.m in Sources */, + 48170E27A9CD820F7122972B07824567 /* GTMNSString+URLArguments.m in Sources */, ); - name = vi; - path = vi; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; - A003CC7FB4DB34CF3705CC830BFFEE92 /* SFML */ = { - isa = PBXGroup; - children = ( - A8186A9FDAF22B7A17447319E6445B3E /* include */, - A66CC749987443413F40678448E0733C /* src */, + EF7586674F4859C6764E29EA2044B8F2 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E074D1A2846CCE88FD92FE7C48E84DC7 /* GoogleAPIClientForREST-dummy.m in Sources */, + 979BF68DD04C06A1E5FDE74E4DFF8730 /* GTLRBase64.m in Sources */, + EE65DC50A0B1CA0F1BEAC525CDD71355 /* GTLRBatchQuery.m in Sources */, + 31C1F83D5453BE25A69D6F530B1C3485 /* GTLRBatchResult.m in Sources */, + 4F06E8B14A298FB8784196CF343DB7AD /* GTLRDateTime.m in Sources */, + C15FE401E462A35621D1B0D7DF14855B /* GTLRDriveObjects.m in Sources */, + D474348D385337E6C15FA2882009CCFD /* GTLRDriveQuery.m in Sources */, + 6388BF27A5D6E9361F14BDC2E8A91FC4 /* GTLRDriveService.m in Sources */, + EFE4A9D0F0193903B0E0A77D748730E2 /* GTLRDuration.m in Sources */, + 771975EAB71C3F761B56B03BC207C0E3 /* GTLRErrorObject.m in Sources */, + 2AFDBD64E02EF797395B3EF74E0179D9 /* GTLRFramework.m in Sources */, + DD46C14FD68C81F665E55EA792C141FD /* GTLRObject.m in Sources */, + 9D36135EF268512D3741FD2E84A0A2E1 /* GTLRQuery.m in Sources */, + 2E217A20F7C7C1D7C53B126599B2D971 /* GTLRRuntimeCommon.m in Sources */, + C41903AD7013A8B9709D3EC574FF9D21 /* GTLRService.m in Sources */, + 83F6461D78547A5588C070E6B410A693 /* GTLRUploadParameters.m in Sources */, + C42C9B4C5A5AA7B1FAC27F0346C87396 /* GTLRURITemplate.m in Sources */, + 2279896B50A50B4C9A000CAE3BBC2DD1 /* GTLRUtilities.m in Sources */, ); - name = SFML; - path = SFML; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; - A198D15970BC614EA89279CE55AC3FAD /* Bridge */ = { - isa = PBXGroup; - children = ( - E9ABB79C4907847141EE35556B95D962 /* MelonDSEmulatorBridge.h */, - FDCC581E502759182D92640030424D5F /* MelonDSEmulatorBridge.mm */, + F5C847D7C38A271171A22BD44ED2D420 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2F2C2EA78632BB9048F5263795044F99 /* Async.swift in Sources */, + 0F902FD3B3F3EB61AAFA0EDAA216082C /* Auth.swift in Sources */, + 057DC29811949C74F95EBE2A47E16E1E /* AuthRoutes.swift in Sources */, + 6CB3F385C5AFD6C39FF636EF8F74D549 /* Base.swift in Sources */, + 0A5B041392F1231BDA0914037B8B6EBF /* BaseTeam.swift in Sources */, + CF5D73E5BE9B54FCD4506E3A6FFEEA25 /* Common.swift in Sources */, + FE5E8A8B7F3BCE33EB8D3F30FC6EA75D /* Contacts.swift in Sources */, + 7862320A3BDF56117E8370BC5DE4CA62 /* ContactsRoutes.swift in Sources */, + B2E73A66333657C0A05A6E648769E5E2 /* Custom.swift in Sources */, + D6B469D930692388DEAE2344B8F39533 /* CustomRoutes.swift in Sources */, + CB35FBC058FF779B0B83E8855396A19B /* CustomTasks.swift in Sources */, + 10280022A3CBF6160BE28C558A400296 /* DBChunkInputStream.m in Sources */, + 38D4C8BD3E4119296D74F068DC51E56D /* DropboxClient.swift in Sources */, + F5FE77F59FDE92EF501527924AA38089 /* DropboxClientsManager.swift in Sources */, + E71F44F75AFAE601AA7FD1DCCC56538D /* DropboxTeamClient.swift in Sources */, + 6129064EEDFC7474818DA59795A85367 /* DropboxTransportClient.swift in Sources */, + 26B20A78E1B60A658311451A3BB103EF /* FileProperties.swift in Sources */, + 87C116D0C75B92C7AC773AC6DD85F710 /* FilePropertiesRoutes.swift in Sources */, + 8FC15C53AF28B4A5F498D945202ECF77 /* FileRequests.swift in Sources */, + AD6981DD3FBB16B3081752331E95C1E6 /* FileRequestsRoutes.swift in Sources */, + 304D6BE0EC8B6D9BC89E5A85E03B15F7 /* Files.swift in Sources */, + FB5FC08F181CCF992399DC063D0AEEEC /* FilesRoutes.swift in Sources */, + 07C7D61F257603F56AD7567D77549736 /* OAuth.swift in Sources */, + 7BBCB46893DAA515C72DC5B04718B124 /* OAuthMobile.swift in Sources */, + 05DCDFCC2E400C8D0BA4D09198B0F359 /* Paper.swift in Sources */, + 13742EFB3E00090A8B05BBFEA5CDE8C1 /* PaperRoutes.swift in Sources */, + 0D6CC9900723FE7D8E5605587928930D /* SDKConstants.swift in Sources */, + 04608DD42475D3BEBD1966E2123A8CC3 /* SeenState.swift in Sources */, + DA3E8AE59A56315380CD93F947614945 /* Sharing.swift in Sources */, + B98B34F84ACCB80A84CD6BECA631A3F6 /* SharingRoutes.swift in Sources */, + A3CBABD8EE55DB2CA7BBB79327926653 /* StoneBase.swift in Sources */, + BAF1DABDFECEDDACAA33BCDDFA56B68D /* StoneSerializers.swift in Sources */, + 94F9D153E3201F09DE9E11519492DE9D /* StoneValidators.swift in Sources */, + 187C3C01DEDAD23CE2ACA2F68E2DE93F /* SwiftyDropbox-dummy.m in Sources */, + 7844A134BA9685BB6B125475786D1D2C /* Team.swift in Sources */, + DD621F6F557AA577A3A3675D856790E0 /* TeamCommon.swift in Sources */, + 384DC61A55E068D0D6FE574B07C84B29 /* TeamLog.swift in Sources */, + 0D194F80A8C1BCEEBE70884CFA27AE66 /* TeamLogRoutes.swift in Sources */, + FB4E15371E7CCEDDBF32622DDCA3B5FD /* TeamPolicies.swift in Sources */, + 2D5DAC18AA31553D5BEA9ABAC93704E5 /* TeamRoutes.swift in Sources */, + AC48CABD7E17D3A1C3785B36ACE85525 /* TransportConfig.swift in Sources */, + 413810E840B979E86303D4F70E3C9426 /* Users.swift in Sources */, + F7DB23E528267E2D78C81293D3741C6C /* UsersCommon.swift in Sources */, + 5A7362F951C94088EF2D56EACB467611 /* UsersRoutes.swift in Sources */, ); - name = Bridge; - path = Bridge; - sourceTree = ""; + runOnlyForDeploymentPostprocessing = 0; }; - A1AEBC6FCC2871387212B92ED0ED45A9 /* decoder */ = { - isa = PBXGroup; - children = ( - 6A4BBDA95F0E46160F5DA36677CF018B /* pngusr.h */, - ); - name = decoder; - path = decoder; - sourceTree = ""; - }; - A1D53EFDF98713032130A867BDE33714 /* src */ = { - isa = PBXGroup; - children = ( - 860719187CBE960AF789BB9FF22F6C14 /* 3DMath.cpp */, - 1D0C245236976FA487C742D55853627D /* 3DMath.h */, - 5C1680E5AB2930ABB461E4B02FA12370 /* Combiner.cpp */, - 0558BB8C07E8F1FB0930619A2998EB74 /* Combiner.h */, - 6380B0D299E0305367127A145786FD9A /* CombinerKey.cpp */, - 2DD243A88249E6DCF61F368826C03255 /* CombinerKey.h */, - D6BC47B1B65C5BC8C50A004A072F8A2B /* Config.cpp */, - EBDD40755140DC9ABADF7939C8DBACE9 /* Config.h */, - 52CF76E5585ABDA5470FFD47A7A884C3 /* convert.cpp */, - 167590E49B4455FE4412AB737F2E748E /* convert.h */, - 3589E77615ABDBF3CF0EA3AB7C5E1D95 /* CRC.h */, - 3AA76236037E9FBA43FE5066105DCAA8 /* CRC_OPT.cpp */, - 729B8DEC37C5A417626DEBCDB5C13C65 /* DebugDump.cpp */, - 2BA97019C69B8E0B74C7FCAF09323FA2 /* DebugDump.h */, - 5956E4E49828D43A7B5542CF1E5B4707 /* Debugger.cpp */, - A5DE0B1C0467C130DD9CC22C1D122EDC /* Debugger.h */, - 4005F94E5B76C80D44EA7897028C3F79 /* DepthBuffer.cpp */, - 423CF889D534C377432C9CF4B4C9D5BC /* DepthBuffer.h */, - 324E96E22E51A6E3212EE2F235AB6824 /* DisplayLoadProgress.cpp */, - 2B330278331086A56BB545C3BA6BA37A /* DisplayLoadProgress.h */, - AB261C44EA772EEDDA15196F06238D47 /* DisplayWindow.cpp */, - D5060FFC2F442DC6820A90A77A582841 /* DisplayWindow.h */, - 1DD2C5713EAF063A8C397A183A28D39F /* FrameBuffer.cpp */, - 2D680FE7B2377E367551ADC298B6D1D2 /* FrameBuffer.h */, - 630E76E9982F336E68492B3A4E807B1B /* FrameBufferInfo.cpp */, - 8B35578B79FEC9A16A3E4269BBB3FC25 /* FrameBufferInfo.h */, - D122ED1B6CF59DF49BFB5F3708D5534F /* FrameBufferInfoAPI.h */, - AA7A4A8121BD105CCF35B3A9439144CB /* GBI.cpp */, - 34E8EDC1F667C75B98DF6B517C4D190B /* GBI.h */, - C1F370EE6E775263D2F455D399A21A6B /* gDP.cpp */, - BFC270FA492B80F26EE2D1971BDB032F /* gDP.h */, - 65C2DDEB846BC71435BB61A42D079728 /* GLideN64.cpp */, - D6888C59420839F1A4C9BFE9336F7FA7 /* GLideN64.h */, - 75A3CAD2D53900F2E82B7E98C83BCF2C /* GraphicsDrawer.cpp */, - EDB3D9DADFFA3C477901718D67DCB5CE /* GraphicsDrawer.h */, - 3D0E5148A5668D50387301D5037D6607 /* gSP.cpp */, - 568F36EBFBBE28420448B604FDBFEE24 /* gSP.h */, - 5049D42D1B896DD8D53F865547592C6E /* Keys.cpp */, - EC82FD320A0C3839759EC72B671260F7 /* Keys.h */, - A98C01DAD78582641541607E126B72FB /* Log.h */, - 163215F017360C0783BDE216E2383177 /* Log_ios.mm */, - C636BE691B0B5DBF12D3F61CF9E86972 /* MemoryStatus.h */, - B6FEFF8470EC4FA1F48C9E07912B9B60 /* N64.cpp */, - D94C9F0AD0FE08D4EE6CBA57F100804D /* N64.h */, - F0580B25207404969BA5267604ADBEFE /* NoiseTexture.cpp */, - 00C134CDE98F9675C63EC844647692DF /* NoiseTexture.h */, - A4DA561EFD34DE0379D02EC1F3D793B4 /* PaletteTexture.cpp */, - DE221800B54D7A157B8C6DA4FA6C36E1 /* PaletteTexture.h */, - EBF93D07F4B9DAD7347EC63599327763 /* Performance.cpp */, - 70B0F2F9BE58862F6DCF466C6E0C14C6 /* Performance.h */, - 54689C99B915B2658F5E3CDDF391C225 /* Platform.h */, - 85A0EC10CDB05B59BB67D8B32DADA738 /* PluginAPI.h */, - D9E9874C984615B07F0284BFA0B7360B /* PostProcessor.cpp */, - F6A3B301C991075D4B3FF42F509F52CC /* PostProcessor.h */, - A9E0566BD9FE840B89D179FC1DE98762 /* RDP.cpp */, - CB3D1E54D3B130DA4EF1097A244D531E /* RDP.h */, - 82A288A778CFC76070B7DE528F4262A2 /* Revision.h */, - C509EB92ABE121E822A092CA6A457763 /* RSP.cpp */, - BFCDF82DC04C88C75B3D8161C5D421F7 /* RSP.h */, - 0FEBA7E7855661C30CCD1E95CA29FDB1 /* RSP_LoadMatrix.cpp */, - 1D6B6F32ED9A76A6D328F910F3A57B70 /* sdl2_compat.h */, - 05B2997054DBA44DF1B57E3CDD3C472C /* SoftwareRender.cpp */, - 77F5D02F675FF6E4F52E24F369CF8D7A /* SoftwareRender.h */, - 59AF7DF04CB48EA607FA8D40E439C999 /* TexrectDrawer.cpp */, - A3EB9D3D3D24F94909D61899684B7A77 /* TexrectDrawer.h */, - C180A7FFF5472B31D3BCF75A810DEAEC /* TextDrawer.h */, - A0DD78048033AA404C173A30426FD703 /* TextDrawerStub.cpp */, - E9D381CEE93CBAC589C6604F72A9CC39 /* TextureFilterHandler.cpp */, - 076946BC07F0C6BD8CA86E1B64137C33 /* TextureFilterHandler.h */, - 2E1228101B4F23943718649665A9AC0E /* Textures.cpp */, - 7E3CBD7C48DB98A30F4405C80F7EAA1F /* Textures.h */, - EC60C36FFBCE93CE35DCC1994E934E51 /* Types.h */, - BAEDA8D403E529E72121F8EC6A91556E /* VI.cpp */, - 1D8E8059BB188FA2A51AA0D760767324 /* VI.h */, - 478DF5F42EBCD65023A3109A637FC3FD /* winlnxdefs.h */, - AC15043F6EF032DF3E7AEDCD53E4227D /* wst.h */, - 114EDBAF94C431C6683F8FB874F521F0 /* ZilmarGFX_1_3.h */, - A711E43BDFD281D49F7ACEEACA63ABDD /* ZlutTexture.cpp */, - B5D0963AEC82F7790AF09E7C8A829348 /* ZlutTexture.h */, - 5343B0CF242C9C0144DB4388B0551DFE /* BufferCopy */, - 5BC5CCFB87476B25558EEA50182342DF /* common */, - F48F6D1E2D5CCD3576299C9CAE1BF550 /* DepthBufferRender */, - 7AB7113400CF5409B7283CB5902E367E /* GLideNHQ */, - 9D526D8FC420E85DC116401623B55A2D /* GLideNUI */, - 78E6ACF116049CF6D9E180767B411F7E /* Graphics */, - 3BADE1B6FD7BE2FE9645CB603A786468 /* inc */, - 426A608862B6711311B1B7B3A45DB83A /* mupenplus */, - F65BED4C3E6F44307F1A31C288461A90 /* osal */, - A321EA7BD2B82B8E2878A6A2BBE83ED3 /* uCodes */, - 6CFEAB67407CA6E204AC07CFA5178CAC /* xxHash */, - ); - name = src; - path = src; - sourceTree = ""; - }; - A2AB43C2E133F6467E8CD2C769B4726A /* Bridge */ = { - isa = PBXGroup; - children = ( - C18B6C47E8288613C0286D154B5B3E87 /* NESEmulatorBridge.swift */, - ); - name = Bridge; - path = Bridge; - sourceTree = ""; - }; - A2D08D2E670D662B9B6E2E1E0B9276B9 /* libgambatte */ = { - isa = PBXGroup; - children = ( - 7E20B36CA33D1F1A9C76C73567E5DCAE /* include */, - 087AE74B19D3349B2EEBC310C1ED991D /* src */, - ); - name = libgambatte; - path = libgambatte; - sourceTree = ""; - }; - A2F673033B47246E1C79E13788F3F764 /* Types */ = { - isa = PBXGroup; - children = ( - 21C17C6276F45AA0020623DBD9A51E94 /* GBCTypes.h */, - B3498CD97929F748AC14046B1A226AA7 /* GBCTypes.m */, - ); - name = Types; - path = Types; - sourceTree = ""; - }; - A2F8DB13F493F709ADC089D7E36C3ED3 /* GBADeltaCore */ = { - isa = PBXGroup; - children = ( - EC196E2AD3733D249167F1AC9B30712E /* Standard.deltamapping */, - 0B348EFA5E7998F230B209FD6C6FF433 /* Controller Skin */, - 8BB28772DB0C78E431BECC9145244776 /* GBADeltaCore */, - 3AE88A74464A60A2942101006AED0A4A /* Pod */, - A003CC7FB4DB34CF3705CC830BFFEE92 /* SFML */, - 25AF69533EA9D363E0F62101B8BF962F /* Support Files */, - FE67741F5455D8B10C0818386FDC7738 /* visualboyadvance-m */, - ); - name = GBADeltaCore; - path = ../Cores/GBADeltaCore; - sourceTree = ""; - }; - A321EA7BD2B82B8E2878A6A2BBE83ED3 /* uCodes */ = { - isa = PBXGroup; - children = ( - B874304CF42693BC245EEFD1ECE4AEDA /* F3D.cpp */, - F74650D4B8781AB8E64A8CA694F1307D /* F3D.h */, - BC6E7572622F53C9063BA36BA8EA48A0 /* F3DAM.cpp */, - 5B6C58DBDB290E47F12CC1074D395C26 /* F3DAM.h */, - 31CD50A197BC5998E93424311832926C /* F3DBETA.cpp */, - A3AFBD4D6DD33E13C3465A15306A2B00 /* F3DBETA.h */, - 517EE6F5463DA943A8AC65590C5ACEA9 /* F3DDKR.cpp */, - EBBF0F52DC2647A34571C5A29A7288EC /* F3DDKR.h */, - 8EDC4DC75F87EDD99128DAD5E72F2E01 /* F3DEX.cpp */, - 9F4D5AEB26500088CAA863CD9E65320E /* F3DEX.h */, - BCB81111BE67E8E2D3B9FE4038E241C5 /* F3DEX2.cpp */, - DA8B343AC9C1338C3570E381AFDEE8A9 /* F3DEX2.h */, - B9DA21EF87A522A040A130E53DCC3258 /* F3DEX2ACCLAIM.cpp */, - 886EFC64C20F8C4DE363F570FCBCA6F0 /* F3DEX2ACCLAIM.h */, - B0047D3E45496267DC35BAFA423C7A92 /* F3DEX2CBFD.cpp */, - 7985DB3FC96A17FBF86B4FC18FA4AC5E /* F3DEX2CBFD.h */, - 57981339AD97798C2EE622F6A4E6AE22 /* F3DFLX2.cpp */, - 1E1FF47BDDB001374C97096ED762AAC7 /* F3DFLX2.h */, - 5332718FF5ADABA45AB6CDD9477B7DCD /* F3DGOLDEN.cpp */, - 2FEC8E53FAA570C8D081ACFD7722213C /* F3DGOLDEN.h */, - E5EEBBDBFD0865D20C8937D1EBDD4AB6 /* F3DPD.cpp */, - B77443AF8AB2CB055594552F3A4DF312 /* F3DPD.h */, - 881946A97328B48666124F0EF376FC0E /* F3DSETA.cpp */, - 5B4979E3A36561CF460398CE358B49DD /* F3DSETA.h */, - 2BAA7BE16165118C70558D66AC78C004 /* F3DTEXA.cpp */, - ED21FF34110471A9F0568E2CE0E2248C /* F3DTEXA.h */, - 43AE2C70BA23A5104C95801EED5A171A /* F3DZEX2.cpp */, - 1B78E7619C1EF2E22D6D66466D28CA5C /* F3DZEX2.h */, - 5EF0D93844E56CDB9DAD64F21F90D278 /* F5Indi_Naboo.cpp */, - AC88DE94FE5CA1A718BDFCEEEEB04A8D /* F5Indi_Naboo.h */, - 571EC049651D9B776F745DC16B28D706 /* F5Rogue.cpp */, - 4EE8E7F1C3909E4079692F784A1BEC6B /* F5Rogue.h */, - ADD7C8EFEAF388836613108B496AEB00 /* L3D.cpp */, - A270CCA7A4DB147588E240BAB9CE84A7 /* L3D.h */, - 6D5D26B79B3CFF7C1E3A7401D9FEACA3 /* L3DEX.cpp */, - C62697CDB1C461E116CFCE24721ACFE5 /* L3DEX.h */, - F361DBAEEABA43BEC6C118A99F58783F /* L3DEX2.cpp */, - D843AF4955FB13CED7AC2A50E53B88F6 /* L3DEX2.h */, - 08801BA2C31D8CAE35C750FC3E0EDFC6 /* S2DEX.cpp */, - 02A3B26221034C420A16AB2FF912AEF2 /* S2DEX.h */, - B8C92AF7E7FC5A48D14201B637C3E202 /* S2DEX2.cpp */, - 538E8E8B075647A2A73DB019D234F843 /* S2DEX2.h */, - 080BAE04D1C3F4FBE4B0C76AF2092F86 /* T3DUX.cpp */, - 72FDE1C782E5DEEB2BEEA74E0C910FBC /* T3DUX.h */, - 526F4329EA81C96890ED9ECE2F8C7681 /* Turbo3D.cpp */, - F8A7678C2D0250B6A762204476642250 /* Turbo3D.h */, - AC18F7C57EEA5823F6931A4F4DC3D8C2 /* ZSort.cpp */, - 002FAC5A5D04FB9C83E9E5A45031CCFC /* ZSort.h */, - 9974973908E60B47C73C05DC6F615D72 /* ZSortBOSS.cpp */, - 68D4AC5CC44BFF50F55D374F5A256A23 /* ZSortBOSS.h */, - ); - name = uCodes; - path = uCodes; - sourceTree = ""; - }; - A5A6C4B9BFAA7FF0C7AE09333626CD3E /* sdl */ = { - isa = PBXGroup; - children = ( - 6867B0D264A10EDDE036F053E3ED4D34 /* debugger.h */, - 143669DF461A16A9179177725827248D /* expr.cpp.h */, - 7683944BD0D3CE9190CEC886A484F91A /* exprNode.h */, - CEF6999D9AC220EEF9CDCF5DC198B857 /* filters.h */, - 92826FF6C95AEC7E23536C6230E33DFA /* getopt.h */, - 91A8104A8577AC41EB121AEA616EA3E6 /* inputSDL.h */, - 8B7BB49B7EB87815D2DD184295B7BDED /* text.h */, - ); - name = sdl; - path = sdl; - sourceTree = ""; - }; - A645D23A63C46AB490DF9816C20F80A3 /* mi */ = { - isa = PBXGroup; - children = ( - 821220B8544FBE32E0038B8AF495F752 /* mi_controller.h */, - ); - name = mi; - path = mi; - sourceTree = ""; - }; - A66CC749987443413F40678448E0733C /* src */ = { - isa = PBXGroup; - children = ( - 7F36CEA654897B58341774FF289042CB /* SFML */, - ); - name = src; - path = src; - sourceTree = ""; - }; - A6FF7363E781344B08B07ADFE185C70A /* Extensions */ = { - isa = PBXGroup; - children = ( - C74EDB2CEE56DAB2BBA76496AD54D79B /* PropertyGroup+Harmony.swift */, - DF4A1EFB2AC9B32C86EF2EBC32CA55E6 /* RemoteFile+Dropbox.swift */, - 13ED6773C3785C3EEFA54FC5AF0BEB9B /* RemoteRecord+Dropbox.swift */, - 13B48701B89DA51AEFCB1189DD06B7B5 /* Result+Dropbox.swift */, - 400FD1065DA525FF7593C6190E7DB593 /* Version+Dropbox.swift */, - ); - name = Extensions; - path = "Backends/Dropbox/Harmony-Dropbox/Extensions"; - sourceTree = ""; - }; - A8186A9FDAF22B7A17447319E6445B3E /* include */ = { - isa = PBXGroup; - children = ( - 64B9A9935D687DBE8ACB68CBC927788A /* SFML */, - ); - name = include; - path = include; - sourceTree = ""; - }; - A85CC4D6E3740B86D535BAF06D6C0DC3 /* memory */ = { - isa = PBXGroup; - children = ( - 57DDB20834166ED732D5AE074578B519 /* memory.h */, - ); - name = memory; - path = memory; - sourceTree = ""; - }; - A9773DCC1AC7EF19B01ABF2FAA7469D2 /* MFi */ = { - isa = PBXGroup; - children = ( - A604EDBD0ED6BCB60B4666DD06603598 /* MFiGameController.swift */, - ); - name = MFi; - path = MFi; - sourceTree = ""; - }; - AB78201AB604D95E69BB3E33EC27C314 /* include */ = { - isa = PBXGroup; - children = ( - 2446F97C02AA807C685688B670B100E0 /* boolean.h */, - 6E1607B169D526DA6008EF98D01686F4 /* clamping.h */, - 88F90D0052D3F80B4BBED7CF58CAFE79 /* filters.h */, - F344EE5A9EBF490A69CDCA61BB37D194 /* libco.h */, - E4BCA6B4ED56A16E766A6B739A0AB217 /* libretro.h */, - A0B8B2EE833AD41312D3D1F45FEA8F45 /* libretro_vulkan.h */, - 562759128EB09E82B9ECE5D393FD8A80 /* memalign.h */, - 62E7F9741F9B8BABE8B88494215167D3 /* memmap.h */, - 7644554091000C52315F1623FF43785C /* retro_assert.h */, - 7C573C73FAF77126C47AACABCE05AB30 /* retro_common.h */, - 05349F18D04F62BCDDD9991693C8485D /* retro_common_api.h */, - B5F7BAB167C49E106A6AA25C9C7B97EF /* retro_dirent.h */, - 58F784152DF099B1A4B2C9C883708880 /* retro_endianness.h */, - C966592CD4157C1D20CE1334FB18D992 /* retro_environment.h */, - 867234B84A6A4263C6FCF1AEA412C255 /* retro_inline.h */, - 19F3233296ECF54009C07D09EFA3CD62 /* retro_miscellaneous.h */, - 445C183225EFC758533D7B90AEC6A60B /* retro_stat.h */, - 81A75C53653505A79E3041800AD590E4 /* rhash.h */, - EE38714633BF06856461F3CEC3702699 /* math */, - ); - name = include; - path = include; - sourceTree = ""; - }; - AC59D5166EA862BE2AB55FCCA4AAA2E7 /* Inputs */ = { - isa = PBXGroup; - children = ( - 38906166584FA7AD168B640076316C3A /* AnyInput.swift */, - F76E0CFC8475B8821C6FB3C2660544DD /* StandardGameControllerInput.swift */, - ); - name = Inputs; - path = Inputs; - sourceTree = ""; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 0B8608D70F38B7735930069411EE899F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SDWebImage; + target = 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */; + targetProxy = 8588E90842F29563C6A32A88110607E1 /* PBXContainerItemProxy */; }; - AC9EEBCB7905D7289F5D1276B435469A /* board */ = { - isa = PBXGroup; - children = ( - 652BD506823466AE51AF373E88943D34 /* NstBoard.hpp */, - F3184A4B6B59C416EF7CBD384DF644AF /* NstBoardAcclaim.hpp */, - 41080B7DCEEB1F472E82B66096228A24 /* NstBoardAcclaimMcAcc.hpp */, - 5918E695FD4E4ACB917EEEB1508D285D /* NstBoardAe.hpp */, - DE28AC43CC05A2A18BD33834DAD68546 /* NstBoardAgci.hpp */, - ED250D313A76B9709F1774AE007A3EA7 /* NstBoardAve.hpp */, - FF9EEB9B0C1C0002A7675C4264080D00 /* NstBoardAveD1012.hpp */, - 7EBD31893D413B13A5423B498193DD47 /* NstBoardAveNina.hpp */, - B76DD920CDBACABC13B3026F71CCE1EA /* NstBoardAxRom.hpp */, - FF9F20847DEDE22F9482DF5E072188A8 /* NstBoardBandai.hpp */, - 9E5D25B5C7342ECEF43594F75E916A6A /* NstBoardBandai24c0x.hpp */, - 0822A93FA2FE0A999BF470D0E75D5B09 /* NstBoardBandaiAerobicsStudio.hpp */, - E8CC4542B4D5A65D56F8C27DF076F553 /* NstBoardBandaiDatach.hpp */, - 4D504D25811EFE16E14FCE0763D758F7 /* NstBoardBandaiKaraokeStudio.hpp */, - 07492CA726F6504D31BF464E3BA6CF79 /* NstBoardBandaiLz93d50.hpp */, - 35A600AC8729425CB58B419068B7AF93 /* NstBoardBandaiLz93d50ex.hpp */, - 1157E342C2B03EE058136AE3F2A86A66 /* NstBoardBandaiOekaKids.hpp */, - 6A961F74ADE61500A3E62672063A3386 /* NstBoardBenshengBs5.hpp */, - 817726660084D909C839C2AC4F59B79E /* NstBoardBmc110in1.hpp */, - 2E9BD08F2470A7904235A81A69B7B698 /* NstBoardBmc1200in1.hpp */, - F2A83A842DF214DF009C106E4C8C2F9D /* NstBoardBmc150in1.hpp */, - B60D5BFD804E4CAE6D1316C0FB20DC96 /* NstBoardBmc15in1.hpp */, - EA5B505D84672E421965B4ED4DA13A4C /* NstBoardBmc20in1.hpp */, - 0598CBE3ED6664991B6C32DEF333DE72 /* NstBoardBmc21in1.hpp */, - 325EDE94F2AAA53B3F132A5F1C792A9A /* NstBoardBmc22Games.hpp */, - BDA27BC884354F2D08D2AA05968914C7 /* NstBoardBmc31in1.hpp */, - 37D0BABBA376987F2CC8B03FCC78D43C /* NstBoardBmc35in1.hpp */, - 8F944213B654D98DA43EE01ACF70AB4D /* NstBoardBmc36in1.hpp */, - 9AC563A650C1757E513BD89868F66EC5 /* NstBoardBmc64in1.hpp */, - 300B81B7400D637EF3E0F11DA2B20A50 /* NstBoardBmc72in1.hpp */, - 15B023844982AA4873AD8A5647C6E34E /* NstBoardBmc76in1.hpp */, - A8ED31574ED6705EB82A344C14221E7C /* NstBoardBmc800in1.hpp */, - 5FC0750A805444A39AFBA65B400EF63D /* NstBoardBmc8157.hpp */, - FAE24C1E39D633454B1C309D12775BC5 /* NstBoardBmc9999999in1.hpp */, - DDA8D710ED23A691D5634188624CAE95 /* NstBoardBmcA65as.hpp */, - 559D85DC3375B82B2C7252ADFA8534A9 /* NstBoardBmcBallgames11in1.hpp */, - 26032F2CDCDD25EA1AC74BCB6470AFD6 /* NstBoardBmcCh001.hpp */, - E3FF0CCAB2579FB3AFDE9E9E74A8CCA6 /* NstBoardBmcCtc65.hpp */, - 5402C01EEBC4DB22397AB4C3607A3DD3 /* NstBoardBmcFamily4646B.hpp */, - B21CEF422138419213CDA51B12B7D724 /* NstBoardBmcFk23c.hpp */, - 1136B767C9398A2A3AD79E44826DF2CA /* NstBoardBmcGamestarA.hpp */, - 7F348EE71D161DF0BF0008D88C55B158 /* NstBoardBmcGamestarB.hpp */, - F7042EAD352C2910B271E66506CE6D47 /* NstBoardBmcGolden190in1.hpp */, - FC8658703FB896059E27A58D32C6B0C5 /* NstBoardBmcGoldenCard6in1.hpp */, - 00863A5438B87F6F408D32AE14DC8C72 /* NstBoardBmcGoldenGame260in1.hpp */, - 1F559D0FF821293E41F2B18444C1B6FB /* NstBoardBmcHero.hpp */, - 0214CC9FB94D7F62C618FF6E2B0545AF /* NstBoardBmcMarioParty7in1.hpp */, - 0A0B32E646BE59A8BE0C72BB1BF1158C /* NstBoardBmcNovelDiamond.hpp */, - 5C0C33A889F868B983A26B0049957E27 /* NstBoardBmcPowerjoy84in1.hpp */, - 78280DD54D59D46BBD47EEAEC0544ADB /* NstBoardBmcResetBased4in1.hpp */, - CCC95DC3146675A3867C7281C91DDA27 /* NstBoardBmcSuper22Games.hpp */, - 99A2A534EF6CE4D5F68542D66A356B39 /* NstBoardBmcSuper24in1.hpp */, - 8C57550523D412EE8A09B868B53E861C /* NstBoardBmcSuper40in1.hpp */, - 9DE70241C62510EEE3541EEE817748AB /* NstBoardBmcSuper700in1.hpp */, - D1DB056A6C494B4F71B95CDE5D8A8D2C /* NstBoardBmcSuperBig7in1.hpp */, - E7E0502382D7B2645187BA9806D311F6 /* NstBoardBmcSuperGun20in1.hpp */, - 7230F1D1BDFBD1374C8E106343F7AA93 /* NstBoardBmcSuperHiK300in1.hpp */, - 94100AFE450517301A8346E816B27917 /* NstBoardBmcSuperHiK4in1.hpp */, - FDA103324CE11F224C8C8B8A2BC86352 /* NstBoardBmcSuperVision16in1.hpp */, - 210DF52D3BDE4D618799B6FC3A8A4AAE /* NstBoardBmcT262.hpp */, - 633DEC5FA3A9C9A21BFDA859C021697A /* NstBoardBmcVrc4.hpp */, - 479FB40E896E9E50A08416990B824A5F /* NstBoardBmcVt5201.hpp */, - B544AFAD35F7005CA06C8F02672B2757 /* NstBoardBmcY2k64in1.hpp */, - 21A579DB6758386B94532FEDF1A6AE83 /* NstBoardBtl2708.hpp */, - BCB329591B61D72A62086E1CEB91A234 /* NstBoardBtl6035052.hpp */, - 6EEA2D28001AC05E9EFB187853B6CD71 /* NstBoardBtlAx5705.hpp */, - 6E79A1DD149F886D0C22350E0E1FD947 /* NstBoardBtlDragonNinja.hpp */, - 9474F9684F9F50E4DCFF007A45288D6E /* NstBoardBtlGeniusMerioBros.hpp */, - D4908C00AB651611F3D7B3F87D1DB074 /* NstBoardBtlMarioBaby.hpp */, - D5750EF90778F9C6487BCBA814D242A9 /* NstBoardBtlPikachuY2k.hpp */, - 2352F7F769B34DBB1B6F8C970C8FFDBE /* NstBoardBtlShuiGuanPipe.hpp */, - 1860E76F985D5A714D179B33FFD5BB6C /* NstBoardBtlSmb2a.hpp */, - 716BA9F3B51C44F2249E901BDCAEE818 /* NstBoardBtlSmb2b.hpp */, - E09088CC17E0FE2F8507057759ED8495 /* NstBoardBtlSmb2c.hpp */, - 5D57A60C924E146594EED858F1420616 /* NstBoardBtlSmb3.hpp */, - BBF68C9FA5BA309DF08CDED46313E187 /* NstBoardBtlSuperBros11.hpp */, - 517772731C85405CED9A4E125D581547 /* NstBoardBtlT230.hpp */, - BDB57DA469C8E283DC56CC0282A9DA80 /* NstBoardBtlTobidaseDaisakusen.hpp */, - 3C61A8EC43CC81E91FC288BD7D6390AF /* NstBoardBxRom.hpp */, - C3864406D458455C70ECF31C7CC64D42 /* NstBoardCaltron.hpp */, - 9D91813C4F4C683822BE674046C15A1C /* NstBoardCamerica.hpp */, - 179B3F52FCBDACDFD58910B37E4E0805 /* NstBoardCne.hpp */, - 4BF3A8BBCEC6D8B433214DF1CD244933 /* NstBoardCneDecathlon.hpp */, - DA01508C45515F583F048D703F3BC886 /* NstBoardCnePsb.hpp */, - 5305479BCD5C09A431DF19FBA089DFBC /* NstBoardCneShlz.hpp */, - 3FBE42827351126539CE750010EC25AB /* NstBoardCony.hpp */, - E3571A8F7620CB66A3CD66284D754F86 /* NstBoardCxRom.hpp */, - F472A7F26975598CDEE2C77D9BA6E936 /* NstBoardDiscrete.hpp */, - A74A97B96B6E21A13679A8B0213D16D2 /* NstBoardDreamtech.hpp */, - 6FB1E466233B447E59EF69EB695E2E30 /* NstBoardDxRom.hpp */, - 7B9E6B769CA9E78BEDB08A1DAF5427BF /* NstBoardEvent.hpp */, - D029C45D06455A369C00E2CE5B7A49A2 /* NstBoardExRom.hpp */, - D7F113329CD0D192E2E394BC6F4F3A8E /* NstBoardFb.hpp */, - 6347BA8D5567D3CC98AB327590B8EDDB /* NstBoardFfe.hpp */, - FD926A875D2FBDFA56F862E68AF4755C /* NstBoardFujiya.hpp */, - 54D876A40A6A7E60C31B36425AE20C82 /* NstBoardFukutake.hpp */, - 80755B82AF70446405D291677D326580 /* NstBoardFutureMedia.hpp */, - F7BC33DDA3BE006651A2F49C655123F8 /* NstBoardFxRom.hpp */, - C211F03F09C2912EFA66F80B077FE66E /* NstBoardGouder.hpp */, - C9DBA67E0E17459ADEA92DE98CCFABB5 /* NstBoardGxRom.hpp */, - 2FB72E636AC0F6FF43B32798B4DD0881 /* NstBoardHenggedianzi.hpp */, - 63BE33E737F365DA6A02C5EC800FEFDA /* NstBoardHes.hpp */, - 291B51FBCA081F45FC6BADCAFDAA2803 /* NstBoardHosenkan.hpp */, - 79DDBFEC7F39DED56370617F46D7CD96 /* NstBoardHxRom.hpp */, - 053764ECC5FA7EC02E6C16D5E7C9767C /* NstBoardIrem.hpp */, - 94FE76DE5D5A9568223AB04C135E60EF /* NstBoardIremG101.hpp */, - D590C9367D4C2F143D62824E62B38A22 /* NstBoardIremH3001.hpp */, - 893F529C934E0F4CA0C682139D54684F /* NstBoardIremHolyDiver.hpp */, - 705E5C1967661B00DE5A61BFC7EB6DB9 /* NstBoardIremKaiketsu.hpp */, - 23FF403AF7501E405FCAF240422E16C9 /* NstBoardIremLrog017.hpp */, - 5A649205CAC73CCB700EBD96CACB950C /* NstBoardJaleco.hpp */, - 6AF170B2C4B6266F17CC25ABB8608BBA /* NstBoardJalecoJf11.hpp */, - 1CADEE479AF35E2F20B5FC8613605E71 /* NstBoardJalecoJf13.hpp */, - 2035E24735C1ED1DB606DC2E8C6F2436 /* NstBoardJalecoJf16.hpp */, - BA694E5052500D363828649B87D607DB /* NstBoardJalecoJf17.hpp */, - FADAC750C6926F320BE0D25936C925C3 /* NstBoardJalecoJf19.hpp */, - 4C0C01E2CF695B469D1C56006652923F /* NstBoardJalecoSs88006.hpp */, - 7C39EC3D5796C91B27BD3B48652EE7CF /* NstBoardJxRom.hpp */, - 4280888EFBE38CD9BA1722AA8B5E21D7 /* NstBoardJyCompany.hpp */, - 78A47CFC26B9E18F69F6B51E131740AC /* NstBoardKaiser.hpp */, - 9F8650AEEA339AE2603DE32411A2A066 /* NstBoardKasing.hpp */, - AB6205A6322E0AB9DB06D727D66FF2CD /* NstBoardKay.hpp */, - 60EC1FFA54B3CB9610A26D47F7FABB34 /* NstBoardKayH2288.hpp */, - 42DCB88F5D41617CB9F6F1ED41F3709D /* NstBoardKayPandaPrince.hpp */, - FEF94987AE07AD572EFB75A21E59A063 /* NstBoardKonami.hpp */, - AE9168EADF3CD8BC34051068BDE4F19B /* NstBoardKonamiVrc1.hpp */, - 2EE9DF9D26033CECBB33A2130F905155 /* NstBoardKonamiVrc2.hpp */, - 0570E12C39DA7D48B666617DB5662E12 /* NstBoardKonamiVrc3.hpp */, - 0DC58C591AA7CBEA564DEC28E4AE8B2F /* NstBoardKonamiVrc4.hpp */, - 491D48215F2F54CB9D3A315B9995CD71 /* NstBoardKonamiVrc6.hpp */, - 25F655585E934D6DD3B75AD1A4E714AD /* NstBoardKonamiVrc7.hpp */, - DF0D847592520B9426DAA5EF56CB4F1F /* NstBoardKonamiVsSystem.hpp */, - 552496FA7E1F325B9859522705BE8C3B /* NstBoardMagicSeries.hpp */, - 8F019EECEDEE94193FB93DF2C97DADEF /* NstBoardMmc1.hpp */, - 6D100997AEF49344BE7D24310D2FC672 /* NstBoardMmc2.hpp */, - 60F325456B3141F39FABAA72D38826A9 /* NstBoardMmc3.hpp */, - C89942340BAE2264EC7E57948B2C55A8 /* NstBoardMmc4.hpp */, - 856D83B78BF97FC7E7AD812C3612DDD2 /* NstBoardMmc5.hpp */, - B263B5B7D35ACDCD3A0F476C52C958E8 /* NstBoardMmc6.hpp */, - D081B4DEFA5B2B6ED41073152390B9BD /* NstBoardMxRom.hpp */, - AF9799175C20C8B2FCE36FED74E47B01 /* NstBoardNamcot.hpp */, - 1C4ACD563722F3A385772CBF168AE707 /* NstBoardNamcot163.hpp */, - 486BC9257EA9F392E1D90CC596A28F8E /* NstBoardNamcot175.hpp */, - B8EFAAF62D9F6506CF1FFF94ADE1F7B9 /* NstBoardNamcot34xx.hpp */, - E14AA6A495A5CBF04B761FDA07B1F753 /* NstBoardNanjing.hpp */, - 4C6751C1E3ED18714B1C75FC69A15785 /* NstBoardNihon.hpp */, - DFA7713F9936F057BB5AE713D7A02EA7 /* NstBoardNitra.hpp */, - A29756AE75089ADED0172EA76A672857 /* NstBoardNRom.hpp */, - 8DCF1A928BFC980E7B498F5BD31A61C4 /* NstBoardNtdec.hpp */, - 681169D12055F83F0257E3609FACE84F /* NstBoardNxRom.hpp */, - BCE3D49C34BE975F12EC26CFBD244645 /* NstBoardOpenCorp.hpp */, - 44F35ECB9F98A2E0FA83097FDB6C87DF /* NstBoardPxRom.hpp */, - F65A5389BBD3EAB8C0EAB4FA39D5126E /* NstBoardQj.hpp */, - A323D3FC096EB17C3AD877ACACBE572A /* NstBoardRcm.hpp */, - C8903E4660C304885FB98A73B44961D8 /* NstBoardRexSoft.hpp */, - 3F1CD3AD3F0B4F2ED1A6C959A582EF5D /* NstBoardRexSoftDb5z.hpp */, - D834A7F4976AEDBB55317196D3E8BD3B /* NstBoardRexSoftSl1632.hpp */, - F5E76C4046670A82D2A4B977C8535413 /* NstBoardRumbleStation.hpp */, - BD838C95DCFBB13B57FA390E013E6C96 /* NstBoardSachen.hpp */, - B9742202633EE18C3808232AF7BFDA3A /* NstBoardSachen74x374.hpp */, - 39159273D372AC23A0B301B651647A48 /* NstBoardSachenS8259.hpp */, - F3B9A34A308C1DACD3B00CBA4D04F41F /* NstBoardSachenSa0036.hpp */, - EB58526AAC220B4F4D32EB70FB9FA1D9 /* NstBoardSachenSa0037.hpp */, - 034408F49E69BBF4869CD4B2ED4A721E /* NstBoardSachenSa72007.hpp */, - 657039F64E9AA518C0F3A7833EE261D0 /* NstBoardSachenSa72008.hpp */, - 71FEA83CC74433938BD5065348F02C5C /* NstBoardSachenStreetHeroes.hpp */, - E5D97FFBC569CFB91783FD1DC1098F7D /* NstBoardSachenTca01.hpp */, - 12FF380A8BE99A902168B4E06D894342 /* NstBoardSachenTcu.hpp */, - 96BCD6BE0EB86E1B5F57CD3844166D67 /* NstBoardSomeriTeam.hpp */, - 4F56F120D08F0E96F69A395392A95956 /* NstBoardSomeriTeamSl12.hpp */, - 70D4235B8815A8BC69AC2EAA39D4C907 /* NstBoardSubor.hpp */, - 608A5557EE5C1ABACC1B811CC16319EA /* NstBoardSunsoft.hpp */, - A8ED0088CB2FADEB504C3D5066A2A331 /* NstBoardSunsoft1.hpp */, - CBF54EAAEEF559EFA0CAE545447FBC66 /* NstBoardSunsoft2.hpp */, - B16D65599391107B17547743504F3F09 /* NstBoardSunsoft3.hpp */, - 82B37B22062D50601B309F8686F80EA9 /* NstBoardSunsoft4.hpp */, - E478395B4DE98AA28B40B0BB0713E520 /* NstBoardSunsoft5b.hpp */, - C3B07408C73641A82FD1486ACA9BE491 /* NstBoardSunsoftDcs.hpp */, - 9349A6776672039326D8D1986343C528 /* NstBoardSunsoftFme7.hpp */, - F6053E86238B20D5AB5C0D016FD76C54 /* NstBoardSuperGame.hpp */, - 0B9FD1831402AB15F5D8EF911049BFF1 /* NstBoardSuperGameBoogerman.hpp */, - 97234F66C0EE37E07C7A12FE8D652606 /* NstBoardSuperGameLionKing.hpp */, - 9B04E2521633106239083E05C1A35E15 /* NstBoardSuperGamePocahontas2.hpp */, - CF920BF2EAB09495473F0485AD759F94 /* NstBoardSxRom.hpp */, - EBA3E6C841874984E34D25098CCFA20F /* NstBoardTaito.hpp */, - E95EEA8B8765EBE1C1BBA81D951B9C66 /* NstBoardTaitoTc0190fmc.hpp */, - 27125390BE455FB3FC94E986AE8B5EBC /* NstBoardTaitoTc0190fmcPal16r4.hpp */, - 3B304C6B796AC11108B515F010477479 /* NstBoardTaitoX1005.hpp */, - B6A9060BBDEC30B79FCD8A7D0B80BF8B /* NstBoardTaitoX1017.hpp */, - D6DFFB6445DBBD4E7976B80BFB7D6BD7 /* NstBoardTengen.hpp */, - E820CA086154606549F50A37722699CD /* NstBoardTengenRambo1.hpp */, - 0C601C48353B572B239FC3A6CCEDB8A0 /* NstBoardTxc.hpp */, - D1FD02EE9A04D0E6FCD95A38B0D7368A /* NstBoardTxcMxmdhtwo.hpp */, - 35DC0A8D32E14C0B0344081D704501F9 /* NstBoardTxcPoliceman.hpp */, - 6B2B7F80DED1FE8F81ED796983E929F9 /* NstBoardTxcTw.hpp */, - 02D064A7B1B32EE0399D71E19B46C190 /* NstBoardTxRom.hpp */, - 96EA1B6F86E72E7EE50B4592F4B566BD /* NstBoardUnlA9746.hpp */, - 6049064554B6F5ECC817A62AF2817D4E /* NstBoardUnlCc21.hpp */, - 836A85D3F37DD955B50893B23E16B446 /* NstBoardUnlEdu2000.hpp */, - B03F08C3C42F47C763E6A4F9BA15FDFB /* NstBoardUnlKingOfFighters96.hpp */, - 3F77E3426079D9FF35C4855C3733C861 /* NstBoardUnlKingOfFighters97.hpp */, - 8CE14E555F7821AFDC5671E041375AA7 /* NstBoardUnlMortalKombat2.hpp */, - F242D59C89F73A5B3BF7834E21E3A571 /* NstBoardUnlN625092.hpp */, - 90991BD2C4BD55D140AC55B44C35FB69 /* NstBoardUnlSuperFighter3.hpp */, - B838FF4D494014F467183E5F8652A99B /* NstBoardUnlTf1201.hpp */, - F99896E3ECBE432B5D1400DC207AC694 /* NstBoardUnlWorldHero.hpp */, - 1601BA61D97D812F7F0409F9B40B1A8E /* NstBoardUnlXzy.hpp */, - 0925941FA67E8AA00BA0DAD59E31EDB1 /* NstBoardUxRom.hpp */, - B5507771F98C954AA584A3AE892FA2E4 /* NstBoardVsSystem.hpp */, - B2B586D348CC154D7D85DA7980151DE8 /* NstBoardWaixing.hpp */, - DF8BA5722B5506BE400BB4B7092422A6 /* NstBoardWaixingFfv.hpp */, - AD693DEDED863272C9B25B41DD69C257 /* NstBoardWaixingPs2.hpp */, - E092E67243EB5F2C7AA220780125DA0F /* NstBoardWaixingSecurity.hpp */, - 9C8920E8DED2BF5AE5A7D8740EDA32DC /* NstBoardWaixingSgz.hpp */, - 889B56C4CCCB86F23A99D01C2C992852 /* NstBoardWaixingSgzlz.hpp */, - A7BCE04E1ED27734F5F2FFB57E444B07 /* NstBoardWaixingSh2.hpp */, - B65032755EE4541256290B57E1CDC9A4 /* NstBoardWaixingZs.hpp */, - 3251209BECAF282E0DCE499F9AD02385 /* NstBoardWhirlwind.hpp */, - F0E832BE9925100CCA463EDD16E27F2F /* NstBoardZz.hpp */, - ); - name = board; - path = board; - sourceTree = ""; + 2559B5875E8FC668AB7ADAD6BCC389BA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GoogleAPIClientForREST; + target = D7958E869B6C0073DB3025514393D7A3 /* GoogleAPIClientForREST */; + targetProxy = C49876C5EC71FC99BE71D51B825037EA /* PBXContainerItemProxy */; }; - ADEFB1890E88A102DD7E5D0851B7FCFA /* Bridge */ = { - isa = PBXGroup; - children = ( - 6CB58CA4AE908281BA1B91954FF16704 /* GBAEmulatorBridge.h */, - 5531385FC1EFB70FA1BA791251AACDF5 /* GBAEmulatorBridge.mm */, - 96D01A6211DFD9C25AF356CB28F74829 /* GBASoundDriver.h */, - DAC5B00D89BE3A1F8CE58319DBEC7878 /* GBASoundDriver.mm */, - ); - name = Bridge; - path = Bridge; - sourceTree = ""; + 372712E6BD5664E59FC971DA434373E2 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GTMSessionFetcher; + target = D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */; + targetProxy = 2E0A457F03D61640808BB0AA6406CCC5 /* PBXContainerItemProxy */; }; - AE0C29559EB19249320A4CF29B374924 /* Conflict */ = { - isa = PBXGroup; - children = ( - 80332D9AFFD7FFF56082A806DBF79F1C /* ConflictRecordOperation.swift */, - 8B9122DAE4EE2531BCDB360AE4B3BDC8 /* ConflictRecordsOperation.swift */, - ); - name = Conflict; - path = Conflict; - sourceTree = ""; + 3A4F40847CCD9786665400688F2747E6 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SQLite.swift; + target = 3F2C1776D90B62B156DB52C41A5C419C /* SQLite.swift */; + targetProxy = 232710701842F00B3415F9F17A224786 /* PBXContainerItemProxy */; }; - AE2ED364ED7C90D810E27C7958BA504D /* Pod */ = { - isa = PBXGroup; - children = ( - 04A4DEC7E399B0926D85A31A1E3AE2D9 /* GBCDeltaCore.podspec */, - ); - name = Pod; - sourceTree = ""; + 41436174FCACDDC73E78CB93BE5201F5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SMCalloutView; + target = D20492B6476142DCA0C455340876BB98 /* SMCalloutView */; + targetProxy = 506BC39B16406E806D4D34EFFB3C7B40 /* PBXContainerItemProxy */; }; - AFEE717218FFFF8DBCAE0A28F9C15D3C /* NSString+URLArguments */ = { - isa = PBXGroup; - children = ( - 269EA2D23CF6BACE160800DAAC54DC94 /* GTMNSString+URLArguments.h */, - D1E2911B0409362E1D0AF530431EF0B4 /* GTMNSString+URLArguments.m */, - ); - name = "NSString+URLArguments"; - sourceTree = ""; + 443DAD9C255A22C693E52F856C1843D1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GoogleSignIn; + target = CAD3534FC55B0333104E5117C0A9A324 /* GoogleSignIn */; + targetProxy = 71C0FF6DE7C570B397F1F51C6D9E2008 /* PBXContainerItemProxy */; }; - B011DF1986606CA93EAAB4BEB0C84AB1 /* Controller Skin */ = { - isa = PBXGroup; - children = ( - 3CB976F21FBECBF6953DE2377203398B /* Standard.deltaskin */, - ); - name = "Controller Skin"; - path = "Controller Skin"; - sourceTree = ""; + 46C89FE25C5E13C1971BEB4B859724A2 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Fabric; + target = ABB048B191245233986A7CD75FE412A5 /* Fabric */; + targetProxy = 2951DC6BAD6276B6D8EF56621FBDF766 /* PBXContainerItemProxy */; }; - B05F5E2878A9BBE50C3B2EBF1374057F /* main */ = { - isa = PBXGroup; - children = ( - 4618B072460D823636CAF1E645B31A1E /* cheat.h */, - 2F6ECB5AA1057602FCDD4E5786A4B0E5 /* eventloop.h */, - 428337B1D02C02B51CC15106D03FF0DA /* lirc.h */, - 4295015512B1861071F1267DFFAEDB65 /* list.h */, - 5BB543A3A71829396B263558ABAE1D3B /* main.h */, - AC99C95A2973D6876BD5611B8046B243 /* profile.h */, - 507409135C074E27C66E7015AD354962 /* rom.h */, - E3781082E784F8730EA460122392ECA2 /* savestates.h */, - 91A5E87770C71D3A8C481107060FB395 /* screenshot.h */, - AA6DF08716A0603270762C90411D74F8 /* sdl_key_converter.h */, - 3BE3FE94F56D674F98DFC3E6F87C031F /* util.h */, - 62DD79380FB82BE3E640F5E37A033D2A /* version.h */, - B4596D2D0AE2DB378A700A506C25739D /* workqueue.h */, - ); - name = main; - path = main; - sourceTree = ""; + 6806AF99DF8DEB7F3A4B2A14E2EFDB17 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Crashlytics; + target = C0E41540D6862472ED7F2FA11669BE1F /* Crashlytics */; + targetProxy = F263A072407D912F6CC5E8337489EDFD /* PBXContainerItemProxy */; }; - B2F1D1873A17E788117A98A177A4DF66 /* Harmony */ = { - isa = PBXGroup; - children = ( - 7F8B335AD068A99C98CAD8C381BAFC0F /* Harmony.h */, - 3C893D67B4BD7AEA8DA3F7AEBEB02DBB /* Harmony.xcdatamodeld */, - 07BE40F2BA50550EABDF951960989A73 /* SyncCoordinator.swift */, - 5AC034AE770399B30150D629DF8BCC3C /* Core Data */, - 51893AF62226FF4A07BE630D867F4686 /* Extensions */, - 430A8F7B1125ED20C83FE364C9C68700 /* Harmony-Drive */, - 09641B484179AA16F49FB945CF4A6DFB /* Harmony-Dropbox */, - D8E2429991C0BA7ED05347B8BC64FC31 /* Migrations */, - 8260819F46CF078FEDF8A74D85F29905 /* Model */, - BB7C399398ACD6029B6D72C18663C2CB /* Operations */, - 5D37B3F42B55B445DE014F814BE0752E /* Pod */, - 973066835E252184DCCED210BF28C03E /* Protocols */, - CA083312676B65B243FC571B612E3128 /* Support Files */, - 6674CFF9206DF0D97B51605618A112AC /* Types */, - ); + 6E90825FA34CBDE9A69A0CD6ABE430D3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; name = Harmony; - path = ../External/Harmony; - sourceTree = ""; - }; - B31C19BDA103ED7CBF60EAD41A0CCFF6 /* DebugUtils */ = { - isa = PBXGroup; - children = ( - 573983B379A6F917F1D0E630D5F87BC0 /* GTMDebugSelectorValidation.h */, - D21720F624B8F46DC74D6175670521F8 /* GTMDebugThreadValidation.h */, - 622C39AE31FBB34625FBFCF26A80CD07 /* GTMMethodCheck.h */, - ); - name = DebugUtils; - sourceTree = ""; - }; - B444023C46260E593C3D5490DFCFC992 /* controllers */ = { - isa = PBXGroup; - children = ( - 6A2761218A0E7B7B103613B97A3ABE46 /* game_controller.h */, - 5D9715A727616984AF4E827AAEC7E7E1 /* paks */, - ); - name = controllers; - path = controllers; - sourceTree = ""; - }; - B65A966E5ACF4BC15EC6E67F47F72C38 /* src */ = { - isa = PBXGroup; - children = ( - 960E1D165355A784DF995DD2928CD27C /* api */, - 0A0EFD80E22D317AB1A588570B854015 /* backends */, - FDCA122198B7A77E19B9A3DA36ED1A57 /* device */, - B05F5E2878A9BBE50C3B2EBF1374057F /* main */, - 0AD1505C1C8C54C38E713E7138217CBD /* osal */, - D548185AAAC8D7AF1C818A3D7FB3C790 /* osd */, - F3C36A722EB186624283EAC9648837BE /* plugin */, - ); - name = src; - path = src; - sourceTree = ""; - }; - B6825181FF80E10BC903D5EA8804FEBF /* Controller Skin */ = { - isa = PBXGroup; - children = ( - 91D6EF33C40FBE5178F5D4A25205F2CC /* Standard.deltaskin */, - ); - name = "Controller Skin"; - path = "MelonDSDeltaCore/Controller Skin"; - sourceTree = ""; + target = 5CB4163F0A6D4BDE0A490758A78BA43D /* Harmony */; + targetProxy = 9503C423DFC068AD744F688957FFBB1B /* PBXContainerItemProxy */; }; - B6E5B35204DD2AE6E269619E3F68F606 /* Controller */ = { - isa = PBXGroup; - children = ( - F6E33B580B86B99E3F06C1706C55E0E4 /* ButtonsInputView.swift */, - 0B8DA727418B14CBE20A104C19B4022D /* ControllerDebugView.swift */, - DC5BA75262977CCE52E0E8BA86D4CCC7 /* ControllerInputView.swift */, - 101EDCA75CA532184BC4BE7E36D0CE4F /* ControllerView.swift */, - 9F4EF96FD8898C3C730731CBB252D71E /* ImmediatePanGestureRecognizer.swift */, - 92BF3D469815BCF258E55BDED1A6BB5D /* ThumbstickInputView.swift */, - 2C7D9702EE4283F38E2F4EDF9DB2194D /* TouchControllerSkin.swift */, - 85A20CD7B74FCD22297EDBA79F75A24A /* TouchInputView.swift */, - ); - name = Controller; - path = Controller; - sourceTree = ""; + 6FB4C935648E486D6B31C0B73BC0B367 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GTMSessionFetcher; + target = D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */; + targetProxy = D9596B4568CE1750D0445909816C3A2B /* PBXContainerItemProxy */; }; - B813AFF29525B54F7C518EDE4D314B3E /* encoder */ = { - isa = PBXGroup; - children = ( - 3CE8DC61169AA7B33E10D6AE53AD007A /* pngusr.h */, - ); - name = encoder; - path = encoder; - sourceTree = ""; + 8ECB50C6B51D3D90D23627FAB1D087BC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Roxas; + target = B5D1BA64AC676FF46408FCDE19A05767 /* Roxas */; + targetProxy = 9C0DA9AD14F77073E379A2A267A60044 /* PBXContainerItemProxy */; }; - B98E8058048BB836CA8AEEB6119094A6 /* Support Files */ = { - isa = PBXGroup; - children = ( - 1C3F6FFA7117E731CEEC4A0FB0BE8DC4 /* Roxas.modulemap */, - 5DC7742AD8CD0CF5DD664E882BAE856B /* Roxas-dummy.m */, - 3AAC4F232A6F0D7BEF0F0213A6C68F12 /* Roxas-prefix.pch */, - 4AD85E83FD0CC9D3EB4D4FCB8037F091 /* Roxas-umbrella.h */, - 8FA29D4654D1F213EADECF1C44D9BBE3 /* Roxas.debug.xcconfig */, - BADCCAE30E37C77B39E74D1A8BAAE7CA /* Roxas.release.xcconfig */, - ); - name = "Support Files"; - path = "../../Pods/Target Support Files/Roxas"; - sourceTree = ""; + 9A44DD53DBF85FE44F7FFBB2806EEA57 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SwiftyDropbox; + target = FF39B7A1D9F00620D9F56635ABBB2C03 /* SwiftyDropbox */; + targetProxy = 011E1F3C5EF1407FFA6D7E1B125B0A02 /* PBXContainerItemProxy */; }; - B9E7EC2759EBD795A430BF4B1AACD901 /* GLSL */ = { - isa = PBXGroup; - children = ( - 243DF18DBEC0030F64A72ECE9661C05A /* glsl_CombinerInputs.cpp */, - 798227D438D94FDBFF310CC759EAE46E /* glsl_CombinerInputs.h */, - F479D170EB4EF8FE5B9911A5F7E28C9D /* glsl_CombinerProgramBuilder.cpp */, - 584986A5CC4D03A1266EEF01E564FCB4 /* glsl_CombinerProgramBuilder.h */, - 523D1A14AEA90148F5FADE454AF67298 /* glsl_CombinerProgramImpl.cpp */, - 39E30E613CDA56DD588A44D7BE635E64 /* glsl_CombinerProgramImpl.h */, - DA605E65AD3BBD74F1D83EA92DC0236C /* glsl_CombinerProgramUniformFactory.cpp */, - 4956246BBBEA8A6AD42BC92B809DD51D /* glsl_CombinerProgramUniformFactory.h */, - E2338F64347F1DE69B72D9080A4F89F0 /* glsl_FXAA.cpp */, - 9ACA261D60E7D6D3A3AD8AF6EF5497F4 /* glsl_FXAA.h */, - 5B075DE0CD80E2D791EEF3247B941988 /* glsl_ShaderPart.h */, - 088D1095F736B9610ADEEB47F8D4300A /* glsl_ShaderStorage.cpp */, - 94851A975DEF22A43042DB9E7D71F801 /* glsl_ShaderStorage.h */, - FFBE6231F3C96E0F29DCACC0B2A7765E /* glsl_SpecialShadersFactory.cpp */, - 8A442C84EE462C5C259BB612927BDB81 /* glsl_SpecialShadersFactory.h */, - 21F08D379C51FB95B3A2007AC1555313 /* glsl_Utils.cpp */, - 4BBE3ECEC9F9872D3CDABA361942FC7F /* glsl_Utils.h */, - ); - name = GLSL; - path = GLSL; - sourceTree = ""; + 9C4DD81F2C5071D3C40022AD0923A459 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Alamofire; + target = EAAA1AD3A8A1B59AB91319EE40752C6D /* Alamofire */; + targetProxy = C6E63F9BBE43D2F83F501C87B21D2332 /* PBXContainerItemProxy */; }; - BA314CC04E07D8A8467CF52E1ED1666C /* SNESDeltaCore */ = { - isa = PBXGroup; - children = ( - 20958FCE97729493E3EEDE7735EA6DC0 /* SNES.swift */, - 01FBA1CC5922D0FF08A2FC8A8CFD16BC /* SNESDeltaCore.h */, - E39991EF3F12FA56BA846002929BB4DA /* Bridge */, - 1F6E4299814AA2229C5B7F888878F9E2 /* Types */, - ); - name = SNESDeltaCore; - path = SNESDeltaCore; - sourceTree = ""; + B81FCB662926DCF2A28A3320500F6AED /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GoogleToolboxForMac; + target = D47C581D39D227080F83B16A22A56664 /* GoogleToolboxForMac */; + targetProxy = 5E0B86EED68F95BBD444805096740A26 /* PBXContainerItemProxy */; }; - BB7C399398ACD6029B6D72C18663C2CB /* Operations */ = { - isa = PBXGroup; - children = ( - 56FF2E7B30B92666AFC8210CC7DF0098 /* Operation.swift */, - 6200787FB3973D69521DD9BA7B3E09D1 /* ServiceOperation.swift */, - 884CD3140F6990A9C51BAAE8CDC81537 /* SyncRecordsOperation.swift */, - AE0C29559EB19249320A4CF29B374924 /* Conflict */, - 2DA816901E19006E92562853F7BE5BEE /* Delete */, - 0C888F3FD10EC86D40DB44CC18A50276 /* Download */, - D4CD393B722E25585A7179A956080315 /* Misc. */, - CE750D199DE48A930F906F7877CCA3B0 /* Parent Operations */, - 70557903D3E0CC80504A2C76F1AE9BA3 /* Upload */, - ); - name = Operations; - path = Harmony/Operations; - sourceTree = ""; + C391B56F5AE9E98BEDA4719075450B1D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SwiftyDropbox; + target = FF39B7A1D9F00620D9F56635ABBB2C03 /* SwiftyDropbox */; + targetProxy = 4E38DA6055025005B61FD25AB04DCB42 /* PBXContainerItemProxy */; }; - BBF949FC35F93DCCE94C51B31C34457F /* src */ = { - isa = PBXGroup; - children = ( - 0312E07CD0E5CAE789530BCEE9193CF9 /* AutoBuild.h */, - E62D7560CEDC11AB8A9C41117C73E387 /* NLS.h */, - 622E5F8984D2433536E5431EA4AED70A /* System.h */, - 6A23462A637B29C7DA5D1E5502F8CF1C /* Util.h */, - 1E68152625EDA7EB8623A0C0B1AF1524 /* common */, - 2AA7126289AF78F284308F7FA890C444 /* gba */, - A5A6C4B9BFAA7FF0C7AE09333626CD3E /* sdl */, - ); - name = src; - path = src; - sourceTree = ""; + C8560B49FBF24D6BC40E1AFB6248ED1C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Roxas; + target = B5D1BA64AC676FF46408FCDE19A05767 /* Roxas */; + targetProxy = 0C495B98C98D2CB0FBF40910071DF87A /* PBXContainerItemProxy */; }; - BDDCAA316B6C4E2A467D14C79E23372C /* Targets Support Files */ = { - isa = PBXGroup; - children = ( - 08C58CF73AB8BFBF56E0EB8B4D727EE1 /* Pods-Delta */, - ); - name = "Targets Support Files"; - sourceTree = ""; + EAEC81DE293125F15431A2B613238932 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GoogleSignIn; + target = CAD3534FC55B0333104E5117C0A9A324 /* GoogleSignIn */; + targetProxy = 4B640CD01C5B7DA2914B5F9F1E71A6D1 /* PBXContainerItemProxy */; }; - BEFD49A3AFA1CC9846030C9E11165E38 /* minizip */ = { - isa = PBXGroup; - children = ( - 61D84B9A9E573FA8C296E6692CA599DA /* crypt.h */, - 2E4F59F003666ECE81B8914D69DB6AF1 /* ioapi.h */, - 6CB6EA18C6E1762E051CBE04D8C7E4BD /* unzip.h */, - B52BBFD364EC6A95EAE3BF36428E72CF /* zip.h */, - ); - name = minizip; - path = minizip; - sourceTree = ""; + EBA5DA2DF83C9668C332E0D215338655 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GoogleAPIClientForREST; + target = D7958E869B6C0073DB3025514393D7A3 /* GoogleAPIClientForREST */; + targetProxy = 3A5E652B86BC93C36CA47387731896C5 /* PBXContainerItemProxy */; }; - BF8310E19549A469BDF8A0E814F5BBA1 /* visupng */ = { - isa = PBXGroup; - children = ( - 8D873208E11BEAED6C0FC47AA55653E1 /* cexcept.h */, - 0915A8A8FD68805FFEF8B3FE4574D3ED /* PngFile.h */, - 547037D8AE9D3557DBC6FCF5EEB2515A /* resource.h */, - ); - name = visupng; - path = visupng; - sourceTree = ""; + F38158E67ABCBF41D6DB9288F772F850 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GoogleToolboxForMac; + target = D47C581D39D227080F83B16A22A56664 /* GoogleToolboxForMac */; + targetProxy = 63DA4BD9B00C7E643556023EE87C0740 /* PBXContainerItemProxy */; }; - C007B4C0335945308075AA7204EBD055 /* GraphicBuffer */ = { - isa = PBXGroup; - children = ( - 9F439BA0EF4EE1A0246D267E6567EA27 /* GraphicBufferWrapper.h */, - D1EFAB8F5C202F654B35AF870E9E0291 /* PrivateApi */, - 0128BF0DC27374D2B9067EED26E48D8A /* PublicApi */, - ); - name = GraphicBuffer; - path = GraphicBuffer; - sourceTree = ""; + F40EEA1B62CDEBFDCA2AE921B18C9DA1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = GTMSessionFetcher; + target = D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */; + targetProxy = F4D8E89BF72F4C7F84923428D9E8F628 /* PBXContainerItemProxy */; }; - C142E6A33E0580642C37C293F0EF4D90 /* Window */ = { - isa = PBXGroup; - children = ( - CA13F866561098C20DA5F46FB89C6E5E /* Context.hpp */, - 8FCA6104ED07A1CCFFB1B9709D453474 /* ContextSettings.hpp */, - 93437D2EFA2DF3188772EC34BFBEB1D6 /* Event.hpp */, - C15DC539AE9009D8DE1A22B7FDCA5FF1 /* Export.hpp */, - 64EE117D0C5FCCD7418F14B2F66F8DA1 /* GlResource.hpp */, - 7EF3ABFC7AE14678E610B97B21FAE01A /* Joystick.hpp */, - C43CE2D8DBCA4BFAFD1EE83286D5548E /* Keyboard.hpp */, - F1F7E1A7090C639084C5B1F0FCB87AFF /* Mouse.hpp */, - AF63924ECE87BC1FFA410F95D8F2BF95 /* Sensor.hpp */, - 8770DD274E5027F1A733F36969F16FD9 /* Touch.hpp */, - F41A2B09C72776BA6B5C0BC4B688C9FF /* VideoMode.hpp */, - 0CB94305FF6AF5CFEF88C30CFB622E72 /* Window.hpp */, - FE39951FAEE97B46CF8150651BDCA721 /* WindowHandle.hpp */, - 88D429F6DEDE30C6156DAD5A8D9402CA /* WindowStyle.hpp */, - ); - name = Window; - path = Window; - sourceTree = ""; + F4723A2AC758D3E0C54C4E091477EA52 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Alamofire; + target = EAAA1AD3A8A1B59AB91319EE40752C6D /* Alamofire */; + targetProxy = DD285550FAA2D6D069A5E4198FBAA9E9 /* PBXContainerItemProxy */; }; - C2C772D0B8F197136969512A59ED73F0 /* Pod */ = { - isa = PBXGroup; - children = ( - F957191F16EB51F9ED580C979F2C6A56 /* DeltaCore.podspec */, - ); - name = Pod; - sourceTree = ""; + FE3596A7924270A84D82A7774374280C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Fabric; + target = ABB048B191245233986A7CD75FE412A5 /* Fabric */; + targetProxy = 5E88CA6F7CC227F2F79E4371B4A1C641 /* PBXContainerItemProxy */; }; - C37CFFB134B15A131907442B1FDA155B /* GLideN64 */ = { - isa = PBXGroup; - children = ( - 0D8DFC60849E0E266A7C51C8CD09A8A6 /* ini */, - ); - name = GLideN64; - path = GLideN64; - sourceTree = ""; - }; - C5CF9F0091A2537252396320B10BF646 /* Development Pods */ = { - isa = PBXGroup; - children = ( - D8B08BB6F57181A927011DE3C4B34D69 /* DeltaCore */, - FB57568BF5BA2323DBBC6DEF9211587F /* DSDeltaCore */, - A2F8DB13F493F709ADC089D7E36C3ED3 /* GBADeltaCore */, - D8E159C5B0CDBAE50DC286F470C04426 /* GBCDeltaCore */, - B2F1D1873A17E788117A98A177A4DF66 /* Harmony */, - D3AC86D0F461632844FCDAD74A0CB807 /* MelonDSDeltaCore */, - 2DB9A1109491F18BD375640AD7F609ED /* N64DeltaCore */, - 326D30B621FED0EA9DFB6D009E4D9886 /* NESDeltaCore */, - 812B989FB6B0DB416B1E84ECB5F05AFA /* Roxas */, - 7D90A7BDA85FCD1DC7F23479F5DE415A /* SNESDeltaCore */, - ); - name = "Development Pods"; - sourceTree = ""; - }; - C5FED9E911F3A488AB29E8A827A9D873 /* Types */ = { - isa = PBXGroup; - children = ( - A10E14C0CAF47227861648B77555BF32 /* DSTypes.h */, - D95BAC0F2D7AD6A2E990D3390C7331B8 /* DSTypes.m */, - ); - name = Types; - path = Types; - sourceTree = ""; - }; - C6160687C7FB523D45EFF836774FB4EC /* Core */ = { - isa = PBXGroup; - children = ( - 6D25D90C2F0571F2A637C30B9B936472 /* GTLRBase64.h */, - A972E09BA9CC2B4E13DEEC72273122F5 /* GTLRBase64.m */, - BE678FC4DC246B0D19DC3F53975AFFA0 /* GTLRBatchQuery.h */, - D1EC922CB4C37FF078E2F2FA393D076C /* GTLRBatchQuery.m */, - 6E93E4BE7AB127183B96B96E91487DA6 /* GTLRBatchResult.h */, - A136EA4F05EDD2CD92B3C8B2884AAFDD /* GTLRBatchResult.m */, - 04CD4DB2EE3E00431E393AF83DA3B925 /* GTLRDateTime.h */, - 1371A75FE41949E4BA02D89705197634 /* GTLRDateTime.m */, - 44BD07F028973D4260A9A797E772F208 /* GTLRDefines.h */, - 05EFB60F8ABE052EE4B3C48B77C63D6B /* GTLRDuration.h */, - AEC0015955B6C317179ECAEEE8FD46C5 /* GTLRDuration.m */, - B469CB48E051A7902C306D720CA859C8 /* GTLRErrorObject.h */, - A8A39A015FAAB4B02C5DDC94DE475046 /* GTLRErrorObject.m */, - 0911CB832D9A4864180F2DCFB13BCC10 /* GTLRFramework.h */, - 58B84D2927A477768BA7A22EB43B0A83 /* GTLRFramework.m */, - F1D0E74F872B2D64D94DDEE42849F609 /* GTLRObject.h */, - D63DF8BC0893DD34539EDEF01E7690F8 /* GTLRObject.m */, - BB1A039FF5440BBD2EF096501C8ED363 /* GTLRQuery.h */, - 6ACCC934BB5FAD4B0A16D654246E21F6 /* GTLRQuery.m */, - 279F8F8BF2300C97E89F662A3B1BE1CE /* GTLRRuntimeCommon.h */, - 87BEF86E5D9BA232DF16BE7F774E4D82 /* GTLRRuntimeCommon.m */, - F8694E99071ADE337EEEA41E7C2CFD82 /* GTLRService.h */, - A8E6AB2F458571355560DBA9096AB908 /* GTLRService.m */, - B9599505824F928A644466FC5D89F93C /* GTLRUploadParameters.h */, - 6FB01D09B653BA294A2E5E980D435892 /* GTLRUploadParameters.m */, - A02D556906FE8C4CFDDB3F8D10DF3E4B /* GTLRURITemplate.h */, - 0E7A1D4D282B1A61276595B3F2DA9630 /* GTLRURITemplate.m */, - FCA3A4E5B21B603E44C4DA3AB87595F8 /* GTLRUtilities.h */, - F94637A21D42A1D3D7F8F0AF2786C782 /* GTLRUtilities.m */, - ); - name = Core; - sourceTree = ""; - }; - C62F31F10679EDB07AEFDF5C343632D4 /* libpng */ = { - isa = PBXGroup; - children = ( - 54C6E1198BF287B9429793065F9DE54B /* png.c */, - A374908C0C4755AE6E7BA5BC3FE0165A /* png.h */, - CB38C82AA7D15949DDC3D86D8B3FAA39 /* pngconf.h */, - 3D704AF114180DB3C2B804374D80F1A4 /* pngdebug.h */, - 0BE46DDC7E9A5CC5A5A52D10012ECA55 /* pngerror.c */, - AC5B45A27A13095F80FE8A891D1E5735 /* pngget.c */, - 5AE46C1188FFBFEE4C46B521C3217396 /* pnginfo.h */, - 98B8FFB08403FFC14B3F37F916E6903D /* pngmem.c */, - C3914267B360E5CBD9B4004034A200D9 /* pngpread.c */, - 7835E3451DFC672514F4E6B3EC909995 /* pngpriv.h */, - C91E1AA976A69AFEC09D7086375C3511 /* pngread.c */, - 975DDCEED3B7F45741E5AEA5A85A0195 /* pngrio.c */, - F4567E4637DA3B5C60F7318FA9E969AE /* pngrtran.c */, - 699C06DF728C17DE1AE0E251B1C949D8 /* pngrutil.c */, - D4C4889886A38026ACF6B2874E1522CB /* pngset.c */, - 257DDF2564EF2EE5CD24E964C9FBFCF9 /* pngstruct.h */, - 8D566940EC6480D561BB9899253782D3 /* pngtest.c */, - 5D987D9D0A8C1E3B17BBF8CFE400C26F /* pngtrans.c */, - B9F7EE490E3FCEADA9DFFE43323E3C02 /* pngwio.c */, - 6D0550F757121A1A87081B1D88E1DDF0 /* pngwrite.c */, - 5C3725C3F73FD7EF6A253CD24F77B45D /* pngwtran.c */, - 1B047FD1BDE657AF7AFC1BB0E425CBA4 /* pngwutil.c */, - 1DDD1C99C2D6ADEEAC927A2EAA7A3011 /* contrib */, - ); - name = libpng; - path = libpng; - sourceTree = ""; - }; - C80D664220A86E6BB50355EC6C9C3CAE /* System */ = { - isa = PBXGroup; - children = ( - 4BB4A497541BD689341DCD03FCA3CA38 /* Clock.hpp */, - 4C83AE5EE2805FEBB085D004779A6672 /* Err.hpp */, - 2C77E5C7BD79BCE763B65F8C61CEA3E8 /* Export.hpp */, - 5FE476B8ACDA398F2FA021447217349D /* FileInputStream.hpp */, - 3A4DD9046F6AA16EDF3BE6CDB82D8C43 /* InputStream.hpp */, - 681B874515928068B822C055CFADAF60 /* Lock.hpp */, - 1846ED4B4BB382D3D7947E931DCA24FD /* MemoryInputStream.hpp */, - 4CA9E659D1B7B7728E262433D17D11DC /* Mutex.hpp */, - 8690E1547DD78C11D04758E93FE06417 /* NativeActivity.hpp */, - 00A09F4C70B59DC758835D157CBD6C7F /* NonCopyable.hpp */, - 11EC03B8337C07B3FF8400A47867B582 /* Sleep.hpp */, - F6A27E44BB36718D04D772D7CA7AFDB1 /* String.hpp */, - 1FBCB41DB5CD1A031B2554AFF01D2CBA /* String.inl */, - 54670F461677A40B2E94824A5C998AE8 /* Thread.hpp */, - 50F439CC928E176156E57AA87FE696E1 /* Thread.inl */, - 903F29A93503BCB112A51EA2744B678C /* ThreadLocal.hpp */, - 3BAE81001B3A22535FE02638D962A025 /* ThreadLocalPtr.hpp */, - BEA7F11056D0F43EC8010E525D8CA634 /* ThreadLocalPtr.inl */, - AAFF741290EFA79792D192D817E9F84F /* Time.hpp */, - 90540DEF7A0BEA009234C3402F2936A8 /* Utf.hpp */, - B1A3A6D53350C28647A7D877E975305A /* Utf.inl */, - 5D3DB505EE3BB0C241AB85077A2942D7 /* Vector2.hpp */, - 738312A615F845E52FDBD508E66600CC /* Vector2.inl */, - F093A0AA955360C3E1886C377294286B /* Vector3.hpp */, - 83B4F9E572374DF4C3831BAEF2E43CF9 /* Vector3.inl */, - ); - name = System; - path = System; - sourceTree = ""; - }; - C84950D48B648DFC85215E0934082867 /* GTMSessionFetcher */ = { - isa = PBXGroup; - children = ( - 75316DA5FE1CBCBBBF62CE6972920D20 /* Core */, - 88667F1262CA040FDDC222012EB0231C /* Full */, - 153056187C2919053D9759A64BD233B3 /* Support Files */, - ); - name = GTMSessionFetcher; - path = GTMSessionFetcher; - sourceTree = ""; - }; - CA083312676B65B243FC571B612E3128 /* Support Files */ = { - isa = PBXGroup; - children = ( - 08F73D0711A4E57E27F62C6298DDBC33 /* Harmony.modulemap */, - 809C2DE2D00BCE6A6E076592A813FB03 /* Harmony-dummy.m */, - B2C4982438927CA0C1E755890CAA430B /* Harmony-prefix.pch */, - FB787201018DEDE00599C797249329FE /* Harmony-umbrella.h */, - ABD749C2D181E66236B780B2F16DA464 /* Harmony.debug.xcconfig */, - BC9E8968583BFAD0D15B54B5E52F9947 /* Harmony.release.xcconfig */, - ); - name = "Support Files"; - path = "../../Pods/Target Support Files/Harmony"; - sourceTree = ""; - }; - CB3D42BEAE3B72A0E2B846EA0A691E6B /* pngminim */ = { - isa = PBXGroup; - children = ( - A1AEBC6FCC2871387212B92ED0ED45A9 /* decoder */, - B813AFF29525B54F7C518EDE4D314B3E /* encoder */, - 91559130FF24D38A85DDDCE5DF25F1BF /* preader */, - ); - name = pngminim; - path = pngminim; - sourceTree = ""; - }; - CCD9B2243790B830DC1BBDC11FAE6701 /* snes9x */ = { - isa = PBXGroup; - children = ( - 26E9093D38BC9C8CC9DF4D72731AC2B1 /* 65c816.h */, - BE545AA1D1852AA8D0B5F0754FFA13B5 /* bsx.h */, - 7EF3C8BACE3C7214CCB4EA445F842DA8 /* c4.h */, - CFFFDF983674973D9E671FB2EAD347EC /* cheats.h */, - E4713AD1D2C3007EBBF6A5594799CAA8 /* conffile.h */, - 4CE6F51BC66DB2E3015550E3FB2B453D /* controls.h */, - F6A7E56CB63D6D8E0CDF3FA942D6464F /* cpuaddr.h */, - 5B6780C53289B9AF9A0CB8BAE83F80FF /* cpuexec.h */, - C7A9FF165EDCA96D78582A1BB3E3E34A /* cpumacro.h */, - 9CD66BBDECD54165CD02B2A898EE4F26 /* cpuops.h */, - 1C7DD892516958A03B638903F7351808 /* crosshairs.h */, - 04162C467DC93B5CF84E1E497026A1F7 /* debug.h */, - B94E286F3F31AF33D0C10EE54989676E /* display.h */, - 61B20BEC2E96819BBA770F85AEF1F731 /* dma.h */, - 64243D5F5D7188C2645AF800E611144D /* dsp.h */, - BEC36720A23F7F9D127C45AD31BA84C6 /* font.h */, - 826835BE8340A1BC251ECF7FCA9581C2 /* fxemu.h */, - FDE6D1B2F355A9CF0CF9790DABCFBF10 /* fxinst.h */, - 9D4ED41C767B511A3663D3BB3EFBA877 /* getset.h */, - 7880158DD63D22405EA70C3616145A3B /* gfx.h */, - 3B6A11A1E9804A2ACDF0C6729DCBA4EE /* language.h */, - 5CED691600B7BB63850F3BE0D44DA891 /* logger.h */, - A706591632D0DD389D06A2E63F9B603A /* memmap.h */, - 33C9E9FF569783D800DD1761E4380AAB /* messages.h */, - 90A3FE5B2140BA3DAE5D3FEABAA60BE7 /* missing.h */, - 532679A78BA807A935E918B3242DAE24 /* movie.h */, - 98E96F11787557393A1214824C033C34 /* msu1.h */, - 80A3D8CB0999B0CF69939F4D68ABB6FD /* netplay.h */, - 799DEF3E6A60124A7322E3ED095506F7 /* obc1.h */, - FF97EFD3A744B8AF2BB6EDBFDBD5E6D8 /* pixform.h */, - 2A62259BC78EDF58C7DE954EAA77775D /* port.h */, - 3DFF22813A5E66C19ECD0F24DE112112 /* ppu.h */, - 8832ED97E367CC9B2AE7CF0F2DD8A54F /* sa1.h */, - 68018329536A9449BCE127106869F5B4 /* sar.h */, - 984F66A44670774FAEAB1733FDCC4480 /* screenshot.h */, - 4882BE90EEF397C5CB150356BABD6589 /* sdd1.h */, - 578CFF4C7810495DFD481CD17F1C31C2 /* sdd1emu.h */, - DE8BBEE21041E1DDC6767E1CF2E08A2B /* seta.h */, - 5F019E08B9D1DD9B75519A4FCC245881 /* snapshot.h */, - 4D803FA2CC59F06C610F12C7FE0AF5C6 /* snes9x.h */, - A3CF93A75B3CFB18713CD89293600FB8 /* spc7110.h */, - DFABA608C593B4B5CA40C1C7CEDA6927 /* spc7110dec.h */, - 127A16AF48ACA5BDBF1E686BF6664827 /* spc7110emu.h */, - A5D25A996047B964BB6083612C8E3C10 /* srtc.h */, - 1854A07E7A3BF031FA3AA0AAB5EDD78B /* srtcemu.h */, - EF0216D7E0044288639CA7E86870875B /* statemanager.h */, - FBE558ED21912B2EE34190ECEADDE26E /* stream.h */, - EA6735B71BF0C9298798041E23627733 /* tile.h */, - 97835A5FB7D9D233181411E73D085DCC /* apu */, - ); - name = snes9x; - path = snes9x; - sourceTree = ""; - }; - CE750D199DE48A930F906F7877CCA3B0 /* Parent Operations */ = { - isa = PBXGroup; - children = ( - 93CF7202730B19C9887B59D40AC2C856 /* BatchRecordOperation.swift */, - 51207E9A3C7454213B51E256308C8CBB /* RecordOperation.swift */, - ); - name = "Parent Operations"; - path = "Parent Operations"; - sourceTree = ""; - }; - CEAF4653D324E5DB6331258EA409CB42 /* x86 */ = { - isa = PBXGroup; - children = ( - D22C92DE3FBE9F6DC63F2329F08E75E1 /* assemble.h */, - 1D4DC2684C343FCD683C5EEFA928628A /* assemble_struct.h */, - 6B06E6C09CE07C063CE11C20EF5F539A /* interpret.h */, - 3F2DD7FE6DF633896BD076DA98F91769 /* regcache.h */, - ); - name = x86; - path = x86; - sourceTree = ""; - }; - CEC66B2645E58D366C34CC4039A7F4CA /* Game Controllers */ = { - isa = PBXGroup; - children = ( - 52D9BC065E6BB7A0B1FEB69CEBBF570F /* ExternalGameControllerManager.swift */, - EA4CA817525AAB80621DD2FAD3928E7C /* Keyboard */, - A9773DCC1AC7EF19B01ABF2FAA7469D2 /* MFi */, - ); - name = "Game Controllers"; - path = "DeltaCore/Game Controllers"; - sourceTree = ""; - }; - CF1408CF629C7361332E53B88F7BD30C = { - isa = PBXGroup; - children = ( - 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, - C5CF9F0091A2537252396320B10BF646 /* Development Pods */, - D89477F20FB1DE18A04690586D7808C4 /* Frameworks */, - 37A13D22D37F4CBE50B9E137E884332C /* Pods */, - 755747E18A6F54E373510ADBD08E6723 /* Products */, - BDDCAA316B6C4E2A467D14C79E23372C /* Targets Support Files */, - ); - sourceTree = ""; - }; - CF5F7EC6E0C5BAD54926F88715D9FD4C /* Resources */ = { - isa = PBXGroup; - children = ( - 9A139AD5491148B868F3054FD397E659 /* GoogleSignIn.bundle */, - ); - name = Resources; - sourceTree = ""; - }; - CF805E54CD4AD4E58E03838FA5DC84C6 /* libDeSmuME */ = { - isa = PBXGroup; - children = ( - C4D94D5C2C4826A2B2D50690E7E30F1E /* pcap.h */, - ); - name = libDeSmuME; - path = libDeSmuME; - sourceTree = ""; - }; - D1EFAB8F5C202F654B35AF870E9E0291 /* PrivateApi */ = { - isa = PBXGroup; - children = ( - 8ED7F5795231E9584D1AD395E6DA5325 /* gralloc.h */, - 430C7822BB2DB30D3A3F120CC4806220 /* GraphicBuffer.h */, - 0392F4CAEA87D6FE46C313B686D25274 /* libhardware.h */, - ); - name = PrivateApi; - path = PrivateApi; - sourceTree = ""; - }; - D340C5D5E5F31AEB5C1EFF510971CDEB /* mupen64plus-core */ = { - isa = PBXGroup; - children = ( - F8EF726EDCE35C1896D9E3A0211BA6DC /* data */, - B65A966E5ACF4BC15EC6E67F47F72C38 /* src */, - 2715FC23F67EABAA17EF70510ACF5CFE /* subprojects */, - ); - name = "mupen64plus-core"; - path = "mupen64plus-core"; - sourceTree = ""; - }; - D3AC86D0F461632844FCDAD74A0CB807 /* MelonDSDeltaCore */ = { - isa = PBXGroup; - children = ( - 6E823A056BD3AEE7D63E8782256F4F4A /* Standard.deltamapping */, - B6825181FF80E10BC903D5EA8804FEBF /* Controller Skin */, - EFAF47D0C9F61E199012360FE1FAC705 /* melonDS */, - 1435E327C40236C938C3F31DEEFD64E0 /* MelonDSDeltaCore */, - D4641C2894D78475E6E669DF7ECB9C08 /* Pod */, - 6E1A05341FD4DD4AE345869F6FF2397F /* Support Files */, - ); - name = MelonDSDeltaCore; - path = ../Cores/MelonDSDeltaCore; - sourceTree = ""; - }; - D4641C2894D78475E6E669DF7ECB9C08 /* Pod */ = { - isa = PBXGroup; - children = ( - 8CBD6C44140F2A7F243800E35E207F76 /* MelonDSDeltaCore.podspec */, - ); - name = Pod; - sourceTree = ""; - }; - D4C414EE9BC77D6E7F5578085887DA82 /* Filters */ = { - isa = PBXGroup; - children = ( - 3D7C8FA406E15F16500B35FF45E35734 /* FilterChain.swift */, - ); - name = Filters; - path = DeltaCore/Filters; - sourceTree = ""; - }; - D4CD393B722E25585A7179A956080315 /* Misc. */ = { - isa = PBXGroup; - children = ( - A6D392CE7A577087ED1A339C6C0BBC11 /* FetchRemoteRecordsOperation.swift */, - DE94A72C4101C8A8627C17AB51EABF9C /* UpdateRecordMetadataOperation.swift */, - ); - name = Misc.; - path = Misc.; - sourceTree = ""; - }; - D53E5E39034806EB8B0622E79CD828A9 /* Support Files */ = { - isa = PBXGroup; - children = ( - 8B0443A5AFC99B4F146BEF80A5D5D4DC /* ZIPFoundation.modulemap */, - 3B3BC53887BCBE3F02841C302D9EFCB4 /* ZIPFoundation-dummy.m */, - F30E0BB406275FD00829195C22A80D4F /* ZIPFoundation-prefix.pch */, - 8F4912D5F8E8AA63C9F6417DD320A1C6 /* ZIPFoundation-umbrella.h */, - 5A644A5B4BD538209D5C42F09565D52C /* ZIPFoundation.debug.xcconfig */, - 5CCF0F50976DE33EBB7327D6CE071A1A /* ZIPFoundation.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/ZIPFoundation"; - sourceTree = ""; - }; - D548185AAAC8D7AF1C818A3D7FB3C790 /* osd */ = { - isa = PBXGroup; - children = ( - 2FE79DB67DDDDD1F26E2263E68C2DDF0 /* oglft_c.h */, - 20C5814112C7FD3018044780D05DE1FA /* osd.h */, - ); - name = osd; - path = osd; - sourceTree = ""; - }; - D693BDB33AE03196E109616B8303466B /* dd */ = { - isa = PBXGroup; - children = ( - 9BE77D2A3CB6CD19078D5DA6CFB64EB9 /* dd_controller.c */, - FDB106486A5BDBC079CB460CD73AA422 /* dd_controller.h */, - ); - name = dd; - path = dd; - sourceTree = ""; - }; - D6AC940F5F54C1E28867389113D05907 /* common */ = { - isa = PBXGroup; - children = ( - 8548E2F828F57A9B447EB274E44455C4 /* adaptivesleep.h */, - E7D76D8068004B08B3FB0FB93605E4AD /* array.h */, - A3C2952ABBB60A651284DE34817CDD0A /* defined_ptr.h */, - D99BDDF8334E70176E218DC0D4A89A58 /* rateest.h */, - F9E3F8223A04B2A5A32807F8C0F4B2B5 /* ringbuffer.h */, - A86BBFC8A328FE8113CD7DCAEA82FB55 /* scoped_ptr.h */, - D3E5F59546B73B9E4E0DDE03CF8B3B55 /* skipsched.h */, - 1CFDA817B0AC211C38A21101AA7ADCC2 /* transfer_ptr.h */, - 6F4299F82CCE6A563897642AFA66DD0A /* uncopyable.h */, - B38950E29E7427B1B328DA4AB4E9B564 /* usec.h */, - ); - name = common; - path = common; - sourceTree = ""; - }; - D89477F20FB1DE18A04690586D7808C4 /* Frameworks */ = { - isa = PBXGroup; - children = ( - ); - name = Frameworks; - sourceTree = ""; - }; - D8B08BB6F57181A927011DE3C4B34D69 /* DeltaCore */ = { - isa = PBXGroup; - children = ( - 335295D8D9EA703418C752C19F387C85 /* Delta.swift */, - 8B2CB409D92E49580916E562180139A5 /* DeltaCore.h */, - 313E672F1EB9448940936DB36A67FCF2 /* DeltaTypes.h */, - 9DE7B55C25EE9E9892BCABEE74C0311A /* DeltaTypes.m */, - 8E3A59FADC15AFDEC6BB45E8BA0E05AB /* KeyboardGameController.deltamapping */, - 801F19EC04BD80A8CDF669781B0A3F39 /* MFiGameController.deltamapping */, - 3DAEBBBA933327153C1A5F18A797BE49 /* Cores */, - 4EAB75CBF2E1F0BFBC7D83B97F8D0A9F /* Emulator Core */, - 7747232A25A1C0076DC901E161E792AE /* Extensions */, - D4C414EE9BC77D6E7F5578085887DA82 /* Filters */, - CEC66B2645E58D366C34CC4039A7F4CA /* Game Controllers */, - 21E3AF05B088F5BE9C3B3300323A58B1 /* Model */, - C2C772D0B8F197136969512A59ED73F0 /* Pod */, - 4BD5923E42F8E36D18FDA8D4D5471D9F /* Protocols */, - 41C6B2A9B3387B384985935F045B38FC /* Support Files */, - 0733C7D2737E3066C78522E25ADEBFCD /* Types */, - E0A44B178F4C3ED5F727E02FDD43D44B /* UI */, - ); - name = DeltaCore; - path = ../Cores/DeltaCore; - sourceTree = ""; - }; - D8E159C5B0CDBAE50DC286F470C04426 /* GBCDeltaCore */ = { - isa = PBXGroup; - children = ( - F8CF8BE812823CA459587DFFF0F9B0DF /* Standard.deltamapping */, - 9B0DAFC39A255D316CA8A42F66597E60 /* Controller Skin */, - FA03DFA0ACD5FC355668FDFD1B0FC924 /* gambatte */, - 0D7E46CA21516E2D401D2D1802560930 /* GBCDeltaCore */, - AE2ED364ED7C90D810E27C7958BA504D /* Pod */, - 81ACA10962E6A65DD01F57C606D35AE6 /* Support Files */, - ); - name = GBCDeltaCore; - path = ../Cores/GBCDeltaCore; - sourceTree = ""; - }; - D8E2429991C0BA7ED05347B8BC64FC31 /* Migrations */ = { - isa = PBXGroup; - children = ( - 42FBEC2474EF26A1D9AAB0009F359EF5 /* HarmonyToHarmony2.xcmappingmodel */, - ); - name = Migrations; - path = "Harmony/Model/Core Data/Migrations"; - sourceTree = ""; - }; - DAB3A620E6753672E6B5D0FDD42AD39A /* Frameworks */ = { - isa = PBXGroup; - children = ( - 0E9B2D2921B154E904D13D0ECB5ED2B0 /* Crashlytics.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - DAB487278FF770286A9BD50FEDB4EF7F /* Network */ = { - isa = PBXGroup; - children = ( - 9F2A3091CAB6D300DEE1EF9A4A7BBCA3 /* Export.hpp */, - 0DF09F5AC56C013F55C64308E54A7FAB /* Ftp.hpp */, - 2C1EF76242FE6AA83C45F46051B60B6B /* Http.hpp */, - 109EADB0082F1883183EC07806088E54 /* IpAddress.hpp */, - B583513D16011258D024CAA92DE220E5 /* Packet.hpp */, - F5E0C5BD4404D72AE97B455739B66597 /* Socket.hpp */, - E68FD43545CD76F9AB1350FD2B577AED /* SocketHandle.hpp */, - 578ED2874A72D2771139C6E86515B236 /* SocketSelector.hpp */, - 8248BE4460AD901892A34E8BC9389A7E /* TcpListener.hpp */, - 4C80ED7AACB70B3A24D156BAD539073C /* TcpSocket.hpp */, - 3D20BEA8EA23644F74F988336C5EF2DA /* UdpSocket.hpp */, - ); - name = Network; - path = Network; - sourceTree = ""; - }; - DAF83F106CEE1AF0CB41C3D3AE1E08E2 /* Pod */ = { - isa = PBXGroup; - children = ( - 758B1872FA71F711EC550F4A8C4E08C8 /* Roxas.podspec */, - D4A4DC4C3072C0BFB04131DB11B904CB /* Roxas-Prefix.pch */, - ); - name = Pod; - sourceTree = ""; - }; - DBAA5242E5BE70FF6001BAC9EC053947 /* md5 */ = { - isa = PBXGroup; - children = ( - F5BA07A2D7780313D79F2443FAA2DF41 /* md5.h */, - ); - name = md5; - path = md5; - sourceTree = ""; - }; - DF10A582877486663BF403D04C791112 /* libMupen64Plus */ = { - isa = PBXGroup; - children = ( - 4DEB71DCF9958F3A0DF5F05E85ECADF1 /* SDL */, - ); - name = libMupen64Plus; - path = libMupen64Plus; - sourceTree = ""; - }; - DF95E00D17C1BD21706B03ABB7737A38 /* Controller Skin */ = { - isa = PBXGroup; - children = ( - D3B5120B0C39B7F86050343E396C4A75 /* Standard.deltaskin */, - ); - name = "Controller Skin"; - path = "Controller Skin"; - sourceTree = ""; - }; - E04F054E306B3DE6D791B7642D6B54EE /* Game */ = { - isa = PBXGroup; - children = ( - 8C8852338AFC9400512894B23FD07DFF /* GameView.swift */, - 0F34E21A0C7FD050FF58B0015AE0034A /* GameViewController.swift */, - ); - name = Game; - path = Game; - sourceTree = ""; - }; - E0A44B178F4C3ED5F727E02FDD43D44B /* UI */ = { - isa = PBXGroup; - children = ( - B6E5B35204DD2AE6E269619E3F68F606 /* Controller */, - E04F054E306B3DE6D791B7642D6B54EE /* Game */, - ); - name = UI; - path = DeltaCore/UI; - sourceTree = ""; - }; - E39991EF3F12FA56BA846002929BB4DA /* Bridge */ = { - isa = PBXGroup; - children = ( - D3B1080EAE2B04F4B0C9A9132C3F2A6D /* SNESEmulatorBridge.h */, - 683323289D0F097240F45B27229DF8F6 /* SNESEmulatorBridge.mm */, - ); - name = Bridge; - path = Bridge; - sourceTree = ""; - }; - E490CDC8368C50AFD21F6304112DDC4F /* src */ = { - isa = PBXGroup; - children = ( - FE8B468826973A5911865B4E08BA55EA /* alist.c */, - F9FF6F125A28116A8BF1C9F823696326 /* alist.h */, - 978AEBEF5F9470DD343827FA8A8BC268 /* alist_audio.c */, - D191CFB4ED63F845055FB4308E16AE30 /* alist_naudio.c */, - 5F5B4DF63E5FFCA2F6CE8D450D8820AF /* alist_nead.c */, - AC54B6128FC352974C1A8FF402DCB502 /* arithmetics.h */, - 06F09F405D39CBB80138B102879DBCC9 /* audio.c */, - 6D71031AFDF4C2A2A4A7F9623C8263C3 /* audio.h */, - 3B00EFBA37F600E32A24246B7A597850 /* cicx105.c */, - 0064E0DD3AAA63871964A26AA0A8D952 /* common.h */, - 092BF1E4E202CF281CFDBE78FDBB43DA /* hle.c */, - 0C66F5370C7AF40DB07F93BFE13B25B1 /* hle.h */, - EA54699E526C9FB651ED0197CF640FA2 /* hle_external.h */, - 310827CCFFF7FE348B9558D4BDFA99B0 /* hle_internal.h */, - 3A57C4A2E676CA0366D18C05CCDCB841 /* jpeg.c */, - A99A7A7B9FB77409F4575F8FB00A0574 /* memory.c */, - 9F94AD77DF7A5DA24170D797BA9FBF6A /* mp3.c */, - 37E46CBAFA8DC113FDF631837622310D /* musyx.c */, - 76DF66FD0433C0D83850AB50832BBB5D /* osal_dynamiclib.h */, - 82C0A84FFD08BB92E25F7D35985941FF /* re2.c */, - EB61A68E006842F0E8F0ACF2E779F559 /* ucodes.h */, - ); - name = src; - path = src; - sourceTree = ""; - }; - E5BB0C707BB7BD02B0B71BEF26EA05A4 /* tiny-AES-c */ = { - isa = PBXGroup; - children = ( - B1EEAB97A99472A9C79337EA15AE222E /* aes.c */, - 38AE0B5994FF73A6C429B6EBB1313566 /* aes.h */, - B57F863273D90CEC76B990C80BD0AFE0 /* aes.hpp */, - ); - name = "tiny-AES-c"; - path = "tiny-AES-c"; - sourceTree = ""; - }; - E8C848FCBF0626F152FAAE9CD3710D74 /* mupen64plus-core */ = { - isa = PBXGroup; - children = ( - 7C3AE5058D4F12796CF17BA158E14150 /* subprojects */, - ); - name = "mupen64plus-core"; - path = "mupen64plus-core"; - sourceTree = ""; - }; - E926B7E8F7EA4269BF8B57BFF9285B66 /* src */ = { - isa = PBXGroup; - children = ( - 1818A7C734B0F7FA3464C894DE1B3418 /* ARCodeFile.cpp */, - 5963EF23BB4D8842315DE6AAA0E21625 /* ARCodeFile.h */, - 63A44C100EEF3046D44722C99B1F6BFE /* AREngine.cpp */, - DBA5DD76F54ED88D4BD09E9745D87490 /* AREngine.h */, - AAB3476277B58FFBDD42805CCE15EB71 /* ARM.cpp */, - 757B725B95353BE0102B34BCEF7E70A1 /* ARM.h */, - 59688EC1AF84F9F5BFD059FAF099E547 /* ARM_InstrInfo.cpp */, - 688B090AE1C49E5CCF89A0205D82DF55 /* ARM_InstrInfo.h */, - D05E62B590D16E32DAA922D7272E54BE /* ARM_InstrTable.h */, - 0CA9525A6B4DD2E5909EF0A2DED9B5B4 /* ARMInterpreter.cpp */, - C0E8F6CFDC4D94C86E323AD42D6B74FB /* ARMInterpreter.h */, - 7DD4EB5CFFADB4D68D550C2A9FD0CB52 /* ARMInterpreter_ALU.cpp */, - 049F12874DA5E36EE56D0BE87FCE8F0A /* ARMInterpreter_ALU.h */, - FA1CFA44D4D6E92F65BC911088DBFAB8 /* ARMInterpreter_Branch.cpp */, - CA8F5EA0023441E2DCC5D7A5DF068643 /* ARMInterpreter_Branch.h */, - 50C989534A624B388AF2E96D829DAB47 /* ARMInterpreter_LoadStore.cpp */, - 4FDE830520F0426AC88848116BF92100 /* ARMInterpreter_LoadStore.h */, - BDA60DED9E65EB1430366F1A5F7D45D6 /* ARMJIT.cpp */, - 856A3A60CAA4C68D36EAE9CFBA9545A7 /* ARMJIT.h */, - C1B26C18B277B97813A2936C2A038AB9 /* ARMJIT_Compiler.h */, - 15EADA40986FAB7A72D6AAF4AB20C9AA /* ARMJIT_Internal.h */, - 216A6A3C34E1B0D2B37AF0F69445B3B0 /* ARMJIT_Memory.cpp */, - 9F8B1EF5CBC47463811F0885E43429E4 /* ARMJIT_Memory.h */, - 74370705578A20E60CAC4693D6AA6FA6 /* ARMJIT_RegisterCache.h */, - 83196FEC51C0814A8ABCF0EF4FAE5EB7 /* Config.cpp */, - F10C0DF3E69DA0FDB0A55164F835A6B9 /* Config.h */, - 2784D28154C321EB45B31ABE7415E7BD /* CP15.cpp */, - C5467F3A301E5ABC6E4E314092284C44 /* CRC32.cpp */, - 9750FEC33D895C61AEF436CC327ACFCA /* CRC32.h */, - 26BA52E11E63B3D60A0CFCE4C371772A /* DMA.cpp */, - F265B3DDB1DC6C5CF0306B372210D001 /* DMA.h */, - 078B47798F4714CA00EC913C77AFE765 /* DSi.cpp */, - 3CE123C6217FBA6E9407242245691A7F /* DSi.h */, - 4E1DE9F1DDEDBEE5D971B5D9F255C9D7 /* DSi_AES.cpp */, - 2DB3F6685D0926B7D45B4A6DF4CB7567 /* DSi_AES.h */, - 375C3C3A4475372C4AD36AD0B2842472 /* DSi_Camera.cpp */, - AE8FF7894487C1699C9C8BE1F0D8B3D5 /* DSi_Camera.h */, - 796084063277FF52CC987CFFC579DEEB /* DSi_I2C.cpp */, - E4A6099E638BA490D0FA43608201D122 /* DSi_I2C.h */, - 4539EE42EA9368DA3FC54B00064B5F74 /* DSi_NDMA.cpp */, - EEDA2ECC059F3543D89E74A08C12E140 /* DSi_NDMA.h */, - 7E99F915543C72FB60BB5CD12C64429E /* DSi_NWifi.cpp */, - 4A816119B4F74725D1C6ADB8F10B4AC8 /* DSi_NWifi.h */, - 144070FBE1B4F02DA8ACA800A4973DC6 /* DSi_SD.cpp */, - ABA1589F385B7F9A3694A4D20914974C /* DSi_SD.h */, - 96852635ABD2522BA2288FB805549111 /* DSi_SPI_TSC.cpp */, - 3B227874CD4B76D36C22095809680FA3 /* DSi_SPI_TSC.h */, - 2AAA49DF639504DEB3CEE32DA59B05E5 /* DSiCrypto.cpp */, - 53F89D9483D4FCD9B6AD70C3BABD0A32 /* DSiCrypto.h */, - 11DFF9C52A3266701AE7649642EF1E85 /* FIFO.h */, - 71CF8F17CF2C8159C4E059520894D5EF /* GBACart.cpp */, - 68C333FACC662CE4E939F918AC617C95 /* GBACart.h */, - FE93DEE394994F832D334D9E6E12A6A3 /* GPU.cpp */, - A9F4D5E300A96F436A0772554431B81A /* GPU.h */, - A3D65EB1B51D2762008ABC7E328FB4E6 /* GPU2D.cpp */, - F4BD93EBB898827AF67732B5398A5020 /* GPU2D.h */, - C4E7BA0D5AC9F82D2F7154C4C7B1C153 /* GPU3D.cpp */, - 2CC8EA4C118B72A50FD6895AF0901EA0 /* GPU3D.h */, - 8F3E1A7FCFBED0C2B25120A907814BB8 /* GPU3D_OpenGL_shaders.h */, - B214DD9EC77ECFC9421DE91EA0F6D699 /* GPU3D_Soft.cpp */, - 0DECA64287BA359B6B4E40FBBC0D3895 /* GPU_OpenGL_shaders.h */, - 9547FE6CD4373B25D13B8B2E6EB613B9 /* melonDLDI.h */, - BBFF69619A4D7602B5E9CDB34E41A6A2 /* NDS.cpp */, - 08338820A73BD47EAB39BD931E037973 /* NDS.h */, - 11D9A3CBF7BCEEAD593BA3894A130C67 /* NDSCart.cpp */, - D6AE3D3CEA4A380A77F394C53E8FEBFB /* NDSCart.h */, - 0F9DF75921EC3BB1DE00EF33B7A96319 /* OpenGLSupport.h */, - 186E4D584EAF0599FAE8D2C3DEC77610 /* Platform.h */, - 201A5A32F9006763F07BA5E3581871D0 /* ROMList.h */, - 2CEF5831E21FEB587EC1550C13D99132 /* RTC.cpp */, - 7D16EB8114A53F291EEF976E892B4E8A /* RTC.h */, - 90DD17ABEA9E2CF8EFA5A0640BBF5256 /* Savestate.cpp */, - 9171559D6EEC0F5564085AFA32A8CC96 /* Savestate.h */, - 2136D656956ECA61A97ABEDA06A5FC0F /* SPI.cpp */, - 65A3DF3862EB2C06BE04F217E799F74E /* SPI.h */, - 974A5A80FEF9ADAB76EC64F1ED289A72 /* SPU.cpp */, - A7BB2BCF965C0CFF87F6B6493A78DBEC /* SPU.h */, - 67F3604815E9FA261FF7B198C7B93DB9 /* types.h */, - 6C53AFC7C3E9CB17543D6DAA0BC85DC0 /* version.h */, - B87B82316F6E2AF77DEC3C71983960D8 /* Wifi.cpp */, - 64880C39DADCE43CFC613BD1EEBF6875 /* Wifi.h */, - CF1439CA418CD15261C7A8EAE10EB5BC /* WifiAP.cpp */, - 7AB0218EEDC30D1A5BF7AFAE3D9D0676 /* WifiAP.h */, - 0CC2188DE901AF8A7776179292B4335B /* ARMJIT_A64 */, - 72C377A83102710C5D9F59161CCA9D38 /* dolphin */, - 286C3B8D78E0A77F9B2D31B27F5049A9 /* frontend */, - E5BB0C707BB7BD02B0B71BEF26EA05A4 /* tiny-AES-c */, - 9A6D2708293DA4B80EF178F7DECA5BBB /* xxhash */, - ); - name = src; - path = src; - sourceTree = ""; - }; - EA4CA817525AAB80621DD2FAD3928E7C /* Keyboard */ = { - isa = PBXGroup; - children = ( - B189DC53FDFE10C190B9FBE91F050B55 /* KeyboardGameController.swift */, - F52CFA0D8CB9C39E3A30CC1BFEF5E12B /* KeyboardResponder.swift */, - ); - name = Keyboard; - path = Keyboard; - sourceTree = ""; - }; - EAF7F5D8717DB2EC4CAE7880FA03603B /* Types */ = { - isa = PBXGroup; - children = ( - E099575E112559BF97F5D20E9E8630D0 /* N64Types.h */, - 5C48FF19B66C43CC61264FDFDA92A9B1 /* N64Types.m */, - ); - name = Types; - path = Types; - sourceTree = ""; - }; - EB34A2FC74D6227E23516B7948BC9D0F /* Support Files */ = { - isa = PBXGroup; - children = ( - 57B34424210B5C2631F01A486C9351BB /* Alamofire.modulemap */, - 38A54DE3848C6830CA6D438BCCE65D81 /* Alamofire-dummy.m */, - 4C832C9A82654DA76719E0AB5ED13D8E /* Alamofire-prefix.pch */, - 2FBBCE862E374DE16A6F3E328AA1A1DA /* Alamofire-umbrella.h */, - 6699C28C7C6519A74846481B5F2FC5A3 /* Alamofire.debug.xcconfig */, - C3B144DAC7663AA196FF05DB5F4FAEBE /* Alamofire.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/Alamofire"; - sourceTree = ""; - }; - EB850DFBF3B7290F85D264D6A6466228 /* Controller Skin */ = { - isa = PBXGroup; - children = ( - 79A9169FAA91BB5E2459CF07BEB0D5B9 /* Standard.deltaskin */, - ); - name = "Controller Skin"; - path = "DSDeltaCore/Controller Skin"; - sourceTree = ""; - }; - EC4F7B0E4BC9B322C54CF974FFDFF8DD /* arm */ = { - isa = PBXGroup; - children = ( - 9C09C3D1334AECB063BC1FD83DF8C448 /* arm_cpu_features.h */, - E5B244600E07D5FD3AADCF7D31EF42A9 /* assem_arm.h */, - ); - name = arm; - path = arm; - sourceTree = ""; - }; - ECC83CB796F3ED66B111E3842A622BC8 /* rdram */ = { - isa = PBXGroup; - children = ( - 43155D80E0BA237C31D4788F6BB7D924 /* rdram.h */, - ); - name = rdram; - path = rdram; - sourceTree = ""; - }; - ED589605642EE627D2168CAEAF6557D9 /* arm64 */ = { - isa = PBXGroup; - children = ( - 66FB69307E96C7CD8ACCF5D63C2853CB /* assem_arm64.h */, - ); - name = arm64; - path = arm64; - sourceTree = ""; - }; - EE38714633BF06856461F3CEC3702699 /* math */ = { - isa = PBXGroup; - children = ( - 79FAEA560AE13479E3AE1C9D4193CBE8 /* complex.h */, - B6BAFAD7FC6CB3785A7435A2B33B2CCC /* fxp.h */, - ); - name = math; - path = math; - sourceTree = ""; - }; - EE6519880B0CA1CAD77D5755F2395D6C /* Support Files */ = { - isa = PBXGroup; - children = ( - 60BCF18DF0AD25DE5763BD1EB88F9DCA /* NESDeltaCore.modulemap */, - 68481410980138B078817FD83996CB80 /* NESDeltaCore-dummy.m */, - 0B462ECC07973991314C9A75B30D3B0E /* NESDeltaCore-prefix.pch */, - 1FB8DC1C23FE7CB1124719080DD2D99B /* NESDeltaCore-umbrella.h */, - 990DFA0F64EC73731FE3D33EDE671F46 /* NESDeltaCore.debug.xcconfig */, - 6E1E6B172372CDF4080C7440C0152069 /* NESDeltaCore.release.xcconfig */, - 00A5668FA86B637AF8FB9CC3F2B4B5DE /* ResourceBundle-NESDeltaCore-NESDeltaCore-Info.plist */, - ); - name = "Support Files"; - path = "../../Pods/Target Support Files/NESDeltaCore"; - sourceTree = ""; - }; - EFAF47D0C9F61E199012360FE1FAC705 /* melonDS */ = { - isa = PBXGroup; - children = ( - E926B7E8F7EA4269BF8B57BFF9285B66 /* src */, - ); - name = melonDS; - path = melonDS; - sourceTree = ""; - }; - F1EA809FD50B47C62E421341AA7295B2 /* libretro-common */ = { - isa = PBXGroup; - children = ( - AB78201AB604D95E69BB3E33EC27C314 /* include */, - ); - name = "libretro-common"; - path = "libretro-common"; - sourceTree = ""; - }; - F3675030C3BFBD14F62E0BC13BD378F0 /* r4300 */ = { - isa = PBXGroup; - children = ( - 7427B67B589DE237C8DA6027B77D9486 /* cached_interp.h */, - 66C9224567E1ABD1BBE56C13676AA651 /* cp0.h */, - 0A84AB2950857E041CB20CD222305CA7 /* cp1.h */, - 8D22DB712CF3F07C4D4F62A7F0D2016F /* fpu.h */, - BBBCDA15DF519AF03646ED3FD16CC4A6 /* idec.h */, - B9F0DFCB779B9AF6CD5701965ECDFDDC /* instr_counters.h */, - 20079F8AEED9F1802083DFC0C96CA78D /* interrupt.h */, - 370CCAFA9A85F11C84A26CCC1747C687 /* pure_interp.h */, - F4D10DD3D9ADA80E392F14E7BD19294C /* r4300_core.h */, - 61EB5BCD79F4DCE7238642BC44E6D1BE /* recomp.h */, - B23E65EABA52B43B87725C6E03A5F6DE /* recomp_types.h */, - 2BC1651F3398F95A7546117ED3510535 /* tlb.h */, - F5E04FBF5728F640A92A9F69DE4D11B6 /* new_dynarec */, - CEAF4653D324E5DB6331258EA409CB42 /* x86 */, - 92B457A8D260FD8FD0B3001022710A22 /* x86_64 */, - ); - name = r4300; - path = r4300; - sourceTree = ""; - }; - F3C36A722EB186624283EAC9648837BE /* plugin */ = { - isa = PBXGroup; - children = ( - FA4AEA75EC63BEFEF18086DCDB401648 /* dummy_audio.h */, - B764EC210FA0F420D6494B25D25FFDE2 /* dummy_input.h */, - AAFF25207CC13A8FEAED05C5BFA5C899 /* dummy_rsp.h */, - 1B78842984D068D0DB4702EC9F9438F7 /* dummy_video.h */, - 74C8A5BDD2CBB1549A0AF5DD8B86AE36 /* plugin.h */, - ); - name = plugin; - path = plugin; - sourceTree = ""; - }; - F48F6D1E2D5CCD3576299C9CAE1BF550 /* DepthBufferRender */ = { - isa = PBXGroup; - children = ( - B9A4AE4E227198A222EC04904FA67DCF /* ClipPolygon.cpp */, - F7DBAD3AB29B6419D008AA8066EDA2C1 /* ClipPolygon.h */, - BBB5D600AC9C95A64296B6A4B1CEAECF /* DepthBufferRender.cpp */, - 1EB97E3AEF3926985796B7557459FF17 /* DepthBufferRender.h */, - ); - name = DepthBufferRender; - path = DepthBufferRender; - sourceTree = ""; - }; - F49D74DA1C8176F2F0BF88D99354CCBD /* Support Files */ = { - isa = PBXGroup; - children = ( - 53F1A383C57959E32F4DB5969BEEAF76 /* DSDeltaCore.modulemap */, - 2CA3D8C154FC7E7043473A1E7BF36F6A /* DSDeltaCore-dummy.m */, - 95F049847BEE0BF36EF6E045A5A6260D /* DSDeltaCore-prefix.pch */, - A14F9CC7939A0403867CFDA1DA17BB98 /* DSDeltaCore-umbrella.h */, - 8A663C19A160C58658C37E00C9C00A83 /* DSDeltaCore.debug.xcconfig */, - FE81E396E46844584FB6B2FF7E5F104C /* DSDeltaCore.release.xcconfig */, - F0D69045548219AB3648E59524869CAA /* ResourceBundle-DSDeltaCore-DSDeltaCore-Info.plist */, - ); - name = "Support Files"; - path = "../../Pods/Target Support Files/DSDeltaCore"; - sourceTree = ""; - }; - F5E04FBF5728F640A92A9F69DE4D11B6 /* new_dynarec */ = { - isa = PBXGroup; - children = ( - E24F3C6FD9134EDD33136C2B924CE6D5 /* new_dynarec.h */, - EC4F7B0E4BC9B322C54CF974FFDFF8DD /* arm */, - ED589605642EE627D2168CAEAF6557D9 /* arm64 */, - 47C98A43905AD5F255C5F34DB19A258A /* x64 */, - 7A99C42EAF3B605E867117F29CCECB6B /* x86 */, - ); - name = new_dynarec; - path = new_dynarec; - sourceTree = ""; - }; - F65BED4C3E6F44307F1A31C288461A90 /* osal */ = { - isa = PBXGroup; - children = ( - CE94E0A2B88BE282A28CEA0301EB7547 /* osal_files.h */, - 3B5AEE693F04A288AD606B62A80145EC /* osal_files_ios.mm */, - ); - name = osal; - path = osal; - sourceTree = ""; - }; - F8EF726EDCE35C1896D9E3A0211BA6DC /* data */ = { - isa = PBXGroup; - children = ( - EC4989F2AA541A9B07E4D99182254D4F /* mupen64plus.ini */, - ); - name = data; - path = data; - sourceTree = ""; - }; - F90622E5A8795BB92FD3A34733D8D994 /* Audio */ = { - isa = PBXGroup; - children = ( - DB24C7CDE3A7F0607B919C5070452FEC /* AudioManager.swift */, - F35D8BC06AE7631CD983FB1019C80DCF /* DLTAMuteSwitchMonitor.h */, - FAA16CD6BB856E1F600CC6DC038A6801 /* DLTAMuteSwitchMonitor.m */, - 6FFD12A0BF77313EA363649EC4149D5D /* RingBuffer.swift */, - ); - name = Audio; - path = Audio; - sourceTree = ""; - }; - FA03DFA0ACD5FC355668FDFD1B0FC924 /* gambatte */ = { - isa = PBXGroup; - children = ( - D6AC940F5F54C1E28867389113D05907 /* common */, - A2D08D2E670D662B9B6E2E1E0B9276B9 /* libgambatte */, - ); - name = gambatte; - path = gambatte; - sourceTree = ""; - }; - FB57568BF5BA2323DBBC6DEF9211587F /* DSDeltaCore */ = { - isa = PBXGroup; - children = ( - A993D39512A6DFB0B6BC9868BB99AB8E /* Standard.deltamapping */, - EB850DFBF3B7290F85D264D6A6466228 /* Controller Skin */, - 1733F323075FB5D03F9330D32E0A5860 /* desmume */, - 312FC3C9DA41D86E9BD7060619C617F8 /* DSDeltaCore */, - CF805E54CD4AD4E58E03838FA5DC84C6 /* libDeSmuME */, - 63E68CA669EBCE20FB0EBE9CC3F9A237 /* Pod */, - F49D74DA1C8176F2F0BF88D99354CCBD /* Support Files */, - ); - name = DSDeltaCore; - path = ../Cores/DSDeltaCore; - sourceTree = ""; - }; - FC18A141231F5F8AF364EAEA504A1027 /* Support Files */ = { - isa = PBXGroup; - children = ( - 13E2386205BC0C6A8574002DB9AF6B91 /* SQLite.swift.modulemap */, - 4BBBCBFA40EE49208B031D370878AD29 /* SQLite.swift-dummy.m */, - 24542D74858775F20FC6798EF8EE4264 /* SQLite.swift-prefix.pch */, - B88A4A4D429C70A73A2F3F183EC24732 /* SQLite.swift-umbrella.h */, - 75769AD8AA1E6A55767E34444DEBA81E /* SQLite.swift.debug.xcconfig */, - 5AB2076B345EF471110CA2A7FA91562E /* SQLite.swift.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/SQLite.swift"; - sourceTree = ""; - }; - FDCA122198B7A77E19B9A3DA36ED1A57 /* device */ = { - isa = PBXGroup; - children = ( - 0BBF923ADADD1C68180C8F3D550EE2FD /* device.h */, - 2FD4F05EE9F3EF5FC1D377A92C6802DA /* cart */, - B444023C46260E593C3D5490DFCFC992 /* controllers */, - D693BDB33AE03196E109616B8303466B /* dd */, - 7953976BC55043608F91FE8C29C10F79 /* gb */, - A85CC4D6E3740B86D535BAF06D6C0DC3 /* memory */, - 95AA9FE7FC9405F6815FEF8888D30F1F /* pif */, - F3675030C3BFBD14F62E0BC13BD378F0 /* r4300 */, - 6520D728E92968E078B4F24F91ECBE6A /* rcp */, - ECC83CB796F3ED66B111E3842A622BC8 /* rdram */, - ); - name = device; - path = device; - sourceTree = ""; - }; - FE67741F5455D8B10C0818386FDC7738 /* visualboyadvance-m */ = { - isa = PBXGroup; - children = ( - BBF949FC35F93DCCE94C51B31C34457F /* src */, - ); - name = "visualboyadvance-m"; - path = "visualboyadvance-m"; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 0B81AEAC743DC541709D86FCD8415BFD /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 3F6976E4C9D03C8135EAF94CE0866FA7 /* aes.h in Headers */, - F5A54B0D155E98BD9B3511F7ADBBD4DE /* aes.hpp in Headers */, - 12DB6C107F74B673AD48F9C617481829 /* ARCodeFile.h in Headers */, - 3FE35DA3722A4B4A7CF6612740ECA43D /* AREngine.h in Headers */, - 6B82DBF636F53D68C552A63195681206 /* ARM.h in Headers */, - 09E985251676F5C402F180F2BF3803C2 /* Arm64Emitter.h in Headers */, - AA8D88A6F5F153C9A596E98939148749 /* ARM_InstrInfo.h in Headers */, - 0F54EBE4D42DEF7F223F9C19A0BB596F /* ARM_InstrTable.h in Headers */, - 8E859D83F6C3578B36A6D6CED24B3EEA /* ARMInterpreter.h in Headers */, - C83C5CDA13B192B23AB4B3A3EF74EC10 /* ARMInterpreter_ALU.h in Headers */, - EF21A8D301CD7C152DAB7B68E0E1CA48 /* ARMInterpreter_Branch.h in Headers */, - 7DA905AAE6136DA0E5A5C0BB241A8E17 /* ARMInterpreter_LoadStore.h in Headers */, - 1F96F86656E4EAED0BBD6121CA9C48E2 /* ARMJIT.h in Headers */, - CB97234A854C16E3044AA05292155CDC /* ARMJIT_Compiler.h in Headers */, - CB97234A854C16E3044AA05292155CDC /* ARMJIT_Compiler.h in Headers */, - D91D979A999CDAC6EF33D7BCA581A2A7 /* ARMJIT_Internal.h in Headers */, - 5D932F3ABA1AFE35D6B14DFE197E316A /* ARMJIT_Memory.h in Headers */, - 1421F930058D5B2FE466EFA3AE740406 /* ARMJIT_RegisterCache.h in Headers */, - 838218B7AFEC3207ECC70633EE2C4501 /* Config.h in Headers */, - 273929BF89BAB80B85E4B0C80A593683 /* CRC32.h in Headers */, - F90A08CBC66F103BD68B8A265EBEA8FB /* DMA.h in Headers */, - BC2BC027F91DE7F29EE0EF17ABD6B65F /* DSi.h in Headers */, - 8744D481D32BE256F4845EE035F31808 /* DSi_AES.h in Headers */, - 06B35061755FDC2D7A853EEE6FDC6CDB /* DSi_Camera.h in Headers */, - FC131A8D78B1B7229F71E54790C4B218 /* DSi_I2C.h in Headers */, - 376BFFBC1328C0C152BF3E26C5C3AAAE /* DSi_NDMA.h in Headers */, - 825DD7DD6A0901499A3C2EB50154DA33 /* DSi_NWifi.h in Headers */, - FCD6C7BF8B08E2A3EE33E1D6034180B4 /* DSi_SD.h in Headers */, - 7A2BBF7EFCC9195A4706C0ACA68AB4FE /* DSi_SPI_TSC.h in Headers */, - 33AC02E4AADC0C7A4F3CB5FB66568B17 /* DSiCrypto.h in Headers */, - 060AB9649E07EF050A063BEE203E324B /* FIFO.h in Headers */, - D9A49EF85014C5C6BF97B4CC6394BF83 /* GBACart.h in Headers */, - E0E429D4FA26414B067D0E756801C7CE /* GPU.h in Headers */, - 9E15FD444D5CD3E1BA09ED2CBFF0DB0F /* GPU2D.h in Headers */, - 7025BA66FF113137E0EAF6A2EECA3688 /* GPU3D.h in Headers */, - C8A3566473A4C5C977A251724F140FED /* GPU3D_OpenGL_shaders.h in Headers */, - 079E89E983F800F6FCB0C3B19D33E403 /* GPU_OpenGL_shaders.h in Headers */, - 095B6EDC7213ED4CE6F325020145872A /* melonDLDI.h in Headers */, - A8C9F1FF546858336F5865B4ABEBD5A7 /* MelonDSDeltaCore-umbrella.h in Headers */, - 526F0C25294137B33C5AB6E9FB49C184 /* MelonDSDeltaCore.h in Headers */, - 4ADA0EBAE9AA0838C8BB4E1BCB970EF4 /* MelonDSEmulatorBridge.h in Headers */, - 0D4FA3A4EEB3354A23594E529C087DBA /* MelonDSTypes.h in Headers */, - 822E2BAE00E8B2C1C3622B40DF5D45B2 /* NDS.h in Headers */, - FA10054A09EB501804C54CFCB0154C72 /* NDSCart.h in Headers */, - 0DFEB41AEEDB9AE280CF106CC55D2376 /* OpenGLSupport.h in Headers */, - CFCC4883EF894FB2BC8620BD239BFB89 /* Platform.h in Headers */, - 6296F6264E028A9BBF60D49CCC363932 /* PlatformConfig.h in Headers */, - 6FFEB57454F82715E5AAEF3CF64079C2 /* ROMList.h in Headers */, - 6D2D3EF4BC0867C07A2EA7170CCD6408 /* RTC.h in Headers */, - 5D4F3A50B7FB921EA83E4F5F2D95FBDA /* Savestate.h in Headers */, - A487099212AF614A74B767557D4933BA /* SPI.h in Headers */, - 55A7F5BFC6817F0ADFAFA890240943B9 /* SPU.h in Headers */, - E7B401335B62CEBA10AA39963E09ED5F /* types.h in Headers */, - 364D452F7CE09D453DE81D1440FFD211 /* version.h in Headers */, - 76F6021C0DBFD5106C36F6B51A77F042 /* Wifi.h in Headers */, - E8F000270D59DB3501DF1B57A04E6CF5 /* WifiAP.h in Headers */, - 0D19F1EB3F884DF4201B3F99DC4C3178 /* xxh3.h in Headers */, - 615485A6707CC6DA8CA2B65C4E2E040C /* xxhash.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 120F018C57A1C7EDED1DCC95C28EB231 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 2120032F00AB9FE24A107F4C3AD6487E /* Pods-Delta-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 12C6F90746C89ACD2C642508705F0B1D /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - C2C5E95A3778956D900630B30127E6BC /* GoogleAPIClientForREST-umbrella.h in Headers */, - D21FA0B1E677F37B8B6816C9FC08EC82 /* GTLRBase64.h in Headers */, - 003DA77373EA7A6C58230A3B5C8BD2C9 /* GTLRBatchQuery.h in Headers */, - 766306BF1B7A65F4DD5A68DA683A729B /* GTLRBatchResult.h in Headers */, - D3402FEC79C759B618D76054EA4AFA74 /* GTLRDateTime.h in Headers */, - BF007953AD85268DAADE95A4578790FE /* GTLRDefines.h in Headers */, - D25EE90E04D6167B04E134E40B324AB1 /* GTLRDrive.h in Headers */, - D0A677BC713110416D5C821975836C37 /* GTLRDriveObjects.h in Headers */, - FFED35B78D0E0C68526F3E3BB920230D /* GTLRDriveQuery.h in Headers */, - 469EAF80560362FC2EA1F8545DB6B051 /* GTLRDriveService.h in Headers */, - 6E435A3888414096AB38942CC2017635 /* GTLRDuration.h in Headers */, - EA757276E51B372186AA7CBF54417409 /* GTLRErrorObject.h in Headers */, - 0DF3091B2BEA6F68C30A9F70E0C34EBD /* GTLRFramework.h in Headers */, - 3AF8C64F61ED8696423A082EAD71334C /* GTLRObject.h in Headers */, - C6625E357CAC034BB823DD859355FB88 /* GTLRQuery.h in Headers */, - EE00773DEB5849BDFE00AD4CE6FB8EB9 /* GTLRRuntimeCommon.h in Headers */, - 2E7CF2452B84932D8BC4721944148FD4 /* GTLRService.h in Headers */, - 3FBEC30670787C8E30826F4C08A5EE05 /* GTLRUploadParameters.h in Headers */, - 428EFC8EA34D19BDE99A1DB7B9ED5511 /* GTLRURITemplate.h in Headers */, - C0284CAA9055BDD1995683D6BCCE283A /* GTLRUtilities.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 149749DE9506E393655133E5DCCA16BE /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 020F883CD6692524572847AC844D9DA7 /* DeltaCore-umbrella.h in Headers */, - A17D20C132072295C6EFAB9B35C10E1F /* DeltaCore.h in Headers */, - 149C41DFD366FE8D2F8D1F17694E71EB /* DeltaTypes.h in Headers */, - 7C9B8104635D79985F4D611888549D4C /* DLTAMuteSwitchMonitor.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 26CD12A0A8FED394729931D851C1BDFE /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - C9898D393FDF7E17C404424E76078E76 /* NSData+ImageContentType.h in Headers */, - 20983A4E2B0967B542119114AB073BB7 /* SDImageCache.h in Headers */, - 32C5649F56A9F2DE34AC6EF9FCA33323 /* SDWebImage-umbrella.h in Headers */, - BCCF0B9F15A1651547EADC31A6CEB5C2 /* SDWebImageCompat.h in Headers */, - DBF0A6C0BE990638F43CB71209C4E731 /* SDWebImageDecoder.h in Headers */, - 488875F3618617406AB771502A10BE59 /* SDWebImageDownloader.h in Headers */, - 07BB377F31975D34EB8CCC8C3E05597F /* SDWebImageDownloaderOperation.h in Headers */, - 32F7E2ACCA4602AE9DE680A9D70EE36F /* SDWebImageManager.h in Headers */, - 52722B0030C7E925E9C8304457491FFB /* SDWebImageOperation.h in Headers */, - E0584F089FB27ABA38D5D355721DE37C /* SDWebImagePrefetcher.h in Headers */, - 16BA02E314DD1557E7856374C52DA346 /* UIButton+WebCache.h in Headers */, - 6A245DCAC5A1FD3F8943F4FD3E1473EE /* UIImage+GIF.h in Headers */, - B2413D48BE65FF8FD294A53D5C5B760D /* UIImage+MultiFormat.h in Headers */, - BCC3B83B11F726387F8C0A3568E470D1 /* UIImageView+HighlightedWebCache.h in Headers */, - E9D90305973DEDEC0F4BFB33B4281876 /* UIImageView+WebCache.h in Headers */, - 8AD3B7AB59719794E86F41BA43AA9BB7 /* UIView+WebCacheOperation.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2D3BC56798D50141DFEBE4B42E8D077B /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B1F0B2FCE7FB204E1BBCC520C779088B /* AAFilter.h in Headers */, - 0007BB4AEE9BB717F23ACB29EB48DF8D /* arm_jit.h in Headers */, - 988D404F693390C74ABBA251FBACABAE /* armcpu.h in Headers */, - 3858A5E7345359ABE491B3BAD5011E5B /* bios.h in Headers */, - B6A58C39953291EF95ABD670C2BB7567 /* boolean.h in Headers */, - D992B8A8089E95797BDD23C1508E5C6F /* BPMDetect.h in Headers */, - 6C17CA1AF886C494D9E80A05F4BD2062 /* cheatSystem.h in Headers */, - C4CE02B3937CEC49869498DF3BCCEEA7 /* clamping.h in Headers */, - 6A3FEFD8739647A3BF22C30B72456F7A /* commandline.h in Headers */, - 4100248683FD407FEDF308AF2FBC1D71 /* common.h in Headers */, - E9F8A3C22469E8BAB93C284CF3F2B7EE /* complex.h in Headers */, - 25434156E69DD31A896E663907EE7DEF /* cp15.h in Headers */, - C3DD7FF6DB0DFFE0FE3E7650E731701B /* cpu_detect.h in Headers */, - 0E3ABF1FC812924C32FC507F2711C2D5 /* Database.h in Headers */, - 7F5CEDB3A6EB261E02C020FE84B1AD52 /* debug.h in Headers */, - 3A61176BC3353F1CBBA3A411006BA8CF /* Dialogs.h in Headers */, - 1BBECCBD01F0043D7DEDAB0B09E8EAA5 /* driver.h in Headers */, - 77EE048FF5BAD263396AFA2DA2840C73 /* DSDeltaCore-umbrella.h in Headers */, - B408C23C295D9B635EC3D246968A93D1 /* DSTypes.h in Headers */, - 6BB349E00D1E7685E9246321FB0AA397 /* emufile.h in Headers */, - 8FD355BFFBA55AFA633AAAABBDC7C45C /* encrypt.h in Headers */, - 555FB12D5FCF2D3893536E6A5B958962 /* FIFO.h in Headers */, - F23B49501483D71ACF19ADD7D8730D95 /* FIFOSampleBuffer.h in Headers */, - DF45437B2D67C4831E20344F5D9FA8EA /* FIFOSamplePipe.h in Headers */, - 2C60FD50629B5BC73FCB82527EA899C0 /* filters.h in Headers */, - 4722E4C5A2200870DC4994299C29E13E /* FIRFilter.h in Headers */, - 9C23DF253F333470EDC0326295BDDC40 /* firmware.h in Headers */, - C0A24CC75E25B19FD30BA14481521C22 /* fxp.h in Headers */, - 8387865C36E4A16D5BC2B8B601FA0DA0 /* gdbstub.h in Headers */, - BF8BA5395C9DBFA6325D84308D13392C /* gfx3d.h in Headers */, - 827F3AAAEF71FE695F50EECE3F3EDDC1 /* GPU.h in Headers */, - 6B25D672C20F09250D089377336CDF49 /* instruction_attributes.h in Headers */, - F24B0F07C123E4914D264DEFD17413C4 /* instructions.h in Headers */, - B256392AFE33E2C71B09243E8CD78C6C /* libco.h in Headers */, - 5C80EEAFDA8E90AA114DC25182BC98E6 /* libretro.h in Headers */, - 26597B356A1B40C3584D56EE30B2E794 /* libretro_vulkan.h in Headers */, - 4B8C3C6D94DF606A6D387BD2154AEDAC /* lua-engine.h in Headers */, - 3ED2358FA22A626EB46EB609B6072096 /* matrix.h in Headers */, - 9A6FF72EA927C0701CC40488A259AC67 /* mc.h in Headers */, - 394D71AE48F3EBEDEA27A6E034D2A972 /* mem.h in Headers */, - 55A78F9C62B20037E0B83A7E7F4AEBAA /* memalign.h in Headers */, - 391F2172A9C3C815A4BA42E5D2ECF0C0 /* memmap.h in Headers */, - 658C06C1385AC9A5C9A5BC454A6894AB /* metaspu.h in Headers */, - 5CA3642022F063CA0484DB90E99B6254 /* mic.h in Headers */, - 6B6921006A589C0CC926482EBA5F824E /* MMU.h in Headers */, - 4815EB441ECFCC3EC477EB9A12984FA5 /* MMU_timing.h in Headers */, - 0587BEF520D1494D56F30937F4EACB9B /* movie.h in Headers */, - 586E16FDD5C90F3C191E86B101EC6A25 /* NDSSystem.h in Headers */, - C70345FD3D8E41D0D3BFFF6E34B05DF2 /* OGLRender.h in Headers */, - 2017E7E9EC1FD668E6BD83E6583FB779 /* OGLRender_3_2.h in Headers */, - 5BBB3C500191EA135841640C6D585BB2 /* PACKED.h in Headers */, - C5AF86847195A800EA4D19CD8147B03F /* PACKED_END.h in Headers */, - 3D627BB299F8F33AEAF091B8F8CB81AD /* path.h in Headers */, - 9BC38C5981E8362BD3AD9B1CC1609AE2 /* pcap.h in Headers */, - FDA4F302E7858AA38CFEFF67E638875A /* rasterize.h in Headers */, - 51825EB538D21FDFA5B0484503867B43 /* RateTransposer.h in Headers */, - 019A7DC0638AE9DB69EBCF4678FAFD12 /* readwrite.h in Headers */, - 6397CE28C0D86E79745F531C11A1831A /* registers.h in Headers */, - 3721263F244DE0949485AA6D697EE083 /* render3D.h in Headers */, - 5C62773B7C5D9276E3C4604889BABC88 /* retro_assert.h in Headers */, - AC768394D25191956405BCDE5EE17BBE /* retro_common.h in Headers */, - 69AED621C3B84C3A28A9AE34938B9E6D /* retro_common_api.h in Headers */, - FDE1CF568DC42AD5806DB6F851AD0BF0 /* retro_dirent.h in Headers */, - A94D6595A758E675DD83C93E78570450 /* retro_endianness.h in Headers */, - 4EBCB348A3635B2DF72AE15170F5B9EF /* retro_environment.h in Headers */, - D51AB3BFCC1752CCF56184183A19C465 /* retro_inline.h in Headers */, - A7D032EB950914E52D99251BFF5E4B0E /* retro_miscellaneous.h in Headers */, - 0A98B4B956619FB5C162039DA3C5A465 /* retro_stat.h in Headers */, - 9401A99CC914BB95D46BBCC9BAB2ED93 /* rhash.h in Headers */, - 754299C70FF69587599A5F7060A72D95 /* ROMReader.h in Headers */, - 2C53E269DB432154A34959FD9111D844 /* rtc.h in Headers */, - E6092E51C6BD2A2D2202330C630C1492 /* saves.h in Headers */, - C767C381E88CCD818F40245A092E0EE6 /* scmrev.h in Headers */, - 29DB047352DA13A31AA0C71A1CF26752 /* slot1.h in Headers */, - E47AB08926E1286A3A4405C606B8A607 /* slot2.h in Headers */, - 54AE98FD1CEB75BBF1E1050705DE0484 /* SndOut.h in Headers */, - 45F2B0726C3D59937427243B7241C0CC /* SoundTouch.h in Headers */, - A5D2CBA2DD672B6B6B94D66F4CB57CC6 /* SPU.h in Headers */, - B8D038096F0DBDE518092569E0E0F24B /* STTypes.h in Headers */, - F7250E55754332B6F1936A7C3B28852C /* TDStretch.h in Headers */, - 1791742A738830C47703F19535E5DC75 /* texcache.h in Headers */, - A3B1E03C696CC77248842655D99E9ABF /* types.h in Headers */, - C99C48EF8B5ED63B3D30A0AA3B1DC8E3 /* version.h in Headers */, - 87CC24C4FE328303848BBC21D8DDC2D9 /* WavFile.h in Headers */, - 704D76D2B43A52B28CC020096E94A76F /* wifi.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2F2F64A11781D62E7F9C71DFE7204683 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 79CEEEC5DBF057C477B24FF082B978E4 /* agbprint.h in Headers */, - 8C4FEFBFCC0CADD0E4827A9C3F5A7401 /* AlResource.hpp in Headers */, - B80581C8966E8B7BC0F259879A30BA03 /* armdis.h in Headers */, - 1DAFA92D053CAA64ABBB982C41B60B07 /* array.h in Headers */, - E423F650B1959C2D33214A6C697ED7AE /* Audio.hpp in Headers */, - 0360256BB22485A1DF7BB664A16998AD /* AutoBuild.h in Headers */, - 16741BA68E8D631D618B7272A358E813 /* bios.h in Headers */, - BFC1020FD297C46426A045C37BD06F09 /* BlendMode.hpp in Headers */, - FDA34900B0AD2B2A26A1A3F33C79EF47 /* BreakpointStructures.h in Headers */, - D8A98334293775BCC5FACB719D52DCFD /* Cheats.h in Headers */, - 65E7570C089E49BB028EFE485BDE8D73 /* CheatSearch.h in Headers */, - 820053AC54DA4AA301015DB7680E456D /* CircleShape.hpp in Headers */, - 1C79414F5ADFDACC8FB8328DB3B0EB87 /* Clock.hpp in Headers */, - DD19CF3BC93018DE9F1DC0D9C36E4ECC /* Color.hpp in Headers */, - 9D8B731B59689342946A389DC985EC84 /* Config.hpp in Headers */, - 7684533610B9449A4AA5C3A000E42D09 /* ConfigManager.h in Headers */, - C60AC4C065C30B5F8DBBACE3779814CE /* Context.hpp in Headers */, - AAFDF632C307AF4214EA482F4613353C /* ContextSettings.hpp in Headers */, - AA6E8748785546BE632543550E49D772 /* ConvexShape.hpp in Headers */, - 36B445E011FE7FC22B0749DD25BE63D8 /* cstdint.h in Headers */, - 4CB877065DE9EA70F6E26D13817FFB47 /* debugger.h in Headers */, - FE96CBAF883D21B6443E0A8742433A01 /* dictionary.h in Headers */, - 56767AC0F2EBCE23DBB667CAEAD821FF /* Drawable.hpp in Headers */, - 31D11404DC7EF94201B044C47C885744 /* EEprom.h in Headers */, - 93BD9304E02EDF2D4FE76F8C06E978D3 /* elf.h in Headers */, - 35C94BF99402C7B96380CF7DF8A4C261 /* ereader.h in Headers */, - DB858584AD2D2E1AC61B4F0B8AA332AE /* Err.hpp in Headers */, - 3FECB5D28A30D26ED0DE13289AAEFED5 /* Event.hpp in Headers */, - 8528A146050750BCDC4A0CB19DAD13CC /* Export.hpp in Headers */, - 8528A146050750BCDC4A0CB19DAD13CC /* Export.hpp in Headers */, - 8528A146050750BCDC4A0CB19DAD13CC /* Export.hpp in Headers */, - 8528A146050750BCDC4A0CB19DAD13CC /* Export.hpp in Headers */, - 8528A146050750BCDC4A0CB19DAD13CC /* Export.hpp in Headers */, - 0E293400D01A16665B16721FA5CD1324 /* expr.cpp.h in Headers */, - 853D8B601854B36DA9B412E40B8BC26E /* exprNode.h in Headers */, - 2DB7733EC33A8410DC8A8366DFBA8DBC /* ffmpeg.h in Headers */, - E3CD2DE502E77928520AC36519DB3B95 /* FileInputStream.hpp in Headers */, - 849C57C4098F72FDEF8A7E4E1B153570 /* filters.h in Headers */, - 1A10E26FFAC51F8DFBED8473A9F96523 /* Flash.h in Headers */, - 9833573E6581BB7CBEF9DEFF2B279249 /* Font.hpp in Headers */, - 38DAD7B3FA10E0A8997E3828BA5D6B13 /* Ftp.hpp in Headers */, - 12B40A0306C97D8568A617CC03C6A5E9 /* GBA.h in Headers */, - 37E4DE948E05079FAA44C05D68F80FF6 /* GBAcpu.h in Headers */, - 4FC7AF896E59B073A3D5A0459B06DB54 /* GBADeltaCore-umbrella.h in Headers */, - 5E24232FF3FC348A0F6E45E07CAECBD7 /* GBADeltaCore.h in Headers */, - 50E1E298A636E18863861F0F08A136DA /* GBAEmulatorBridge.h in Headers */, - 46350BC8DFD883F129BC297C9564362A /* gbafilter.h in Headers */, - 7596881F78C12F93B196E58FC24B9096 /* GBAGfx.h in Headers */, - 4BE9718C23ED5E715F462A13C1B6BB6F /* GBAinline.h in Headers */, - 72D94C2843D9BADD993E02DC081F859A /* GBALink.h in Headers */, - 52A3337392118B21810EF16559BC92D8 /* GBASockClient.h in Headers */, - 1FAD4210A41D40AED8BD9FB8D0930017 /* GBASoundDriver.h in Headers */, - 5B7DEFA571D030A2DFC71BDB5E789BC1 /* GBATypes.h in Headers */, - 33634A177F147AD56D0D0B5D5C95394C /* getopt.h in Headers */, - 720DF9A91524F794F65817402CACB38C /* Globals.h in Headers */, - 0B7EE208877E3763B8283CA69B28BE2A /* GlResource.hpp in Headers */, - D81C5F6662C8D60336AE76D1A90F2878 /* Glsl.hpp in Headers */, - FF211E96A43742AFA7716011946CCB12 /* Glsl.inl in Headers */, - B2A2EA96230E42C9DACDEAE5125E70A8 /* Glyph.hpp in Headers */, - FF9FE60DB4C26DF6FC16C3C2895D04A2 /* Graphics.hpp in Headers */, - AD119D199F5C9847D209962A3F5E2E2F /* Http.hpp in Headers */, - 4840CDA5F2B471979C7ABF542033F7CE /* Image.hpp in Headers */, - 76B2D0F44E876B3067F43943E0F0DB3A /* iniparser.h in Headers */, - 16C67AE79DA3AD25667EAF0834CD9A3E /* inputSDL.h in Headers */, - 19ED82D0227A8DC834FED9DC364357A0 /* InputSoundFile.hpp in Headers */, - F06D987C53E50796FB3713F9B76ED9B3 /* InputStream.hpp in Headers */, - FF6E132F749A866DED77DFC44F1CF434 /* IpAddress.hpp in Headers */, - D333B1E476E899C1131D0ED4044BFBA9 /* Joystick.hpp in Headers */, - C2F3EDD461B805D1FBD10087E431E381 /* Keyboard.hpp in Headers */, - 577F3BB4084F215DDF35DEC3050EBFAD /* Listener.hpp in Headers */, - 49D9C73CF5713E0D31C59D418A1126F9 /* Lock.hpp in Headers */, - 9D122B73107D0C5AA17E19BE248A9A93 /* Main.hpp in Headers */, - 1E942C12731C8DBA55B57763F824B79F /* memgzio.h in Headers */, - 2CF57337BA2220CF60CF8EF9D637C6DC /* MemoryInputStream.hpp in Headers */, - 2414D2E769217C186567C5C65EDF6F8F /* Mouse.hpp in Headers */, - ACEF93CE9D87EC6C299FEFD03CCE8F37 /* Music.hpp in Headers */, - FC77E55DC2D1520768CDED68E96900F8 /* Mutex.hpp in Headers */, - 43CD04715DCF129AE994EB37DDCCC52A /* NativeActivity.hpp in Headers */, - 83E48116F936533ED355910C357F234B /* Network.hpp in Headers */, - BBCE70F4DE792DEA49D2FB8E3B6C58B3 /* NLS.h in Headers */, - 7B4833CE4E7CF0FA2B833DBD8D891E4E /* NonCopyable.hpp in Headers */, - 72AA09F7D593E3CDE9556282B79FC8FF /* OpenGL.hpp in Headers */, - 26608F3C3C8445776375375E38EF93E6 /* OutputSoundFile.hpp in Headers */, - C132B8628DC7B8B6A206F64C9B344197 /* Packet.hpp in Headers */, - 7B96C895E386D15669F9CC752685F42F /* Patch.h in Headers */, - ABA42FCE8A0DA468F54BC37535A3D56A /* Port.h in Headers */, - 09FC226C3ADAAAEAD1BA430E8EC96CFB /* PrimitiveType.hpp in Headers */, - 669E4D3F049F7395692FF50D1FAD62E2 /* Rect.hpp in Headers */, - 8690D51F2D770401E9171AD39DEEF516 /* Rect.inl in Headers */, - AF31CF135DF1323682C58D3B124E7727 /* RectangleShape.hpp in Headers */, - BF17755E77856591F20F2089AD2DFB43 /* remote.h in Headers */, - 0BE99AA8F65539D655BF070810A15CBA /* RenderStates.hpp in Headers */, - E5EFC07E67468F55ACA0CC90C8FB637D /* RenderTarget.hpp in Headers */, - 802621F23B63CD8AB4FEFED307D978B3 /* RenderTexture.hpp in Headers */, - 879297BDAEA628C006E5D173FFABD5B4 /* RenderWindow.hpp in Headers */, - 7EEE416BA7B775A959EB2F784B28196A /* ringbuffer.h in Headers */, - C2B029657ED086EB18C6CDEB4C9FE684 /* RTC.h in Headers */, - 594DA9553270D750B893A43C2D6B50F9 /* Sensor.hpp in Headers */, - 5C7EE40D012F956501C04D247B8E1FAE /* Shader.hpp in Headers */, - 2CD2365D48A8372A485FA1A97404F94E /* Shape.hpp in Headers */, - E87196FC88F589C31BF54042137E6CCF /* Sleep.hpp in Headers */, - C72F5975C407A2591DC28BE701AADEDC /* Socket.hpp in Headers */, - 9FF3543268C7DFF3FB5BC94B94B3C1F4 /* SocketHandle.hpp in Headers */, - 4F8B45B633AB1A23C256DC11A467EA71 /* SocketSelector.hpp in Headers */, - FCF66A5DEF6C9622F1BF5FD231283397 /* Sound.h in Headers */, - 09673D8B9CD0C50E0708224966C3A0D9 /* Sound.hpp in Headers */, - 56B8E32593E6F5B48B62DC0D29BE5258 /* SoundBuffer.hpp in Headers */, - 6AAF24829617E878B728E017C4B80667 /* SoundBufferRecorder.hpp in Headers */, - 733C93241B2BB3AEC440D8CD9018D1F9 /* SoundDriver.h in Headers */, - 12864062CBC98F7BA252FE74A3696794 /* SoundFileFactory.hpp in Headers */, - 40C6FA3AD390CD7C03DBE9E18D24B870 /* SoundFileFactory.inl in Headers */, - BA78078395356533B4B348E58F36F13D /* SoundFileReader.hpp in Headers */, - D547D8927B90E2D22444D6B23A2F7CA6 /* SoundFileWriter.hpp in Headers */, - 5A2420C5AC228204FEAC2E9782A04EE7 /* SoundRecorder.hpp in Headers */, - 84BD979D406285B94223FD3F23A1C46C /* SoundSDL.h in Headers */, - 48DF70229B8B4F0EBCFB93CB383A0D38 /* SoundSource.hpp in Headers */, - 2DE8BAA4CA5C90C37F62310D873236A8 /* SoundStream.hpp in Headers */, - E087C3A69FD0F0E85313E70BD15F30FB /* Sprite.hpp in Headers */, - A54F2E82882A3475B1C7B5CA20230DBC /* Sram.h in Headers */, - F69AC88DD325854B39C768AF3E9D2EE0 /* String.hpp in Headers */, - CF3D150D4790397083A4C881EE7587AF /* String.inl in Headers */, - D1A86A4CE91207E9D1615F195026E6C1 /* System.h in Headers */, - 8113DDF5CDB4F895160C61278BE420F7 /* System.hpp in Headers */, - EFC6FD3E89847E1A767A6C933340AA15 /* TcpListener.hpp in Headers */, - CB6DCC8A0EC861C714CF80DDDFDC05CF /* TcpSocket.hpp in Headers */, - F7C4C94794633BFB3D3F36D042C48171 /* text.h in Headers */, - 91147717847EAC6C719137EF3F44525E /* Text.hpp in Headers */, - 85855C64A1527B0A8C022CCEF2D1FB64 /* Texture.hpp in Headers */, - 7F6B18DE54E8AB9904A8060DC634A114 /* Thread.hpp in Headers */, - 3459FBA13F771D8B005B57DFB20A514B /* Thread.inl in Headers */, - 9C9548A2393E2C582D89120FE686CF7C /* ThreadImpl.hpp in Headers */, - 78AFE3BFF1B4EBE9045B54029B21844E /* ThreadLocal.hpp in Headers */, - 526269A4AD64156B78E1C0FEEE8C9BE1 /* ThreadLocalPtr.hpp in Headers */, - E16BBEB0E89FBF39A1BA8D2A6511466E /* ThreadLocalPtr.inl in Headers */, - ED971B1E5DA8C0C9FB00DB13EC14C7CC /* Time.hpp in Headers */, - ABEA0FA8AC93EF7D2A0517E6B23A2B32 /* Touch.hpp in Headers */, - 429B2E7563F2936BE274999888C81049 /* Transform.hpp in Headers */, - B567AC9D14E7A8B5ED0F49D6A271148C /* Transformable.hpp in Headers */, - 8CA873D905292236ED1C4D37F8BA2D20 /* Types.h in Headers */, - DACED72BA12CC454FA340A4DE50568DA /* UdpSocket.hpp in Headers */, - 61EDC1E33EB39E4E89E6B8BC314BC1B2 /* Utf.hpp in Headers */, - D9C4281F57BE806B93A4897B0C80EB8D /* Utf.inl in Headers */, - EA57D04DB19F8B334F2835C28437BF43 /* Util.h in Headers */, - DFDD892A919F1B62B226920514135ACB /* Vector2.hpp in Headers */, - 441AB4FFFA1D74ECE59E403B1CAE0957 /* Vector2.inl in Headers */, - F55194458AAA79B90B30AD967C5410ED /* Vector3.hpp in Headers */, - E5F0398C04DFDDAEE2C106B80DF34222 /* Vector3.inl in Headers */, - DE183F7F09A8FF4D07C8A7318225F2E3 /* Vertex.hpp in Headers */, - D761C99DD4AB08A2F6A7105462FBEDAA /* VertexArray.hpp in Headers */, - 055010A944F0FAD455EE1B86505AB309 /* VideoMode.hpp in Headers */, - 47DF3A7FF00C733F489EF93F5ABECF6C /* View.hpp in Headers */, - 1EBC4EE371A7CF6C8F53DAFB86A2E616 /* Window.hpp in Headers */, - 1EBC4EE371A7CF6C8F53DAFB86A2E616 /* Window.hpp in Headers */, - 5C2D5A16BC3EE7C171BC8AAEB95306BF /* WindowHandle.hpp in Headers */, - 0F9F3A6ED74C186E0EB56FDAE4B1B40E /* WindowStyle.hpp in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 34572E7C7418FFA3704C0C9BC54EAD4B /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 6C2D78CA13104F706375022682F43EBB /* 3DMath.h in Headers */, - 57CDE8F4764A33233874A39A3641B000 /* AboutDialog.h in Headers */, - 7B1384F82FEEE338B12E8162676251E5 /* af_rtc.h in Headers */, - F9B8A7667CF216411A15A095314968E1 /* ai_controller.h in Headers */, - C26465F925E7FD1E67AEE836FE81DDEA /* alist.h in Headers */, - 29D3854561B700B591D58A989C279365 /* android_hardware_buffer_compat.h in Headers */, - A6036A65FD824FD91DAA7DE88B77BFD7 /* arithmetics.h in Headers */, - 1F5A882A6D96FB43C6744AA1333B3CDE /* arm_cpu_features.h in Headers */, - 885444AE65E65028DFFF703506BCF3E6 /* assem_arm.h in Headers */, - 1C5BC2D61D565A6BE435ABA142946B18 /* assem_arm64.h in Headers */, - BE76C467F47D91A3B2E0C8A97901F80F /* assem_x64.h in Headers */, - 06AFB6649115CA75ED94B9581FAFB0D0 /* assem_x86.h in Headers */, - 04F8299D725F89424FC6267E0243344F /* assemble.h in Headers */, - 04F8299D725F89424FC6267E0243344F /* assemble.h in Headers */, - 8A4475A0D8D410B658674E016C84C6B7 /* assemble_struct.h in Headers */, - 8A4475A0D8D410B658674E016C84C6B7 /* assemble_struct.h in Headers */, - 8134CD8F7427A51B0BE78646D8EE1BD7 /* audio.h in Headers */, - 15634A4D50405AC11B0EC8D8F3BCCF87 /* audio_out_backend.h in Headers */, - F050154F303A19EA79B8C22C6DF90FD7 /* autohint.h in Headers */, - 9854241DC2EC2E2E20D8F27BE72F7D5E /* biopak.h in Headers */, - 27D8B6DBC90EEE05D98941F71C31A63B /* bldno.h in Headers */, - D3D1534FFA6A68B1AFA1A738770AA8CC /* bootrom_hle.h in Headers */, - A64A31B50F4F5DF94F4CA2984CC50066 /* cached_interp.h in Headers */, - 5BEE50B5D68BDBBB1105822DBB2E17E0 /* callbacks.h in Headers */, - 5BEE50B5D68BDBBB1105822DBB2E17E0 /* callbacks.h in Headers */, - 8027ABC72ED101B8DCB63DF851A64305 /* cart.h in Headers */, - 1449CEC6CEEA29AE8135E1ED68E54851 /* cart_rom.h in Headers */, - 7CA316633B16EDCC0466389DEB733A93 /* cexcept.h in Headers */, - F53163B106D4505E2716A8A22B8A4968 /* cheat.h in Headers */, - 1E17A47AF0A3EB70EC345D746F60BFBD /* check.h in Headers */, - 3A53AC93258951A2C91E606250A6A148 /* cic.h in Headers */, - 6F4861BB275E0E3638EB92079E6836A8 /* ClipPolygon.h in Headers */, - CAA00E78DF6EE8866D1900E83077555B /* clock_backend.h in Headers */, - F34F5CAF815CF2C584E460BC03C01DD3 /* clock_ctime_plus_delta.h in Headers */, - 0A7DBA589468B58D063CE892596EBE04 /* ColorBufferReader.h in Headers */, - 3A035F1208587744FCE79BAA40FED441 /* ColorBufferToRDRAM.h in Headers */, - C748A8445040935071BCC24540001457 /* ColorBufferToRDRAMStub.h in Headers */, - F56181E6D09C01FD61E2DCA327128F4A /* Combiner.h in Headers */, - D9053EA1887D31231E02FA356DC28D9C /* CombinerKey.h in Headers */, - 7D286BF16064224F74C649587D743F05 /* CombinerProgram.h in Headers */, - 8C5FB6E515A97B1C218E140DDE966B87 /* common.h in Headers */, - 28C60122843E856A47662EC45B95F1EC /* Config.h in Headers */, - DBDBD0A26107364F82F3836700D2B2EE /* ConfigDialog.h in Headers */, - E38C40E3D9048CFF503ABB52A862E046 /* Context.h in Headers */, - 3DF1D16A8A4CC1336A77D4A62D41A3AA /* ContextImpl.h in Headers */, - 82437F35B250786A48AC50A30CB1E703 /* controller_input_backend.h in Headers */, - CD647751FAAD5773BE4F6986812E3ABE /* convert.h in Headers */, - BA1E27A0B34E6FCD48E87AE97A999624 /* cp0.h in Headers */, - F3689DA4F28B17D691C370326B8A5C40 /* cp1.h in Headers */, - C611E88BFF38E2D8F0DD02BFBBFB282B /* CRC.h in Headers */, - 1E3EAC0AB8A289FF21A1A1521705D471 /* crypt.h in Headers */, - C36D579CB50231541D13EA465103D94D /* dcheck.h in Headers */, - EEEE51D3888C1CAB1A958AB9B2014B55 /* dd_controller.h in Headers */, - DA7530874529AED0F0F03CCC1A372963 /* DebugDump.h in Headers */, - E0ED8654B5726D61FEFFB77F64563BBA /* debugger.h in Headers */, - 0202229A8043A0523AB4F8F06E12B10E /* Debugger.h in Headers */, - E0ED8654B5726D61FEFFB77F64563BBA /* debugger.h in Headers */, - 01E82C5FA448150B1381F28C6D30C39C /* DepthBuffer.h in Headers */, - B607E92215B251862E89FC61EBED9DE7 /* DepthBufferRender.h in Headers */, - 34955DD3625BE6223A3DDBC5BCA17AB3 /* DepthBufferToRDRAM.h in Headers */, - FC5079E8E503661CEDCB039CA12806E2 /* device.h in Headers */, - CC885EAFB977CCD3581BF9BAE398BF3E /* DisplayLoadProgress.h in Headers */, - 5709FF7741CEAE524CA58DEFCC26A543 /* DisplayWindow.h in Headers */, - 0AD3412A7088529EDFF612776C0AC698 /* dummy_audio.h in Headers */, - 207B4C476365DA9C6682F71691FA6851 /* dummy_input.h in Headers */, - CE53CCCB3E229E3DB45DFF68C4FFB2D1 /* dummy_rsp.h in Headers */, - 0C1E5944242DFF3A99C96FD2017C7C05 /* dummy_video.h in Headers */, - 093095188EFCF06BC6E50BB12D9BD797 /* dynamiclib.h in Headers */, - 88D5DE97CC32DC640972CA79B345ECCF /* eeprom.h in Headers */, - 99BDC7E1823551373C83EC1132AFA721 /* eventloop.h in Headers */, - BF603F7AEB59322649E307BD1F692D17 /* Ext_TxFilter.h in Headers */, - 4EF29A33B127A1626B651E25F6C81B21 /* F3D.h in Headers */, - 00C40ABCE897AAF7CD0FBD8393625D36 /* F3DAM.h in Headers */, - C033C1B48A7F3C489DAE53E790408AD5 /* F3DBETA.h in Headers */, - C16CA790695F62E7ACCD2C5A487F771D /* F3DDKR.h in Headers */, - F5E6BEFB8F1CD1A67497E431B9838A15 /* F3DEX.h in Headers */, - C68F143AF0613E98AFF83799BF0A63B7 /* F3DEX2.h in Headers */, - 3F0C4452BD4180B1027AB9969A57DF02 /* F3DEX2ACCLAIM.h in Headers */, - 8A79B2B2001392BA5DF8E5F010A98DE1 /* F3DEX2CBFD.h in Headers */, - B2478D23172EDB2510133ACF37B0DD8C /* F3DFLX2.h in Headers */, - 5141A231A45A79D7E7647583F2D56862 /* F3DGOLDEN.h in Headers */, - F1735D54EF0775BCB0E5186918743EFA /* F3DPD.h in Headers */, - 4EE7EC79E6B9DDD41A65B8DA0DECA621 /* F3DSETA.h in Headers */, - 53EE1534D25325E34421A9FEEFDB84CA /* F3DTEXA.h in Headers */, - 35291E58E7238CD13D2E865807183244 /* F3DZEX2.h in Headers */, - 640A210E53FC83944F900B2FF2B7E370 /* F5Indi_Naboo.h in Headers */, - 9B269B99354B7C423C56594196AD2885 /* F5Rogue.h in Headers */, - A7C696E5E093AEBD9C4CAF3A4C68D70D /* fb.h in Headers */, - 56CBC9C4E3285B0686CF8E3B10C477ED /* file_storage.h in Headers */, - 82A505571F76C37B2C97E7FFA18B9CF0 /* files.h in Headers */, - BBEB85FC73346DFE66CE6FD399995E23 /* flashram.h in Headers */, - F90F21A4AC8CAE6A1F56797934092A26 /* fpu.h in Headers */, - A369AFBDF285BDF08984557C2B2D035D /* FrameBuffer.h in Headers */, - CC40F2F63D4C93B0A650FF5DDDAACD2B /* FrameBufferInfo.h in Headers */, - 01C614E6A5EFB33F09479A6E347BFB76 /* FrameBufferInfoAPI.h in Headers */, - 2B20167690BC05580B6B16AF98119BDA /* FramebufferTextureFormats.h in Headers */, - DB67DEEADB5E35D71D499D24A832DECB /* freetype.h in Headers */, - A244936922CE7070F89A938968B32C91 /* ft2build.h in Headers */, - CC1E60842AD3A4730944F47A55762DB4 /* ftadvanc.h in Headers */, - 430726813EB11B2999126D798EFDE289 /* ftautoh.h in Headers */, - 68CBD74DE546563D19248B4506516020 /* ftbbox.h in Headers */, - 83C650F72F2F0C4ED5B2477BD06700DD /* ftbdf.h in Headers */, - 335990730B3D97240BC102E33530C9BE /* ftbitmap.h in Headers */, - E243D93A497A30FE0D34F38D846D00BC /* ftbzip2.h in Headers */, - 15528403D3D54996EBEF35561A6CEE66 /* ftcache.h in Headers */, - F66CF640978295A4159E43A5820250F4 /* ftcalc.h in Headers */, - D9FE95818C5D7D6E656F4825A72B22E0 /* ftcffdrv.h in Headers */, - CB593D0F01F151691266CDF0248C3B25 /* ftchapters.h in Headers */, - 996277B306F4ECC6427CE74B7EE6DB2B /* ftcid.h in Headers */, - 7FCCF5D4A89009DE069B7FA02CEF1578 /* ftconfig.h in Headers */, - 8FFD4AECED831CBCB658A238C5162667 /* ftdebug.h in Headers */, - 2EC23CE58EE7708E622FEE511537C9CA /* ftdriver.h in Headers */, - 7FE81A81BDC980ECFB463EBCD56BD5C4 /* fterrdef.h in Headers */, - 2005711A191AD7E50B6C7099F66A13D2 /* fterrors.h in Headers */, - 12B7A6EBF04A2FAD6924212A88EC5DC8 /* ftgasp.h in Headers */, - BCD05169D15B1FDAED9DF5DFB2577E7A /* ftgloadr.h in Headers */, - 768B2407579BB01F40AEC3A62534841A /* ftglyph.h in Headers */, - 5BEF9A474F439E8C6239FA0B3F8C1A8C /* ftgxval.h in Headers */, - 8FE643E9E37779FB8CF79631F04FC10E /* ftgzip.h in Headers */, - 544091F02695D58E423CD8C4F790ADD5 /* ftheader.h in Headers */, - FE599ED5BE5E0FB913D338DB7993BBBD /* ftimage.h in Headers */, - 92F48B421FE4B7D563FB78304B45D3DC /* ftincrem.h in Headers */, - B7B8341765D2037E50BED119E92D0D21 /* ftlcdfil.h in Headers */, - BF49E048B33E06B38EA4352E9544F271 /* ftlist.h in Headers */, - 779DEC0553EB9A1BFA7850B3324F26A0 /* ftlzw.h in Headers */, - 2C7C4070947B0A6B843F9FD37FF9ECFC /* ftmac.h in Headers */, - 8FF4F1F64AD6389618BA5139BA6827CF /* ftmemory.h in Headers */, - 7185361F22C1B706E313A5EE63D5C100 /* ftmm.h in Headers */, - 92BE00FE1E4605E79A7348DA171983CF /* ftmodapi.h in Headers */, - 6A5AB400788EE8D34047D6060AB7687B /* ftmoderr.h in Headers */, - F3D7102AF094A0C8737A51A875AB7FCF /* ftmodule.h in Headers */, - 119C8DEDED32E68C51CD917AC8A89863 /* ftobjs.h in Headers */, - 75651FCB760A9EA993A64D526BE50E86 /* ftoption.h in Headers */, - CFE1ACDDF83BF8D59EE8E2F3694EFC7A /* ftotval.h in Headers */, - 0CE3655689BAC53ACB8E9FB2319697B5 /* ftoutln.h in Headers */, - 5942E81AECD0FE59C671011A08A05146 /* ftpfr.h in Headers */, - 922729E166316817505B1AF9088A1979 /* ftpic.h in Headers */, - 5489B7D0BC4A155CA65D8B959975E7BC /* ftrender.h in Headers */, - 584A34948FEDEBB330C38D3C1EDA1CE5 /* ftrfork.h in Headers */, - 6146D87D5859AD1E8600F38801583FEC /* ftserv.h in Headers */, - E379BEFFDE7DDF5BBBEC893297BBA029 /* ftsizes.h in Headers */, - 69DC5C93A87B3345114F1C82CBA59FA9 /* ftsnames.h in Headers */, - 7EB2E4958669F6F7D47F906325F848C6 /* ftstdlib.h in Headers */, - 1F3E3764837A7D6E5D1D83D637ADB674 /* ftstream.h in Headers */, - 0D4E95328CD9428A4A59FFD53A28D0CF /* ftstroke.h in Headers */, - 4B75D69424A6B025E9BA0F44F2C189C3 /* ftsynth.h in Headers */, - B1A25C4CF064BC19A30DE30E15595403 /* ftsystem.h in Headers */, - 2018FF4D62325B043230D6349CC61A27 /* fttrace.h in Headers */, - 5FAF319CD47FBBD5FDF408DA9E5486C3 /* fttrigon.h in Headers */, - D16E7C265E542D13F12B62B042AD73F3 /* ftttdrv.h in Headers */, - 68F67867EB0CFE30873CD5C0F9FD7199 /* fttypes.h in Headers */, - ED6A5FA45DB078ACA1466C49FC155D43 /* ftvalid.h in Headers */, - 4B4F8654F1E715E4550D464BCD79D078 /* ftwinfnt.h in Headers */, - 611CD7F88EB81EEF2BE5E8427E6A7BEB /* ftxf86.h in Headers */, - DECB2C20AD8FED5C62219CDCE3CF55C8 /* FullscreenResolutions.h in Headers */, - 76E1F39839AF6321773DB21674854E13 /* game_controller.h in Headers */, - 8A4BB0CF425B083ADBFBD6B4627559FC /* gb_cart.h in Headers */, - 88F744CA6F65066BED8B09ADA135306D /* GBI.h in Headers */, - C358FDDBC3C4E22CA76A09F621C36E39 /* gDP.h in Headers */, - 6B58E99D3A6C38F9D32B49007A6EE964 /* glcorearb.h in Headers */, - C248682ADEF210229804D75C50213953 /* glext.h in Headers */, - 58F754A0BEF6C3340CAD4B872029C5BB /* GLFunctions.h in Headers */, - CE3267E59B0E84FEEFEB42DFE38A734B /* GLideN64.h in Headers */, - 10CE35FCE6B6E703FE2C749C57179361 /* GLideN64_mupenplus.h in Headers */, - 88FD7451A4B536C0D3E824EEB3F0BCB8 /* GLideNUI.h in Headers */, - CB892F948B4A1CE546B6024A38FF355A /* glsl_CombinerInputs.h in Headers */, - 5CEC906BA8DDF1AB5098CD1BC743AE0F /* glsl_CombinerProgramBuilder.h in Headers */, - D6D4AAB958D4CD8E3DF970D8071E1356 /* glsl_CombinerProgramImpl.h in Headers */, - 8842435BF154BF72C8C6BCC99220801C /* glsl_CombinerProgramUniformFactory.h in Headers */, - CEA0636DBD4965625F6481DC8359BC6A /* glsl_FXAA.h in Headers */, - D38F22D445EFCCBDB5B3A8EA0749960E /* glsl_ShaderPart.h in Headers */, - 71D0E081D32C3B6DA53C040BCE129B44 /* glsl_ShaderStorage.h in Headers */, - B7A6299173F20D58894FD1D37AEB61B5 /* glsl_SpecialShadersFactory.h in Headers */, - E0F016A4FCA869B756B6FA372880831B /* glsl_Utils.h in Headers */, - 24C60F34E862179CE4B50B8A87A0A1A0 /* glxext.h in Headers */, - C860D24982B836D74FE6ADAB6669120D /* gralloc.h in Headers */, - ECDED5D51991FC76272391B425209E69 /* GraphicBuffer.h in Headers */, - 16FCF1751F26D732C2D3E41C900231CD /* GraphicBufferWrapper.h in Headers */, - 89D653C77C91B94070C7D3F06D6387DE /* GraphicsDrawer.h in Headers */, - 2C149A3935B50021E96372BDD79BB809 /* gSP.h in Headers */, - FD828E831825C59E81FDB630986BA32A /* hle.h in Headers */, - C3C92AD6CDBE26844CEEFE530AF875AD /* hle_external.h in Headers */, - 9E3F14CB99541C1515E25DD0BD942BFA /* hle_internal.h in Headers */, - 57DFE6B206AD7A957D805DEA7B76133B /* idec.h in Headers */, - AD629989680A89AB95B94A1FFF6F3E91 /* instr_counters.h in Headers */, - 19A13473851B5012E8193BCA2A724A54 /* internal.h in Headers */, - 89AF875734B9B4995619E5EC431687DD /* interpret.h in Headers */, - 89AF875734B9B4995619E5EC431687DD /* interpret.h in Headers */, - BF9CB5E743494E5C6D33D000367BFDF1 /* interrupt.h in Headers */, - 4170B33FC4F086E54F30F10FCB1A66EE /* ioapi.h in Headers */, - B70B0A8F42AACEA9D13F8ED6B0B9294B /* joybus.h in Headers */, - 9AA3E4188A9CAD171601CDB8BBBD9FAD /* Keys.h in Headers */, - 5A9F9AC98262774DD55C7EC10167F5BE /* L3D.h in Headers */, - 24DD85F125A03B7527B45E2136475039 /* L3DEX.h in Headers */, - 58984F5CED600749378A3DB48891A393 /* L3DEX2.h in Headers */, - 28E8BD38661A1039E236ED7C38CF90BD /* libhardware.h in Headers */, - 34B4AB76890CFED50032916F5957C7F2 /* lirc.h in Headers */, - CB89D2169BD74B5661F083D55A15A5F5 /* list.h in Headers */, - 9681B0FCA87F9122521797F9FD81EE10 /* Log.h in Headers */, - B4A39E493B818C8DEFEB6843E7FB3A2E /* m64282fp.h in Headers */, - 383C286F607F63AFDE5F7C1B6BB5B3A5 /* m64p_common.h in Headers */, - 383C286F607F63AFDE5F7C1B6BB5B3A5 /* m64p_common.h in Headers */, - B124288C0243AE94540C2439CFEEC07E /* m64p_config.h in Headers */, - B124288C0243AE94540C2439CFEEC07E /* m64p_config.h in Headers */, - 3D6D4934F2872048170C4FEEB95245DE /* m64p_debugger.h in Headers */, - 3D6D4934F2872048170C4FEEB95245DE /* m64p_debugger.h in Headers */, - F42934FDC9EFE34BEAB88C09A97F381D /* m64p_frontend.h in Headers */, - F42934FDC9EFE34BEAB88C09A97F381D /* m64p_frontend.h in Headers */, - 1085A7C928E5C935C9FB98DD68DEB5B8 /* m64p_plugin.h in Headers */, - 1085A7C928E5C935C9FB98DD68DEB5B8 /* m64p_plugin.h in Headers */, - 75876AA41D92BB2C68217401F9D81A3F /* m64p_types.h in Headers */, - 75876AA41D92BB2C68217401F9D81A3F /* m64p_types.h in Headers */, - B3B9EA229B410CB5EF72C771A3F5F7DF /* m64p_vidext.h in Headers */, - B3B9EA229B410CB5EF72C771A3F5F7DF /* m64p_vidext.h in Headers */, - 9CE15722E73E324E734766FAEED1AD8A /* main.h in Headers */, - 99586D4393F983E6E11A7EB4ACDA25A0 /* mbc3_rtc.h in Headers */, - 74ADBEA76139C9FA5A3E7309578B481E /* md5.h in Headers */, - F9D82E528BB1D26760965BA61CDF5FB7 /* memory.h in Headers */, - 38FB27B8FF342CA5E41C42414A41C524 /* MemoryStatus.h in Headers */, - 81F938B3995632DB31A0EE9B58F2E09A /* mempak.h in Headers */, - D312152A6A449362B07BEDD81101F3C1 /* mi_controller.h in Headers */, - 962825C8D2732C541EA53C83058A34A3 /* N64.h in Headers */, - 516C836E155D2ACFABD6CBF02C5BBAF5 /* n64_cic_nus_6105.h in Headers */, - 705BA14C7A7B896231AC5BD83914A245 /* N64DeltaCore-umbrella.h in Headers */, - 66989FA070973C0C7C80AA570AAE862E /* N64DeltaCore.h in Headers */, - 2F53636D1AC55BF95A4DAB146F03BBF0 /* N64EmulatorBridge.h in Headers */, - 7A4154C454C150A5E53C40EA98CE5DC3 /* N64Types.h in Headers */, - CF39B4CDA98A0ADB68AF732260524AA0 /* new_dynarec.h in Headers */, - D8ECFAFC2C3F7D5A7E9863009E3F34D9 /* NoiseTexture.h in Headers */, - B3376637DC88B52CCDCE40DD855FA4C7 /* ObjectHandle.h in Headers */, - 834110DF6765DAF5F084507876D69BDF /* OGLFT.h in Headers */, - FC8E33668A83772D18B6DA06489FED36 /* oglft_c.h in Headers */, - 2E2C9AE2C2634120504DCC7045FA8CBA /* opengl_Attributes.h in Headers */, - 9199A7F7FF91B241ECC8B58DFAC99831 /* opengl_BufferedDrawer.h in Headers */, - 08AD48790FD939562E761126858A791C /* opengl_BufferManipulationObjectFactory.h in Headers */, - 3B7DB38EC32D13B3F2E0A6AD4482F738 /* opengl_CachedFunctions.h in Headers */, - 1E3F228CAF09DBD5DA4EBF52818EC3B1 /* opengl_ColorBufferReaderWithBufferStorage.h in Headers */, - 321A8A5DA5032252FAB712DF22162164 /* opengl_ColorBufferReaderWithEGLImage.h in Headers */, - 61C3A0E693DC5E1CFD847F0D77C394E0 /* opengl_ColorBufferReaderWithPixelBuffer.h in Headers */, - 16B59496C8A16AEF81564E7702C25EB5 /* opengl_ColorBufferReaderWithReadPixels.h in Headers */, - D13DF48BFDDC53D56DC556BBE5D2FA67 /* opengl_ContextImpl.h in Headers */, - 7F0E24ADF538BD3EB34CD7F269692746 /* opengl_GLInfo.h in Headers */, - 768D4F3E9D26408198D209E239477D00 /* opengl_GraphicsDrawer.h in Headers */, - E8ECE9F58F608FD6362FB21BC2D9B33D /* opengl_TextureManipulationObjectFactory.h in Headers */, - 55A432BEEBAA4151ED9A571B40C5DEF3 /* opengl_UnbufferedDrawer.h in Headers */, - 9E7F668C918EC41EE7CB0E8A109A7475 /* opengl_Utils.h in Headers */, - CD1250D06D079154D9781B344D80DE2F /* osal_dynamiclib.h in Headers */, - 716BECDA9B8884905F41B41C8128FCC0 /* osal_files.h in Headers */, - 8AC54A80F823C42D1D5754AD460C9731 /* osd.h in Headers */, - 27FEBB4B8589E35BAB55A9152AD25EAB /* PaletteTexture.h in Headers */, - 5AB7029C187BAF4A973C93335CCE467A /* Parameter.h in Headers */, - 49DEF99A28C96AEFB3171BD4B5484C0C /* Parameters.h in Headers */, - 428FB823400B7FB83A5D0990AE0D0435 /* Performance.h in Headers */, - C52EA4CF528D1EFABB4C44096DFF3BB4 /* pi_controller.h in Headers */, - 1A6588A793FD184669CC4A7899448EE9 /* pif.h in Headers */, - DC825055565609EB9893A03869591056 /* PixelBuffer.h in Headers */, - 4707AAEDE63F963FC59B4EB7CE7453AF /* Platform.h in Headers */, - 80A47DE555C32503E0777897E5FA0B44 /* plugin.h in Headers */, - 4682852108E2FAC8F17968AF50306BB2 /* PluginAPI.h in Headers */, - 5D1D745FAB41EB5BDA28F13754DA968C /* plugins_compat.h in Headers */, - B2FBBF04AE5C71DBD33F94ACE111E887 /* png.h in Headers */, - B2FBBF04AE5C71DBD33F94ACE111E887 /* png.h in Headers */, - F648BA8B0A2C492BD78D3FFC5DB91560 /* pngconf.h in Headers */, - F648BA8B0A2C492BD78D3FFC5DB91560 /* pngconf.h in Headers */, - CBDDEEB5FD00E2536CAA6798EB0B9614 /* pngdebug.h in Headers */, - C038FA212453EEBFD27DCCB621B001FC /* PngFile.h in Headers */, - D014CF609A39EFBEC89B0EB7508AC54B /* pnginfo.h in Headers */, - 1CF0BA6AEF75A59CCB8E2C317364FDDB /* pnglibconf.h in Headers */, - 21AA4BB6EC1BA9595FFF73B6D9DA2BA4 /* pngpriv.h in Headers */, - 534EAC141BC2556ABD60FF51F879E214 /* pngstest-errors.h in Headers */, - 232B73536F582F499728C426B879889C /* pngstruct.h in Headers */, - 232B73536F582F499728C426B879889C /* pngstruct.h in Headers */, - 19A43143885ECF943EEBFFF79A6032AD /* pngusr.h in Headers */, - 19A43143885ECF943EEBFFF79A6032AD /* pngusr.h in Headers */, - 19A43143885ECF943EEBFFF79A6032AD /* pngusr.h in Headers */, - BFEBE9FB3CFB5B2005A5560B27B195D2 /* PostProcessor.h in Headers */, - 19EC881AAD885E63F07969590CFB6FF4 /* preproc.h in Headers */, - 9C21CC74CE56D97853FC8CC26403FC97 /* profile.h in Headers */, - B4BB17C7542092C2B7C35AF65CBDED4F /* psaux.h in Headers */, - BCFEA889CD7AEC013C76FA6F4811433B /* pshints.h in Headers */, - 35FE7B5266819E5E2007B2A11432653C /* pure_interp.h in Headers */, - FC4FE507C7E2CCEB963AE8BBDE196CCC /* r4300_core.h in Headers */, - E9CBB9C8CBC05546EB144C2A03091A39 /* RDP.h in Headers */, - 3F30BDC512A1FC7B0424D7F650B7FBC8 /* rdp_core.h in Headers */, - 426F0F3F8476616E6C16A4FBA696D9A0 /* rdram.h in Headers */, - 8F0C99F1FE1F77581B438DC0148E9A33 /* RDRAMtoColorBuffer.h in Headers */, - 84A18EE31EB84B819BC68EA40D72E898 /* readpng.h in Headers */, - 29A685A5D01095121E8261DD0DA16E06 /* readpng2.h in Headers */, - 745D026C5EF76695AC22E3894B5AB7A3 /* recomp.h in Headers */, - 691F81D3F9DE76456A12E36BB54B8692 /* recomp_types.h in Headers */, - 2583C09DC88D03FC4CC3F690445FB4A2 /* regcache.h in Headers */, - 2583C09DC88D03FC4CC3F690445FB4A2 /* regcache.h in Headers */, - A7068B8F91CA6F048DD3C251BFC07A0A /* resource.h in Headers */, - 68633D906C2EC5082F1B8565D31346BA /* Revision.h in Headers */, - FA3E0BE1F486A928CAD1709BE81D6710 /* ri_controller.h in Headers */, - A006EBEA361DDCFC8A4C0654CDB608AB /* rom.h in Headers */, - C1959B0174FBB944CE6CB8CC8D1EEBA2 /* RSP.h in Headers */, - 14DA99887720A03BAD2325ADC9FE3359 /* rsp_core.h in Headers */, - A956F9D11B84CC1C8097FEB2EDA2E716 /* rumble_backend.h in Headers */, - 21EC8E4FFDDB86D7F78C6F7BC23FE9AE /* rumblepak.h in Headers */, - B7DC017F28355161119F4FA3C4E91F4F /* S2DEX.h in Headers */, - 2B81A80CB152C7A724DFFEB2CCE2EF2D /* S2DEX2.h in Headers */, - 4B1913647C8C56F75BA326AB79C39960 /* savestates.h in Headers */, - 915589B5129671F6138C17D52D262174 /* screenshot.h in Headers */, - 82C7E61050A45D1CDF3BD1A56D8D8FD4 /* SDL.h in Headers */, - B0D35D84B9DFCA6E0CEFB98B82D8364B /* sdl2_compat.h in Headers */, - 1304AC58C0918DF5312B15723652359A /* SDL_config.h in Headers */, - DE929FB785F54BD5536E1EC93CE045EF /* sdl_key_converter.h in Headers */, - 0D778215DD1239900E9C2568317A7D34 /* SDL_opengl.h in Headers */, - 57B0B49B329F103EA7FADD44100A0643 /* SDL_opengles2.h in Headers */, - D4E30778EC64C2D2F7B3458540396762 /* SDL_thread.h in Headers */, - 7319418CC6D598BF99CC2459C5775A43 /* Settings.h in Headers */, - 3DB2ED0C2F430F24757BEC045A1C4641 /* sfnt.h in Headers */, - CBB58084F57F1758BE702C7A652938B7 /* ShaderProgram.h in Headers */, - 592293E2FA96EF64F32B34871BD9A844 /* si_controller.h in Headers */, - 308160BC5F09D63939B996718F5FE77A /* SoftwareRender.h in Headers */, - 6921B8F20D59090C40BA055B958C701D /* sram.h in Headers */, - 4A2C51D58D1FC432F3E77CC5EEBE362C /* sRGB.h in Headers */, - B5D6CE0D394758534DD7E34A47403E48 /* storage_backend.h in Headers */, - AC73E7F27DE8847C168F65BA16572DE2 /* svbdf.h in Headers */, - 049999669AA6DDE06F469094EF4FC23D /* svcid.h in Headers */, - 3CE481B47CF7F65695B4189942BDA90A /* svgldict.h in Headers */, - 5A2D60AF36AECA12D6B0344E1560FA79 /* svgxval.h in Headers */, - E34FA017267AF42EB6ED2866215C8324 /* svkern.h in Headers */, - 6504C91CF367A126F9182433FC72CF7B /* svmm.h in Headers */, - 031DA8B8880B46B9236CFA9F45A03FC6 /* svotval.h in Headers */, - 80ACC65141ED1E3F6594237F54D439A6 /* svpfr.h in Headers */, - 81EC836E31FEAC3369ABA292E6816A88 /* svpostnm.h in Headers */, - 29A6FDBF6F90DD82AECE1451C99803A7 /* svprop.h in Headers */, - 8857A4EDB3D6675E9E1079D204713861 /* svpscmap.h in Headers */, - BE5D56A08A2FE610ED4E3C6B1FAD66D8 /* svpsinfo.h in Headers */, - 7FEA98DF5443CBD5D13C061FD58B982C /* svsfnt.h in Headers */, - A7375F06BB05196E852A7CD1BEB888D8 /* svttcmap.h in Headers */, - 8FCCB3878C3E1CB40F3CF6B6471AF1A9 /* svtteng.h in Headers */, - DB314701093D3B899B1B8A97525A7D88 /* svttglyf.h in Headers */, - 1DDF054791D7C01B53FC98F16990E27D /* svwinfnt.h in Headers */, - 307FDE527B3BA76D85A5993EDD953DE5 /* svxf86nm.h in Headers */, - 972245CDE70AFA693B10F04E92F95E91 /* t1tables.h in Headers */, - F9A291D8B470AE85950182B610A1C00D /* t1types.h in Headers */, - 7154E9B8A334B68E0ADC0ED65BB3F01C /* T3DUX.h in Headers */, - 9BA44ADE8BE966F9A20880C009B0FEB2 /* TexrectDrawer.h in Headers */, - 629D990529F872535EB933F8AB2F5A92 /* TextDrawer.h in Headers */, - B0EC94D836CD8CF41073B4AB9B3B37E0 /* TextureFilterHandler.h in Headers */, - E3685937A80988A03C7C44CE928305B7 /* TextureFilters.h in Headers */, - E1742A3F4D520092C22925CDF3BF07B1 /* TextureFilters_2xsai.h in Headers */, - 4FB08E1BAEF3C66FBCCE044C711EB007 /* TextureFilters_hq2x.h in Headers */, - A5A2579F29E338D8F314BBE07D184F5D /* TextureFilters_hq4x.h in Headers */, - 1C9DC5C326AAC27191E138D07DC82761 /* TextureFilters_lq2x.h in Headers */, - A0380E2F2A50D54040F0805869A74B92 /* TextureFilters_xbrz.h in Headers */, - D3764CCF5D037590A11499CC8ED58782 /* Textures.h in Headers */, - 8E5E87BD97D5AD2466956F68C3BC5133 /* tlb.h in Headers */, - B2D6D37E2883FFAEFA026065C9EC7A74 /* transferpak.h in Headers */, - 2A31E4A8BDA4212ACA4F866B2D9EFC47 /* ttnameid.h in Headers */, - 049C84B5B2F82497AE0065B6402F02FF /* tttables.h in Headers */, - 6BD769FFCA459D778DAA6948EE845114 /* tttags.h in Headers */, - 99B29EF5342953D8383990A37EE22C42 /* tttypes.h in Headers */, - C1E65AB0622C9F314387880B5C7287D6 /* ttunpat.h in Headers */, - 8A93E4462DD79BCD3989DEDBD83CB83F /* Turbo3D.h in Headers */, - 9AAC4FB0FB41BC2C0601AC7515739614 /* TxCache.h in Headers */, - 4BAD9B59DA032DBBFB94115E444F68BE /* TxDbg.h in Headers */, - 513A9E46A3C55471BF8A8F6A2A8377F9 /* TxFilter.h in Headers */, - 2D1B6F8056D39F5E59900D35E145206E /* TxHiResCache.h in Headers */, - EF49596781FA9E194913D3D7CA8D671C /* TxImage.h in Headers */, - 80C587D5DF5C337C3DFEAC8C4F1CFB22 /* TxInternal.h in Headers */, - AAFBD5083974287DA2A227D4114E7446 /* TxQuantize.h in Headers */, - 440F059F5BC73A7D040499DC8C4EE582 /* TxReSample.h in Headers */, - 2A2C45A08602F5996E9A560ECFD7BF55 /* TxTexCache.h in Headers */, - 2277F45169AD4DA00EC99C693A48022D /* TxUtil.h in Headers */, - E2FA89CF71221D9F5369EAF5F8C34DC6 /* txWidestringWrapper.h in Headers */, - 6B8EDD8EB090D6B4406E7D827B8866DF /* Types.h in Headers */, - 756FEB30C1EFF1F4BBF818C81BFDCDB8 /* ucodes.h in Headers */, - A40839A9B6D4DB05044ED02F0F9B8B54 /* unzip.h in Headers */, - C588951D1C2400E86ACB3CF6C096820C /* util.h in Headers */, - CCBD5DD6D26AF606302FC9AC7201C67B /* version.h in Headers */, - 7D49E904E8A86421BCF231941862728C /* VI.h in Headers */, - 4599474730B58310809A72D5451B1EB0 /* vi_controller.h in Headers */, - 53EDFFC0F0D36B5725BAB735AD5ABD83 /* video_capture_backend.h in Headers */, - E0A5406EADCDD611AA81F4ECAAE2ADB8 /* vidext.h in Headers */, - 4AA0FD1C9D8AB212ACF66E035AF4ACB8 /* vidext_sdl2_compat.h in Headers */, - 14C0F0BEDA910011A59D708F63A92BC5 /* wglext.h in Headers */, - 7F216D5FB95EDB617B5A766FD90EB7D7 /* winlnxdefs.h in Headers */, - A933899E5077A378C302DC41EEBD7453 /* workqueue.h in Headers */, - 22E52C36BF5BE2C7DD600E9B435807F7 /* writepng.h in Headers */, - A9AFE05A693A5A114D4910F83EB24148 /* WriteToRDRAM.h in Headers */, - E356C3163BF11EAC01EAEB469DE5F9DC /* wst.h in Headers */, - 8FEB47BCCBCCEAB1945DFE73AD3DBB29 /* xxhash.h in Headers */, - 8FEB47BCCBCCEAB1945DFE73AD3DBB29 /* xxhash.h in Headers */, - A35C729C9323DCF9B1648915EF8D3F91 /* zconf.h in Headers */, - 03CA6B2E803218676A5865F6899E0E5A /* ZilmarGFX_1_3.h in Headers */, - 720E6196C8581C600FE20553DC85F1D3 /* zip.h in Headers */, - 89C6A72BD755E0F060B11BF9134041C6 /* zlib.h in Headers */, - 23E0799FAE08CC1D26FC688C4082D4B2 /* ZlutTexture.h in Headers */, - BC024DE60CB0B1CE1EE1FE7AE0E3980E /* ZSort.h in Headers */, - A04438E1C77E968244B281C17FF432ED /* ZSortBOSS.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 36D0D4822EFD7280AF8AB25DA48DE873 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - A3E15391601C42CA51EC50140B65CB61 /* NSBundle+Extensions.h in Headers */, - 978BD3E90E940A2B1415D33D2A383F17 /* NSConstraintConflict+Conveniences.h in Headers */, - FDE25E8A68FCCEE49649570C4EB44D54 /* NSFileManager+URLs.h in Headers */, - 41B0C33FB6C186CFF9B6D071B58CD0B7 /* NSLayoutConstraint+Edges.h in Headers */, - 3AEC0111F268CD81B435536F8693BCDF /* NSPredicate+Search.h in Headers */, - ADBD39D7A6389DEF2E811ECB3FCE112E /* NSString+Localization.h in Headers */, - 7DE20D6E63872C290AB47D434EC373E9 /* NSUserDefaults+DynamicProperties.h in Headers */, - 8855BB02185CEC2E350D46106537154D /* Roxas-umbrella.h in Headers */, - 5A5D20B307D87F0F079AC3EC56EE4D4D /* Roxas.h in Headers */, - A19EC2CB11D42E71D87B67D0820BB294 /* RSTActivityIndicating.h in Headers */, - BFC6EF4DBED4237DBEEC03A4E28C9D99 /* RSTArrayDataSource.h in Headers */, - 733A75E8ADB9026284939E506EB86A11 /* RSTBlockOperation.h in Headers */, - A0FA4FA8DF61909241D2F50F274BCE5A /* RSTCellContentCell.h in Headers */, - AD260393C86B5A7406A42E719C17F577 /* RSTCellContentChange.h in Headers */, - 4408605E821C7F7A6885E2C1CCE29366 /* RSTCellContentChangeOperation.h in Headers */, - CA3A264B806358F8266FD7EFEABAA214 /* RSTCellContentDataSource.h in Headers */, - 3A25B99D756D928C89261CB6889AAB96 /* RSTCellContentDataSource_Subclasses.h in Headers */, - 42D9F3DA982751DCEA61E9068C1473B7 /* RSTCellContentPrefetchingDataSource.h in Headers */, - 6D1166C313089F15D8B49290E5CCE711 /* RSTCellContentView.h in Headers */, - 4EDA1138B3387957A1923B1167329FD7 /* RSTCollectionViewCell.h in Headers */, - BA19CCBCB9B3290B65D8C1AFBD04D34E /* RSTCollectionViewGridLayout.h in Headers */, - 1F5BE7F91BB7A872AD4D3E27FAEBB4E6 /* RSTCompositeDataSource.h in Headers */, - 72CF1D8965C236AA53AA10D4FB6D9A79 /* RSTConstants.h in Headers */, - 6F336A197EE481699D6098239C2C6764 /* RSTDefines.h in Headers */, - EAA3901D3F9A2ED494076EB14FBB6567 /* RSTDynamicDataSource.h in Headers */, - 75873DE63C27A133FEB24D1B590CEFE2 /* RSTError.h in Headers */, - 6D3540018DB9CFE63C0D34904B4BB7C4 /* RSTFetchedResultsDataSource.h in Headers */, - 6FF52E6EC1E107E9BCE842DD1093DCC1 /* RSTHasher.h in Headers */, - 898A2D3198495B99A42BFC20CF2BE656 /* RSTHelperFile.h in Headers */, - D8E83BAC07A6EB39C3CCB03CEEC79308 /* RSTLaunchViewController.h in Headers */, - E9D68D67F9F2B471F0C199E2CA4C399A /* RSTLoadOperation.h in Headers */, - 823C41CED9D49E9D276050A10B570E85 /* RSTNavigationController.h in Headers */, - D028F89A3C7A6C1B3E338F6877AEA5CB /* RSTNibView.h in Headers */, - EEAB4AC0E2D50933CF35A4E89F189A26 /* RSTOperation.h in Headers */, - 2DF5CD9CA9F8ED14C41711DEFDC39FC8 /* RSTOperation_Subclasses.h in Headers */, - 748CD020978A8DE5A19D2AB966DBB1CC /* RSTOperationQueue.h in Headers */, - 2CC745EFFCA65F28BA363A6511B0A122 /* RSTPersistentContainer.h in Headers */, - C40814FFBB8C0971FB4F63609AC1B837 /* RSTPlaceholderView.h in Headers */, - C9A5140D9C4022FF29A78033FA412252 /* RSTRelationshipPreservingMergePolicy.h in Headers */, - BF962D69824F6135E148CD9150A707D4 /* RSTSearchController.h in Headers */, - 7FE870D909E4EBDA3A98A8782C2FDCF8 /* RSTSeparatorView.h in Headers */, - 0C86E660A94A5F25BA229C364FAFEDE6 /* RSTTintedImageView.h in Headers */, - AF954599D3C9E31F3BD7AC4DEAD66A55 /* RSTToastView.h in Headers */, - D5289BB78A99A8254949771B375759CC /* UIAlertAction+Actions.h in Headers */, - D95B3E97E2A0CDF48132C4250EEB3560 /* UICollectionView+CellContent.h in Headers */, - 9733344A7F8390615322A3816DC3522B /* UICollectionViewCell+CellContent.h in Headers */, - 009FF47B462F5016482A2EF8A0796667 /* UICollectionViewCell+Nibs.h in Headers */, - 4B75C4D6CB371DD7EBF0B97BCF19D12C /* UIImage+Manipulation.h in Headers */, - DAEA238647945985C7612F2A23EAC110 /* UIKit+ActivityIndicating.h in Headers */, - 4418860E443905D4D6C861123C58022C /* UISpringTimingParameters+Conveniences.h in Headers */, - C8B33D9084C93E2AB7BFBF20AAC12D03 /* UITableView+CellContent.h in Headers */, - 94BA1019522C8546E99C1B9C697E6E0A /* UITableViewCell+CellContent.h in Headers */, - E05FBE1BCA9AD9D74586EA0260CE7D83 /* UIView+AnimatedHide.h in Headers */, - A4C7B1AE134208BB071D3BF3819B3876 /* UIViewController+TransitionState.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 3AEE9A6ABD3A63DC8BE10FD567711CEF /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 0BE00FF617AC001DB99B08ACDAD91379 /* 65c816.h in Headers */, - 559D47A87C3DF7593B087592DAF242D2 /* apu.h in Headers */, - 7F61936380ADF05890106F5265176FFC /* bsx.h in Headers */, - 34D9D9587AE2F43B4F63502D38B7A5E2 /* c4.h in Headers */, - BBBA96559E529007438B47C2F60D6F6E /* cheats.h in Headers */, - CDD75DADD1260AEBFBD2D472C698BA72 /* conffile.h in Headers */, - B0F3832F2127CA64A7C753D856A7001D /* controls.h in Headers */, - CBF7C93EDC7B0B7F23895A64F75CB788 /* cpuaddr.h in Headers */, - 3F85E2BF60A55A0364204FDA07B027BC /* cpuexec.h in Headers */, - EB3867A5E7D56FC966EC8D918CCE02E0 /* cpumacro.h in Headers */, - E36FAA5DF0AE2F4BB65D4C27D34F9621 /* cpuops.h in Headers */, - 1313754B2D42C885DE2600FD977992F8 /* crosshairs.h in Headers */, - D8289A51DF696F2D8D729654D5AF04C8 /* debug.h in Headers */, - 42E0A47AC6016A658A24A9ABBB05F2F2 /* display.h in Headers */, - 8148DECEC2D5F7185108FAD9DA8E2EAA /* dma.h in Headers */, - BBDFE238DD99C97F8607B46608B044B0 /* dsp.h in Headers */, - 3E3176D33CDADD755273657C4A7EECE2 /* font.h in Headers */, - 98F29902A3A0D35FA74FE8B9D74C7C7F /* fxemu.h in Headers */, - 0C997CA9DCE0C7A6051627776CD4E0C2 /* fxinst.h in Headers */, - E0EDFE71F4DC27DAB94B474006454FBD /* getset.h in Headers */, - 168FF602FF2B2EBD5AF4DD5E203F1A54 /* gfx.h in Headers */, - 9DB11AE2F6C45F16A56C643A04B96A32 /* hermite_resampler.h in Headers */, - 0D4C93443A97214C10CCC7A5C891E8E3 /* language.h in Headers */, - 9ED7E93CE5B713B016E2D09B85EE4EBA /* logger.h in Headers */, - 1961892EA0CBFA10EDD2667D2BA99483 /* memmap.h in Headers */, - AD33946723D392386CA42DB2966CFCBE /* messages.h in Headers */, - 185ED64DF2422D89CF3717BE4ABEEF5A /* missing.h in Headers */, - 31B2DBBAFE73651D04E825296D28F297 /* movie.h in Headers */, - 5AD41E1DDDB28D9FB6EFA28357A8CE30 /* msu1.h in Headers */, - D15A119D4B56D12B8EB25AC0037B1FAC /* netplay.h in Headers */, - 7B9C140E614A1064F78AAC5AB7A1A804 /* obc1.h in Headers */, - 631F3D5AE191DBDF2255566541C456DE /* pixform.h in Headers */, - F080C4AC3D967A5A7C5AFE0E9E39611F /* port.h in Headers */, - ACFAA48C06C21CD196DC49DAC80CE637 /* ppu.h in Headers */, - EEE6D9395C14316A722BB4A85A3A5F94 /* resampler.h in Headers */, - 322224A15335E64B548E6BC14BCF2B78 /* ring_buffer.h in Headers */, - 9F6927C9D40A3247DE9DD8ED778BED19 /* sa1.h in Headers */, - 430521820BEAAB7C24203C575F20713A /* sar.h in Headers */, - 7A6CAF49CF47A9977827BCFF70D25885 /* screenshot.h in Headers */, - 221951BBCCD4E24CCFB9EB1486B700F4 /* sdd1.h in Headers */, - 3542124A0438B48658C4A6141BEF83CC /* sdd1emu.h in Headers */, - B82B79CE34A62F9D81402B0A3E3750A3 /* seta.h in Headers */, - F6D341A75DD75C84F27A2EAFAA27EEF3 /* snapshot.h in Headers */, - 7AF79670D3D8DA82A962384A2ECA969F /* snes9x.h in Headers */, - B04191632CC7C0142617EAC747809131 /* SNESDeltaCore-umbrella.h in Headers */, - 40C2FE903D7E7E41FE50A490E202A37C /* SNESDeltaCore.h in Headers */, - 57B44C05E0C78DBD3AEB549DD5CE1E6C /* SNESEmulatorBridge.h in Headers */, - 610C2DD3DD0BF6DAC7406BC221BC9333 /* SNESTypes.h in Headers */, - 851B93477C1089CF6762C8C2F6455E31 /* spc7110.h in Headers */, - A1CBEA7CE26BA052A3FA62F221E7CB39 /* spc7110dec.h in Headers */, - 4A3EBD57F8099F1502FCEF3AF1D4F281 /* spc7110emu.h in Headers */, - EA88F2DCF6E2E9DAFC77E67EE84D6B0E /* srtc.h in Headers */, - 7BF7434D7425D61B72D0C890EC2D462F /* srtcemu.h in Headers */, - E6451C08DEBE3F74FCF3EF4286640DAF /* statemanager.h in Headers */, - 10685419FB4E5582BAD361B2B1AE95F1 /* stream.h in Headers */, - CBACCC1E63B7DAF6D17D95D793F1BFF9 /* tile.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 5C5CE2827E86230DD9D35FAEF0E7FD0D /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - BBEAABDD4C5DFC649B46AB53D0BE9395 /* ZIPFoundation-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 6DB5FFA1EE15C256CE1EAC6DDB551DB3 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - BB0CFB82073B9090363ADA3150515534 /* Harmony-umbrella.h in Headers */, - F9C55374D299754191544942F0147195 /* Harmony.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 8266B20F364F76BB75603651A08051AA /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 94696EA0A001067D8812B277FB02326E /* DBChunkInputStream.h in Headers */, - A1142BAEA616C14DF2195B07A9638FB5 /* SwiftyDropbox-umbrella.h in Headers */, - 237F079F7C4B72E8BBEB4DF1D57209F9 /* SwiftyDropbox.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B52063D31A47694C5832DB0144982ED5 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 3522984A23D0983D50F2F60CD2B9F2C9 /* SMCalloutView-umbrella.h in Headers */, - F47DE4860ED00EA4CDC661D662F1681B /* SMCalloutView.h in Headers */, - 953B0BA08374FEB6F8BA47C9EE30878C /* SMClassicCalloutView.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B715D763CE3F7AD2FFB3E12167F759CF /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 39E36E16FF2FAB77065F3E24D90D594B /* GTMGatherInputStream.h in Headers */, - AD6656B872B98CDE4BAC39B6E10CF595 /* GTMMIMEDocument.h in Headers */, - 89F637B6A72C84461E7E5E6395896B4B /* GTMReadMonitorInputStream.h in Headers */, - 0BC29A4D141721CED777951AFB6285DC /* GTMSessionFetcher-umbrella.h in Headers */, - 43A6F36EC82583DFC3F1B2EB25F87C7E /* GTMSessionFetcher.h in Headers */, - 6252AC3C230BC83234C9D7D7F17455E5 /* GTMSessionFetcherLogging.h in Headers */, - F1DCBDDEE6EC2B1512E4A288D7ADF679 /* GTMSessionFetcherService.h in Headers */, - 12EB6F66719644A22679C7B30EA4F9DA /* GTMSessionUploadFetcher.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C01DD7E45774CFF06F5ACF0972002C58 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 3D32B2343FE47F0A79A27AD1EFC1D5D0 /* GoogleToolboxForMac-umbrella.h in Headers */, - B68B1008E56F059A8E9F9595DED94888 /* GTMDebugSelectorValidation.h in Headers */, - 4878C8EAF675668BF798513EC3D67EAB /* GTMDebugThreadValidation.h in Headers */, - 0A96B147078C8A1D424DF53189CB7736 /* GTMDefines.h in Headers */, - D679F18702976A123EC11BFF6587D7FD /* GTMMethodCheck.h in Headers */, - 576E1D4482F3B7F66CEDEF7E4E51B94F /* GTMNSDictionary+URLArguments.h in Headers */, - 961CB7DC678EBC5E084382C5CFD8885C /* GTMNSString+URLArguments.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D89663E2DB8D7DD0634E5C6BF3CD44A2 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 7C223CCCA8FDA2AFC24233CF2C80D507 /* fts3_tokenizer.h in Headers */, - BFF536B78DC4850A4A285C1D03F56057 /* SQLite.h in Headers */, - DB5891014AF5583F4CE70D67063FEBF4 /* SQLite.swift-umbrella.h in Headers */, - 58670BDA59BC1476ECD1AE42A65DEDB4 /* SQLiteObjc.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DA327FA8288BD9E808AD950153D6638C /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 9CF692BD464C27BA082BE1DCA7A9D45C /* Alamofire-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DDF1471E0846DB5225AAE37F3B6CCD6C /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 2B332EE69BBDB0E3E108FDFF4CA96DEE /* adaptivesleep.h in Headers */, - 71E5AB1046881CB07D8740D998F95418 /* array.h in Headers */, - CB86477843A1BDE5C1A20DB1A4A67AD0 /* bitmap_font.h in Headers */, - 4300A386B5C98E3E0FAADC47E93A94EF /* counterdef.h in Headers */, - 87B8D6E0F2D41313388430436F88B571 /* cpu.h in Headers */, - 51236CEB02F62DA7F967A451D1F56F0E /* defined_ptr.h in Headers */, - 11ECD6EE8E00787B6A0FB4F42C7E1401 /* gambatte.h in Headers */, - 3E679A651C223842379C847997E922E6 /* GBCCheat.h in Headers */, - 54A3E6A5E5E5954F8BE1AAA63E0E606E /* GBCDeltaCore-umbrella.h in Headers */, - D2015F4B0F0128219004B6100D0A15CF /* GBCDeltaCore.h in Headers */, - E1D3CBE047BFC953335D5D5CCF533325 /* GBCEmulatorBridge.h in Headers */, - 2422D5891C022D12233A75CE6C1C391F /* GBCInputGetter.h in Headers */, - 860B015438B349EB0A7EE064B62AE7B3 /* GBCTypes.h in Headers */, - 375EB482B73194EF5C4EC2FEDFB5F767 /* gbint.h in Headers */, - D29D7B8BAD305B285BCAE77A9F64C4F2 /* initstate.h in Headers */, - 948A99B0CB0D0B198A21DB7B44042786 /* inputgetter.h in Headers */, - A3F7BACDF102C175ED506AABE677C2F6 /* insertion_sort.h in Headers */, - D5FD3A03D7392BDCFB88416E24E1D4DE /* interrupter.h in Headers */, - A930FE4E4EE70AD6AABF715E42DB4C04 /* interruptrequester.h in Headers */, - 6F86D3ADF2624EA0AC12E3A04B3DFCCF /* loadres.h in Headers */, - A83423193F02D6719C4F7C6049F53226 /* memory.h in Headers */, - 922177CD81645CEC25D49A8AC0B30D0B /* minkeeper.h in Headers */, - 801EABE2D287BC8F76E2D60E97A8A7C3 /* osd_element.h in Headers */, - D40C28117BCCA70BDEF84DD04E056D75 /* pakinfo.h in Headers */, - 514A8999003719826853A454089251A9 /* rateest.h in Headers */, - 61439C0CC7FC6253A498447EB1449EC1 /* ringbuffer.h in Headers */, - E209222C099EE1FECABBEC6BD134562D /* savestate.h in Headers */, - 2AFE8583F7E95C60E1DD4FE64E348FF8 /* scoped_ptr.h in Headers */, - 6E652AD2B567A3B22920B5348BBB8752 /* skipsched.h in Headers */, - 850D5C7C923A94C8671AF5CDDB05F3D8 /* sound.h in Headers */, - FD13C5944614AB5983E16B5934E63920 /* state_osd_elements.h in Headers */, - FD464701028445AB4D25F13C18BCC23A /* statesaver.h in Headers */, - 345EDD9520CC205CD1FB390D34A53945 /* tima.h in Headers */, - F33B4E4A9ACBC7435A05FC5579F36D09 /* transfer_ptr.h in Headers */, - C3107BC4C75C1F33A344ED66A0E208C5 /* uncopyable.h in Headers */, - ECAC4663F59F82385C50CFA46E55BE08 /* usec.h in Headers */, - DEEBB99A08CEF5F272083FE5CB57A1C8 /* video.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DEE9277BE815D39145E8B8B3C8840036 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - BDB020B98485BF26166B76AB7A56D7C9 /* NESDeltaCore-umbrella.h in Headers */, - 90587EBBAAFBC023F5602BCF40D3F049 /* NESDeltaCore.h in Headers */, - AB597C077E8463E0144D7F7A11B210AD /* NstApi.hpp in Headers */, - D9D26D6344F9F2D39C9E06335EB5F14A /* NstApiBarcodeReader.hpp in Headers */, - 3FCDEA74A819AC4D832ED0BA99E512AF /* NstApiCartridge.hpp in Headers */, - E9862620BF251912496647A52274A060 /* NstApiCheats.hpp in Headers */, - 67988AEEE8139D3115F6AB0BA347B43C /* NstApiConfig.hpp in Headers */, - DC44E44FA30176DDBEBAA2C2AB67E3A5 /* NstApiDipSwitches.hpp in Headers */, - 158FDD03EAFCBF29A8F54F06177C10B0 /* NstApiEmulator.hpp in Headers */, - 51CA7B77A9ACD65FB188FF10707AE72B /* NstApiFds.hpp in Headers */, - 82D8E676AFCB80B254E73F367F46D501 /* NstApiInput.hpp in Headers */, - 8E0283303AFEBAFB05BE7B75D29EFAF3 /* NstApiMachine.hpp in Headers */, - F7D8EA5AEF6DCB2ADCA310027C9A12A5 /* NstApiMovie.hpp in Headers */, - 0378326511EF17F3987E8794A7F9BC7A /* NstApiNsf.hpp in Headers */, - D71AD01EC667AD4357F2C55F8E5E5687 /* NstApiRewinder.hpp in Headers */, - FC61A380B0AB99CB687FFA9D1219ABAF /* NstApiSound.hpp in Headers */, - 00621950AF035546BDA1B34136CF5829 /* NstApiTapeRecorder.hpp in Headers */, - B404FD64B862A39E9D9E0E032907BEF8 /* NstApiUser.hpp in Headers */, - BB56F29B3B3E0E18ED228F3D8627690E /* NstApiVideo.hpp in Headers */, - 73F334A9ABA8653E7D0F0624BA674C4B /* NstApu.hpp in Headers */, - 59794998A1976F683445F2572A633E23 /* NstAssert.hpp in Headers */, - 6C6BCC7718A79CF8DE52F8156D37784B /* NstBarcodeReader.hpp in Headers */, - 71AAA5E5828B97500DBE120EDD0BC8BC /* NstBase.hpp in Headers */, - 6990B4783840C438F89A217EF5B0626B /* NstBoard.hpp in Headers */, - 0DC48C8F7B3B823DA7FD84E0866B41D3 /* NstBoardAcclaim.hpp in Headers */, - BBCFD07C2144C77FF60AC9FEB4FD6270 /* NstBoardAcclaimMcAcc.hpp in Headers */, - 57537B3D8E8015A781E8A63574487640 /* NstBoardAe.hpp in Headers */, - A2CF9154989980CFC268B66B94713346 /* NstBoardAgci.hpp in Headers */, - 418DAE118DA469149BF43D6546A9CA77 /* NstBoardAve.hpp in Headers */, - E4638C0867F2C154E318E4B61DA76B54 /* NstBoardAveD1012.hpp in Headers */, - 3558897AA95B62F80A08F6BB2050A356 /* NstBoardAveNina.hpp in Headers */, - 0C3E22A6F73CEA47ED2EB2DCDF17D3FC /* NstBoardAxRom.hpp in Headers */, - 6B0BF194E5EB5E85C5A2205406D9EF43 /* NstBoardBandai.hpp in Headers */, - 571E310AB109E172C7D5A289AEF10E4B /* NstBoardBandai24c0x.hpp in Headers */, - CAFD9A110A8B1B3DF6BAFD9ACCE611E5 /* NstBoardBandaiAerobicsStudio.hpp in Headers */, - DFF2E2235ACDB0942B1814AE978548FC /* NstBoardBandaiDatach.hpp in Headers */, - A95C0AB4438EBC7DCEDC28E01BE05196 /* NstBoardBandaiKaraokeStudio.hpp in Headers */, - 47FA4A6263D719420AA5BE69656C31EC /* NstBoardBandaiLz93d50.hpp in Headers */, - 27CFFB50E3DB9123D04EFE77C8B07812 /* NstBoardBandaiLz93d50ex.hpp in Headers */, - 3AF2AC0F6CD2FCF90A72FF402FF396B5 /* NstBoardBandaiOekaKids.hpp in Headers */, - 2749A3EB09A53E051842ACDC0C175AFC /* NstBoardBenshengBs5.hpp in Headers */, - 988C0CA31EFE130505B3550036C26E99 /* NstBoardBmc110in1.hpp in Headers */, - F11EF870301442D6390FB09614E08A83 /* NstBoardBmc1200in1.hpp in Headers */, - E93FB1BD8A52420A81FE14AC55DCD048 /* NstBoardBmc150in1.hpp in Headers */, - B480924D98DE2163DFF9F9AE65528FC0 /* NstBoardBmc15in1.hpp in Headers */, - E17F86A1F9995B85A569CE651775C495 /* NstBoardBmc20in1.hpp in Headers */, - 208A93A45127BFAF822FE56E378927C9 /* NstBoardBmc21in1.hpp in Headers */, - 215259A1F7D06CC7F5153FB1AD8784D4 /* NstBoardBmc22Games.hpp in Headers */, - ACCEB8C56459BE4E695A1853A6C6AA6B /* NstBoardBmc31in1.hpp in Headers */, - 5FF9112D3D167900154B7558F13DAB04 /* NstBoardBmc35in1.hpp in Headers */, - 907B0C5B1A196BBC3166DB38D7E2919E /* NstBoardBmc36in1.hpp in Headers */, - 6A8547482EDD792016A906E8A4B229E1 /* NstBoardBmc64in1.hpp in Headers */, - A8B3741D77D827CC484A5E2552B5C0F4 /* NstBoardBmc72in1.hpp in Headers */, - 9C88422D60DCED6247C2A5DAD42575BE /* NstBoardBmc76in1.hpp in Headers */, - 7AACB3F5A4C1F1CBFE5E3BE70D808352 /* NstBoardBmc800in1.hpp in Headers */, - 2C2D541DF6046F5A8455E594947526F6 /* NstBoardBmc8157.hpp in Headers */, - 7DA7A538308E8271781EC9161DEB0330 /* NstBoardBmc9999999in1.hpp in Headers */, - DADC28845FD1616FC4A06D2D773E132A /* NstBoardBmcA65as.hpp in Headers */, - 3D37944BC8D6719455E079D3857C1840 /* NstBoardBmcBallgames11in1.hpp in Headers */, - 4F83FE4457BD225A7BF4A13EAD29E480 /* NstBoardBmcCh001.hpp in Headers */, - 0B29201F78D9554A2BD079C6FA2FFF94 /* NstBoardBmcCtc65.hpp in Headers */, - E084D22CD5501B5F8B12484AFD005230 /* NstBoardBmcFamily4646B.hpp in Headers */, - 0BD415BFF46DF39F0B0A9B24530D540A /* NstBoardBmcFk23c.hpp in Headers */, - 66787E84937972391D4E026AC7B0C69F /* NstBoardBmcGamestarA.hpp in Headers */, - 41FC9C70A03B32441576990543BC141B /* NstBoardBmcGamestarB.hpp in Headers */, - A588EDD1F6919192D1E1A1E7F93C896C /* NstBoardBmcGolden190in1.hpp in Headers */, - 1F87213605923853D20CFD645B1D97FC /* NstBoardBmcGoldenCard6in1.hpp in Headers */, - 49D6B0CF5073DA2E08DF0BB04E616376 /* NstBoardBmcGoldenGame260in1.hpp in Headers */, - 7956664E559494A8375D87E02B8D2FD3 /* NstBoardBmcHero.hpp in Headers */, - B60859CB163787381D4232E0D2B21D89 /* NstBoardBmcMarioParty7in1.hpp in Headers */, - 97BA585E32483755C52D679C1CAD6C05 /* NstBoardBmcNovelDiamond.hpp in Headers */, - 31CB322B9A061477F6613B85ED844A50 /* NstBoardBmcPowerjoy84in1.hpp in Headers */, - 761BB00D77FDEA819EC4646C3C7D7045 /* NstBoardBmcResetBased4in1.hpp in Headers */, - 43AF887703C63782133E7015994BA038 /* NstBoardBmcSuper22Games.hpp in Headers */, - 77C65952219A8520E8697DAA21A90BA8 /* NstBoardBmcSuper24in1.hpp in Headers */, - FB83F4C027DDF9D475692D37C998BF97 /* NstBoardBmcSuper40in1.hpp in Headers */, - CCBC3062A244649C883D15B00DBCFCDD /* NstBoardBmcSuper700in1.hpp in Headers */, - AF64225EC16BFF6125E73EB4128C62E4 /* NstBoardBmcSuperBig7in1.hpp in Headers */, - F33794767C10062290FD8D8B9610645F /* NstBoardBmcSuperGun20in1.hpp in Headers */, - 6CB272240D983066E0DCCCD4A7676D6E /* NstBoardBmcSuperHiK300in1.hpp in Headers */, - A832378493279C1E0AD917340C7EFCE0 /* NstBoardBmcSuperHiK4in1.hpp in Headers */, - FE98FC8193282B02BE1E361886284C09 /* NstBoardBmcSuperVision16in1.hpp in Headers */, - 7FF4970DAA2DF80136DBDEE1140E0868 /* NstBoardBmcT262.hpp in Headers */, - 5682281B6898281C5C1ABFA36C3F80A2 /* NstBoardBmcVrc4.hpp in Headers */, - DA48EFAF76AB025D424206406FC6DC9D /* NstBoardBmcVt5201.hpp in Headers */, - 6B0F97A866F6907B8C28CE4E282E195D /* NstBoardBmcY2k64in1.hpp in Headers */, - CC923B2E0DF84CE4BD8578D08859CCB9 /* NstBoardBtl2708.hpp in Headers */, - 64FF4E13D2D7995E27432E449E9D2E2B /* NstBoardBtl6035052.hpp in Headers */, - A81C06D102C335814B9A8E8C7AC4269D /* NstBoardBtlAx5705.hpp in Headers */, - C88B315FF9631005A303C826153F06ED /* NstBoardBtlDragonNinja.hpp in Headers */, - DF308DE7BB6E094182E70013F8031FC4 /* NstBoardBtlGeniusMerioBros.hpp in Headers */, - 0FF0F4ACB1A1D964089325CEF368C7D8 /* NstBoardBtlMarioBaby.hpp in Headers */, - B9F000B4DF36077EA8624B868840FE62 /* NstBoardBtlPikachuY2k.hpp in Headers */, - 94CFE92CED3E11DA3695C768389196BC /* NstBoardBtlShuiGuanPipe.hpp in Headers */, - CFE6D92EAF477A834A6183E07EB2F478 /* NstBoardBtlSmb2a.hpp in Headers */, - 149C695914FB174F117C0DF1211FC709 /* NstBoardBtlSmb2b.hpp in Headers */, - 17DEFDFD261555FC8E0FC5D13CEC4D3D /* NstBoardBtlSmb2c.hpp in Headers */, - CC19C9F9E4365C7D6BFC993E1B5139C4 /* NstBoardBtlSmb3.hpp in Headers */, - 394AE33B38323C76A9B8FE3B59ED459C /* NstBoardBtlSuperBros11.hpp in Headers */, - 6A506469491BF1DED6194FAF21A5CF9E /* NstBoardBtlT230.hpp in Headers */, - 7F49542B776367C95FE631E4E832D5E8 /* NstBoardBtlTobidaseDaisakusen.hpp in Headers */, - 27937C0ADFF1E6FA3193AAD53A7E0F43 /* NstBoardBxRom.hpp in Headers */, - 56EDE990A1AD5367F8B892E863E055FC /* NstBoardCaltron.hpp in Headers */, - FD2C4A16D91821E87A71560E8B5E449D /* NstBoardCamerica.hpp in Headers */, - 362793F2A796177DC74B3B9F64E25130 /* NstBoardCne.hpp in Headers */, - 13F36D3513002DEDD357305D3242AE7C /* NstBoardCneDecathlon.hpp in Headers */, - DED624DFFDA77406657D29F7CD578837 /* NstBoardCnePsb.hpp in Headers */, - 8498F4C5EAD79C3C685866FB12408964 /* NstBoardCneShlz.hpp in Headers */, - 27F3106755B10B1EEF4EFF4AA9C11224 /* NstBoardCony.hpp in Headers */, - A9186FE549242461E52526AE5C43500B /* NstBoardCxRom.hpp in Headers */, - E674C43A26F115949EE52312F8320C9A /* NstBoardDiscrete.hpp in Headers */, - DC7D1C936FADBB6208D988F5391E65A0 /* NstBoardDreamtech.hpp in Headers */, - 87FF732498425558E0C3382A05794972 /* NstBoardDxRom.hpp in Headers */, - 4E12691E8FFB6A5D07B1FD18B28A1E3D /* NstBoardEvent.hpp in Headers */, - E88DF53116715CE0F94A68001B5AA68D /* NstBoardExRom.hpp in Headers */, - 92DEE421CD7D9438D290895FBC57D575 /* NstBoardFb.hpp in Headers */, - 188E5EA95EFD8C83E26389E2A2B52234 /* NstBoardFfe.hpp in Headers */, - 3351E9C78786EA760C531C93A9C94A75 /* NstBoardFujiya.hpp in Headers */, - D5AE3A17179545194E9ED8E65E84C8DD /* NstBoardFukutake.hpp in Headers */, - B6D7D63A6DAB7D28925A83B78BFB5BD2 /* NstBoardFutureMedia.hpp in Headers */, - 1DF8B44BB83651F1D127FA0CAE424F8C /* NstBoardFxRom.hpp in Headers */, - 378A4E0BA1BFF16A35F865640B2581F3 /* NstBoardGouder.hpp in Headers */, - 3FFABA72B0A5D0BC85D32BF55E050DD3 /* NstBoardGxRom.hpp in Headers */, - 703359DEB0D5F4DB8AEFEA78AFC2E8F7 /* NstBoardHenggedianzi.hpp in Headers */, - 05A635D0BF12909379EEBA9F5E6D7506 /* NstBoardHes.hpp in Headers */, - 72CF2FDFF7D2F5073F348FB15ECEAA95 /* NstBoardHosenkan.hpp in Headers */, - E14B0EE131C5B834128F3A253D4EE821 /* NstBoardHxRom.hpp in Headers */, - F2636E7B7557D45107C672F1AC8B9B99 /* NstBoardIrem.hpp in Headers */, - CD4CF54F71DD6CA94C23A6E7D7F28341 /* NstBoardIremG101.hpp in Headers */, - B5BD23A986AE4105F69C2B55D33E7C16 /* NstBoardIremH3001.hpp in Headers */, - 6402FD16C9BADCEAA3DCF2A4BF078C9F /* NstBoardIremHolyDiver.hpp in Headers */, - 16D4F64A1BAFBE66FEAEFC750274BBCF /* NstBoardIremKaiketsu.hpp in Headers */, - 5D888DC4186E2B49B9B7E952D8ED21C1 /* NstBoardIremLrog017.hpp in Headers */, - C782E1952A2901DF365F50ADDE27E9AD /* NstBoardJaleco.hpp in Headers */, - CDE735468E45B7FA20DD3A6C7ACED840 /* NstBoardJalecoJf11.hpp in Headers */, - AAE9E5AF6721DB19659EE62B95A58528 /* NstBoardJalecoJf13.hpp in Headers */, - E0CCCE4CB07E59F36A55148067AB07ED /* NstBoardJalecoJf16.hpp in Headers */, - 79A741CA31797FDB34CC4DB705D3F286 /* NstBoardJalecoJf17.hpp in Headers */, - 411D478938B6BE56A5AEF1D21F148500 /* NstBoardJalecoJf19.hpp in Headers */, - E4903CDD15D278526AA5D4791E54EA18 /* NstBoardJalecoSs88006.hpp in Headers */, - 5756F3A828FF9216F3070FFDED69EECE /* NstBoardJxRom.hpp in Headers */, - AD69D226F5C37B753A0F186D989D00C7 /* NstBoardJyCompany.hpp in Headers */, - 618D67DD0616EEE968E9E403291C104C /* NstBoardKaiser.hpp in Headers */, - 1273507BDC30C800A089FC50EF44AEDF /* NstBoardKasing.hpp in Headers */, - 2F4AC9B5807C8699BEA085CD926181A4 /* NstBoardKay.hpp in Headers */, - 01E5ECB02F979E8AEA6F2DA1339CDC9B /* NstBoardKayH2288.hpp in Headers */, - 68062A36BE7A038C75B75EEFA4A503EE /* NstBoardKayPandaPrince.hpp in Headers */, - 76537961CEB40AD247162874EE6F644F /* NstBoardKonami.hpp in Headers */, - 65B469AC11BA5ACCFE69B46D44087EDC /* NstBoardKonamiVrc1.hpp in Headers */, - 3EFCED92EDC9F6F16DC6F4DD6F5768E5 /* NstBoardKonamiVrc2.hpp in Headers */, - 07D64DAA33339208D12AEC710280E3E6 /* NstBoardKonamiVrc3.hpp in Headers */, - F856CC0CA6BE52B3643DE303ABAB2945 /* NstBoardKonamiVrc4.hpp in Headers */, - 298B446E47DA4AA9F9902F18BD23204F /* NstBoardKonamiVrc6.hpp in Headers */, - 8A5C78F24179E67B011B0E729881840B /* NstBoardKonamiVrc7.hpp in Headers */, - 263137320237F90A0285983A0024F302 /* NstBoardKonamiVsSystem.hpp in Headers */, - 60448A37407D9D39000BAC68C30A4E08 /* NstBoardMagicSeries.hpp in Headers */, - 9583FA5B757184DE5C086C4CCCD77AD8 /* NstBoardMmc1.hpp in Headers */, - 5384326D9398733EEA01A98FD28CCB83 /* NstBoardMmc2.hpp in Headers */, - E7BDD0C197957F9A11861751ACB45042 /* NstBoardMmc3.hpp in Headers */, - 057F9A9513ADF19B4E485BF4C4E6A586 /* NstBoardMmc4.hpp in Headers */, - 4D0160F31CF08CE7DA0B2745431B08A6 /* NstBoardMmc5.hpp in Headers */, - 35810F28A76BA871BB25E6F932D177D4 /* NstBoardMmc6.hpp in Headers */, - 83C6358C817B52080EB16DD386159C52 /* NstBoardMxRom.hpp in Headers */, - B54BE351A907BE9B0B2B592B894B0FED /* NstBoardNamcot.hpp in Headers */, - 794F6AC0CF38023AD6DCFCC7E7BD11EB /* NstBoardNamcot163.hpp in Headers */, - BEF64C8641EC01A5110E5C35A1CBEF5E /* NstBoardNamcot175.hpp in Headers */, - 9B57CCF8BC488FE474E4F1FB71CFF474 /* NstBoardNamcot34xx.hpp in Headers */, - 9447D1D0BB2829139646E0FCA57AFA22 /* NstBoardNanjing.hpp in Headers */, - CF9E650AD6E81CD92418FCAF4F3B1653 /* NstBoardNihon.hpp in Headers */, - DBAE2ECF55E719B0B86FE6D52947F20E /* NstBoardNitra.hpp in Headers */, - EB484CB61A36481AD242EB08609AD4CB /* NstBoardNRom.hpp in Headers */, - ECC3C77A4C57E536C2A70F43A2287BF4 /* NstBoardNtdec.hpp in Headers */, - EEE5585B9396BFA77C4759DC57D7AA9E /* NstBoardNxRom.hpp in Headers */, - 521DABC0210CC67A1C6A4965A96A2A4A /* NstBoardOpenCorp.hpp in Headers */, - 665E865FC2065BA5FA062F69854724BD /* NstBoardPxRom.hpp in Headers */, - 24F3218F961FC3D4F04E1EF2FCCC1793 /* NstBoardQj.hpp in Headers */, - A405B8BF29E241841FD8C1F656BDA8B1 /* NstBoardRcm.hpp in Headers */, - 896F143F977FB4B3AA4DDF36781436D3 /* NstBoardRexSoft.hpp in Headers */, - FD95EDE305F1357072B580F37EDEE2EB /* NstBoardRexSoftDb5z.hpp in Headers */, - 068AF0C9685778FAD48D70FFC911506F /* NstBoardRexSoftSl1632.hpp in Headers */, - 5DEA8F7474732E6C79236F4837258D73 /* NstBoardRumbleStation.hpp in Headers */, - D54749AE8008AF41F370546EA86AF81A /* NstBoardSachen.hpp in Headers */, - 74EF2C94951D03A2DB12E87C8212913C /* NstBoardSachen74x374.hpp in Headers */, - 0F82BC9EEB80790539E81F78E45C0886 /* NstBoardSachenS8259.hpp in Headers */, - 797C23538D091C26376FD6F70882DE0C /* NstBoardSachenSa0036.hpp in Headers */, - FD043B171E2D43CD7BBD995DFC44A0E4 /* NstBoardSachenSa0037.hpp in Headers */, - C2BB840E16DAD254315C3AD6F6583902 /* NstBoardSachenSa72007.hpp in Headers */, - FF1C18CB3439A3560B4C4F89FF89BAA8 /* NstBoardSachenSa72008.hpp in Headers */, - EEBC138BB35378F6C4B576F97B77B169 /* NstBoardSachenStreetHeroes.hpp in Headers */, - 97B88B5221AEC1A6BBC5D54FB62DAC98 /* NstBoardSachenTca01.hpp in Headers */, - C892F3AEC15B09C0A27C7892B5A318A1 /* NstBoardSachenTcu.hpp in Headers */, - 268F8874D390CEA0DFDC85F51E677F90 /* NstBoardSomeriTeam.hpp in Headers */, - D6864D2AAA4EBD665AB4C7B076FBEED8 /* NstBoardSomeriTeamSl12.hpp in Headers */, - D29F767DCFAFB0EAD75CE7C3FCB34916 /* NstBoardSubor.hpp in Headers */, - 005DF598B7B2F5EC9A13068E688B9755 /* NstBoardSunsoft.hpp in Headers */, - 146578F3D3701A630303E3BD9EA7D22E /* NstBoardSunsoft1.hpp in Headers */, - CD62981801F5FD40C0C5B125777777D3 /* NstBoardSunsoft2.hpp in Headers */, - ADD98E14DC11A6AC4A234688F3BF8A2C /* NstBoardSunsoft3.hpp in Headers */, - 564303729227D61E62D0C32CD931C04C /* NstBoardSunsoft4.hpp in Headers */, - 3F7FEA770E5356202443C2E10798F0CA /* NstBoardSunsoft5b.hpp in Headers */, - F204516DA3580583231D8F46D5084373 /* NstBoardSunsoftDcs.hpp in Headers */, - F26D7FB3C84AFBAEE152A0D8B361947A /* NstBoardSunsoftFme7.hpp in Headers */, - BEC447CCC0BF81924C3C7DF0C45C0189 /* NstBoardSuperGame.hpp in Headers */, - 7833BD6ADCD1BDB5A9433477C46128AF /* NstBoardSuperGameBoogerman.hpp in Headers */, - 27270FEF7CF00BAC7CCA3D36B80B4E1A /* NstBoardSuperGameLionKing.hpp in Headers */, - E65AC1355F473096AB61B90358E626A2 /* NstBoardSuperGamePocahontas2.hpp in Headers */, - FEDD763449588000C244E294DB509C0A /* NstBoardSxRom.hpp in Headers */, - A93BBC426AF08A453D180C909550DEA3 /* NstBoardTaito.hpp in Headers */, - A8AA1BCBB2ACAB2855788C5F0A04A93C /* NstBoardTaitoTc0190fmc.hpp in Headers */, - 1D291E557C6AD115AF7BE7738B687FBD /* NstBoardTaitoTc0190fmcPal16r4.hpp in Headers */, - AB80F07342C3BDD018E24A6B7F52840A /* NstBoardTaitoX1005.hpp in Headers */, - 699401724785B6E8BEE16B4010CDF80A /* NstBoardTaitoX1017.hpp in Headers */, - 746E1B50036480139F6F62A2829D6E21 /* NstBoardTengen.hpp in Headers */, - C36BF1C15454DC06DAA4DAD39697C868 /* NstBoardTengenRambo1.hpp in Headers */, - A5ED5B0D2305380BE1DBD40FC1FA117E /* NstBoardTxc.hpp in Headers */, - 6B1E16E01E4BECED80436FF13D3C979C /* NstBoardTxcMxmdhtwo.hpp in Headers */, - 4B39C171942B37E5EBB4E1AD7F526F5A /* NstBoardTxcPoliceman.hpp in Headers */, - 9B7DAF407569D19502B64585C757EDEC /* NstBoardTxcTw.hpp in Headers */, - 4C4C4EB0D0E0B020D54CE2A8247A50D1 /* NstBoardTxRom.hpp in Headers */, - 9E45C64EA176F650C72DC908D6CB014A /* NstBoardUnlA9746.hpp in Headers */, - 955812A21F61FBA6E9C2AEF11BF14B02 /* NstBoardUnlCc21.hpp in Headers */, - 291213DF808D89E1B6D01C4D3E780D52 /* NstBoardUnlEdu2000.hpp in Headers */, - 537A445A6BD512C2C364A8296E9FE8AC /* NstBoardUnlKingOfFighters96.hpp in Headers */, - 61E67A0DD3F243231506E6B68E9F33D6 /* NstBoardUnlKingOfFighters97.hpp in Headers */, - 47B4DD1ABB9504E1223FC8867A81B652 /* NstBoardUnlMortalKombat2.hpp in Headers */, - A7304011F72D0FCF93C658729161C3D0 /* NstBoardUnlN625092.hpp in Headers */, - DDD7C7EE0715A345E5BC7FFE2D5E30F8 /* NstBoardUnlSuperFighter3.hpp in Headers */, - 0CBD673E8665D22FFAFD4A695BE9BB5D /* NstBoardUnlTf1201.hpp in Headers */, - DEFBACF9BE28D1F8D60CA8E097A6474D /* NstBoardUnlWorldHero.hpp in Headers */, - 46457A06C688BCFEC4586763EA73E11C /* NstBoardUnlXzy.hpp in Headers */, - 3BB3304AA1997AB0026B2A5149208B65 /* NstBoardUxRom.hpp in Headers */, - 477FCA2A0A8F638F66D7E34FC2FB5EC4 /* NstBoardVsSystem.hpp in Headers */, - DC08D434CF1E06BC742E0585D4CDF714 /* NstBoardWaixing.hpp in Headers */, - 73E3C3B7DE89143D84B9D4B0FFB41102 /* NstBoardWaixingFfv.hpp in Headers */, - 4ADDF3A9BA32D9DAA8B1C0ECB9CF6B57 /* NstBoardWaixingPs2.hpp in Headers */, - 195D3DFC963C30BC7BB3212ABF8F90EA /* NstBoardWaixingSecurity.hpp in Headers */, - 7D30EC269440BFF4FDA5A609A00C2CB6 /* NstBoardWaixingSgz.hpp in Headers */, - 9DE00EE72CA83C910C9CC63E9C556FB2 /* NstBoardWaixingSgzlz.hpp in Headers */, - 1891303BAECC823B7338FC7259627F32 /* NstBoardWaixingSh2.hpp in Headers */, - A283636259F7E772BFA5A74666B3D62A /* NstBoardWaixingZs.hpp in Headers */, - 0C8FF990FDED020992A42D4A07646CA5 /* NstBoardWhirlwind.hpp in Headers */, - 426298A6777CC4B0185E4C214C926D07 /* NstBoardZz.hpp in Headers */, - 25CA4E2AF8C8651ADE358D0E1A3CE3F8 /* NstCartridge.hpp in Headers */, - 824DDBB4A4A1F8B360A6FC23D83CCCF9 /* NstCartridgeInes.hpp in Headers */, - C85C7A7CD776B7EC257D30EC5808AC37 /* NstCartridgeRomset.hpp in Headers */, - 0E0FB801425F82F7FA0748CB3BF3C4AA /* NstCartridgeUnif.hpp in Headers */, - E54F4FCE014F50AD5DF6635DEE7CF5D7 /* NstCheats.hpp in Headers */, - 772784875EA3D1ACB237CDCE7F272288 /* NstChecksum.hpp in Headers */, - CCFA3FE78D07630DABEBF4BC4A79A0CD /* NstChips.hpp in Headers */, - AD984E73AE3CA54645320EAB0C257FC5 /* NstCore.hpp in Headers */, - 989228C2A23C3C4BC434B7CA749B34FE /* NstCpu.hpp in Headers */, - 4D288D8AAC3133578BEA01CB5E5D0892 /* NstCrc32.hpp in Headers */, - 3F3A41DD7BAC1A62E4318D72E234AE75 /* NstDipSwitches.hpp in Headers */, - 89A02136AB2E7F4338C6E57339DA6204 /* NstFds.hpp in Headers */, - 90BF35E85A202CC3852637E0372B0996 /* NstFile.hpp in Headers */, - 0DE68EC2F51A9D65CB6F3DE545B89B23 /* NstFpuPrecision.hpp in Headers */, - 3B6100F0FB1BCC2ADC81EB5CF7B95186 /* NstHook.hpp in Headers */, - DE8916E4BE45C0B758CD786D552E2E07 /* NstImage.hpp in Headers */, - B7A2DF9E7F64B35ED47772FD30D0F895 /* NstImageDatabase.hpp in Headers */, - 7EC7A9AF518DABF8BADC18295F5C2B45 /* NstInpAdapter.hpp in Headers */, - 3649D0A5F600F50C72717C56C40D595A /* NstInpBandaiHyperShot.hpp in Headers */, - B14A66BEC0CE13A1DED4A61CEF1A7C62 /* NstInpBarcodeWorld.hpp in Headers */, - 357DF9EE19ECB06C535CCCB807F420AF /* NstInpCrazyClimber.hpp in Headers */, - 76E9E2EE0252F434781EDFAFE2FAE4EF /* NstInpDevice.hpp in Headers */, - 91C4550EAC7F3E2FA35D8EB2749A6D2B /* NstInpDoremikkoKeyboard.hpp in Headers */, - 8AFDE10E850A654C64C54446D32835B0 /* NstInpExcitingBoxing.hpp in Headers */, - E1945EEFECF9441C41E14C74ACBAEFBC /* NstInpFamilyKeyboard.hpp in Headers */, - 50AB40817F62717F5085229AC8E5899E /* NstInpFamilyTrainer.hpp in Headers */, - 540B5B5B275257717B549E0137CF3525 /* NstInpHoriTrack.hpp in Headers */, - 0696B0B4458352653EA35662B6291F5B /* NstInpKonamiHyperShot.hpp in Headers */, - 51B424365A04DA4BABB30AAA926B9CE5 /* NstInpMahjong.hpp in Headers */, - 5BB4BE7146E837F34527E80AD02E1C72 /* NstInpMouse.hpp in Headers */, - 0BCCEB711BF05FD789E2A708E0ABF1FF /* NstInpOekaKidsTablet.hpp in Headers */, - 6B250465D7E63AB215A663E60D4DF546 /* NstInpPachinko.hpp in Headers */, - 65D1BCA6B6CDD1B2167B064CE5DDCD68 /* NstInpPad.hpp in Headers */, - C2C99AB8E5AAAA60ECDD43BE9878FCE1 /* NstInpPaddle.hpp in Headers */, - 20573943D2786C8BD9D1C2DFF06ECB72 /* NstInpPartyTap.hpp in Headers */, - 203C97818219C7286FF47E4BF6CA7891 /* NstInpPokkunMoguraa.hpp in Headers */, - D69562A157007BD895C93E05054583FF /* NstInpPowerGlove.hpp in Headers */, - 1ED420FE07EC467E67CBC85B5A8FD4F6 /* NstInpPowerPad.hpp in Headers */, - B29D063BC415BA5AE475CFE6D7557133 /* NstInpRob.hpp in Headers */, - 1F9B48059C83E448BFFAFE0936D7A981 /* NstInpSuborKeyboard.hpp in Headers */, - C2D24B983D4CDBBE64DE16EF2934FA71 /* NstInpTopRider.hpp in Headers */, - 8C74AAD5CB4F096C1B25821449685D0F /* NstInpTurboFile.hpp in Headers */, - DB4B423E6A01C3D1AA385687ECB773BE /* NstInpZapper.hpp in Headers */, - AB8998AD5CB59964628DAA4A14F9E423 /* NstIoAccessor.hpp in Headers */, - BB204F0B87FBE86FB4E0335A88F05822 /* NstIoLine.hpp in Headers */, - 52E898F23BB34BA475A1B6364D9A73A6 /* NstIoMap.hpp in Headers */, - F1C789A86125B29EF654212713BF4473 /* NstIoPort.hpp in Headers */, - 2CE807080E104E8FE53BCF0E5B5629C7 /* NstLog.hpp in Headers */, - 75F80BF43F066C832A5641A55ADFFC28 /* NstMachine.hpp in Headers */, - E54E4026E8FAEC2F60BAC7DD31A38FBF /* NstMemory.hpp in Headers */, - A202018DA4DBD353371CEFF8A5B5D402 /* NstNsf.hpp in Headers */, - CE8AAB3136F559819A00B8D97E98F84C /* NstPatcher.hpp in Headers */, - 8592839E8B8E8195029A7C7DF067EF7A /* NstPatcherIps.hpp in Headers */, - DD15CE6AE0582D7C24C6AC4BE8AEA8F6 /* NstPatcherUps.hpp in Headers */, - 6E5F9A56CB92CDD84FD48C79BCB71363 /* NstPins.hpp in Headers */, - 6F2F0A196FDDDBD7C87C9CB541F8B8EF /* NstPpu.hpp in Headers */, - AE289061B7A8809C0715E72CFE9FCDC8 /* NstProperties.hpp in Headers */, - C066FB3505E2896E64EAB2B348787CBB /* NstRam.hpp in Headers */, - D13B97FF156A000B9E1FB1E6AA55BCA2 /* NstSha1.hpp in Headers */, - A758267C940A35AB481E874A1C6F56B8 /* NstSoundPcm.hpp in Headers */, - D0109C7337E53C42F42E65FCB417A1A6 /* NstSoundPlayer.hpp in Headers */, - 14FEE316C195D5CBF5201EDBBBA86AD2 /* NstSoundRenderer.hpp in Headers */, - C88929863F1CF5BA80810456E020CA58 /* NstState.hpp in Headers */, - 24663AF1810EAA56AFD867FB94355FAB /* NstStream.hpp in Headers */, - 10D7CB0C2B7CD3CA8944DDC050580815 /* NstTimer.hpp in Headers */, - CF970290282A16235F800AACB19F0C2E /* NstTracker.hpp in Headers */, - 534D594C357BC78A1E1FB9DA23354C82 /* NstTrackerMovie.hpp in Headers */, - F975FC361B88C2A88D8CBBCE1C6D1D32 /* NstTrackerRewinder.hpp in Headers */, - C1E2E7B70123C6D61C0EFADE27F3E3B7 /* NstVector.hpp in Headers */, - D45488C0A00AD55510C0E03762BFE37E /* NstVideoFilter2xSaI.hpp in Headers */, - 3273223DDD0CA6757302612A41139A14 /* NstVideoFilterHqX.hpp in Headers */, - AD36FE9904AE82872D28F6680C5DC874 /* NstVideoFilterNone.hpp in Headers */, - 93BDA5A1EC9B3B59D5D6FAFD93F0D087 /* NstVideoFilterNtsc.hpp in Headers */, - 6F3F95D77CDBAE39AD0DC067F1144FB5 /* NstVideoFilterScaleX.hpp in Headers */, - 7D5F2E44C957759CF4BA707BB1415827 /* NstVideoFilterxBR.hpp in Headers */, - ABADD5F65AF9E428F53EBC6B7325FC75 /* NstVideoRenderer.hpp in Headers */, - 41CA4A91CCE1FABA5915CAA4D95E7F4E /* NstVideoScreen.hpp in Headers */, - 29F8A06BB846199406BFD61E55B6D55A /* NstVsRbiBaseball.hpp in Headers */, - D3B69165C2C4E8B192A24883A1839772 /* NstVsSuperXevious.hpp in Headers */, - 4B491AC014D06B281B769327879C4FE5 /* NstVsSystem.hpp in Headers */, - 0B89DF33DB7EE5AFC3F8271B3E0D733E /* NstVsTkoBoxing.hpp in Headers */, - 12AF882E44F744B09C53A8FF7FD8F3DB /* NstXml.hpp in Headers */, - C92C06D170E26383E92394EECD50BEE4 /* NstZlib.hpp in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 0FAC8C4777DBD31221FE57848CB5F759 /* NESDeltaCore */ = { - isa = PBXNativeTarget; - buildConfigurationList = 81658FD265003CE78BE297C586EEEC87 /* Build configuration list for PBXNativeTarget "NESDeltaCore" */; - buildPhases = ( - DEE9277BE815D39145E8B8B3C8840036 /* Headers */, - B0067C232855C15B614EB7814A26A429 /* Sources */, - EA3BC1A215375BC8E4FBA46DD671FF92 /* Frameworks */, - 2D6977DCF667DA95707D5AB27F75F79C /* Copy generated compatibility header */, - ); - buildRules = ( - ); - dependencies = ( - A441F5CCC4B39698B10FAE4F1707588B /* PBXTargetDependency */, - DBF952634AC5BBDB04EDF4BCA01DB43B /* PBXTargetDependency */, - ); - name = NESDeltaCore; - productName = NESDeltaCore; - productReference = 1E5356E04E92615CFF0666E5987CE594 /* libNESDeltaCore.a */; - productType = "com.apple.product-type.library.static"; - }; - 126073BF5D2BF3A4BDD22FE9062C9D20 /* N64DeltaCore */ = { - isa = PBXNativeTarget; - buildConfigurationList = BAB0F6218571491088AC6BA978A71D75 /* Build configuration list for PBXNativeTarget "N64DeltaCore" */; - buildPhases = ( - 34572E7C7418FFA3704C0C9BC54EAD4B /* Headers */, - E9D256C3291A89F8C62D47D41281134A /* Sources */, - E97AC62D61AC37400C2B01133164C9C8 /* Frameworks */, - 0A49AC4F82206150EF95963781AA9D04 /* Copy generated compatibility header */, - ); - buildRules = ( - ); - dependencies = ( - E97412D0233A7AE98DA820BDF9AC560F /* PBXTargetDependency */, - 1A7C8C74F97D3B1B3C2A4548AF374804 /* PBXTargetDependency */, - ); - name = N64DeltaCore; - productName = N64DeltaCore; - productReference = C8D6AC695498645EEE4A66FCEF97D848 /* libN64DeltaCore.a */; - productType = "com.apple.product-type.library.static"; - }; - 141E2D29C29A1BC1ABA3483321DF3C88 /* SNESDeltaCore */ = { - isa = PBXNativeTarget; - buildConfigurationList = 4CE157C6DB0096B7CCEEF39922CCB72D /* Build configuration list for PBXNativeTarget "SNESDeltaCore" */; - buildPhases = ( - 3AEE9A6ABD3A63DC8BE10FD567711CEF /* Headers */, - 8795219B8EB0B008C3767E66BDA1ADFF /* Sources */, - CA5C0D24E9EF27B7B8B5CFA885D9146C /* Frameworks */, - 64A39156E7E91296FEE2C7A31312338F /* Copy generated compatibility header */, - ); - buildRules = ( - ); - dependencies = ( - ADE387AE01AD96352F48752BFF4348E0 /* PBXTargetDependency */, - 3506309A0AFE349C347D729EAF6DCA08 /* PBXTargetDependency */, - ); - name = SNESDeltaCore; - productName = SNESDeltaCore; - productReference = FA400832D3E46B39D5EC83D09A7572FC /* libSNESDeltaCore.a */; - productType = "com.apple.product-type.library.static"; - }; - 1B47E46598F87113B00B3B25BBF51B32 /* DeltaCore-DeltaCore */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0E66F217AE9A4E6C6B0AFB374F684855 /* Build configuration list for PBXNativeTarget "DeltaCore-DeltaCore" */; - buildPhases = ( - DC640386CA9F9B5265EC9171728164C1 /* Sources */, - 45FE1226A33A60E16077252CDDDDBF2D /* Frameworks */, - 11C576681113D362E04FFE944191EE74 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "DeltaCore-DeltaCore"; - productName = "DeltaCore-DeltaCore"; - productReference = 54ECA01A22C32DC89AB39DF9BFFD5FB6 /* DeltaCore.bundle */; - productType = "com.apple.product-type.bundle"; - }; - 280620EDC57ABB510508698A7233E414 /* N64DeltaCore-Mupen64Plus */ = { - isa = PBXNativeTarget; - buildConfigurationList = E68E4BB27FDA7D65D7B601C9AA72818F /* Build configuration list for PBXNativeTarget "N64DeltaCore-Mupen64Plus" */; - buildPhases = ( - 7A6539E9F2077A8247E34CDD84B59F59 /* Sources */, - FA289BB8BBD71C35A28D27C0A80A8C9E /* Frameworks */, - 613D782C4E9DC6A0BAF0B1B4E1B23306 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "N64DeltaCore-Mupen64Plus"; - productName = "N64DeltaCore-Mupen64Plus"; - productReference = 9816EFF6A2268AAEA7B1C19BBE416477 /* Mupen64Plus.bundle */; - productType = "com.apple.product-type.bundle"; - }; - 33C94426DAF58519DC6806AF4C44C9E7 /* Pods-Delta */ = { - isa = PBXNativeTarget; - buildConfigurationList = 98AE526D6E462A297EF202D7BE25F5EB /* Build configuration list for PBXNativeTarget "Pods-Delta" */; - buildPhases = ( - 120F018C57A1C7EDED1DCC95C28EB231 /* Headers */, - 098A17A699787E0A84B0B205A926E98A /* Sources */, - 49E8DCF3C1E1BEF749AD9EFD56D6C7B4 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 600CAE9FE2044A6CE31947B75969862C /* PBXTargetDependency */, - 094B50B605BAB4D73B3ECA6C31A9166A /* PBXTargetDependency */, - EB3F76120170BA5C5FDE9A81BDA23F88 /* PBXTargetDependency */, - 0A4B654FFCCCB5D6E85343B1E45BCC35 /* PBXTargetDependency */, - D91C974122337723A637A3C8B7FE8538 /* PBXTargetDependency */, - 46DA582F9EB8EEA2C7D8B3150BF15AA9 /* PBXTargetDependency */, - 3C2276B7F75338933FC9C2B9B4465C04 /* PBXTargetDependency */, - E9A11F2A64B30E545BA45B5B33A9ABCB /* PBXTargetDependency */, - 78036B04581E1A5E288B539369983798 /* PBXTargetDependency */, - 0CB6D6CB25C0D19F1E9F798CEC239AB9 /* PBXTargetDependency */, - 409A2F0097169E2B979FFC15A11879D0 /* PBXTargetDependency */, - 35902F8D19AE9DF0921811197604CE95 /* PBXTargetDependency */, - 03EE64D57B013B8A1F5157F1DC102386 /* PBXTargetDependency */, - 119BC6949DA3A545112A6EDBA2DA36C5 /* PBXTargetDependency */, - E54DEE53ED59517BCF87FFAE45F85A4D /* PBXTargetDependency */, - A07BD9F034BEEFDA8B499E20B044B42B /* PBXTargetDependency */, - 7A85D30987AA91E2AE5148BB598452A8 /* PBXTargetDependency */, - E6566DFDC21C3373D39D68806EC8F7F8 /* PBXTargetDependency */, - 5FA16B7B382B71AA416AC9EB246626F5 /* PBXTargetDependency */, - 27BB05EDECFD3016D5B1FBD88F66CF8D /* PBXTargetDependency */, - 7B0E8E9303485ADD38839A16FE78F96C /* PBXTargetDependency */, - C7057E1A8160A095EB462DFE082E70CE /* PBXTargetDependency */, - ); - name = "Pods-Delta"; - productName = "Pods-Delta"; - productReference = 9CA80A61ABF26FA89F4E22A30284B0DD /* libPods-Delta.a */; - productType = "com.apple.product-type.library.static"; - }; - 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */ = { - isa = PBXNativeTarget; - buildConfigurationList = 30A0CB7B1940C25C2F4F333351C10E42 /* Build configuration list for PBXNativeTarget "SDWebImage" */; - buildPhases = ( - 26CD12A0A8FED394729931D851C1BDFE /* Headers */, - BEB1EE0820D4CC88754367FD7B075D1A /* Sources */, - 373FAF5E443D6679532ACC75D39A2A05 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = SDWebImage; - productName = SDWebImage; - productReference = B0B214D775196BA7CA8E17E53048A493 /* libSDWebImage.a */; - productType = "com.apple.product-type.library.static"; - }; - 38A7AA32705A9662332E76FA75B50858 /* MelonDSDeltaCore */ = { - isa = PBXNativeTarget; - buildConfigurationList = 2DE6D63B27CA8629F24AFB18C3298658 /* Build configuration list for PBXNativeTarget "MelonDSDeltaCore" */; - buildPhases = ( - 0B81AEAC743DC541709D86FCD8415BFD /* Headers */, - C77AE1D5F1BD644E2B4EE7F7CB29152A /* Sources */, - 24D549263055335213CCD47E61AF1EC1 /* Frameworks */, - 688E2BDB938F863E6C0BAC3C1E46A64C /* Copy generated compatibility header */, - ); - buildRules = ( - ); - dependencies = ( - BEB364953CBFFEC82DE8161D0034DBD2 /* PBXTargetDependency */, - D37AD80FD9BD1A71ADD481E64E7864DC /* PBXTargetDependency */, - ); - name = MelonDSDeltaCore; - productName = MelonDSDeltaCore; - productReference = 4C22C82316853ABB688358B93486CF8E /* libMelonDSDeltaCore.a */; - productType = "com.apple.product-type.library.static"; - }; - 3F2C1776D90B62B156DB52C41A5C419C /* SQLite.swift */ = { - isa = PBXNativeTarget; - buildConfigurationList = 4831832D716DE9C50FF96385B6482F4A /* Build configuration list for PBXNativeTarget "SQLite.swift" */; - buildPhases = ( - D89663E2DB8D7DD0634E5C6BF3CD44A2 /* Headers */, - 5EE6B8A56A8A13C9228CFEE7FC036FA2 /* Sources */, - 83E6F56551D35482FE1861B7C021F61A /* Frameworks */, - FBDBDFFAD990AD9508B3EFA011AEFC86 /* Copy generated compatibility header */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = SQLite.swift; - productName = SQLite.swift; - productReference = F5FA45A44C42CC2CA3A324A3E914CE19 /* libSQLite.swift.a */; - productType = "com.apple.product-type.library.static"; - }; - 530F469AED058B94728C278CCA514500 /* DeltaCore */ = { - isa = PBXNativeTarget; - buildConfigurationList = 702303E70A99B0257F34233022A246A0 /* Build configuration list for PBXNativeTarget "DeltaCore" */; - buildPhases = ( - 149749DE9506E393655133E5DCCA16BE /* Headers */, - 919E161711A246AA6FA4170664BD3E80 /* Sources */, - F6CA344BE9328D032E851ED3CC7FE2A9 /* Frameworks */, - E5CE8A7CB52BE640D044C7BCE6336231 /* Copy generated compatibility header */, - E12A7568EFEB040E5F8D1C0DEA0F0A85 /* [CP-User] Copy Swift Header */, - ); - buildRules = ( - ); - dependencies = ( - E2C6AB10B17312AB90B2AFD1B501166E /* PBXTargetDependency */, - 750351E97FD667226D5B4CF6487E1FDC /* PBXTargetDependency */, - ); - name = DeltaCore; - productName = DeltaCore; - productReference = F93477FBF1E4488E506F9BB79AF57D38 /* libDeltaCore.a */; - productType = "com.apple.product-type.library.static"; - }; - 5B32FEE5AD13CB944235C9158BECB929 /* MelonDSDeltaCore-melonDS */ = { - isa = PBXNativeTarget; - buildConfigurationList = 4BF404C2179A39D891CD80E3598B1292 /* Build configuration list for PBXNativeTarget "MelonDSDeltaCore-melonDS" */; - buildPhases = ( - 5CD0AD27A6F7DF599F0F629BA7FC76F3 /* Sources */, - 39A9B1F634A7D8F9D08DF03E65A7AF0D /* Frameworks */, - F3A21D6DC4371E0C90DE9E309763DCB4 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "MelonDSDeltaCore-melonDS"; - productName = "MelonDSDeltaCore-melonDS"; - productReference = ECD0868BC2D1CFC2A22DDD56F79CF4B1 /* melonDS.bundle */; - productType = "com.apple.product-type.bundle"; - }; - 5C36E65AEF44273E4AF0CBFADD00C090 /* GBCDeltaCore-GBCDeltaCore */ = { - isa = PBXNativeTarget; - buildConfigurationList = 37C3FD9C7096F4FAAF7685E5013E0E72 /* Build configuration list for PBXNativeTarget "GBCDeltaCore-GBCDeltaCore" */; - buildPhases = ( - B4E4800D91BCB83656038FED949DE473 /* Sources */, - C610C62585E9296CFA84B45E8A41F8C8 /* Frameworks */, - 02A22FBEE748776ABD26992BC0EE199C /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "GBCDeltaCore-GBCDeltaCore"; - productName = "GBCDeltaCore-GBCDeltaCore"; - productReference = 1F23DBC67505E77BE77552D6D84A3DAA /* GBCDeltaCore.bundle */; - productType = "com.apple.product-type.bundle"; - }; - 5CB4163F0A6D4BDE0A490758A78BA43D /* Harmony */ = { - isa = PBXNativeTarget; - buildConfigurationList = 3C98678E8C686DBBBBE87622A916830D /* Build configuration list for PBXNativeTarget "Harmony" */; - buildPhases = ( - 6DB5FFA1EE15C256CE1EAC6DDB551DB3 /* Headers */, - 14D1EC3D03BF1404CE997CB43CB63F1B /* Sources */, - D0AB4FF4329C34D71D0BA178CDB4236F /* Frameworks */, - 0EF9318551E6AEC5C2F230F1CA944D42 /* Copy generated compatibility header */, - ); - buildRules = ( - ); - dependencies = ( - 77F320C6D8F3FA3747D33EC0492DD627 /* PBXTargetDependency */, - CDD9440C0B47CA2F07787A29EAB39B4E /* PBXTargetDependency */, - 0AD4A5323D4E24D46D8228FECDBA8264 /* PBXTargetDependency */, - 82DAE5F70682593E5746A491E18D0532 /* PBXTargetDependency */, - ); - name = Harmony; - productName = Harmony; - productReference = DBC0113CF73BE24525E670D024A85BE7 /* libHarmony.a */; - productType = "com.apple.product-type.library.static"; - }; - 6538136F848A07F507372CCFB40CEB88 /* SNESDeltaCore-SNESDeltaCore */ = { - isa = PBXNativeTarget; - buildConfigurationList = D3581C88B7891BCC579EC04D431D735A /* Build configuration list for PBXNativeTarget "SNESDeltaCore-SNESDeltaCore" */; - buildPhases = ( - 380C1513BBD1E874A4D3EACBDDDF930A /* Sources */, - 1488024521E3F8E048FB39F8C5B4A4AC /* Frameworks */, - 866D45004ACE9260932EA47D8347DE21 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "SNESDeltaCore-SNESDeltaCore"; - productName = "SNESDeltaCore-SNESDeltaCore"; - productReference = 7D751206A951D9727B38F71A2BB990AA /* SNESDeltaCore.bundle */; - productType = "com.apple.product-type.bundle"; - }; - 7056A67459B0B8B62FACACCE167546B8 /* GBADeltaCore */ = { - isa = PBXNativeTarget; - buildConfigurationList = A75572E849982CFBC18ACEBB47B74707 /* Build configuration list for PBXNativeTarget "GBADeltaCore" */; - buildPhases = ( - 2F2F64A11781D62E7F9C71DFE7204683 /* Headers */, - 3A67BA2F032F636EDB59357A38E5F1BC /* Sources */, - A8F7ED8C6E8FF24472EEB6BDE9D273F4 /* Frameworks */, - DB247626E6DC44CA6713D41F7E4EDDE5 /* Copy generated compatibility header */, - ); - buildRules = ( - ); - dependencies = ( - BE437ADD418ADBC477DB5360E499CA9E /* PBXTargetDependency */, - E2562602C1C3CFB196E0B8A06CDA6304 /* PBXTargetDependency */, - ); - name = GBADeltaCore; - productName = GBADeltaCore; - productReference = 85A4BD81985AEDB6D9BA5E50804225D0 /* libGBADeltaCore.a */; - productType = "com.apple.product-type.library.static"; - }; - 7F839870ECBE0065B4BCC02E5F98F48A /* NESDeltaCore-NESDeltaCore */ = { - isa = PBXNativeTarget; - buildConfigurationList = 1CFD3133C2B2906904089868E9B38F3C /* Build configuration list for PBXNativeTarget "NESDeltaCore-NESDeltaCore" */; - buildPhases = ( - C5BFF7002DF61F3D48AEF8FE35B5097E /* Sources */, - 7CAC5B43C0F8EE43F07B70E54ED0EFEB /* Frameworks */, - BFE4EF52177B3E28D0E4EA29A2BEDCF7 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "NESDeltaCore-NESDeltaCore"; - productName = "NESDeltaCore-NESDeltaCore"; - productReference = 487C7DB0A7257F16983BEF8324BEF561 /* NESDeltaCore.bundle */; - productType = "com.apple.product-type.bundle"; - }; - 890229DC8DCC9C43917568A0C4502FCA /* GBADeltaCore-GBADeltaCore */ = { - isa = PBXNativeTarget; - buildConfigurationList = 20E73C9865D5FD2BA7797AF6CF84A825 /* Build configuration list for PBXNativeTarget "GBADeltaCore-GBADeltaCore" */; - buildPhases = ( - 43AE254804DCF432983D09DCD6B97EAE /* Sources */, - 0278C1310F2FC854B6D8D8B7C4899F3E /* Frameworks */, - 9442F5C610C0A4B7E880F7B3A3032D0A /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "GBADeltaCore-GBADeltaCore"; - productName = "GBADeltaCore-GBADeltaCore"; - productReference = 30131336E11D11700AC99D314BDC275C /* GBADeltaCore.bundle */; - productType = "com.apple.product-type.bundle"; - }; - AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */ = { - isa = PBXNativeTarget; - buildConfigurationList = B9E1D438A3067CA0431F870C7FEF0260 /* Build configuration list for PBXNativeTarget "ZIPFoundation" */; - buildPhases = ( - 5C5CE2827E86230DD9D35FAEF0E7FD0D /* Headers */, - 3B9C72AF6AFA7B869392E20DB7814877 /* Sources */, - B80A59884AEC46F6702DAD4235E02625 /* Frameworks */, - FC98EB16E14CDA72C711F1CD6D3C682C /* Copy generated compatibility header */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = ZIPFoundation; - productName = ZIPFoundation; - productReference = 48A4A6EDC08C8AC933D0DCD507E9D173 /* libZIPFoundation.a */; - productType = "com.apple.product-type.library.static"; - }; - B5D1BA64AC676FF46408FCDE19A05767 /* Roxas */ = { - isa = PBXNativeTarget; - buildConfigurationList = 8FB8C0238E21FD187D8CCCBF6F6744A1 /* Build configuration list for PBXNativeTarget "Roxas" */; - buildPhases = ( - 36D0D4822EFD7280AF8AB25DA48DE873 /* Headers */, - CF3CED1DC6C19FEC19AF9261FEC8F469 /* Sources */, - 1DF257C963786606A49029119D97D623 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Roxas; - productName = Roxas; - productReference = 4405793D5AF1EFD9D2BDA30AA0D2E514 /* libRoxas.a */; - productType = "com.apple.product-type.library.static"; - }; - D20492B6476142DCA0C455340876BB98 /* SMCalloutView */ = { - isa = PBXNativeTarget; - buildConfigurationList = BB07493EBFDFDB75360BF9DF17195333 /* Build configuration list for PBXNativeTarget "SMCalloutView" */; - buildPhases = ( - B52063D31A47694C5832DB0144982ED5 /* Headers */, - 811F13FE55E873CE6C1956757840D7C7 /* Sources */, - 7493E42190EBEAA740FD633B30B8DE50 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = SMCalloutView; - productName = SMCalloutView; - productReference = 53A730F4F4248E7E3F38F8409A2DE97C /* libSMCalloutView.a */; - productType = "com.apple.product-type.library.static"; - }; - D47C581D39D227080F83B16A22A56664 /* GoogleToolboxForMac */ = { - isa = PBXNativeTarget; - buildConfigurationList = 548B9083F85CF74CC3F295452333F1CE /* Build configuration list for PBXNativeTarget "GoogleToolboxForMac" */; - buildPhases = ( - C01DD7E45774CFF06F5ACF0972002C58 /* Headers */, - C0322F5A2A5BE853A4427854080EF5B4 /* Sources */, - 97FA1702BFA1F0E041B1E2C5C134BBEA /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = GoogleToolboxForMac; - productName = GoogleToolboxForMac; - productReference = 251C6319AD50CB50F18D50CBF727F8B2 /* libGoogleToolboxForMac.a */; - productType = "com.apple.product-type.library.static"; - }; - D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */ = { - isa = PBXNativeTarget; - buildConfigurationList = D2C52F7C31F8F18B3E7649A2B825768D /* Build configuration list for PBXNativeTarget "GTMSessionFetcher" */; - buildPhases = ( - B715D763CE3F7AD2FFB3E12167F759CF /* Headers */, - 0F356666BA38C004ACD3218C473661FF /* Sources */, - 872C104A3266050144437694E83876B9 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = GTMSessionFetcher; - productName = GTMSessionFetcher; - productReference = C1998E0D8085221AD87F89B614C10E52 /* libGTMSessionFetcher.a */; - productType = "com.apple.product-type.library.static"; - }; - D7958E869B6C0073DB3025514393D7A3 /* GoogleAPIClientForREST */ = { - isa = PBXNativeTarget; - buildConfigurationList = 90C26BDA90A9831C30C653B5D2AF1843 /* Build configuration list for PBXNativeTarget "GoogleAPIClientForREST" */; - buildPhases = ( - 12C6F90746C89ACD2C642508705F0B1D /* Headers */, - EF7586674F4859C6764E29EA2044B8F2 /* Sources */, - BB6B1C21E27B56128CA5A2431C997CE4 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - F0187F25307C287480D9BF750BBA9671 /* PBXTargetDependency */, - ); - name = GoogleAPIClientForREST; - productName = GoogleAPIClientForREST; - productReference = FD519882861480B93B563B477CE1FA29 /* libGoogleAPIClientForREST.a */; - productType = "com.apple.product-type.library.static"; - }; - DB59C68809324297BEDAF0CC3F931B27 /* GBCDeltaCore */ = { - isa = PBXNativeTarget; - buildConfigurationList = 625DC7B3E84659D2E25B06C0604DCABC /* Build configuration list for PBXNativeTarget "GBCDeltaCore" */; - buildPhases = ( - DDF1471E0846DB5225AAE37F3B6CCD6C /* Headers */, - D6BCB5F8F017F4FD74B9FDD5A731BFD4 /* Sources */, - 550AA98561B4CCBF05A114EA0F64C641 /* Frameworks */, - 3946B0751E72EDD8AC426E3A07E57CD9 /* Copy generated compatibility header */, - ); - buildRules = ( - ); - dependencies = ( - 57480D7CBF2F1F1BF3034AF32FB71892 /* PBXTargetDependency */, - D87982085F22C530E1304E47F34EBEB8 /* PBXTargetDependency */, - ); - name = GBCDeltaCore; - productName = GBCDeltaCore; - productReference = D4C010E8572FAE8B51DFDBF2300ECF30 /* libGBCDeltaCore.a */; - productType = "com.apple.product-type.library.static"; - }; - DCBC8D45C727B1472F26E79661AF11B0 /* DSDeltaCore */ = { - isa = PBXNativeTarget; - buildConfigurationList = 846E16CA47CD0B9782A3A0282B6DBCF1 /* Build configuration list for PBXNativeTarget "DSDeltaCore" */; - buildPhases = ( - 2D3BC56798D50141DFEBE4B42E8D077B /* Headers */, - 9C81AB1E6123246CA5BA1376689CA6D6 /* Sources */, - 745F4853A6109BB9240488B605C5255A /* Frameworks */, - 591BDA5874F4853C0EBBD53633DF4011 /* Copy generated compatibility header */, - ); - buildRules = ( - ); - dependencies = ( - E67391BBEAF788E7D3E75113B72EAC88 /* PBXTargetDependency */, - E35E9E7F21AA268DCEBD230432F37D8D /* PBXTargetDependency */, - ); - name = DSDeltaCore; - productName = DSDeltaCore; - productReference = 8DF503EB5BF2CD824792BFD2BBC0992F /* libDSDeltaCore.a */; - productType = "com.apple.product-type.library.static"; - }; - E5449403CBE67599315B4D26019FA175 /* DSDeltaCore-DSDeltaCore */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0BF5B5A386A01E03AA17295E9B2FCA1B /* Build configuration list for PBXNativeTarget "DSDeltaCore-DSDeltaCore" */; - buildPhases = ( - 63D215C5E00EA498F3421629418244B9 /* Sources */, - F300B90E27A67D3919921AF01EECE6DE /* Frameworks */, - 531F4BCAD573D1F4B69B9552A41110C4 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "DSDeltaCore-DSDeltaCore"; - productName = "DSDeltaCore-DSDeltaCore"; - productReference = 4A6CEB53419EF6042E06B56676D1DAF8 /* DSDeltaCore.bundle */; - productType = "com.apple.product-type.bundle"; - }; - EAAA1AD3A8A1B59AB91319EE40752C6D /* Alamofire */ = { - isa = PBXNativeTarget; - buildConfigurationList = 20F50134A7EBE5BBF644BED665FB3400 /* Build configuration list for PBXNativeTarget "Alamofire" */; - buildPhases = ( - DA327FA8288BD9E808AD950153D6638C /* Headers */, - ADA8A824FC0DF194C0EEA41A4A09871D /* Sources */, - 07C7603FFA3CB8DF7695C09A4C85DE4B /* Frameworks */, - 4F61BF6CCE774E66CD281745D52A182D /* Copy generated compatibility header */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = Alamofire; - productName = Alamofire; - productReference = 5D797E9A5C5782CE845840781FA1CC81 /* libAlamofire.a */; - productType = "com.apple.product-type.library.static"; - }; - FF39B7A1D9F00620D9F56635ABBB2C03 /* SwiftyDropbox */ = { - isa = PBXNativeTarget; - buildConfigurationList = F012BBB590EC4AFAF059E42752E0ACEF /* Build configuration list for PBXNativeTarget "SwiftyDropbox" */; - buildPhases = ( - 8266B20F364F76BB75603651A08051AA /* Headers */, - 61C638716B75368A745C1D63BC30AD10 /* Sources */, - 36E56EB5253558614CE79301A749B02C /* Frameworks */, - 104F3D03E7AFAC3215C67DFCCC54F3B0 /* Copy generated compatibility header */, - ); - buildRules = ( - ); - dependencies = ( - 2A75E1311D3704AA03D1E657CC30399C /* PBXTargetDependency */, - ); - name = SwiftyDropbox; - productName = SwiftyDropbox; - productReference = 1CBA76EDD27FA2D20B1EA0F0BF7F082C /* libSwiftyDropbox.a */; - productType = "com.apple.product-type.library.static"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - BFDFE7DC352907FC980B868725387E98 /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 1100; - LastUpgradeCheck = 1100; - }; - buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = CF1408CF629C7361332E53B88F7BD30C; - productRefGroup = 755747E18A6F54E373510ADBD08E6723 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - EAAA1AD3A8A1B59AB91319EE40752C6D /* Alamofire */, - C0E41540D6862472ED7F2FA11669BE1F /* Crashlytics */, - 530F469AED058B94728C278CCA514500 /* DeltaCore */, - 1B47E46598F87113B00B3B25BBF51B32 /* DeltaCore-DeltaCore */, - DCBC8D45C727B1472F26E79661AF11B0 /* DSDeltaCore */, - E5449403CBE67599315B4D26019FA175 /* DSDeltaCore-DSDeltaCore */, - ABB048B191245233986A7CD75FE412A5 /* Fabric */, - 7056A67459B0B8B62FACACCE167546B8 /* GBADeltaCore */, - 890229DC8DCC9C43917568A0C4502FCA /* GBADeltaCore-GBADeltaCore */, - DB59C68809324297BEDAF0CC3F931B27 /* GBCDeltaCore */, - 5C36E65AEF44273E4AF0CBFADD00C090 /* GBCDeltaCore-GBCDeltaCore */, - D7958E869B6C0073DB3025514393D7A3 /* GoogleAPIClientForREST */, - CAD3534FC55B0333104E5117C0A9A324 /* GoogleSignIn */, - D47C581D39D227080F83B16A22A56664 /* GoogleToolboxForMac */, - D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */, - 5CB4163F0A6D4BDE0A490758A78BA43D /* Harmony */, - 38A7AA32705A9662332E76FA75B50858 /* MelonDSDeltaCore */, - 5B32FEE5AD13CB944235C9158BECB929 /* MelonDSDeltaCore-melonDS */, - 126073BF5D2BF3A4BDD22FE9062C9D20 /* N64DeltaCore */, - 280620EDC57ABB510508698A7233E414 /* N64DeltaCore-Mupen64Plus */, - 0FAC8C4777DBD31221FE57848CB5F759 /* NESDeltaCore */, - 7F839870ECBE0065B4BCC02E5F98F48A /* NESDeltaCore-NESDeltaCore */, - 33C94426DAF58519DC6806AF4C44C9E7 /* Pods-Delta */, - B5D1BA64AC676FF46408FCDE19A05767 /* Roxas */, - 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */, - D20492B6476142DCA0C455340876BB98 /* SMCalloutView */, - 141E2D29C29A1BC1ABA3483321DF3C88 /* SNESDeltaCore */, - 6538136F848A07F507372CCFB40CEB88 /* SNESDeltaCore-SNESDeltaCore */, - 3F2C1776D90B62B156DB52C41A5C419C /* SQLite.swift */, - FF39B7A1D9F00620D9F56635ABBB2C03 /* SwiftyDropbox */, - AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 02A22FBEE748776ABD26992BC0EE199C /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 221D42284E794E06F3F19D65C07FF9A6 /* Standard.deltamapping in Resources */, - 2B604C9570E4F0E32F87292123DDB6A7 /* Standard.deltaskin in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 11C576681113D362E04FFE944191EE74 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 63DF12F2DE04D063432CE59B0BFDC4EE /* KeyboardGameController.deltamapping in Resources */, - 6008FBBEEDE31E4AB8D6D104362EE632 /* MFiGameController.deltamapping in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 531F4BCAD573D1F4B69B9552A41110C4 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 99F5B9FDBC333B2B230680C0E6F72D7A /* Standard.deltamapping in Resources */, - BCA8AF268444479F7EA70DBAE5AD5D6F /* Standard.deltaskin in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 613D782C4E9DC6A0BAF0B1B4E1B23306 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 51C657E2290BFA1C359C56A6DB9F6D9C /* GLideN64.custom.ini in Resources */, - 19D276C92F7EE28FC5A5F571ABB669E0 /* GLideN64.ini in Resources */, - 5673E35FE41293804D1FED43C52DAE9A /* mupen64plus.ini in Resources */, - B7580E5FB600540A81EFBBD92F4D2481 /* Standard.deltamapping in Resources */, - C8FB4BA0B4141C448911CC0F46E5BEB6 /* Standard.deltaskin in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 866D45004ACE9260932EA47D8347DE21 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 865F3297146120D14490BA4F5B33C767 /* Standard.deltamapping in Resources */, - 36A71964872AC8FDE8E020463DE88F83 /* Standard.deltaskin in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9442F5C610C0A4B7E880F7B3A3032D0A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 7ADF9BDD0E8518276F48D162577CDEE0 /* Standard.deltamapping in Resources */, - 72A7ADDF72710CDD99A55D023026DE1B /* Standard.deltaskin in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - BFE4EF52177B3E28D0E4EA29A2BEDCF7 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 4918E84E848470B9A2D0FA19D45CE005 /* NstDatabase.xml in Resources */, - E38036D0552D4B0B0C8C8E89615B7738 /* Standard.deltamapping in Resources */, - E8141B93355AAEFFCD8C7FB484ADEE70 /* Standard.deltaskin in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F3A21D6DC4371E0C90DE9E309763DCB4 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 795F699DA63A00577A87DC8152823A7A /* Standard.deltamapping in Resources */, - CD166B19C907229715CB08A27A9A4058 /* Standard.deltaskin in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 0A49AC4F82206150EF95963781AA9D04 /* Copy generated compatibility header */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/N64DeltaCore/N64DeltaCore.modulemap", - "${PODS_ROOT}/Headers/Public/N64DeltaCore/N64DeltaCore-umbrella.h", - ); - name = "Copy generated compatibility header"; - outputFileListPaths = ( - ); - outputPaths = ( - "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/N64DeltaCore-umbrella.h", - "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/N64DeltaCore/N64DeltaCore.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/N64DeltaCore/N64DeltaCore-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; - }; - 0EF9318551E6AEC5C2F230F1CA944D42 /* Copy generated compatibility header */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/Harmony/Harmony.modulemap", - "${PODS_ROOT}/Headers/Public/Harmony/Harmony-umbrella.h", - ); - name = "Copy generated compatibility header"; - outputFileListPaths = ( - ); - outputPaths = ( - "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/Harmony-umbrella.h", - "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/Harmony/Harmony.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/Harmony/Harmony-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; - }; - 104F3D03E7AFAC3215C67DFCCC54F3B0 /* Copy generated compatibility header */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/SwiftyDropbox/SwiftyDropbox.modulemap", - "${PODS_ROOT}/Headers/Public/SwiftyDropbox/SwiftyDropbox-umbrella.h", - ); - name = "Copy generated compatibility header"; - outputFileListPaths = ( - ); - outputPaths = ( - "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/SwiftyDropbox-umbrella.h", - "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SwiftyDropbox/SwiftyDropbox.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SwiftyDropbox/SwiftyDropbox-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; - }; - 2D6977DCF667DA95707D5AB27F75F79C /* Copy generated compatibility header */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/NESDeltaCore/NESDeltaCore.modulemap", - "${PODS_ROOT}/Headers/Public/NESDeltaCore/NESDeltaCore-umbrella.h", - ); - name = "Copy generated compatibility header"; - outputFileListPaths = ( - ); - outputPaths = ( - "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/NESDeltaCore-umbrella.h", - "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/NESDeltaCore/NESDeltaCore.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/NESDeltaCore/NESDeltaCore-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; - }; - 3946B0751E72EDD8AC426E3A07E57CD9 /* Copy generated compatibility header */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/GBCDeltaCore/GBCDeltaCore.modulemap", - "${PODS_ROOT}/Headers/Public/GBCDeltaCore/GBCDeltaCore-umbrella.h", - ); - name = "Copy generated compatibility header"; - outputFileListPaths = ( - ); - outputPaths = ( - "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/GBCDeltaCore-umbrella.h", - "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/GBCDeltaCore/GBCDeltaCore.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/GBCDeltaCore/GBCDeltaCore-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; - }; - 4F61BF6CCE774E66CD281745D52A182D /* Copy generated compatibility header */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/Alamofire/Alamofire.modulemap", - "${PODS_ROOT}/Headers/Public/Alamofire/Alamofire-umbrella.h", - ); - name = "Copy generated compatibility header"; - outputFileListPaths = ( - ); - outputPaths = ( - "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/Alamofire-umbrella.h", - "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/Alamofire/Alamofire.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/Alamofire/Alamofire-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; - }; - 591BDA5874F4853C0EBBD53633DF4011 /* Copy generated compatibility header */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/DSDeltaCore/DSDeltaCore.modulemap", - "${PODS_ROOT}/Headers/Public/DSDeltaCore/DSDeltaCore-umbrella.h", - ); - name = "Copy generated compatibility header"; - outputFileListPaths = ( - ); - outputPaths = ( - "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/DSDeltaCore-umbrella.h", - "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/DSDeltaCore/DSDeltaCore.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/DSDeltaCore/DSDeltaCore-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; - }; - 64A39156E7E91296FEE2C7A31312338F /* Copy generated compatibility header */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/SNESDeltaCore/SNESDeltaCore.modulemap", - "${PODS_ROOT}/Headers/Public/SNESDeltaCore/SNESDeltaCore-umbrella.h", - ); - name = "Copy generated compatibility header"; - outputFileListPaths = ( - ); - outputPaths = ( - "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/SNESDeltaCore-umbrella.h", - "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SNESDeltaCore/SNESDeltaCore.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SNESDeltaCore/SNESDeltaCore-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; - }; - 688E2BDB938F863E6C0BAC3C1E46A64C /* Copy generated compatibility header */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/MelonDSDeltaCore/MelonDSDeltaCore.modulemap", - "${PODS_ROOT}/Headers/Public/MelonDSDeltaCore/MelonDSDeltaCore-umbrella.h", - ); - name = "Copy generated compatibility header"; - outputFileListPaths = ( - ); - outputPaths = ( - "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/MelonDSDeltaCore-umbrella.h", - "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/MelonDSDeltaCore/MelonDSDeltaCore.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/MelonDSDeltaCore/MelonDSDeltaCore-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; - }; - DB247626E6DC44CA6713D41F7E4EDDE5 /* Copy generated compatibility header */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/GBADeltaCore/GBADeltaCore.modulemap", - "${PODS_ROOT}/Headers/Public/GBADeltaCore/GBADeltaCore-umbrella.h", - ); - name = "Copy generated compatibility header"; - outputFileListPaths = ( - ); - outputPaths = ( - "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/GBADeltaCore-umbrella.h", - "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/GBADeltaCore/GBADeltaCore.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/GBADeltaCore/GBADeltaCore-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; - }; - E12A7568EFEB040E5F8D1C0DEA0F0A85 /* [CP-User] Copy Swift Header */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - name = "[CP-User] Copy Swift Header"; - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "target_dir=${BUILT_PRODUCTS_DIR}\n\nmkdir -p ${target_dir}\n\n# Copy any file that looks like a Swift generated header to the include path\ncp ${DERIVED_SOURCES_DIR}/*-Swift.h ${target_dir}\n"; - }; - E5CE8A7CB52BE640D044C7BCE6336231 /* Copy generated compatibility header */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/DeltaCore/DeltaCore.modulemap", - "${PODS_ROOT}/Headers/Public/DeltaCore/DeltaCore-umbrella.h", - ); - name = "Copy generated compatibility header"; - outputFileListPaths = ( - ); - outputPaths = ( - "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/DeltaCore-umbrella.h", - "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/DeltaCore/DeltaCore.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/DeltaCore/DeltaCore-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; - }; - FBDBDFFAD990AD9508B3EFA011AEFC86 /* Copy generated compatibility header */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/SQLite/SQLite.swift.modulemap", - "${PODS_ROOT}/Headers/Public/SQLite/SQLite.swift-umbrella.h", - ); - name = "Copy generated compatibility header"; - outputFileListPaths = ( - ); - outputPaths = ( - "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/SQLite.swift-umbrella.h", - "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SQLite/SQLite.swift.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/SQLite/SQLite.swift-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; - }; - FC98EB16E14CDA72C711F1CD6D3C682C /* Copy generated compatibility header */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h", - "${PODS_ROOT}/Headers/Public/ZIPFoundation/ZIPFoundation.modulemap", - "${PODS_ROOT}/Headers/Public/ZIPFoundation/ZIPFoundation-umbrella.h", - ); - name = "Copy generated compatibility header"; - outputFileListPaths = ( - ); - outputPaths = ( - "${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap", - "${BUILT_PRODUCTS_DIR}/ZIPFoundation-umbrella.h", - "${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "COMPATIBILITY_HEADER_PATH=\"${BUILT_PRODUCTS_DIR}/Swift Compatibility Header/${PRODUCT_MODULE_NAME}-Swift.h\"\nMODULE_MAP_PATH=\"${BUILT_PRODUCTS_DIR}/${PRODUCT_MODULE_NAME}.modulemap\"\n\nditto \"${DERIVED_SOURCES_DIR}/${PRODUCT_MODULE_NAME}-Swift.h\" \"${COMPATIBILITY_HEADER_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/ZIPFoundation/ZIPFoundation.modulemap\" \"${MODULE_MAP_PATH}\"\nditto \"${PODS_ROOT}/Headers/Public/ZIPFoundation/ZIPFoundation-umbrella.h\" \"${BUILT_PRODUCTS_DIR}\"\nprintf \"\\n\\nmodule ${PRODUCT_MODULE_NAME}.Swift {\\n header \\\"${COMPATIBILITY_HEADER_PATH}\\\"\\n requires objc\\n}\\n\" >> \"${MODULE_MAP_PATH}\"\n"; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 098A17A699787E0A84B0B205A926E98A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E4FFDEADFDEF22D4A9BB17F183A85137 /* Pods-Delta-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0F356666BA38C004ACD3218C473661FF /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - FF47124336E697A518CE2C93B8E88C2C /* GTMGatherInputStream.m in Sources */, - FA577995260851815A34580C95A493FE /* GTMMIMEDocument.m in Sources */, - A4CDAB56ED7EA775F1A4AF9BC6C5E712 /* GTMReadMonitorInputStream.m in Sources */, - D9D678A3261AB86A7637EB79F73B0D27 /* GTMSessionFetcher-dummy.m in Sources */, - A6173C5A991255ED8E9DF5B7A8B26CA7 /* GTMSessionFetcher.m in Sources */, - D3DEAD4C77A168D67D3EC458661D424E /* GTMSessionFetcherLogging.m in Sources */, - EE4994A811223017B6C5EE3AC8A4FDAF /* GTMSessionFetcherService.m in Sources */, - EE2019BF5CB64FFF4F1A0E423383637C /* GTMSessionUploadFetcher.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 14D1EC3D03BF1404CE997CB43CB63F1B /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 24B7C521DEBEFF6FEDE5A739AD245FF7 /* Account.swift in Sources */, - 8BBEB7CBD2DC6BDB53EC1C7F71F82A18 /* AnyCodable.swift in Sources */, - 96EB6181A20B51DFF979A731FDEE8E48 /* AnyKeyPath+StringValue.swift in Sources */, - B47C861F95112C613F72B9CAF4784FC4 /* BatchRecordOperation.swift in Sources */, - 236758569C4C8EA07F763EE8EB40C9C5 /* ConflictRecordOperation.swift in Sources */, - D6721B35D8B2CAAB96A5AB588F69A333 /* ConflictRecordsOperation.swift in Sources */, - D3914BDD63258B8237AD94F7377B9607 /* DeleteRecordOperation.swift in Sources */, - 32B45CCB0228F26D882FADFAACA6B5F2 /* DeleteRecordsOperation.swift in Sources */, - 774C4531614059D12553CA96F3C3803F /* Dictionary+Sequence.swift in Sources */, - D847D7DD39249AE3F8B937E71D2D8549 /* DownloadRecordOperation.swift in Sources */, - 50FEDFF1ECA9D67217CDAD7559CB2238 /* DownloadRecordsOperation.swift in Sources */, - 64CEE5DE93A64F4E59437CDD6E9AEC4F /* DriveService+Files.swift in Sources */, - B588B4C4C276D0350E74F83ED36DDC37 /* DriveService+Records.swift in Sources */, - 62F18B0609BD1B5FB65F41B8BA0522A1 /* DriveService+Versions.swift in Sources */, - BFB9E16A473FC19EC99F355011C34A45 /* DriveService.swift in Sources */, - 9086BE0B6C355410CE0B96054778A491 /* DropboxService+Files.swift in Sources */, - 049BC1B479F9F0BF40FC2598D8FF8C51 /* DropboxService+Records.swift in Sources */, - 6084A5F08E94885B9A72BF363F734560 /* DropboxService+Versions.swift in Sources */, - D164118F5D9342A86BA96D252D7C6870 /* DropboxService.swift in Sources */, - B00CBB6A581E7D28860CA36877B7FC17 /* Errors.swift in Sources */, - 8AC6F20C75D0D6031EDD553A3DA1BF04 /* FetchRemoteRecordsOperation.swift in Sources */, - B2EB8D4FFEC6DC5D343DFE0CB523C720 /* File.swift in Sources */, - E3FF5DACA1ACEFE447EA8EB66169219C /* FinishDownloadingRecordsOperation.swift in Sources */, - 6AF6908C5E85F1F2D7059ACAC9FE9FD1 /* FinishUploadingRecordsOperation.swift in Sources */, - A5C0AE4E9AED3A8854E26FC94B2645A0 /* Harmony-dummy.m in Sources */, - EBE61162E7C42E3C10C4F44C4C6CA4A2 /* HarmonyMetadataKey+Keys.swift in Sources */, - 164BAC914BBAA929ADDE2137EA9543B9 /* JSONDecoder+ManagedObjectContext.swift in Sources */, - BB91F0F9900A599B5FC87A4538B32EC5 /* KeyedContainers+ManagedValues.swift in Sources */, - 8072A010724983CD7E104EE24B7D0414 /* LocalRecord.swift in Sources */, - 89DBEF18B9EED15232C28ACA49912590 /* ManagedAccount.swift in Sources */, - 0A599F9C0D150C29B68E5AAD2F6E6376 /* ManagedRecord+Predicates.swift in Sources */, - FFB82AAAE70D1401F93C370E00A47AE0 /* ManagedRecord+Uploading.swift in Sources */, - 7834512950AF020BFE17B0D7D3D488EB /* ManagedRecord.swift in Sources */, - 8F9DE07FB0B100BA997E1B57AA2EE210 /* MergePolicy.swift in Sources */, - 8252CD5963E6264A2C53AE79EB3381FD /* NSError+LocalizedFailureDescription.swift in Sources */, - A007940F022B62E013F1F7B8E1B12D0A /* NSManagedObject+Conveniences.swift in Sources */, - 737E71E865A1787DBC95577C9D9E732D /* NSManagedObject+Harmony.swift in Sources */, - EF9EA527BA1D415C6EBCDDB70A504961 /* NSManagedObjectContext+Harmony.swift in Sources */, - 436B412B5F49A5A2C494C62D8BC5E966 /* NSPersistentStore+Configuration.swift in Sources */, - 2B58F319B8E9BF654A4EC197D5F1A4C4 /* Operation.swift in Sources */, - ECC25F7B2B3C29BC76DCAC098A583D27 /* PrepareUploadingRecordsOperation.swift in Sources */, - DFAE61CAD0C9E0D221B0B8A65C574C77 /* PropertyGroup+Harmony.swift in Sources */, - EDF25F3AD609519E7D04C76049DF6B88 /* Record.swift in Sources */, - B560E458E433DDCF624D34FE1E40087C /* RecordController.swift in Sources */, - 6CACD7273395DC0CA5018433BD81DCAA /* RecordEntry.swift in Sources */, - 00CEE4E02C6D213E9AFAA1BC64BB2CCC /* RecordOperation.swift in Sources */, - 1075C0BF05B5F1DFD3331537AEF56082 /* RecordRepresentation.swift in Sources */, - 5DF91E6EAAC076130B2EFA4657BD483F /* RemoteFile+Dropbox.swift in Sources */, - AF51B60F90BDABD26AE53E2294FFA0E1 /* RemoteFile+File.swift in Sources */, - C5028985B9FCE24D815EA3F82FF7FA33 /* RemoteFile.swift in Sources */, - 1E03EC6139CCC4410F54BD3D7D143F1B /* RemoteRecord+Dropbox.swift in Sources */, - ACEEC71563EFD5FC1366E48A03F44ECA /* RemoteRecord+File.swift in Sources */, - 101A15CF34E5E8ECC203BEC92668B14E /* RemoteRecord.swift in Sources */, - C11404A581B684B89073D59DACA5C59B /* Result+Drive.swift in Sources */, - 0C7F4768121EBCC0C8EBD0D94855ADC2 /* Result+Dropbox.swift in Sources */, - F0F423C8BE9E56382244511DB80F737A /* Result+Success.swift in Sources */, - E49F4908A8DF8637A3944DFC53BA890C /* Service.swift in Sources */, - 804406B9137B455C59CDD15878E8DB63 /* ServiceOperation.swift in Sources */, - 9D5990198CE8DEF226EA2DB004E55FCC /* Syncable.swift in Sources */, - 4216808C752A41DEBD20BD33047A6564 /* SyncCoordinator.swift in Sources */, - 59E8ABF034C6D4AC8237C5B47F455BE1 /* SyncProgress.swift in Sources */, - 169BD797475549B0DCB3334A81FF252B /* SyncRecordsOperation.swift in Sources */, - 2D0C1D6DC71F2E1D4229D57F3DC3F2D8 /* UpdateRecordMetadataOperation.swift in Sources */, - 7CEB79F98C23C3B429CC3545D30DD529 /* UploadRecordOperation.swift in Sources */, - BBB7B546DA75412C4E2623C173D916B2 /* UploadRecordsOperation.swift in Sources */, - D58CE6E7A372533BE5037B5CC5535EB7 /* UserDefaults+Harmony.swift in Sources */, - 0559206519929E651DBE5D57A53A07AD /* Version+Dropbox.swift in Sources */, - C0690B14B39CADE96E4EC96B8A40BF18 /* Version+Revision.swift in Sources */, - 60BC657F99AB8AB86516B7C8D67B0996 /* Version.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 380C1513BBD1E874A4D3EACBDDDF930A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 3A67BA2F032F636EDB59357A38E5F1BC /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 260CDD026A0A9B70FD079E5FEEB38002 /* Err.cpp in Sources */, - 462094FD752DE1546160C1285399BC0C /* GBA.swift in Sources */, - 6CE56EB9D620718E5EF18E81B890BF0B /* GBADeltaCore-dummy.m in Sources */, - F9A49726D655B01D55D26042FEEE77B1 /* GBAEmulatorBridge.mm in Sources */, - BF6B7E8A00D34D41A6D36E4D04C95EEB /* GBASoundDriver.mm in Sources */, - A3E1264F85AAC4F88A0CE8EBB7BBE371 /* GBATypes.m in Sources */, - 9B6BA2B10F8550ADEABCF10CC663A505 /* String.cpp in Sources */, - 4843CDED4F0BE8DBB368DFDC5BD36C34 /* Thread.cpp in Sources */, - 35BC9FAE9686F85098FBE1AB8EA0B3DF /* ThreadImpl.cpp in Sources */, - A65E162047EA24A6306DDB6EB4643634 /* Time.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 3B9C72AF6AFA7B869392E20DB7814877 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 59E468A63BB15309FDCC7FDC5D1E24F6 /* Archive+MemoryFile.swift in Sources */, - 7DF96A3D83398BDAB83CC0C4F1EE36DC /* Archive+Reading.swift in Sources */, - 9D463B1E18FE1AE9E9E16A9763730B04 /* Archive+Writing.swift in Sources */, - E4CEAB7B344A95C885A9034EE7971F1B /* Archive.swift in Sources */, - B6A2F3D339E12B281DC38B44891BD887 /* Data+Compression.swift in Sources */, - 1C578CEDA6D488D9D67852CEC8094F99 /* Data+Serialization.swift in Sources */, - E81BA26ADF353705A24738390212BDFA /* Entry.swift in Sources */, - D99120B29CE6BC66601832307292D52E /* FileManager+ZIP.swift in Sources */, - DFDF2179EB5E2AD32174B83E2493F38C /* ZIPFoundation-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 43AE254804DCF432983D09DCD6B97EAE /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 5CD0AD27A6F7DF599F0F629BA7FC76F3 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 5EE6B8A56A8A13C9228CFEE7FC036FA2 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 30E3FF5DE72D56612993D499EBED8C9B /* AggregateFunctions.swift in Sources */, - 12AEC0B4C35E8BDE4366D57CE6805481 /* Blob.swift in Sources */, - D8F09E6FFEAEFBFFA69546C6F36EF74F /* Coding.swift in Sources */, - 85290514199956D820FB90C92DBD0002 /* Collation.swift in Sources */, - 68F7071AB87ED8CB4B8CF11F7BF9A78E /* Connection.swift in Sources */, - 8043A7E0B334D03CF18AF57B63B8B407 /* CoreFunctions.swift in Sources */, - A902E94BC79F6FA99E9BB0300EA305B3 /* CustomFunctions.swift in Sources */, - 921C1F239586B4E7118399375F45BAB5 /* DateAndTimeFunctions.swift in Sources */, - BC4EB746D2E13352424A93FDC7A52F78 /* Errors.swift in Sources */, - 2D87E1AEC45003E3C2203D5A623DB6E1 /* Expression.swift in Sources */, - 566B02F81167FAAB363014E42ED15BFF /* Foundation.swift in Sources */, - B592BEA6F00B6CB2A68FF21EE18DCCE5 /* FTS4.swift in Sources */, - CBD00AD2D050E606B432EF764F0443EF /* FTS5.swift in Sources */, - E78529FBA5C035888371AE6EE12276A8 /* Helpers.swift in Sources */, - 3D38D3143F60F22FF8148BA31C508E73 /* Operators.swift in Sources */, - 94D28595353D013C0530A91A7AA81FCF /* Query.swift in Sources */, - CB7A5FD2D111FB945D4C60F8F9CEB90A /* RTree.swift in Sources */, - 26D84D2836C13B2D939D5A5E2B1BD47B /* Schema.swift in Sources */, - FDFC423A4243CFA179481946B523C999 /* Setter.swift in Sources */, - DB02626D12C516C4CD6A9EA98D20A50A /* SQLite.swift-dummy.m in Sources */, - 6EAC3C9446063F09611B9BE55D8D34C1 /* SQLiteObjc.m in Sources */, - C72087EDCF1BAE223A1BB8C94BA87329 /* Statement.swift in Sources */, - F167CCE2838CD4DF3161F75877A2858C /* Value.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 61C638716B75368A745C1D63BC30AD10 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 33B82FEB6CAADE21F17322AC467F77C7 /* Async.swift in Sources */, - 5F9F2E02D60939318256712CE9D524EA /* Auth.swift in Sources */, - 553DB738A9B78A4B09F667C0B2A71292 /* AuthRoutes.swift in Sources */, - 9D8470DABC12465B659B129C8DC17F63 /* Base.swift in Sources */, - 7DC3BDCA815B0FFE5B9FF2EFCED03A31 /* BaseTeam.swift in Sources */, - B50F332EA56118DF53A98ED3265BEFC9 /* Common.swift in Sources */, - D69B9B2BC9D465718923F09907710CEB /* Contacts.swift in Sources */, - C54B5FD5C70CD9D02039384737E31EE1 /* ContactsRoutes.swift in Sources */, - 477C64259B287EFB2038DA3885B1AB0D /* Custom.swift in Sources */, - ABAFD1E7905BC7A5D926CEED925B6CFA /* CustomRoutes.swift in Sources */, - 40C716E69BA8D81B57881563AF6B7BD5 /* CustomTasks.swift in Sources */, - 9BE185FCAA837451F4D0B4CE269DA095 /* DBChunkInputStream.m in Sources */, - 3B17C335707C9337295A65EEEBDD8C32 /* DropboxClient.swift in Sources */, - E78CCA0AE17AF52CD2E216D0465ABFBD /* DropboxClientsManager.swift in Sources */, - 16A68FB1B307D638E071FB294F22C231 /* DropboxTeamClient.swift in Sources */, - 6B40160636633FCA1C3DBF44CA85D224 /* DropboxTransportClient.swift in Sources */, - 3F6A9E89A4B512CAA85E37CBA9D51795 /* FileProperties.swift in Sources */, - 63BD21E214F2792D4D41CBF0A843443F /* FilePropertiesRoutes.swift in Sources */, - 384CAB43016F83797CE5DEB9A7583054 /* FileRequests.swift in Sources */, - 45DE2736788412D19B39D2765891543C /* FileRequestsRoutes.swift in Sources */, - CC850BD3611696329B9F261528496A20 /* Files.swift in Sources */, - 0D17D9EBD944E772A2C90951CE28D7B4 /* FilesRoutes.swift in Sources */, - E9E94C9A31059B3108819AF776C70F64 /* OAuth.swift in Sources */, - 9FB04C9EE09E52060ED0F8FE2F358A05 /* OAuthMobile.swift in Sources */, - 03F1E87FFD717C20F6BEB1C94B610C55 /* Paper.swift in Sources */, - 7D6722F603BB1F8505DC05D19CBDC6DC /* PaperRoutes.swift in Sources */, - 2E3CFA6F2DA0A1958B850E1033E7509D /* SDKConstants.swift in Sources */, - 91D462D0ED457627F56AD2DE54FBA89D /* SeenState.swift in Sources */, - 8B52C54D1C29B576025D4482DBEA37BD /* Sharing.swift in Sources */, - 3740A255E76A8BF8C335371B87CE13CF /* SharingRoutes.swift in Sources */, - F28B76B40A7A4F0AE4C5AB75EDBCE1FB /* StoneBase.swift in Sources */, - 2CBCD36E150F68D7FC054015B4D5E86C /* StoneSerializers.swift in Sources */, - FB785AE5B7ED40603C7F3DCA853BE779 /* StoneValidators.swift in Sources */, - 26E321C349C1EDA1245BE582283491D5 /* SwiftyDropbox-dummy.m in Sources */, - 5455831F69A7A028F41357210913C16A /* Team.swift in Sources */, - 56121BF5864707DA661AE1EB82FF5BE3 /* TeamCommon.swift in Sources */, - CC5A0AC6A5A3ABA437F184DC6AD59AE5 /* TeamLog.swift in Sources */, - 13A63F87C4E54BDA1EBE594BB4C46942 /* TeamLogRoutes.swift in Sources */, - 1E9E143853CC198C077EB1CC3BB95BE3 /* TeamPolicies.swift in Sources */, - C434929D498191D7370AD9B519F2C7FF /* TeamRoutes.swift in Sources */, - 52E2A37BCF6FD1750888370A49B968FB /* TransportConfig.swift in Sources */, - 620331F7C6C9988CDFE03ED824696E82 /* Users.swift in Sources */, - 2A5C42EA4A820CC59D56D3AF3F571422 /* UsersCommon.swift in Sources */, - CF4C9AE3C8CB228319083E49EB681F04 /* UsersRoutes.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 63D215C5E00EA498F3421629418244B9 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 7A6539E9F2077A8247E34CDD84B59F59 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 811F13FE55E873CE6C1956757840D7C7 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 9C8A0C2204C091124D6C64F86A690F9F /* SMCalloutView-dummy.m in Sources */, - AECB1619CFCEF7A7234852F00CB0C5C0 /* SMCalloutView.m in Sources */, - EBC516586457D8BA8B838FF0A74F6192 /* SMClassicCalloutView.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 8795219B8EB0B008C3767E66BDA1ADFF /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - CC78DAA6DAC348D70DD450FF0690A542 /* SNES.swift in Sources */, - 38FC10CE5E21386929D89F7E8CD03056 /* SNESDeltaCore-dummy.m in Sources */, - E605EF3F351A764D00D1EC064BB04D7F /* SNESEmulatorBridge.mm in Sources */, - 7A875F8A99DCA50B4972D6DD681250A8 /* SNESTypes.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 919E161711A246AA6FA4170664BD3E80 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E7E407147A750A387D4364A427E1B57F /* AnyInput.swift in Sources */, - 12DB8843F8BA5958D3581B2AB5B5CCF0 /* AudioManager.swift in Sources */, - 83A2FC4315F0BB44536D9A141414F008 /* AudioRendering.swift in Sources */, - D625F1A3297A5C1941B093927F86D583 /* BitmapProcessor.swift in Sources */, - 1208A8D5F730C34E30C232AE86C100C3 /* Bundle+Resources.swift in Sources */, - E129B92AF19973A819CA402EED7F68AB /* ButtonsInputView.swift in Sources */, - 2E786F7516894BB5A3F160C69C775F37 /* CGGeometry+Dictionary.swift in Sources */, - 0EC7038684BB7212DCE8D45DB1D6AFF0 /* CharacterSet+Hexadecimals.swift in Sources */, - 2DE69B570EAA4CD3EF7BDE50417EBF18 /* Cheat.swift in Sources */, - 0EFBF425A16E64D3A9A84347BD72DFB1 /* CheatFormat.swift in Sources */, - 809B26B30FAF7F81DD7EAAF6F42B1D01 /* CheatProtocol.swift in Sources */, - 798BA471794119D9D54180758B08F24A /* ControllerDebugView.swift in Sources */, - A8F6AAE56D6DCA37A05C12496324C114 /* ControllerInputView.swift in Sources */, - 39F38972460CD199439B125BDF9E085E /* ControllerSkin.swift in Sources */, - 612650EECCA996F5878E62E3FE581A0D /* ControllerSkinProtocol.swift in Sources */, - 2C1F825F0BD978C4467D43DABFBD91EA /* ControllerSkinTraits.swift in Sources */, - 73135357FA71D3307EC5413332190DB0 /* ControllerView.swift in Sources */, - 6779CED26E46AA20EE3C6A22433B35C3 /* Delta.swift in Sources */, - 224F1BD0B5F06DC2DE277E29ABE95FE2 /* DeltaCore-dummy.m in Sources */, - 62E5BE2DC20A1C2D026BCF73A7AD83B2 /* DeltaCoreProtocol.swift in Sources */, - 370E393479F996C1044E4D79CA03EB29 /* DeltaTypes.m in Sources */, - 75272B796DF78D55BA5ED1858E47537C /* DLTAMuteSwitchMonitor.m in Sources */, - F90A7A52486B016979C45D5750AC4D6B /* EmulatorBridging.swift in Sources */, - A88D1A07695BF9A29D620D4A6C8C26CD /* EmulatorCore.swift in Sources */, - 4C30EA59CFCBD9768F377100C136EFE1 /* ExtensibleEnums.swift in Sources */, - 75CA4ACEC284A235B9F88F769A5A822B /* ExternalGameControllerManager.swift in Sources */, - 9992CBFECF410C4D4CB051B68CB1A05B /* FilterChain.swift in Sources */, - 94E6D6762D8A29BD4C85F386CC8A68CE /* Game.swift in Sources */, - FD92B79A0A7F6039BD2098FF85CD996B /* GameController.swift in Sources */, - A52DC13796955798C20BFEFA2007DC4A /* GameControllerInputMapping.swift in Sources */, - 2AFB08ED8A01956E6A3BC1D3D8291214 /* GameControllerInputMappingProtocol.swift in Sources */, - 467EEF732E0C4EE5C77C43E88A4082B0 /* GameControllerStateManager.swift in Sources */, - 3D0B06B53A5627799E796B10195CE20E /* GameProtocol.swift in Sources */, - 0097F9A8EE386B4446A0DF58B665B621 /* GameView.swift in Sources */, - 746FEFCB95E600E4D0B419B4EFC476BD /* GameViewController.swift in Sources */, - 6E91CCEFA778318F8568A9B830B0F8B0 /* ImmediatePanGestureRecognizer.swift in Sources */, - A94BB6CD398BCFEB40892D92B97CBFD1 /* Input.swift in Sources */, - 2BA85D25C4419783AD031FBF59CA8CB6 /* KeyboardGameController.swift in Sources */, - 854703FABD25941F13B94521A30F1AA4 /* KeyboardResponder.swift in Sources */, - C53A2E7808CDE17647AA04389DE107D6 /* MFiGameController.swift in Sources */, - F616714DC3AEEB9AA629DE2EB90029DE /* OpenGLESProcessor.swift in Sources */, - 3F7BB694F840DDA2B7D84DA61B487233 /* RingBuffer.swift in Sources */, - AEB1E8FCF72D57CFDF567E3F17B41E4B /* SaveState.swift in Sources */, - 82358E5D6BD3619459349C68D2DA45DD /* SaveStateProtocol.swift in Sources */, - 01E485015AED35853FC7FC8512BEEA49 /* StandardGameControllerInput.swift in Sources */, - 9D236AD275351F9A5B8DA180F5062B0E /* Thread+RealTime.swift in Sources */, - 2C554E96F31DD93E8F12E8AF170CD236 /* ThumbstickInputView.swift in Sources */, - DDFB9DACF11F9E7E2C6399E40C33A26D /* TouchControllerSkin.swift in Sources */, - 96F4561693770FAD676DD49B01C20269 /* TouchInputView.swift in Sources */, - 2C17BFCD74603057D80951EE11116F33 /* UIApplication+AppExtension.swift in Sources */, - 22A78366CBB436B85244FD941553521C /* UIDevice+Vibration.swift in Sources */, - AC9942ECD09D7F3BD665160223B9EEEE /* UIImage+PDF.swift in Sources */, - 5733E9A422DA077AC8CF78367751D3F2 /* UIResponder+FirstResponder.swift in Sources */, - 43CA7713A7E71EB9979B2EAC56C39AA9 /* UIScreen+ControllerSkin.swift in Sources */, - 7D70A6B16D8508273D87C920D5FE6CC6 /* VideoFormat.swift in Sources */, - 565120E3D97F5385407F6F5D2BC4F347 /* VideoManager.swift in Sources */, - 333B6E61E9ECF93C817A20091296B470 /* VideoRendering.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9C81AB1E6123246CA5BA1376689CA6D6 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 40FCC3EB6F141FB2116C1076A5857471 /* DS.swift in Sources */, - CC376EAD4BBE7915A66DC7558B29568D /* DSDeltaCore-dummy.m in Sources */, - 4A3E77771AD6643B8A13567B0005842B /* DSEmulatorBridge.mm in Sources */, - 0F972BB084DCDD4DB1A4895017D655AC /* DSTypes.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - ADA8A824FC0DF194C0EEA41A4A09871D /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8D7002BA4BF48E276D34405B85D636DC /* AFError.swift in Sources */, - 1AAB4E66BB2F67D75ED31A969FB90445 /* Alamofire-dummy.m in Sources */, - D8524A5C842C0580F42718FE94C8F791 /* Alamofire.swift in Sources */, - 8310901E730FB822677EDAAF25893BE6 /* DispatchQueue+Alamofire.swift in Sources */, - C2EB4CB575EA9821E30A317574865D17 /* MultipartFormData.swift in Sources */, - 6853624E43A5EB0CA069A0F55C3C315C /* NetworkReachabilityManager.swift in Sources */, - 00808122820CCB7D640A23AF2F851D96 /* Notifications.swift in Sources */, - F9F08CA61836853CAE7455D76939D98B /* ParameterEncoding.swift in Sources */, - FF31B5BBE13193F204040DE66FF15F02 /* Request.swift in Sources */, - 2CFB7E4AB44C35953034CE00C927B1F8 /* Response.swift in Sources */, - 494BF218C4F917D55808751F21518F3F /* ResponseSerialization.swift in Sources */, - 6A386F883B6F86FCA792C8C1134057CA /* Result.swift in Sources */, - 51882AB1BF2D64307CB26E25DB7A43C2 /* ServerTrustPolicy.swift in Sources */, - AF02EA0DAD3FAC51CB5E859F81786EC6 /* SessionDelegate.swift in Sources */, - B560A089A1D47EC1F0B26533258C7317 /* SessionManager.swift in Sources */, - B422DCB989FF675D287C579D280F8253 /* TaskDelegate.swift in Sources */, - 626863FBB1F3C943ACB548FFB7A85E8C /* Timeline.swift in Sources */, - 3E82C4D5935E02D385D773C59D424ADD /* Validation.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B0067C232855C15B614EB7814A26A429 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 10F55312D62AB36FDEDF9328BB28ACE4 /* NES.swift in Sources */, - EE66717D0237C6F0F56C7CDFD14A35E6 /* NESDeltaCore-dummy.m in Sources */, - A25D6BAE3194DC9C441913CCF678E607 /* NESEmulatorBridge.cpp in Sources */, - C4E4E904C4786F5D803F6B37180BF92C /* NESEmulatorBridge.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B4E4800D91BCB83656038FED949DE473 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - BEB1EE0820D4CC88754367FD7B075D1A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 1541CD75ED87DD98D3FB227978648F92 /* NSData+ImageContentType.m in Sources */, - 122A53C6A8CE37059A0CF1D111472CDD /* SDImageCache.m in Sources */, - 6EA0A6FE9CCD2699B6BEF34376E9649F /* SDWebImage-dummy.m in Sources */, - 88D0FB6855DF889BF0C5BE417F016C3E /* SDWebImageCompat.m in Sources */, - FA9B5DF268C458C80AA79A7FBD2A08BD /* SDWebImageDecoder.m in Sources */, - 920D6388A019BAE183B76F28E00899AB /* SDWebImageDownloader.m in Sources */, - E0B3B5EFD0E958737E6D09B5135C5ED9 /* SDWebImageDownloaderOperation.m in Sources */, - 6322A14CBDF57EF29695F820A403EDE2 /* SDWebImageManager.m in Sources */, - CDD28AC1BB0F07E4991F10641F3B3ACD /* SDWebImagePrefetcher.m in Sources */, - 4948EB328DD7614DF746912086A18D65 /* UIButton+WebCache.m in Sources */, - EAFAB542A9C64CFCE6CE22241E05F94A /* UIImage+GIF.m in Sources */, - 6EE9ACB0AB0E0CB81A490F499EBEFF29 /* UIImage+MultiFormat.m in Sources */, - F54EE04CAD7C3199596833B62C4C5955 /* UIImageView+HighlightedWebCache.m in Sources */, - FFB60CE26BC4B7CC1FB0A8E9DA386F70 /* UIImageView+WebCache.m in Sources */, - 29962679E9012751AD784D26C64074A6 /* UIView+WebCacheOperation.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C0322F5A2A5BE853A4427854080EF5B4 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 032EB974A1B5C52F0173C27AC2A86932 /* GoogleToolboxForMac-dummy.m in Sources */, - 842DB44B1E2B96AC001A2FB189EBF332 /* GTMNSDictionary+URLArguments.m in Sources */, - D5AE0F5C1BF8680F26BA9589D84722E8 /* GTMNSString+URLArguments.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C5BFF7002DF61F3D48AEF8FE35B5097E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C77AE1D5F1BD644E2B4EE7F7CB29152A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E1F6B3858AB2D7C1B3C26F3C59873B5E /* aes.c in Sources */, - 0609EA41DCEC5A061ACF2EDF79C5C7CD /* ARCodeFile.cpp in Sources */, - 504B710D1CD9CCB734546C45C0411454 /* AREngine.cpp in Sources */, - 9B3A8D9F32E51A01EB64949DE7F96E40 /* ARM.cpp in Sources */, - FEC1B6BB3DDC87FAD2E1E9C6BF3ED70C /* Arm64Emitter.cpp in Sources */, - BD5EE8972A4621BCC39CC315EA4AC859 /* ARM_InstrInfo.cpp in Sources */, - 2C91154E7F42644A534F65A447C32280 /* ARMInterpreter.cpp in Sources */, - AD48DE59F39C10DEDC26F657C255CAB7 /* ARMInterpreter_ALU.cpp in Sources */, - 87EA3E5481140782F5A43805D4ACBBDC /* ARMInterpreter_Branch.cpp in Sources */, - E5DF3F1BEC3DE99EA7903BCDECB466C8 /* ARMInterpreter_LoadStore.cpp in Sources */, - 5383B3D07739D95DE423251CB307E221 /* ARMJIT.cpp in Sources */, - 98D13B35CF030A89A93906D7B4E9DDB1 /* ARMJIT_ALU.cpp in Sources */, - 0EB2F649B561C2B846CD6374F5351AF8 /* ARMJIT_Branch.cpp in Sources */, - A961C257A4DEE7A1EFBD982ED018F2F5 /* ARMJIT_Compiler.cpp in Sources */, - 6A95D6525601CB5615332A93CDA85E6C /* ARMJIT_Linkage.s in Sources */, - 9E0565A3155BC2A1BB1CF90E7EFFAED8 /* ARMJIT_LoadStore.cpp in Sources */, - AE400DBA536300A4152D031CE31DB09C /* ARMJIT_Memory.cpp in Sources */, - 55466F9A056775E1460BAAF39B297127 /* Config.cpp in Sources */, - 53D8D1CF6882A51F6D8047FC1E039924 /* CP15.cpp in Sources */, - B4AE02BED30D27986CA69644B97C477C /* CRC32.cpp in Sources */, - 3902D16F92C794D06EB83F8B5068A520 /* DMA.cpp in Sources */, - 07FF36873953529F0EC30AC8989372A2 /* DSi.cpp in Sources */, - 79A3E3514A701A36340BFFB2576391CE /* DSi_AES.cpp in Sources */, - 4F97C62307BBBABA0542E8A2D9C82EA9 /* DSi_Camera.cpp in Sources */, - 3643AF9772C52697A5E027B1DD70D895 /* DSi_I2C.cpp in Sources */, - 2CF1F853C0BFBDAFFD5F6AA6EDDC45A3 /* DSi_NDMA.cpp in Sources */, - 59034D766A2AAD80CF703AAFBA1C1149 /* DSi_NWifi.cpp in Sources */, - 0D27C8611CDC04CA85AF28DE9D138E3F /* DSi_SD.cpp in Sources */, - D0D7897C98D5C53E81A3E6B9AAB9C9B4 /* DSi_SPI_TSC.cpp in Sources */, - 98DF0BBA7A414D87E188D57A245953B1 /* DSiCrypto.cpp in Sources */, - 263F853FEBC0066F66873B0813332A5C /* GBACart.cpp in Sources */, - 4D4A3CEE436ABFEC318A5920B2B436A3 /* GPU.cpp in Sources */, - 7ADC9692AD74A1526DAFC5C6C2D0121E /* GPU2D.cpp in Sources */, - 12E7E29296BC9DBADF17D4F7689D28AB /* GPU3D.cpp in Sources */, - 67284413E779CC6BEAB643D86FD08025 /* GPU3D_Soft.cpp in Sources */, - B11551B5758E80B42AEA1D197777B68B /* MelonDS.swift in Sources */, - 78D47356C4569C5475AE2F2AA41FE25B /* MelonDSDeltaCore-dummy.m in Sources */, - DF0256A9B795889143D51F5AB7BF2525 /* MelonDSEmulatorBridge.mm in Sources */, - 630EE3EF292636086AC7E4D8F8CD7CAA /* MelonDSTypes.m in Sources */, - 93A84FA786DAF5ACA8CD46D1C87780F1 /* NDS.cpp in Sources */, - FE9847186E9957CFEEA9161522CF3E82 /* NDSCart.cpp in Sources */, - 2F5127CD10D8E2535992773837F4F835 /* PlatformConfig.cpp in Sources */, - E338D6B4C0EEA1E05E164C7B18965099 /* RTC.cpp in Sources */, - 6DE2F50B8C45F7F0EF049B2AB98B99CA /* Savestate.cpp in Sources */, - 973A780B154776358D85329F4F2D4513 /* SPI.cpp in Sources */, - 40730E4E8C81D3D4C1946CFCC4726447 /* SPU.cpp in Sources */, - E0667306596C0D0A7BBC61CEA6EBB1E4 /* Wifi.cpp in Sources */, - BED897B3C9422B4442A5B57E0EFF9828 /* WifiAP.cpp in Sources */, - 418778CBD5952613489F528DB5A0B58F /* xxhash.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - CF3CED1DC6C19FEC19AF9261FEC8F469 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - D7E52FECBBCEDB05BC7E477195516D12 /* NSBundle+Extensions.m in Sources */, - 79E327F0144AE7EFB5A21F61F72DAD91 /* NSConstraintConflict+Conveniences.m in Sources */, - 47ECE3896FA717B2E9A73E7640A63077 /* NSFileManager+URLs.m in Sources */, - 7C1C37158A9FB1AC4A3056E1BCFD15C2 /* NSLayoutConstraint+Edges.m in Sources */, - 7C38999ED57B52E939C2956FD9EB4047 /* NSPredicate+Search.m in Sources */, - 3E24520D2052BE16F3E3A3C5CB8DD5F0 /* NSString+Localization.m in Sources */, - 002E08C1773659AF7A99924FCA06C3E0 /* NSUserDefaults+DynamicProperties.m in Sources */, - 89950BA96461CB15146E9C194E414F2A /* Roxas-dummy.m in Sources */, - FDCC4E3C36DDD44A79B4A2F702DABA63 /* RSTArrayDataSource.m in Sources */, - E1553B50ED1925836D7C7389FFCB4669 /* RSTBlockOperation.m in Sources */, - 11386E1065D5A9869B85C998782FB4C3 /* RSTCellContentChange.m in Sources */, - 4968F0A9C7DE546779842BB59F7DA6CF /* RSTCellContentChangeOperation.m in Sources */, - EBC39AB44C5997F4A087628790429A5D /* RSTCellContentDataSource.m in Sources */, - A7AC0EFF7457881D064EC762C2455927 /* RSTCollectionViewCell.m in Sources */, - 54BE6B863730DFB92F838B8597D48A46 /* RSTCollectionViewGridLayout.m in Sources */, - 69B35CFC60086668EC6538FFA1C78585 /* RSTCompositeDataSource.m in Sources */, - 5264F1EBFAC9ED3A6B934E170C9D28FA /* RSTDynamicDataSource.m in Sources */, - EFB8E8D285A246E5AA276990E54C0F63 /* RSTError.m in Sources */, - 632696705E31455785CB9E8AAAFC789F /* RSTFetchedResultsDataSource.m in Sources */, - 1851DD0E0E320FE72121810548058B3F /* RSTHasher.m in Sources */, - 7711ED08C6604586372424376427DDF9 /* RSTHelperFile.m in Sources */, - 8925BFF1C8F3A79575D41DDD0E8712E3 /* RSTLaunchViewController.m in Sources */, - 4453D161230F5B4D5D8AC81E502CC799 /* RSTLoadOperation.m in Sources */, - 950C19517A5D50B23F10106D99CE0213 /* RSTNavigationController.m in Sources */, - FCFCD5DB1752BDB920D9C45E6A1223E5 /* RSTNibView.m in Sources */, - EDE83DD95BE63E0A3729D4F652CA879C /* RSTOperation.m in Sources */, - 7BD1724634AE1EC1531330430E1D8BAD /* RSTOperationQueue.m in Sources */, - AE78386F0A31EFD0246D2D68C6E69844 /* RSTPersistentContainer.m in Sources */, - A9AF082F678A28DB8B079C8028E45B2C /* RSTPlaceholderView.m in Sources */, - 3B5E90D41DA051B6B170AD0A9F86A766 /* RSTRelationshipPreservingMergePolicy.m in Sources */, - DF3750DEF65ADC9628BD0C90A040D1C2 /* RSTSearchController.m in Sources */, - 941554E2FF12E69764224CC64A89FF55 /* RSTSeparatorView.m in Sources */, - 59F484BC8CF90B57FB39C605F6C64DB1 /* RSTTintedImageView.m in Sources */, - 41BE84F53570143EA00A6B4E5EFDEAF9 /* RSTToastView.m in Sources */, - F9C6E691F1176969C8C20F364F23FA01 /* UIAlertAction+Actions.m in Sources */, - 0161528947F76B4CA2C920D7363A1B5E /* UICollectionView+CellContent.m in Sources */, - FEA6A62C5BF6125D01406B1233AB4992 /* UICollectionViewCell+CellContent.m in Sources */, - EFD97E8D33F626D110D211E49CA2245D /* UICollectionViewCell+Nibs.m in Sources */, - 5E261C0C7D02F06AC4C0940F93BC3664 /* UIImage+Manipulation.m in Sources */, - 09618A0F2D94696A379F26463625FD20 /* UIKit+ActivityIndicating.m in Sources */, - 25BAADDF3143DF57B3BEB5C7A228F21E /* UISpringTimingParameters+Conveniences.m in Sources */, - D3A6730308B61D244EF13900891F5B11 /* UITableView+CellContent.m in Sources */, - 6B431A833B3D0A23DF4FDC02EF7E8667 /* UITableViewCell+CellContent.m in Sources */, - D63903D16466C0327FD1CD347254C358 /* UIView+AnimatedHide.m in Sources */, - E4555D55D548718B2EDACC2BACBBFF37 /* UIViewController+TransitionState.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D6BCB5F8F017F4FD74B9FDD5A731BFD4 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8D031A69725CEAA587590EC4B7AFC554 /* GBC.swift in Sources */, - 56ADF70673BE541664C3CA807DD9CCC0 /* GBCCheat.m in Sources */, - 6D67EDD45BA8B8A3D293F9CB52FE09E9 /* GBCDeltaCore-dummy.m in Sources */, - 9D79BE9571D413FC88C72CF55B0F9012 /* GBCEmulatorBridge.mm in Sources */, - 8AD78F774171AE6FCC19467D75E22BF2 /* GBCInputGetter.cpp in Sources */, - 059827DE66365F8E2B036035FFBEEDDE /* GBCTypes.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - DC640386CA9F9B5265EC9171728164C1 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E9D256C3291A89F8C62D47D41281134A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 07B72F73238E13380783702567009406 /* 3DMath.cpp in Sources */, - E19C7F20C5BE33F4A485144870B06838 /* alist.c in Sources */, - D42B2D028C7D5565B45038FA6C1900BC /* alist_audio.c in Sources */, - 9464ED60406EDF6313E7A846921946FE /* alist_naudio.c in Sources */, - 1CD016445F82859700FAF07167B30D75 /* alist_nead.c in Sources */, - DE910F1750CC2290F22CB50ED5614D4C /* audio.c in Sources */, - DAE5CEB2B97867FCF3053DBD9F9D95B0 /* biopak.c in Sources */, - AEABFD71EFDEE3030A083079CB103A4F /* cicx105.c in Sources */, - ECF66A4CD81440DC80068CDF2DDD9578 /* ClipPolygon.cpp in Sources */, - 5217E45B241AEB928B1E0409DC4A6CD6 /* ColorBufferReader.cpp in Sources */, - 701F5BCE8C969A8517FDCE019A9EE169 /* ColorBufferToRDRAM.cpp in Sources */, - 6C94E2E0509043953C5C79AD67E59A6F /* Combiner.cpp in Sources */, - 9903014C5A3AAAFF56B946DCCFB190E0 /* CombinerKey.cpp in Sources */, - 076D0E4C781D0DCE65683DC57050A0D3 /* CombinerProgram.cpp in Sources */, - 256EE4F125790FD390FD3F4795B945CE /* CommonAPIImpl_common.cpp in Sources */, - 660AE52794B14DFF3884CD97247F7653 /* Config.cpp in Sources */, - 77FC70F136D9D8C0046CE8A6BC061307 /* Context.cpp in Sources */, - 9B627BC6378528F7AC56DD12018E6F00 /* convert.cpp in Sources */, - F835DD857092F2B498328BA1595A4B8A /* CRC_OPT.cpp in Sources */, - E692A10F78E608C1948EAE37034DCC8D /* dd_controller.c in Sources */, - 303F6BA182244FF198A952C65672B918 /* DebugDump.cpp in Sources */, - 678BC05A7E2E95B4023A88F8012CF686 /* Debugger.cpp in Sources */, - C7590A3F8F720983338D1EEBAFE19D85 /* DepthBuffer.cpp in Sources */, - B41438D51C14F27B5C8295FB75EF39BB /* DepthBufferRender.cpp in Sources */, - B00FDFED7CB707A022473CE88A1FFF76 /* DepthBufferToRDRAM.cpp in Sources */, - A68358836B1F32B472477A3FF004E58D /* DisplayLoadProgress.cpp in Sources */, - 934CA45537BB8908D8A293EDBB0420C9 /* DisplayWindow.cpp in Sources */, - EAB8A8B28C9827977703344AEB506F3A /* dummy_video_capture.c in Sources */, - 03146DC9C125A54D6AB7C96172AAFE96 /* F3D.cpp in Sources */, - 21C9A64B737F5EB5EA72FB846F18D9FD /* F3DAM.cpp in Sources */, - BCBC68A38842DD0CC09012BF828D764D /* F3DBETA.cpp in Sources */, - FAC99EF7E2857BE5C34C04BAF38F98C4 /* F3DDKR.cpp in Sources */, - 20E554631FAA80A055D206AF4CD5AFAC /* F3DEX.cpp in Sources */, - BC6F7705E69B5ADB6047CA5FC50A8F36 /* F3DEX2.cpp in Sources */, - 3702FB2A7D108F1C298275E49589B637 /* F3DEX2ACCLAIM.cpp in Sources */, - 8371B7BA33DBD0F4441605F731E635AA /* F3DEX2CBFD.cpp in Sources */, - 8DE442C63575CC1BB47E37716680D206 /* F3DFLX2.cpp in Sources */, - FCA3665609EF3D3B95375DA2641056BC /* F3DGOLDEN.cpp in Sources */, - 42E6ED4F76B8A021D89275CFB5A3D26B /* F3DPD.cpp in Sources */, - B0083CBB6EE8F32AAF041C4D8B1FB88B /* F3DSETA.cpp in Sources */, - 960B24DA9B125F8FAAC2B543D44E6F38 /* F3DTEXA.cpp in Sources */, - 4D56850AE6857416D3DDB94CFFAA1DB7 /* F3DZEX2.cpp in Sources */, - 6C5F01DCA333DDBB4B6B6AD39ECEF697 /* F5Indi_Naboo.cpp in Sources */, - AC6AA8B613D868D4880BFBA22EC89C10 /* F5Rogue.cpp in Sources */, - B07BD3D4703D69593319ADA97B3524E9 /* FrameBuffer.cpp in Sources */, - C0930BAA53EBC4F90F3DECE2AB870F86 /* FrameBufferInfo.cpp in Sources */, - 17BD8AF8A6C48BE056BBC3EDFA922862 /* GBI.cpp in Sources */, - 9F69EA3D9A3E5311DF5C03E8C2DA2101 /* gDP.cpp in Sources */, - 7550611B5902CF5767641DED8EC64912 /* GLFunctions.cpp in Sources */, - 896A074FC915F0FBE87E9DE25A8F8A56 /* GLideN64.cpp in Sources */, - 202F41F5ABBEA502DC45CAA113EC60BA /* glsl_CombinerInputs.cpp in Sources */, - C6C7CDA22F0070F27A47D590F055472F /* glsl_CombinerProgramBuilder.cpp in Sources */, - D496FA6DB0F82819EBA9321590F1D1CD /* glsl_CombinerProgramImpl.cpp in Sources */, - 78B915CAAE730E6D1A2BAEE42A08C778 /* glsl_CombinerProgramUniformFactory.cpp in Sources */, - 1286D341CF94010B4C132ED80FB9FFFD /* glsl_FXAA.cpp in Sources */, - DCA0F414531F1668E8EA075263811FCF /* glsl_ShaderStorage.cpp in Sources */, - 26851206B96DDD8C9EA254B65B4608FC /* glsl_SpecialShadersFactory.cpp in Sources */, - 1D693CA5460C4407B1B6C6C9D936F6B4 /* glsl_Utils.cpp in Sources */, - F1B72578C4AE818C6B8DBD8DB65905D9 /* GraphicsDrawer.cpp in Sources */, - 2D8961BB7D7C3A9BE77821F8B38B9AB2 /* gSP.cpp in Sources */, - 09CDF05BD019F9FA2A87BD55DFB8204B /* hle.c in Sources */, - 4C8B73E5D9E48C8C2A6B7EBFDD6124E8 /* jpeg.c in Sources */, - E0AEC91ADC1C334CA0FE2DE6E8428311 /* Keys.cpp in Sources */, - 4B5E5859913C0D43A12CBBF5CCC40961 /* L3D.cpp in Sources */, - BC97C74B9428DECEFA8EF9828D953839 /* L3DEX.cpp in Sources */, - 42E5C880BAA5FC52ECF6CAFF22AC3223 /* L3DEX2.cpp in Sources */, - 2221EFF52D3896B9A85672B1149182B6 /* Log_ios.mm in Sources */, - 06C952556FA9F911482EC585FD6A41D8 /* memory.c in Sources */, - DEF2CAD86284F891BC33F89921CA304D /* MemoryStatus_mupenplus.cpp in Sources */, - BCBB9FD24D687314062C2EDA97842269 /* mp3.c in Sources */, - 89A8040C509B73569560CC871AFB0DA3 /* mupen64plus_DisplayWindow.cpp in Sources */, - 42C16D31E52CB8B80813BAED0B93DF0C /* musyx.c in Sources */, - 6E61805531A78944CC2873D02353BBF5 /* N64.cpp in Sources */, - B681EDCAAD1B7F9C2AB1CA93C9CDDF76 /* N64.swift in Sources */, - F63795ED07BD207BED504D982E10877B /* N64DeltaCore-dummy.m in Sources */, - 2856F55FECBB9FE5B808714FDEDE35D0 /* N64EmulatorBridge.m in Sources */, - 4DA5C054DB84ABC4C0F7C582A1615228 /* N64Types.m in Sources */, - 8231FAFF8A6AB534D944CD6B41093BC6 /* NoiseTexture.cpp in Sources */, - 949EA6C30010EF914C35ACDCB4A6A562 /* ObjectHandle.cpp in Sources */, - 458A0EF9B34400A0F717602273B89092 /* opengl_Attributes.cpp in Sources */, - A834C5412EE4F8573AC5107DA4DC7A0F /* opengl_BufferedDrawer.cpp in Sources */, - 3093DC6674E12A40F556638EE504824F /* opengl_BufferManipulationObjectFactory.cpp in Sources */, - E90FA12994B71E9190813154B77EC186 /* opengl_CachedFunctions.cpp in Sources */, - E555EE1D5A0E905E621B04DF132DE3D2 /* opengl_ColorBufferReaderWithBufferStorage.cpp in Sources */, - 0790C5F2A94753F3FCD5869C76335956 /* opengl_ColorBufferReaderWithPixelBuffer.cpp in Sources */, - 27C550701221240B94408E909DC1EB7E /* opengl_ColorBufferReaderWithReadPixels.cpp in Sources */, - 12580C444BE3C5C61607EE3DCD49002A /* opengl_ContextImpl.cpp in Sources */, - 5F95C438C09768C3FB3F7A195720AFF3 /* opengl_GLInfo.cpp in Sources */, - B7700BAC19F020CB40453186DF9849FD /* opengl_Parameters.cpp in Sources */, - B7F2829D5E615C9FE9BA9DDEEB6E5792 /* opengl_TextureManipulationObjectFactory.cpp in Sources */, - FBB17E28402C32BF6AACB01266617970 /* opengl_UnbufferedDrawer.cpp in Sources */, - 063726E021E3FF7384D6CB87D1B541C7 /* opengl_Utils.cpp in Sources */, - C3C28A3C9DDC736F29C3A0E57B59EA8C /* osal_files_ios.mm in Sources */, - E6671D2658CF4D03E5B090B14107AD5C /* PaletteTexture.cpp in Sources */, - 959EC09CCE6E1ED12EEB538C67358441 /* Performance.cpp in Sources */, - F878BF58C6FBE52C47D997C5A97BD4EC /* plugin_delta.c in Sources */, - 978AF63E429EA6BE4A8FF1A0B5496081 /* plugin_delta.cpp in Sources */, - 0E44874FC2DB440879A39D12CB250947 /* png.c in Sources */, - 7A9811DEC0DE4EB371C3AE659D8B9961 /* pngerror.c in Sources */, - 4F95759188192E987337CE840A2A3E66 /* pngget.c in Sources */, - A759851535563F1809534B33FB60C29A /* pngmem.c in Sources */, - F804CF130B42739D53F9D68915A4B0CF /* pngpread.c in Sources */, - ED2AE47C9D897B53EE16A62F76E69BAC /* pngread.c in Sources */, - 2F5BFC0603B02754B8E30297B3216928 /* pngrio.c in Sources */, - 3E588F5369CEE639E3114048A114E3AE /* pngrtran.c in Sources */, - E59B73D2F71237C2948DC90A1D6915FC /* pngrutil.c in Sources */, - CACEC3EBC1E82B6AB72E9B95C64A53D1 /* pngset.c in Sources */, - 69EA72FE6D3F8B0C8250B939DA370C6B /* pngtest.c in Sources */, - D7E3EE50145AE5670023BB430F559016 /* pngtrans.c in Sources */, - E6204DD14779CA50F761D9E438043B9A /* pngwio.c in Sources */, - 3BA757B9B9DE8D23F851F57787F03601 /* pngwrite.c in Sources */, - DA0E22364648DAF80BE8E83448C35812 /* pngwtran.c in Sources */, - 22F4CDA21F32132923062FA08B81CA1C /* pngwutil.c in Sources */, - 55356E90D4199C170C044E10032616EF /* PostProcessor.cpp in Sources */, - 7DA01274751E51DC493188B9C6378787 /* RDP.cpp in Sources */, - F5F0FF8110306AD4F4A45BDBCF73DD39 /* RDRAMtoColorBuffer.cpp in Sources */, - C5791073FDD7C95436D83F1D1B6A0476 /* re2.c in Sources */, - 7DDF39DB820144428F1551840399BCF3 /* RSP.cpp in Sources */, - 7B1FF6D4F5A574D85C380DFB363FA484 /* RSP_LoadMatrix.cpp in Sources */, - 4B63F3F2D83498B437733C310A0E9604 /* S2DEX.cpp in Sources */, - E78FE2D0F4328B10E91A05282BFAAE95 /* S2DEX2.cpp in Sources */, - 0668FCC7EA8113812C27E68057AC979E /* SoftwareRender.cpp in Sources */, - 0BA39A0A432DF411F877FD526A61BE4D /* T3DUX.cpp in Sources */, - 1527DE7805C03B75EB03E10D49937548 /* TexrectDrawer.cpp in Sources */, - B3308C76229116C1A7088F42A818C067 /* TextDrawerStub.cpp in Sources */, - FC582381E298E82645541CE8AC5E0083 /* TextureFilterHandler.cpp in Sources */, - 64C38E04B04DF58F4886509586FC02E4 /* TextureFilters.cpp in Sources */, - B4C52BEFE7B616BDEF5CCE5CB26A7272 /* TextureFilters_2xsai.cpp in Sources */, - 2454DAA17E0D718C7E88C90C3E9A18D2 /* TextureFilters_hq2x.cpp in Sources */, - 3902C5B92026004C73A38722D712E665 /* TextureFilters_hq4x.cpp in Sources */, - 78D2E75C0491A0D6B297612A409ED6AB /* TextureFilters_xbrz.cpp in Sources */, - 6026351527CF2B0EC60F7EF6E3BE5C2A /* Textures.cpp in Sources */, - 3C1920FE64F396F884D43C1B41C471A7 /* Turbo3D.cpp in Sources */, - 4439BA65DE7F8274F7E0C49D2703643A /* TxCache.cpp in Sources */, - 3438BF3AB96CCC5A9A4EF8D8FA5D916B /* TxDbg_ios.mm in Sources */, - AAA538F221917E4F4074007EAD3A1A6B /* TxFilter.cpp in Sources */, - D96FE88F831248E211159EE85CE83B37 /* TxFilterExport.cpp in Sources */, - D0A464A9733A6017E236CF10B1D897F0 /* TxHiResCache.cpp in Sources */, - 0CE4EFD0F678E158D8B880D106BE0CD2 /* TxImage.cpp in Sources */, - 8B6467DEA33995772F7F6B00233CC547 /* TxQuantize.cpp in Sources */, - 7C2DC7402E76D1E1F0436ACFDF29FEF2 /* TxReSample.cpp in Sources */, - 9F472B78787D56228652D3FA3BCAF645 /* TxTexCache.cpp in Sources */, - 6B692A0D88CE2B8D487AACF89F40DBAF /* TxUtil.cpp in Sources */, - 2F1A6F3FD3C27557955C1DF8DDEE8E86 /* txWidestringWrapper.cpp in Sources */, - 9372FE77312743779CB691B24C612301 /* VI.cpp in Sources */, - 7CA633671E644576D5572406B6EEEF1A /* video_capture_backend.c in Sources */, - 30E313B3231ED9FBD7886503806B818D /* xxhash.c in Sources */, - 30E313B3231ED9FBD7886503806B818D /* xxhash.c in Sources */, - E82CFD8EC3B22DA8BC0F8480887C00DD /* ZlutTexture.cpp in Sources */, - 6FC60C937AD09F2578900D5606DE552E /* ZSort.cpp in Sources */, - DF0368BF3CAB79B524B56DAEFA4AA0DE /* ZSortBOSS.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - EF7586674F4859C6764E29EA2044B8F2 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E074D1A2846CCE88FD92FE7C48E84DC7 /* GoogleAPIClientForREST-dummy.m in Sources */, - 979BF68DD04C06A1E5FDE74E4DFF8730 /* GTLRBase64.m in Sources */, - EE65DC50A0B1CA0F1BEAC525CDD71355 /* GTLRBatchQuery.m in Sources */, - 31C1F83D5453BE25A69D6F530B1C3485 /* GTLRBatchResult.m in Sources */, - 4F06E8B14A298FB8784196CF343DB7AD /* GTLRDateTime.m in Sources */, - C15FE401E462A35621D1B0D7DF14855B /* GTLRDriveObjects.m in Sources */, - D474348D385337E6C15FA2882009CCFD /* GTLRDriveQuery.m in Sources */, - 6388BF27A5D6E9361F14BDC2E8A91FC4 /* GTLRDriveService.m in Sources */, - EFE4A9D0F0193903B0E0A77D748730E2 /* GTLRDuration.m in Sources */, - 771975EAB71C3F761B56B03BC207C0E3 /* GTLRErrorObject.m in Sources */, - 2AFDBD64E02EF797395B3EF74E0179D9 /* GTLRFramework.m in Sources */, - DD46C14FD68C81F665E55EA792C141FD /* GTLRObject.m in Sources */, - 9D36135EF268512D3741FD2E84A0A2E1 /* GTLRQuery.m in Sources */, - 2E217A20F7C7C1D7C53B126599B2D971 /* GTLRRuntimeCommon.m in Sources */, - C41903AD7013A8B9709D3EC574FF9D21 /* GTLRService.m in Sources */, - 83F6461D78547A5588C070E6B410A693 /* GTLRUploadParameters.m in Sources */, - C42C9B4C5A5AA7B1FAC27F0346C87396 /* GTLRURITemplate.m in Sources */, - 2279896B50A50B4C9A000CAE3BBC2DD1 /* GTLRUtilities.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 03EE64D57B013B8A1F5157F1DC102386 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = MelonDSDeltaCore; - target = 38A7AA32705A9662332E76FA75B50858 /* MelonDSDeltaCore */; - targetProxy = E7AE4EAEB89C34A4CCCA74A08EECFF06 /* PBXContainerItemProxy */; - }; - 094B50B605BAB4D73B3ECA6C31A9166A /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Crashlytics; - target = C0E41540D6862472ED7F2FA11669BE1F /* Crashlytics */; - targetProxy = 2EFA413356C607A1626012EDAD87D01A /* PBXContainerItemProxy */; - }; - 0A4B654FFCCCB5D6E85343B1E45BCC35 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DeltaCore; - target = 530F469AED058B94728C278CCA514500 /* DeltaCore */; - targetProxy = 2C5709615939DA1B7E6CFF6BCAA317A3 /* PBXContainerItemProxy */; - }; - 0AD4A5323D4E24D46D8228FECDBA8264 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Roxas; - target = B5D1BA64AC676FF46408FCDE19A05767 /* Roxas */; - targetProxy = 386A39C8F62681B6A974D70FC9A9B05A /* PBXContainerItemProxy */; - }; - 0CB6D6CB25C0D19F1E9F798CEC239AB9 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GoogleSignIn; - target = CAD3534FC55B0333104E5117C0A9A324 /* GoogleSignIn */; - targetProxy = B1EFF850423F54B1604D4D644161F788 /* PBXContainerItemProxy */; - }; - 119BC6949DA3A545112A6EDBA2DA36C5 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = N64DeltaCore; - target = 126073BF5D2BF3A4BDD22FE9062C9D20 /* N64DeltaCore */; - targetProxy = 8D91A7CA0E4B74AE4E559CA2CB852904 /* PBXContainerItemProxy */; - }; - 1A7C8C74F97D3B1B3C2A4548AF374804 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "N64DeltaCore-Mupen64Plus"; - target = 280620EDC57ABB510508698A7233E414 /* N64DeltaCore-Mupen64Plus */; - targetProxy = E4C99098C1BE4E6507FBF2E2E7A3A8B3 /* PBXContainerItemProxy */; - }; - 27BB05EDECFD3016D5B1FBD88F66CF8D /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SQLite.swift; - target = 3F2C1776D90B62B156DB52C41A5C419C /* SQLite.swift */; - targetProxy = 5FB73A534E55CBBA1A05215B109C1984 /* PBXContainerItemProxy */; - }; - 2A75E1311D3704AA03D1E657CC30399C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Alamofire; - target = EAAA1AD3A8A1B59AB91319EE40752C6D /* Alamofire */; - targetProxy = 1CE85BB601CDDBA5E25E0E95486EABF3 /* PBXContainerItemProxy */; - }; - 3506309A0AFE349C347D729EAF6DCA08 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "SNESDeltaCore-SNESDeltaCore"; - target = 6538136F848A07F507372CCFB40CEB88 /* SNESDeltaCore-SNESDeltaCore */; - targetProxy = E9C6083C64BF9A2146F436E88B69CEBD /* PBXContainerItemProxy */; - }; - 35902F8D19AE9DF0921811197604CE95 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Harmony; - target = 5CB4163F0A6D4BDE0A490758A78BA43D /* Harmony */; - targetProxy = A07A5DE0921B657AE32DCA8E2A089D86 /* PBXContainerItemProxy */; - }; - 3C2276B7F75338933FC9C2B9B4465C04 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GBCDeltaCore; - target = DB59C68809324297BEDAF0CC3F931B27 /* GBCDeltaCore */; - targetProxy = 28302951E7CF9C1CDE7D2CC88774611F /* PBXContainerItemProxy */; - }; - 409A2F0097169E2B979FFC15A11879D0 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GoogleToolboxForMac; - target = D47C581D39D227080F83B16A22A56664 /* GoogleToolboxForMac */; - targetProxy = 9C63C03831B049114C9F0BD9A523925A /* PBXContainerItemProxy */; - }; - 46DA582F9EB8EEA2C7D8B3150BF15AA9 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GBADeltaCore; - target = 7056A67459B0B8B62FACACCE167546B8 /* GBADeltaCore */; - targetProxy = 9013FB89858924EAA4F485517B555334 /* PBXContainerItemProxy */; - }; - 57480D7CBF2F1F1BF3034AF32FB71892 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DeltaCore; - target = 530F469AED058B94728C278CCA514500 /* DeltaCore */; - targetProxy = 37A4C2ADE2190EEFC66D430839087B4C /* PBXContainerItemProxy */; - }; - 5FA16B7B382B71AA416AC9EB246626F5 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SNESDeltaCore; - target = 141E2D29C29A1BC1ABA3483321DF3C88 /* SNESDeltaCore */; - targetProxy = CBD27450EDE9AB962B99547F44927630 /* PBXContainerItemProxy */; - }; - 600CAE9FE2044A6CE31947B75969862C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Alamofire; - target = EAAA1AD3A8A1B59AB91319EE40752C6D /* Alamofire */; - targetProxy = B5B05120F3525259F5CD3798372C68FF /* PBXContainerItemProxy */; - }; - 750351E97FD667226D5B4CF6487E1FDC /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = ZIPFoundation; - target = AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */; - targetProxy = DAB222243C1AB8AE68EBFDD06DD5E952 /* PBXContainerItemProxy */; - }; - 77F320C6D8F3FA3747D33EC0492DD627 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GoogleAPIClientForREST; - target = D7958E869B6C0073DB3025514393D7A3 /* GoogleAPIClientForREST */; - targetProxy = DC84319C0C2AC0B6111FCA88F10BAF4B /* PBXContainerItemProxy */; - }; - 78036B04581E1A5E288B539369983798 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GoogleAPIClientForREST; - target = D7958E869B6C0073DB3025514393D7A3 /* GoogleAPIClientForREST */; - targetProxy = 834E6DD2BCE05F6D3123BBF6DBFE88FE /* PBXContainerItemProxy */; - }; - 7A85D30987AA91E2AE5148BB598452A8 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SDWebImage; - target = 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */; - targetProxy = 40F18D71FB7538B15941AED49EBB0611 /* PBXContainerItemProxy */; - }; - 7B0E8E9303485ADD38839A16FE78F96C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SwiftyDropbox; - target = FF39B7A1D9F00620D9F56635ABBB2C03 /* SwiftyDropbox */; - targetProxy = FBC6888344636427928B10D68D5909D6 /* PBXContainerItemProxy */; - }; - 82DAE5F70682593E5746A491E18D0532 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SwiftyDropbox; - target = FF39B7A1D9F00620D9F56635ABBB2C03 /* SwiftyDropbox */; - targetProxy = 03CADCA516B509027D42D548C32C117D /* PBXContainerItemProxy */; - }; - A07BD9F034BEEFDA8B499E20B044B42B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Roxas; - target = B5D1BA64AC676FF46408FCDE19A05767 /* Roxas */; - targetProxy = E485FF1C53F0C026EFB5D41CFBF4030B /* PBXContainerItemProxy */; - }; - A3BCEC5546916AB67AB16562C2AE43CE /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GTMSessionFetcher; - target = D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */; - targetProxy = 24D3F45EA4EAAAFAE1DE07EED1AE36F7 /* PBXContainerItemProxy */; - }; - A441F5CCC4B39698B10FAE4F1707588B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DeltaCore; - target = 530F469AED058B94728C278CCA514500 /* DeltaCore */; - targetProxy = F2C8DE6792AE30174539D21D56BA5F4C /* PBXContainerItemProxy */; - }; - A6899D64C7875C8420CF4BE58A8F9683 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GoogleToolboxForMac; - target = D47C581D39D227080F83B16A22A56664 /* GoogleToolboxForMac */; - targetProxy = 89A67CEF61FA6CC5D5BFEA16CF9ACE11 /* PBXContainerItemProxy */; - }; - ADE387AE01AD96352F48752BFF4348E0 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DeltaCore; - target = 530F469AED058B94728C278CCA514500 /* DeltaCore */; - targetProxy = F8FC37C00D9A7461940606117649618D /* PBXContainerItemProxy */; - }; - BE437ADD418ADBC477DB5360E499CA9E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DeltaCore; - target = 530F469AED058B94728C278CCA514500 /* DeltaCore */; - targetProxy = D3CB4227E2903C5715480CAA52854211 /* PBXContainerItemProxy */; - }; - BEB364953CBFFEC82DE8161D0034DBD2 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DeltaCore; - target = 530F469AED058B94728C278CCA514500 /* DeltaCore */; - targetProxy = 5B47AF70F182A50CA7CA8415481A7E5F /* PBXContainerItemProxy */; - }; - C7057E1A8160A095EB462DFE082E70CE /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = ZIPFoundation; - target = AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */; - targetProxy = 94DE0E094C6F88656390AF783AE3DA3D /* PBXContainerItemProxy */; - }; - CDD9440C0B47CA2F07787A29EAB39B4E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GoogleSignIn; - target = CAD3534FC55B0333104E5117C0A9A324 /* GoogleSignIn */; - targetProxy = DE794B947A3DCBA6E58DCDE50BF8A90F /* PBXContainerItemProxy */; - }; - D37AD80FD9BD1A71ADD481E64E7864DC /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "MelonDSDeltaCore-melonDS"; - target = 5B32FEE5AD13CB944235C9158BECB929 /* MelonDSDeltaCore-melonDS */; - targetProxy = 08A5CA2A6124D2CE6A9C04540C07BBDD /* PBXContainerItemProxy */; - }; - D87982085F22C530E1304E47F34EBEB8 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "GBCDeltaCore-GBCDeltaCore"; - target = 5C36E65AEF44273E4AF0CBFADD00C090 /* GBCDeltaCore-GBCDeltaCore */; - targetProxy = 9CCCF94D1CC4369C77C6DABCA27FF904 /* PBXContainerItemProxy */; - }; - D91C974122337723A637A3C8B7FE8538 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Fabric; - target = ABB048B191245233986A7CD75FE412A5 /* Fabric */; - targetProxy = C55D4B88D6796D6ECA93F64596948CCF /* PBXContainerItemProxy */; - }; - DBF952634AC5BBDB04EDF4BCA01DB43B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "NESDeltaCore-NESDeltaCore"; - target = 7F839870ECBE0065B4BCC02E5F98F48A /* NESDeltaCore-NESDeltaCore */; - targetProxy = 98E4932961D5ABC64AB6A668C27C13F1 /* PBXContainerItemProxy */; - }; - E2562602C1C3CFB196E0B8A06CDA6304 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "GBADeltaCore-GBADeltaCore"; - target = 890229DC8DCC9C43917568A0C4502FCA /* GBADeltaCore-GBADeltaCore */; - targetProxy = 57820E1B1EE391322ECA06DE8D7A6B13 /* PBXContainerItemProxy */; - }; - E2C6AB10B17312AB90B2AFD1B501166E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "DeltaCore-DeltaCore"; - target = 1B47E46598F87113B00B3B25BBF51B32 /* DeltaCore-DeltaCore */; - targetProxy = 637A0CCCE4557B8E40F50FA577C068FC /* PBXContainerItemProxy */; - }; - E35E9E7F21AA268DCEBD230432F37D8D /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DeltaCore; - target = 530F469AED058B94728C278CCA514500 /* DeltaCore */; - targetProxy = 1929022B37D6325A0BAA2FE06E8ACC91 /* PBXContainerItemProxy */; - }; - E54DEE53ED59517BCF87FFAE45F85A4D /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = NESDeltaCore; - target = 0FAC8C4777DBD31221FE57848CB5F759 /* NESDeltaCore */; - targetProxy = DFC513892E567ED0D2BCB1B2B75FCD59 /* PBXContainerItemProxy */; - }; - E6566DFDC21C3373D39D68806EC8F7F8 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SMCalloutView; - target = D20492B6476142DCA0C455340876BB98 /* SMCalloutView */; - targetProxy = 454F353F8F3248E880E676F092E22284 /* PBXContainerItemProxy */; - }; - E67391BBEAF788E7D3E75113B72EAC88 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "DSDeltaCore-DSDeltaCore"; - target = E5449403CBE67599315B4D26019FA175 /* DSDeltaCore-DSDeltaCore */; - targetProxy = A5CC6D66885F9CB5378579DC50E41E36 /* PBXContainerItemProxy */; - }; - E97412D0233A7AE98DA820BDF9AC560F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DeltaCore; - target = 530F469AED058B94728C278CCA514500 /* DeltaCore */; - targetProxy = 585C88958954E55FCE37FD900FC23F26 /* PBXContainerItemProxy */; - }; - E9A11F2A64B30E545BA45B5B33A9ABCB /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GTMSessionFetcher; - target = D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */; - targetProxy = 80396A541B74123C11A5A9973DE0921F /* PBXContainerItemProxy */; - }; - EAA7405A96A86B7E77549127A86EE492 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Fabric; - target = ABB048B191245233986A7CD75FE412A5 /* Fabric */; - targetProxy = 800DEF27C0777AF0AF809DAFC391BD84 /* PBXContainerItemProxy */; - }; - EB3F76120170BA5C5FDE9A81BDA23F88 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DSDeltaCore; - target = DCBC8D45C727B1472F26E79661AF11B0 /* DSDeltaCore */; - targetProxy = 31D44EE8C88366B75E26D87127811337 /* PBXContainerItemProxy */; - }; - F0187F25307C287480D9BF750BBA9671 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = GTMSessionFetcher; - target = D676E21115185671D7258A56944ABE98 /* GTMSessionFetcher */; - targetProxy = 8EB9D701C4C1A3088A07BE46C4BD8961 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 0029B51DC6A97CABA32CEE15344DCA0E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A34489EBF25913D7D0197EFF7FA146A3 /* Pods-Delta.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-Delta/Pods-Delta.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 0BAB8AFC05E3DF018BE00DC43F7D8A1D /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 10DBE8DD414F72ABA414D15368484C5E /* MelonDSDeltaCore.debug.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/MelonDSDeltaCore/MelonDSDeltaCore-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MODULEMAP_FILE = Headers/Public/MelonDSDeltaCore/MelonDSDeltaCore.modulemap; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = MelonDSDeltaCore; - PRODUCT_NAME = MelonDSDeltaCore; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 0C082C6F841D6B35FC82985B91620687 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 4BC067CAFA13189984037CEC34AF2FB1 /* DeltaCore.release.xcconfig */; - buildSettings = { - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/DeltaCore"; - IBSC_MODULE = DeltaCore; - INFOPLIST_FILE = "Target Support Files/DeltaCore/ResourceBundle-DeltaCore-DeltaCore-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = DeltaCore; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - 0FE218E7B0FEE833A2BD1CC8DDB804F1 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9B3504BF3C9DA060E193A650BBB63861 /* GBCDeltaCore.release.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/GBCDeltaCore/GBCDeltaCore-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MODULEMAP_FILE = Headers/Public/GBCDeltaCore/GBCDeltaCore.modulemap; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = GBCDeltaCore; - PRODUCT_NAME = GBCDeltaCore; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 1218DF4743AA020B61F781015542A0B6 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 530DFDEF529BB6EF5B319101803D204C /* N64DeltaCore.debug.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/N64DeltaCore/N64DeltaCore-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MODULEMAP_FILE = Headers/Public/N64DeltaCore/N64DeltaCore.modulemap; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = N64DeltaCore; - PRODUCT_NAME = N64DeltaCore; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 12EA75F085BC4D878B1B9B040ADFCD50 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 10DBE8DD414F72ABA414D15368484C5E /* MelonDSDeltaCore.debug.xcconfig */; - buildSettings = { - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MelonDSDeltaCore"; - IBSC_MODULE = MelonDSDeltaCore; - INFOPLIST_FILE = "Target Support Files/MelonDSDeltaCore/ResourceBundle-melonDS-MelonDSDeltaCore-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = melonDS; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - 14D9B430A86A64EDC695F5CEEBE82360 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A593F9E4A4598D119B56497AC7331928 /* GBADeltaCore.debug.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/GBADeltaCore/GBADeltaCore-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MODULEMAP_FILE = Headers/Public/GBADeltaCore/GBADeltaCore.modulemap; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = GBADeltaCore; - PRODUCT_NAME = GBADeltaCore; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 16AC385EFCE76158B54948376A474355 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 527B0D212D04816961FAE82E46B743AF /* N64DeltaCore.release.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/N64DeltaCore/N64DeltaCore-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MODULEMAP_FILE = Headers/Public/N64DeltaCore/N64DeltaCore.modulemap; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = N64DeltaCore; - PRODUCT_NAME = N64DeltaCore; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 19FB00D154449A82AEE2899DE6AB7C48 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8A663C19A160C58658C37E00C9C00A83 /* DSDeltaCore.debug.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/DSDeltaCore/DSDeltaCore-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MODULEMAP_FILE = Headers/Public/DSDeltaCore/DSDeltaCore.modulemap; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = DSDeltaCore; - PRODUCT_NAME = DSDeltaCore; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 1B66713D37FBE1730360595A0CE795E4 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F41D052495AB2789D36A7796B17EADD4 /* GoogleSignIn.debug.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 235864BD7103490F1C5F92F2A39E65AF /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 2732AC8F246A18F0714B4321F54DD531 /* DeltaCore.debug.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/DeltaCore/DeltaCore-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MODULEMAP_FILE = Headers/Public/DeltaCore/DeltaCore.modulemap; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = DeltaCore; - PRODUCT_NAME = DeltaCore; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 243BF87C503C4EF61039D2E629DDA76A /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 481B0FB19748AA00058AAB4125E08BF8 /* SDWebImage.release.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SDWebImage/SDWebImage-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - MODULEMAP_FILE = Headers/Public/SDWebImage/SDWebImage.modulemap; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SDWebImage; - PRODUCT_NAME = SDWebImage; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 2B27E2C9C47B64502BFFB658152AC29D /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E6C9B6763FC803B3E3266F762DFABEC6 /* GoogleToolboxForMac.debug.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MODULEMAP_FILE = Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac.modulemap; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = GoogleToolboxForMac; - PRODUCT_NAME = GoogleToolboxForMac; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 2B9E26EAE2CD392AD762421F663075A1 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_DEBUG=1", - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - STRIP_INSTALLED_PRODUCT = NO; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Debug; - }; - 30E873BEB50026BEAFB8517CFD228F17 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A593F9E4A4598D119B56497AC7331928 /* GBADeltaCore.debug.xcconfig */; - buildSettings = { - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/GBADeltaCore"; - IBSC_MODULE = GBADeltaCore; - INFOPLIST_FILE = "Target Support Files/GBADeltaCore/ResourceBundle-GBADeltaCore-GBADeltaCore-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = GBADeltaCore; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - 3EB1DEA806C76553F72174C7D16DEC22 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 6AE80E95610AC55EF36C52FE2399360A /* SwiftyDropbox.debug.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SwiftyDropbox/SwiftyDropbox-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MODULEMAP_FILE = Headers/Public/SwiftyDropbox/SwiftyDropbox.modulemap; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SwiftyDropbox; - PRODUCT_NAME = SwiftyDropbox; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 460FDF27151A8DD11882F637359C2AE4 /* Release */ = { +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 079321C39597FF333066B22FE1FEFF0F /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3DCBB7A27AD42575D6ED0104FBB160BC /* SNESDeltaCore.release.xcconfig */; + baseConfigurationReference = 6489AF4920604679F13DAC243B172A5E /* Roxas.debug.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SNESDeltaCore/SNESDeltaCore-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/Roxas/Roxas-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MODULEMAP_FILE = Headers/Public/SNESDeltaCore/SNESDeltaCore.modulemap; + MODULEMAP_FILE = Headers/Public/Roxas/Roxas.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SNESDeltaCore; - PRODUCT_NAME = SNESDeltaCore; + PRODUCT_MODULE_NAME = Roxas; + PRODUCT_NAME = Roxas; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 5.3.2; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; - 48C9D3A72B34526E583AEE9F44F389DD /* Debug */ = { + 0CD89219308680E0272D033C879E8559 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5A644A5B4BD538209D5C42F09565D52C /* ZIPFoundation.debug.xcconfig */; + baseConfigurationReference = 164A379BC4A71BBEC7AB773B8C57B1C1 /* GTMSessionFetcher.debug.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/ZIPFoundation/ZIPFoundation-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MODULEMAP_FILE = Headers/Public/ZIPFoundation/ZIPFoundation.modulemap; + MODULEMAP_FILE = Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = ZIPFoundation; - PRODUCT_NAME = ZIPFoundation; + PRODUCT_MODULE_NAME = GTMSessionFetcher; + PRODUCT_NAME = GTMSessionFetcher; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 5.3.2; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; - 565EB57DBE6F6B573FFFD6CB0305D8A6 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 99AEE6ADFB88CAB41DFBDDECF8B7708E /* MelonDSDeltaCore.release.xcconfig */; - buildSettings = { - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MelonDSDeltaCore"; - IBSC_MODULE = MelonDSDeltaCore; - INFOPLIST_FILE = "Target Support Files/MelonDSDeltaCore/ResourceBundle-melonDS-MelonDSDeltaCore-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = melonDS; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - 5AA931B9471AC94F9DE966FF62CA3252 /* Release */ = { + 15687DD34E5D1EC1C7598D10115B3A60 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7D657B72C28A6793148493FF9DEAA8A6 /* GTMSessionFetcher.release.xcconfig */; + baseConfigurationReference = 1B4A80294AD5192C9FCD1275553F2D93 /* Alamofire.debug.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MODULEMAP_FILE = Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap; + GCC_PREFIX_HEADER = "Target Support Files/Alamofire/Alamofire-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MODULEMAP_FILE = Headers/Public/Alamofire/Alamofire.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = GTMSessionFetcher; - PRODUCT_NAME = GTMSessionFetcher; + PRODUCT_MODULE_NAME = Alamofire; + PRODUCT_NAME = Alamofire; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 5E1309065972F444D9B760BF5A9612D6 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = FE81E396E46844584FB6B2FF7E5F104C /* DSDeltaCore.release.xcconfig */; - buildSettings = { - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/DSDeltaCore"; - IBSC_MODULE = DSDeltaCore; - INFOPLIST_FILE = "Target Support Files/DSDeltaCore/ResourceBundle-DSDeltaCore-DSDeltaCore-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = DSDeltaCore; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; + SWIFT_VERSION = 5.3.2; TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; }; - name = Release; + name = Debug; }; - 60105B9BAE3A0AD89B453D8D159E00ED /* Release */ = { + 1E9FA8FB7B156E95BA80835DD37FAD90 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A5B95194D64CEE2620808A3F54044158 /* GoogleAPIClientForREST.release.xcconfig */; + baseConfigurationReference = C6C7C9E918A47FB7D6F6658594BA5615 /* GoogleToolboxForMac.debug.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/GoogleAPIClientForREST/GoogleAPIClientForREST-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - MODULEMAP_FILE = Headers/Public/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap; + GCC_PREFIX_HEADER = "Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MODULEMAP_FILE = Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = GoogleAPIClientForREST; - PRODUCT_NAME = GoogleAPIClientForREST; + PRODUCT_MODULE_NAME = GoogleToolboxForMac; + PRODUCT_NAME = GoogleToolboxForMac; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 5.3.2; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; - 62FA25CE75D0BA7535AB397FBD5B3002 /* Debug */ = { + 1F8070B50174D5EBA09DCBA7EC0D4F26 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 496461CDF0EEA20700EA04A0AD896DD0 /* GBCDeltaCore.debug.xcconfig */; + baseConfigurationReference = A3DED955C2C6340F0897CDDA63CFE9AC /* SQLite.swift.release.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/GBCDeltaCore/GBCDeltaCore-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MODULEMAP_FILE = Headers/Public/GBCDeltaCore/GBCDeltaCore.modulemap; + GCC_PREFIX_HEADER = "Target Support Files/SQLite.swift/SQLite.swift-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MODULEMAP_FILE = Headers/Public/SQLite/SQLite.swift.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = GBCDeltaCore; - PRODUCT_NAME = GBCDeltaCore; + PRODUCT_MODULE_NAME = SQLite; + PRODUCT_NAME = SQLite.swift; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 5; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; - 63FAF33E1C55B71A5F5A8B3CC8749F99 /* Release */ = { + 2B9E26EAE2CD392AD762421F663075A1 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -12769,13 +3298,16 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; + DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; GCC_PREPROCESSOR_DEFINITIONS = ( - "POD_CONFIGURATION_RELEASE=1", + "POD_CONFIGURATION_DEBUG=1", + "DEBUG=1", "$(inherited)", ); GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -12785,807 +3317,484 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MTL_ENABLE_DEBUG_INFO = NO; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; - PRODUCT_NAME = "$(TARGET_NAME)"; - STRIP_INSTALLED_PRODUCT = NO; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_OPTIMIZATION_LEVEL = "-O"; - SWIFT_VERSION = 5.0; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Release; - }; - 6728B42E80187E49D719773A1EEBD0D8 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = C3B144DAC7663AA196FF05DB5F4FAEBE /* Alamofire.release.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/Alamofire/Alamofire-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MODULEMAP_FILE = Headers/Public/Alamofire/Alamofire.modulemap; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = Alamofire; - PRODUCT_NAME = Alamofire; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 6D64EE3DE159E1C4A296EA270F706D7D /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = AB908F46DC3EF545093A039507FB5ECB /* Crashlytics.debug.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 727ADD9192464C7358B09509853A2720 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = FA5B2AFDA57147D8A9707EBFD0687B62 /* SNESDeltaCore.debug.xcconfig */; - buildSettings = { - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SNESDeltaCore"; - IBSC_MODULE = SNESDeltaCore; - INFOPLIST_FILE = "Target Support Files/SNESDeltaCore/ResourceBundle-SNESDeltaCore-SNESDeltaCore-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = SNESDeltaCore; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - 774D2CBBCB24F14A6A9A4CB362B65DD6 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 553931D6CFC09E8F76B87ACF1E671321 /* Fabric.release.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 7A26CEE973D7FEBC6ABA26736352DDB2 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 921321EFE30058B51BD783A8231B1644 /* GBADeltaCore.release.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/GBADeltaCore/GBADeltaCore-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MODULEMAP_FILE = Headers/Public/GBADeltaCore/GBADeltaCore.modulemap; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = GBADeltaCore; - PRODUCT_NAME = GBADeltaCore; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 7AED9DA5868F4DDD1FEFA7DEEFD9853F /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = DBAAF6DBA09834539A368667AF5A1211 /* GoogleAPIClientForREST.debug.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/GoogleAPIClientForREST/GoogleAPIClientForREST-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - MODULEMAP_FILE = Headers/Public/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = GoogleAPIClientForREST; - PRODUCT_NAME = GoogleAPIClientForREST; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 7CB4CB8FEF6F5425C3CCA0D040B6AF17 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = BADCCAE30E37C77B39E74D1A8BAAE7CA /* Roxas.release.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/Roxas/Roxas-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MODULEMAP_FILE = Headers/Public/Roxas/Roxas.modulemap; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = Roxas; - PRODUCT_NAME = Roxas; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 7E30B00434175D977442397315098DB0 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F381603DE2011262E9A2C37926028861 /* Pods-Delta.release.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-Delta/Pods-Delta.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 854FEA136BA0488F8DD56BC285E6C1D4 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 3DCBB7A27AD42575D6ED0104FBB160BC /* SNESDeltaCore.release.xcconfig */; - buildSettings = { - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SNESDeltaCore"; - IBSC_MODULE = SNESDeltaCore; - INFOPLIST_FILE = "Target Support Files/SNESDeltaCore/ResourceBundle-SNESDeltaCore-SNESDeltaCore-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = SNESDeltaCore; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - 8BFFE9CF183167399B2CF2ABDA6DE754 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 990DFA0F64EC73731FE3D33EDE671F46 /* NESDeltaCore.debug.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/NESDeltaCore/NESDeltaCore-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MODULEMAP_FILE = Headers/Public/NESDeltaCore/NESDeltaCore.modulemap; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = NESDeltaCore; - PRODUCT_NAME = NESDeltaCore; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; + SYMROOT = "${SRCROOT}/../build"; }; name = Debug; }; - 8D255A64D8608E696B198983F7E73CE7 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9A69779C7CE90E43C61DC0446CE1DBB5 /* SMCalloutView.release.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SMCalloutView/SMCalloutView-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - MODULEMAP_FILE = Headers/Public/SMCalloutView/SMCalloutView.modulemap; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SMCalloutView; - PRODUCT_NAME = SMCalloutView; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 8D64F6503D35AF4013FD394A8D884EFF /* Debug */ = { + 327C317BC84C9523B80D0CDA55CC1882 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = ABD749C2D181E66236B780B2F16DA464 /* Harmony.debug.xcconfig */; + baseConfigurationReference = F0BEE9C2C63738172378E0A44BF2FB42 /* SwiftyDropbox.debug.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/Harmony/Harmony-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MODULEMAP_FILE = Headers/Public/Harmony/Harmony.modulemap; + GCC_PREFIX_HEADER = "Target Support Files/SwiftyDropbox/SwiftyDropbox-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MODULEMAP_FILE = Headers/Public/SwiftyDropbox/SwiftyDropbox.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = Harmony; - PRODUCT_NAME = Harmony; + PRODUCT_MODULE_NAME = SwiftyDropbox; + PRODUCT_NAME = SwiftyDropbox; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; - 8EBAAC2D8D41B9D7C466B6A3C71E4C97 /* Release */ = { + 33DF3F8C3E11569871C141BE353C6B4D /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FE81E396E46844584FB6B2FF7E5F104C /* DSDeltaCore.release.xcconfig */; + baseConfigurationReference = D97D50218F26FA896ABC058738BD76C7 /* Roxas.release.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/DSDeltaCore/DSDeltaCore-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/Roxas/Roxas-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MODULEMAP_FILE = Headers/Public/DSDeltaCore/DSDeltaCore.modulemap; + MODULEMAP_FILE = Headers/Public/Roxas/Roxas.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = DSDeltaCore; - PRODUCT_NAME = DSDeltaCore; + PRODUCT_MODULE_NAME = Roxas; + PRODUCT_NAME = Roxas; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 5.3.2; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; - 910E1DB60BB450128BB9F6231B9AC4B9 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9A994D0970557F8DBF425A2E6710A042 /* GTMSessionFetcher.debug.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MODULEMAP_FILE = Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = GTMSessionFetcher; - PRODUCT_NAME = GTMSessionFetcher; - PUBLIC_HEADERS_FOLDER_PATH = ""; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 951AB5156C9C05489923CDA7D9511111 /* Debug */ = { + 4BAC29ED96D0795BFF96FA7A28A7154B /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8FA29D4654D1F213EADECF1C44D9BBE3 /* Roxas.debug.xcconfig */; + baseConfigurationReference = 2678266B2B8D8A2855A5908D7923283D /* GoogleAPIClientForREST.release.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/Roxas/Roxas-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MODULEMAP_FILE = Headers/Public/Roxas/Roxas.modulemap; + GCC_PREFIX_HEADER = "Target Support Files/GoogleAPIClientForREST/GoogleAPIClientForREST-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + MODULEMAP_FILE = Headers/Public/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = Roxas; - PRODUCT_NAME = Roxas; + PRODUCT_MODULE_NAME = GoogleAPIClientForREST; + PRODUCT_NAME = GoogleAPIClientForREST; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 975A4A99A6B71E3B9A9B44E550A8F0A8 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9B3504BF3C9DA060E193A650BBB63861 /* GBCDeltaCore.release.xcconfig */; - buildSettings = { - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/GBCDeltaCore"; - IBSC_MODULE = GBCDeltaCore; - INFOPLIST_FILE = "Target Support Files/GBCDeltaCore/ResourceBundle-GBCDeltaCore-GBCDeltaCore-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = GBCDeltaCore; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; + SWIFT_VERSION = 5.3.2; TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; + VALIDATE_PRODUCT = YES; }; name = Release; }; - 992EB31BC901CCB23DE725E8AC04D9E6 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8A663C19A160C58658C37E00C9C00A83 /* DSDeltaCore.debug.xcconfig */; - buildSettings = { - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/DSDeltaCore"; - IBSC_MODULE = DSDeltaCore; - INFOPLIST_FILE = "Target Support Files/DSDeltaCore/ResourceBundle-DSDeltaCore-DSDeltaCore-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = DSDeltaCore; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - A08B1AD6F2535BF94167BD3335038137 /* Release */ = { + 5C0AF6886CC220DEB4F7CD115879D8D6 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5AB2076B345EF471110CA2A7FA91562E /* SQLite.swift.release.xcconfig */; + baseConfigurationReference = DD4F2DC2C0E6FEF55D2573407B13787B /* SwiftyDropbox.release.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SQLite.swift/SQLite.swift-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MODULEMAP_FILE = Headers/Public/SQLite/SQLite.swift.modulemap; + GCC_PREFIX_HEADER = "Target Support Files/SwiftyDropbox/SwiftyDropbox-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MODULEMAP_FILE = Headers/Public/SwiftyDropbox/SwiftyDropbox.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SQLite; - PRODUCT_NAME = SQLite.swift; + PRODUCT_MODULE_NAME = SwiftyDropbox; + PRODUCT_NAME = SwiftyDropbox; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5; + SWIFT_VERSION = 4.2; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; - A349E210B29277FCCFA335A2A5A466CA /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 530DFDEF529BB6EF5B319101803D204C /* N64DeltaCore.debug.xcconfig */; - buildSettings = { - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/N64DeltaCore"; - IBSC_MODULE = N64DeltaCore; - INFOPLIST_FILE = "Target Support Files/N64DeltaCore/ResourceBundle-Mupen64Plus-N64DeltaCore-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = Mupen64Plus; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - A6A77E6E730BC62464964D25C9778E24 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 496461CDF0EEA20700EA04A0AD896DD0 /* GBCDeltaCore.debug.xcconfig */; - buildSettings = { - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/GBCDeltaCore"; - IBSC_MODULE = GBCDeltaCore; - INFOPLIST_FILE = "Target Support Files/GBCDeltaCore/ResourceBundle-GBCDeltaCore-GBCDeltaCore-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = GBCDeltaCore; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - ADB56BFF95CAE83A302113A880E981CC /* Debug */ = { + 5CB5DFE35A580C24B8548539315538D1 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 75769AD8AA1E6A55767E34444DEBA81E /* SQLite.swift.debug.xcconfig */; + baseConfigurationReference = 23E95DC8F822E1258BBE968D4052D39A /* SMCalloutView.release.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SQLite.swift/SQLite.swift-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MODULEMAP_FILE = Headers/Public/SQLite/SQLite.swift.modulemap; + GCC_PREFIX_HEADER = "Target Support Files/SMCalloutView/SMCalloutView-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + MODULEMAP_FILE = Headers/Public/SMCalloutView/SMCalloutView.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SQLite; - PRODUCT_NAME = SQLite.swift; + PRODUCT_MODULE_NAME = SMCalloutView; + PRODUCT_NAME = SMCalloutView; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5; + SWIFT_VERSION = 5.3.2; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; - AF5E6B412A09F44196B2B7B2417AEEF4 /* Release */ = { + 5DB54D3700C8A51A0120CEE6B0821A94 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 36CE82CF693A751E8245859F6F1F0059 /* GoogleSignIn.release.xcconfig */; + baseConfigurationReference = 4987017F0B6FF9A772765AD621009DE1 /* Fabric.release.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; IPHONEOS_DEPLOYMENT_TARGET = 7.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; - B2B475E3639C42E09EF68D4A15ECB6FB /* Release */ = { + 606B1388E3A587F85EFA30BEDF02A274 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 99AEE6ADFB88CAB41DFBDDECF8B7708E /* MelonDSDeltaCore.release.xcconfig */; + baseConfigurationReference = 8438943FC79C2F08F98E93A1B0F37077 /* SDWebImage.release.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/MelonDSDeltaCore/MelonDSDeltaCore-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MODULEMAP_FILE = Headers/Public/MelonDSDeltaCore/MelonDSDeltaCore.modulemap; + GCC_PREFIX_HEADER = "Target Support Files/SDWebImage/SDWebImage-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + MODULEMAP_FILE = Headers/Public/SDWebImage/SDWebImage.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = MelonDSDeltaCore; - PRODUCT_NAME = MelonDSDeltaCore; + PRODUCT_MODULE_NAME = SDWebImage; + PRODUCT_NAME = SDWebImage; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 5.3.2; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; - B7ED63EAFF6DD63047950F140E1031D6 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 921321EFE30058B51BD783A8231B1644 /* GBADeltaCore.release.xcconfig */; - buildSettings = { - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/GBADeltaCore"; - IBSC_MODULE = GBADeltaCore; - INFOPLIST_FILE = "Target Support Files/GBADeltaCore/ResourceBundle-GBADeltaCore-GBADeltaCore-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = GBADeltaCore; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - B8A79C6AAB8983B13DC9843B6F90870A /* Release */ = { + 62FD9EEDA88773E80DFD3DB40818F4BB /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5CCF0F50976DE33EBB7327D6CE071A1A /* ZIPFoundation.release.xcconfig */; + baseConfigurationReference = CED87ECBA050B60EAA82FBCB03CC593F /* SMCalloutView.debug.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/ZIPFoundation/ZIPFoundation-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MODULEMAP_FILE = Headers/Public/ZIPFoundation/ZIPFoundation.modulemap; + GCC_PREFIX_HEADER = "Target Support Files/SMCalloutView/SMCalloutView-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + MODULEMAP_FILE = Headers/Public/SMCalloutView/SMCalloutView.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = ZIPFoundation; - PRODUCT_NAME = ZIPFoundation; + PRODUCT_MODULE_NAME = SMCalloutView; + PRODUCT_NAME = SMCalloutView; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 5.3.2; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; - B914DCCC7864E199918D664C6CE847D2 /* Debug */ = { + 63FAF33E1C55B71A5F5A8B3CC8749F99 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 175A71504D934211FCC245712633EBF6 /* Fabric.debug.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_PREPROCESSOR_DEFINITIONS = ( + "POD_CONFIGURATION_RELEASE=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + STRIP_INSTALLED_PRODUCT = NO; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + SWIFT_VERSION = 5.0; + SYMROOT = "${SRCROOT}/../build"; }; - name = Debug; + name = Release; }; - C226202E90B95599EBAAA151D5DEF733 /* Release */ = { + 647A61AFF88E352A2B6857DC89F57E4C /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BD4FD5ECAA33E983C93BD04B1AEEDF59 /* SwiftyDropbox.release.xcconfig */; + baseConfigurationReference = 0C4A92751B307E7BECA584FAAE5D0EF6 /* GoogleToolboxForMac.release.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SwiftyDropbox/SwiftyDropbox-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MODULEMAP_FILE = Headers/Public/SwiftyDropbox/SwiftyDropbox.modulemap; + MODULEMAP_FILE = Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SwiftyDropbox; - PRODUCT_NAME = SwiftyDropbox; + PRODUCT_MODULE_NAME = GoogleToolboxForMac; + PRODUCT_NAME = GoogleToolboxForMac; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 4.2; + SWIFT_VERSION = 5.3.2; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; - C59AD8131F219A4C0B7EA308044116BB /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 6E1E6B172372CDF4080C7440C0152069 /* NESDeltaCore.release.xcconfig */; - buildSettings = { - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/NESDeltaCore"; - IBSC_MODULE = NESDeltaCore; - INFOPLIST_FILE = "Target Support Files/NESDeltaCore/ResourceBundle-NESDeltaCore-NESDeltaCore-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = NESDeltaCore; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - C8FD9C49E5CC8AFCA89CE7C7F480B0BD /* Release */ = { + 651A0A0ACACECA14AC7246D5EE11D3A0 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 540AD95463DB65E077F08253A77C4865 /* GoogleToolboxForMac.release.xcconfig */; + baseConfigurationReference = 674DA6ED603959E5F24CB282D3656C0A /* Harmony.debug.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/GoogleToolboxForMac/GoogleToolboxForMac-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - MODULEMAP_FILE = Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac.modulemap; + GCC_PREFIX_HEADER = "Target Support Files/Harmony/Harmony-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MODULEMAP_FILE = Headers/Public/Harmony/Harmony.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = GoogleToolboxForMac; - PRODUCT_NAME = GoogleToolboxForMac; + PRODUCT_MODULE_NAME = Harmony; + PRODUCT_NAME = Harmony; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 5.3.2; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; - D14224DDB463FC00831EF1CFB4FD4C9C /* Release */ = { + 78EADD840C5191397D2E089EBACE4CD3 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F01FE1957D23109377788923DE2AC6B5 /* Crashlytics.release.xcconfig */; + baseConfigurationReference = DBEC7D1149716714F078F07B9BAE00E6 /* Crashlytics.release.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; IPHONEOS_DEPLOYMENT_TARGET = 7.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; - D8A0ABA9C13359C6A772A77B047100ED /* Debug */ = { + ADAFC39A883138538A67F17B39685DA2 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FA5B2AFDA57147D8A9707EBFD0687B62 /* SNESDeltaCore.debug.xcconfig */; + baseConfigurationReference = DA2024F45CD548A78517D510532A59AD /* SQLite.swift.debug.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SNESDeltaCore/SNESDeltaCore-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MODULEMAP_FILE = Headers/Public/SNESDeltaCore/SNESDeltaCore.modulemap; + GCC_PREFIX_HEADER = "Target Support Files/SQLite.swift/SQLite.swift-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MODULEMAP_FILE = Headers/Public/SQLite/SQLite.swift.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SNESDeltaCore; - PRODUCT_NAME = SNESDeltaCore; + PRODUCT_MODULE_NAME = SQLite; + PRODUCT_NAME = SQLite.swift; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 5; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; - D8FFF9AF5FEF911EB245A732382C3919 /* Release */ = { + AE560483D1E812790543F51C2DB1E1D0 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4BC067CAFA13189984037CEC34AF2FB1 /* DeltaCore.release.xcconfig */; + baseConfigurationReference = 4D6EF79D3CEDF22176E037E94AF82A40 /* SDWebImage.debug.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; - CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/DeltaCore/DeltaCore-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MODULEMAP_FILE = Headers/Public/DeltaCore/DeltaCore.modulemap; + GCC_PREFIX_HEADER = "Target Support Files/SDWebImage/SDWebImage-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + MODULEMAP_FILE = Headers/Public/SDWebImage/SDWebImage.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = DeltaCore; - PRODUCT_NAME = DeltaCore; + PRODUCT_MODULE_NAME = SDWebImage; + PRODUCT_NAME = SDWebImage; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.3.2; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; - D9CD63CD336C60FA6FC570EF5F54A5F5 /* Debug */ = { + BD9DE08F4753E860A67DFCCBDF865B7D /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 598055BE88FB8053259FAF21F5B8BAD1 /* SMCalloutView.debug.xcconfig */; + baseConfigurationReference = B31FBFB1194FC0975DE5F959F3A36920 /* Alamofire.release.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SMCalloutView/SMCalloutView-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - MODULEMAP_FILE = Headers/Public/SMCalloutView/SMCalloutView.modulemap; + GCC_PREFIX_HEADER = "Target Support Files/Alamofire/Alamofire-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MODULEMAP_FILE = Headers/Public/Alamofire/Alamofire.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SMCalloutView; - PRODUCT_NAME = SMCalloutView; + PRODUCT_MODULE_NAME = Alamofire; + PRODUCT_NAME = Alamofire; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 5.3.2; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; - DDEC84E6CEB734860A428CA701DBFD50 /* Debug */ = { + C72D38F1F5B6129B37489EED3028C15E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5D042F73BB66CA682FF5DD25BC25323C /* SDWebImage.debug.xcconfig */; + baseConfigurationReference = F381603DE2011262E9A2C37926028861 /* Pods-Delta.release.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/SDWebImage/SDWebImage-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - MODULEMAP_FILE = Headers/Public/SDWebImage/SDWebImage.modulemap; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Delta/Pods-Delta.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = SDWebImage; - PRODUCT_NAME = SDWebImage; - PUBLIC_HEADERS_FOLDER_PATH = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; }; - EA166AFD8EF1958072F2EC36A10FF11A /* Release */ = { + D99E09D2626913D86B93BF6975B8FF84 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 527B0D212D04816961FAE82E46B743AF /* N64DeltaCore.release.xcconfig */; + baseConfigurationReference = 1753A5241A5788A0023D64CB7CFC5107 /* GoogleAPIClientForREST.debug.xcconfig */; buildSettings = { - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/N64DeltaCore"; - IBSC_MODULE = N64DeltaCore; - INFOPLIST_FILE = "Target Support Files/N64DeltaCore/ResourceBundle-Mupen64Plus-N64DeltaCore-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = Mupen64Plus; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + GCC_PREFIX_HEADER = "Target Support Files/GoogleAPIClientForREST/GoogleAPIClientForREST-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + MODULEMAP_FILE = Headers/Public/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_MODULE_NAME = GoogleAPIClientForREST; + PRODUCT_NAME = GoogleAPIClientForREST; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.3.2; TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; }; - name = Release; + name = Debug; }; - EB757FEA33ABD47553334551C4DF2CFC /* Release */ = { + DED7EE74510C91680DD3BC1C96E87AC8 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6E1E6B172372CDF4080C7440C0152069 /* NESDeltaCore.release.xcconfig */; + baseConfigurationReference = A34489EBF25913D7D0197EFF7FA146A3 /* Pods-Delta.debug.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/NESDeltaCore/NESDeltaCore-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; - MODULEMAP_FILE = Headers/Public/NESDeltaCore/NESDeltaCore.modulemap; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Delta/Pods-Delta.modulemap"; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = NESDeltaCore; - PRODUCT_NAME = NESDeltaCore; - PUBLIC_HEADERS_FOLDER_PATH = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; }; - name = Release; + name = Debug; }; - EC72ADF2FF4B313F278E69C09BD84051 /* Release */ = { + DFFA8A1E694AC39441EFF29336705359 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BC9E8968583BFAD0D15B54B5E52F9947 /* Harmony.release.xcconfig */; + baseConfigurationReference = 16CB5FC0E533EEE1D7568404E10D67A9 /* Harmony.release.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -13602,122 +3811,110 @@ SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 5.3.2; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; }; name = Release; }; - ECC86CE0937D5E2168168069AD2D4D4B /* Debug */ = { + EE4B61CB33FFFD9A6BBBAD227A7D8424 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2732AC8F246A18F0714B4321F54DD531 /* DeltaCore.debug.xcconfig */; + baseConfigurationReference = 386D15C03B379B542FF0410F231BA99F /* Crashlytics.debug.xcconfig */; buildSettings = { - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/DeltaCore"; - IBSC_MODULE = DeltaCore; - INFOPLIST_FILE = "Target Support Files/DeltaCore/ResourceBundle-DeltaCore-DeltaCore-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = DeltaCore; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); SDKROOT = iphoneos; - SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; }; name = Debug; }; - F22BF6CC70F0821007D8A39D3E1F348B /* Debug */ = { + F0C58181C7F295F86F9709F441FCCF4F /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 990DFA0F64EC73731FE3D33EDE671F46 /* NESDeltaCore.debug.xcconfig */; + baseConfigurationReference = 5CF5B360D328C8B35503CA26B4FFAFE3 /* Fabric.debug.xcconfig */; buildSettings = { - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/NESDeltaCore"; - IBSC_MODULE = NESDeltaCore; - INFOPLIST_FILE = "Target Support Files/NESDeltaCore/ResourceBundle-NESDeltaCore-NESDeltaCore-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = NESDeltaCore; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + F21AC1F616392EFCE74002B17D39877E /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 03CBC6D6463E2AFC7FD88AD23E8D4CB0 /* GoogleSignIn.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); SDKROOT = iphoneos; - SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; }; name = Debug; }; - FB7DEEA1437AFE9B3EDDE197F4695CEC /* Debug */ = { + F9580F03121A0B773CB3D077ECC4E22F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6699C28C7C6519A74846481B5F2FC5A3 /* Alamofire.debug.xcconfig */; + baseConfigurationReference = 01CE7BCEE359799F962EE8AD463359F3 /* GTMSessionFetcher.release.xcconfig */; buildSettings = { - ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - GCC_PREFIX_HEADER = "Target Support Files/Alamofire/Alamofire-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MODULEMAP_FILE = Headers/Public/Alamofire/Alamofire.modulemap; + GCC_PREFIX_HEADER = "Target Support Files/GTMSessionFetcher/GTMSessionFetcher-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + MODULEMAP_FILE = Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PRIVATE_HEADERS_FOLDER_PATH = ""; - PRODUCT_MODULE_NAME = Alamofire; - PRODUCT_NAME = Alamofire; + PRODUCT_MODULE_NAME = GTMSessionFetcher; + PRODUCT_NAME = GTMSessionFetcher; PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.0; + SWIFT_VERSION = 5.3.2; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; }; - name = Debug; + name = Release; + }; + FA022FD835E65FA407EAD2C248B430A1 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6E7A43CE0B0458FE46C514110873F37A /* GoogleSignIn.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 0BF5B5A386A01E03AA17295E9B2FCA1B /* Build configuration list for PBXNativeTarget "DSDeltaCore-DSDeltaCore" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 992EB31BC901CCB23DE725E8AC04D9E6 /* Debug */, - 5E1309065972F444D9B760BF5A9612D6 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 0E66F217AE9A4E6C6B0AFB374F684855 /* Build configuration list for PBXNativeTarget "DeltaCore-DeltaCore" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - ECC86CE0937D5E2168168069AD2D4D4B /* Debug */, - 0C082C6F841D6B35FC82985B91620687 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 1CFD3133C2B2906904089868E9B38F3C /* Build configuration list for PBXNativeTarget "NESDeltaCore-NESDeltaCore" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F22BF6CC70F0821007D8A39D3E1F348B /* Debug */, - C59AD8131F219A4C0B7EA308044116BB /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 20E73C9865D5FD2BA7797AF6CF84A825 /* Build configuration list for PBXNativeTarget "GBADeltaCore-GBADeltaCore" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 30E873BEB50026BEAFB8517CFD228F17 /* Debug */, - B7ED63EAFF6DD63047950F140E1031D6 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 20F50134A7EBE5BBF644BED665FB3400 /* Build configuration list for PBXNativeTarget "Alamofire" */ = { isa = XCConfigurationList; buildConfigurations = ( - FB7DEEA1437AFE9B3EDDE197F4695CEC /* Debug */, - 6728B42E80187E49D719773A1EEBD0D8 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 2DE6D63B27CA8629F24AFB18C3298658 /* Build configuration list for PBXNativeTarget "MelonDSDeltaCore" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0BAB8AFC05E3DF018BE00DC43F7D8A1D /* Debug */, - B2B475E3639C42E09EF68D4A15ECB6FB /* Release */, + 15687DD34E5D1EC1C7598D10115B3A60 /* Debug */, + BD9DE08F4753E860A67DFCCBDF865B7D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -13725,8 +3922,8 @@ 2FD49999DA0C737E43F6B26D46E2798D /* Build configuration list for PBXAggregateTarget "Crashlytics" */ = { isa = XCConfigurationList; buildConfigurations = ( - 6D64EE3DE159E1C4A296EA270F706D7D /* Debug */, - D14224DDB463FC00831EF1CFB4FD4C9C /* Release */, + EE4B61CB33FFFD9A6BBBAD227A7D8424 /* Debug */, + 78EADD840C5191397D2E089EBACE4CD3 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -13734,17 +3931,17 @@ 30A0CB7B1940C25C2F4F333351C10E42 /* Build configuration list for PBXNativeTarget "SDWebImage" */ = { isa = XCConfigurationList; buildConfigurations = ( - DDEC84E6CEB734860A428CA701DBFD50 /* Debug */, - 243BF87C503C4EF61039D2E629DDA76A /* Release */, + AE560483D1E812790543F51C2DB1E1D0 /* Debug */, + 606B1388E3A587F85EFA30BEDF02A274 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 37C3FD9C7096F4FAAF7685E5013E0E72 /* Build configuration list for PBXNativeTarget "GBCDeltaCore-GBCDeltaCore" */ = { + 36D9322EAB7F7F9C092EBE25EA3AF412 /* Build configuration list for PBXAggregateTarget "Fabric" */ = { isa = XCConfigurationList; buildConfigurations = ( - A6A77E6E730BC62464964D25C9778E24 /* Debug */, - 975A4A99A6B71E3B9A9B44E550A8F0A8 /* Release */, + F0C58181C7F295F86F9709F441FCCF4F /* Debug */, + 5DB54D3700C8A51A0120CEE6B0821A94 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -13752,8 +3949,8 @@ 3C98678E8C686DBBBBE87622A916830D /* Build configuration list for PBXNativeTarget "Harmony" */ = { isa = XCConfigurationList; buildConfigurations = ( - 8D64F6503D35AF4013FD394A8D884EFF /* Debug */, - EC72ADF2FF4B313F278E69C09BD84051 /* Release */, + 651A0A0ACACECA14AC7246D5EE11D3A0 /* Debug */, + DFFA8A1E694AC39441EFF29336705359 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -13770,80 +3967,26 @@ 4831832D716DE9C50FF96385B6482F4A /* Build configuration list for PBXNativeTarget "SQLite.swift" */ = { isa = XCConfigurationList; buildConfigurations = ( - ADB56BFF95CAE83A302113A880E981CC /* Debug */, - A08B1AD6F2535BF94167BD3335038137 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 4BF404C2179A39D891CD80E3598B1292 /* Build configuration list for PBXNativeTarget "MelonDSDeltaCore-melonDS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 12EA75F085BC4D878B1B9B040ADFCD50 /* Debug */, - 565EB57DBE6F6B573FFFD6CB0305D8A6 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 4CE157C6DB0096B7CCEEF39922CCB72D /* Build configuration list for PBXNativeTarget "SNESDeltaCore" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - D8A0ABA9C13359C6A772A77B047100ED /* Debug */, - 460FDF27151A8DD11882F637359C2AE4 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 548B9083F85CF74CC3F295452333F1CE /* Build configuration list for PBXNativeTarget "GoogleToolboxForMac" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 2B27E2C9C47B64502BFFB658152AC29D /* Debug */, - C8FD9C49E5CC8AFCA89CE7C7F480B0BD /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 625DC7B3E84659D2E25B06C0604DCABC /* Build configuration list for PBXNativeTarget "GBCDeltaCore" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 62FA25CE75D0BA7535AB397FBD5B3002 /* Debug */, - 0FE218E7B0FEE833A2BD1CC8DDB804F1 /* Release */, + ADAFC39A883138538A67F17B39685DA2 /* Debug */, + 1F8070B50174D5EBA09DCBA7EC0D4F26 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 702303E70A99B0257F34233022A246A0 /* Build configuration list for PBXNativeTarget "DeltaCore" */ = { + 4B27E4B16A7605E7DE9ADB3F8632D6DC /* Build configuration list for PBXNativeTarget "Pods-Delta" */ = { isa = XCConfigurationList; buildConfigurations = ( - 235864BD7103490F1C5F92F2A39E65AF /* Debug */, - D8FFF9AF5FEF911EB245A732382C3919 /* Release */, + DED7EE74510C91680DD3BC1C96E87AC8 /* Debug */, + C72D38F1F5B6129B37489EED3028C15E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 81658FD265003CE78BE297C586EEEC87 /* Build configuration list for PBXNativeTarget "NESDeltaCore" */ = { + 710AF554780E0DDC06CD55C0824DB0AF /* Build configuration list for PBXNativeTarget "GoogleToolboxForMac" */ = { isa = XCConfigurationList; buildConfigurations = ( - 8BFFE9CF183167399B2CF2ABDA6DE754 /* Debug */, - EB757FEA33ABD47553334551C4DF2CFC /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 846E16CA47CD0B9782A3A0282B6DBCF1 /* Build configuration list for PBXNativeTarget "DSDeltaCore" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 19FB00D154449A82AEE2899DE6AB7C48 /* Debug */, - 8EBAAC2D8D41B9D7C466B6A3C71E4C97 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 8FB8C0238E21FD187D8CCCBF6F6744A1 /* Build configuration list for PBXNativeTarget "Roxas" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 951AB5156C9C05489923CDA7D9511111 /* Debug */, - 7CB4CB8FEF6F5425C3CCA0D040B6AF17 /* Release */, + 1E9FA8FB7B156E95BA80835DD37FAD90 /* Debug */, + 647A61AFF88E352A2B6857DC89F57E4C /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -13851,26 +3994,8 @@ 90C26BDA90A9831C30C653B5D2AF1843 /* Build configuration list for PBXNativeTarget "GoogleAPIClientForREST" */ = { isa = XCConfigurationList; buildConfigurations = ( - 7AED9DA5868F4DDD1FEFA7DEEFD9853F /* Debug */, - 60105B9BAE3A0AD89B453D8D159E00ED /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 93D0E009BD5EBD93EE11F4838E2145D3 /* Build configuration list for PBXAggregateTarget "Fabric" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B914DCCC7864E199918D664C6CE847D2 /* Debug */, - 774D2CBBCB24F14A6A9A4CB362B65DD6 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 98AE526D6E462A297EF202D7BE25F5EB /* Build configuration list for PBXNativeTarget "Pods-Delta" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0029B51DC6A97CABA32CEE15344DCA0E /* Debug */, - 7E30B00434175D977442397315098DB0 /* Release */, + D99E09D2626913D86B93BF6975B8FF84 /* Debug */, + 4BAC29ED96D0795BFF96FA7A28A7154B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -13878,35 +4003,17 @@ A118FE5B7C9EE53DE03038A50E9AA1E6 /* Build configuration list for PBXAggregateTarget "GoogleSignIn" */ = { isa = XCConfigurationList; buildConfigurations = ( - 1B66713D37FBE1730360595A0CE795E4 /* Debug */, - AF5E6B412A09F44196B2B7B2417AEEF4 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - A75572E849982CFBC18ACEBB47B74707 /* Build configuration list for PBXNativeTarget "GBADeltaCore" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 14D9B430A86A64EDC695F5CEEBE82360 /* Debug */, - 7A26CEE973D7FEBC6ABA26736352DDB2 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B9E1D438A3067CA0431F870C7FEF0260 /* Build configuration list for PBXNativeTarget "ZIPFoundation" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 48C9D3A72B34526E583AEE9F44F389DD /* Debug */, - B8A79C6AAB8983B13DC9843B6F90870A /* Release */, + F21AC1F616392EFCE74002B17D39877E /* Debug */, + FA022FD835E65FA407EAD2C248B430A1 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - BAB0F6218571491088AC6BA978A71D75 /* Build configuration list for PBXNativeTarget "N64DeltaCore" */ = { + AC88BDD15F87D276844BEC202AFCCD4D /* Build configuration list for PBXNativeTarget "SwiftyDropbox" */ = { isa = XCConfigurationList; buildConfigurations = ( - 1218DF4743AA020B61F781015542A0B6 /* Debug */, - 16AC385EFCE76158B54948376A474355 /* Release */, + 327C317BC84C9523B80D0CDA55CC1882 /* Debug */, + 5C0AF6886CC220DEB4F7CD115879D8D6 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -13914,8 +4021,8 @@ BB07493EBFDFDB75360BF9DF17195333 /* Build configuration list for PBXNativeTarget "SMCalloutView" */ = { isa = XCConfigurationList; buildConfigurations = ( - D9CD63CD336C60FA6FC570EF5F54A5F5 /* Debug */, - 8D255A64D8608E696B198983F7E73CE7 /* Release */, + 62FD9EEDA88773E80DFD3DB40818F4BB /* Debug */, + 5CB5DFE35A580C24B8548539315538D1 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -13923,35 +4030,17 @@ D2C52F7C31F8F18B3E7649A2B825768D /* Build configuration list for PBXNativeTarget "GTMSessionFetcher" */ = { isa = XCConfigurationList; buildConfigurations = ( - 910E1DB60BB450128BB9F6231B9AC4B9 /* Debug */, - 5AA931B9471AC94F9DE966FF62CA3252 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - D3581C88B7891BCC579EC04D431D735A /* Build configuration list for PBXNativeTarget "SNESDeltaCore-SNESDeltaCore" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 727ADD9192464C7358B09509853A2720 /* Debug */, - 854FEA136BA0488F8DD56BC285E6C1D4 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - E68E4BB27FDA7D65D7B601C9AA72818F /* Build configuration list for PBXNativeTarget "N64DeltaCore-Mupen64Plus" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - A349E210B29277FCCFA335A2A5A466CA /* Debug */, - EA166AFD8EF1958072F2EC36A10FF11A /* Release */, + 0CD89219308680E0272D033C879E8559 /* Debug */, + F9580F03121A0B773CB3D077ECC4E22F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - F012BBB590EC4AFAF059E42752E0ACEF /* Build configuration list for PBXNativeTarget "SwiftyDropbox" */ = { + D4AAE8817A76FBD95C5FD15E42AF387D /* Build configuration list for PBXNativeTarget "Roxas" */ = { isa = XCConfigurationList; buildConfigurations = ( - 3EB1DEA806C76553F72174C7D16DEC22 /* Debug */, - C226202E90B95599EBAAA151D5DEF733 /* Release */, + 079321C39597FF333066B22FE1FEFF0F /* Debug */, + 33DF3F8C3E11569871C141BE353C6B4D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -13959,13 +4048,13 @@ /* End XCConfigurationList section */ /* Begin XCVersionGroup section */ - 3C893D67B4BD7AEA8DA3F7AEBEB02DBB /* Harmony.xcdatamodeld */ = { + 02F78662647C8B3C01B06CCA204E1BB4 /* Harmony.xcdatamodeld */ = { isa = XCVersionGroup; children = ( - C8ED8D35DD5BB35B47AEC9CE41BE374C /* Harmony.xcdatamodel */, - 9CDC50A23CCFC7F62517648ADA5BCD7A /* Harmony 2.xcdatamodel */, + 2461105F4D84EEA2FE4CFAF2E0CD90E1 /* Harmony.xcdatamodel */, + C2E4A129BBEABD3561950AD3AC39E662 /* Harmony 2.xcdatamodel */, ); - currentVersion = 9CDC50A23CCFC7F62517648ADA5BCD7A /* Harmony 2.xcdatamodel */; + currentVersion = C2E4A129BBEABD3561950AD3AC39E662 /* Harmony 2.xcdatamodel */; name = Harmony.xcdatamodeld; path = "Harmony/Model/Core Data/Harmony.xcdatamodeld"; sourceTree = ""; diff --git a/Pods/Roxas/Roxas/NSBundle+Extensions.h b/Pods/Roxas/Roxas/NSBundle+Extensions.h new file mode 100644 index 000000000..a1202b156 --- /dev/null +++ b/Pods/Roxas/Roxas/NSBundle+Extensions.h @@ -0,0 +1,15 @@ +// +// NSBundle+Extensions.h +// Roxas +// +// Created by Riley Testut on 12/14/14. +// Copyright (c) 2014 Riley Testut. All rights reserved. +// + +@import Foundation; + +@interface NSBundle (Extensions) + ++ (BOOL)isAppExtension; + +@end diff --git a/Pods/Roxas/Roxas/NSBundle+Extensions.m b/Pods/Roxas/Roxas/NSBundle+Extensions.m new file mode 100644 index 000000000..fd244c491 --- /dev/null +++ b/Pods/Roxas/Roxas/NSBundle+Extensions.m @@ -0,0 +1,18 @@ +// +// NSBundle+Extensions.m +// Roxas +// +// Created by Riley Testut on 12/14/14. +// Copyright (c) 2014 Riley Testut. All rights reserved. +// + +#import "NSBundle+Extensions.h" + +@implementation NSBundle (Extensions) + ++ (BOOL)isAppExtension +{ + return [[[self mainBundle] executablePath] containsString:@".appex/"]; +} + +@end diff --git a/Pods/Roxas/Roxas/NSConstraintConflict+Conveniences.h b/Pods/Roxas/Roxas/NSConstraintConflict+Conveniences.h new file mode 100644 index 000000000..11caf145d --- /dev/null +++ b/Pods/Roxas/Roxas/NSConstraintConflict+Conveniences.h @@ -0,0 +1,23 @@ +// +// NSConstraintConflict+Conveniences.h +// Roxas +// +// Created by Riley Testut on 10/4/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +@import CoreData; + +NS_ASSUME_NONNULL_BEGIN + +@interface NSConstraintConflict (Conveniences) + +@property (nonatomic, readonly) NSSet *allObjects; + +@property (nonatomic, readonly) NSMapTable *> *snapshots; + ++ (NSMapTable *> *)cacheSnapshotsForConflicts:(NSArray *)conflicts; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/NSConstraintConflict+Conveniences.m b/Pods/Roxas/Roxas/NSConstraintConflict+Conveniences.m new file mode 100644 index 000000000..7cfda1f7a --- /dev/null +++ b/Pods/Roxas/Roxas/NSConstraintConflict+Conveniences.m @@ -0,0 +1,108 @@ +// +// NSConstraintConflict+Conveniences.m +// Roxas +// +// Created by Riley Testut on 10/4/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +#import "NSConstraintConflict+Conveniences.h" + +@import ObjectiveC.runtime; + +@interface NSManagedObject (ConstraintConflict) +@end + +@implementation NSManagedObject (ConstraintConflict) + +- (NSDictionary *)rst_snapshot +{ + NSArray *keys = self.entity.propertiesByName.allKeys; + + NSDictionary *snapshot = [self dictionaryWithValuesForKeys:keys]; + return snapshot; +} + +@end + +@implementation NSConstraintConflict (Conveniences) + +- (NSSet *)allObjects +{ + NSMutableSet *allObjects = [NSMutableSet setWithArray:self.conflictingObjects]; + if (self.databaseObject != nil) + { + [allObjects addObject:self.databaseObject]; + } + + return allObjects; +} + +- (NSMapTable *> *)snapshots +{ + NSMapTable *> *snapshots = objc_getAssociatedObject(self, @selector(snapshots)); + if (snapshots != nil) + { + return snapshots; + } + + snapshots = [NSMapTable strongToStrongObjectsMapTable]; + + for (NSManagedObject *managedObject in self.allObjects) + { + NSMutableDictionary *snapshot = [NSMutableDictionary dictionary]; + + for (NSPropertyDescription *property in managedObject.entity.properties) + { + if ([property isTransient] || [property isKindOfClass:[NSFetchedPropertyDescription class]]) + { + continue; + } + + id value = [managedObject valueForKey:property.name]; + + if ([property isKindOfClass:[NSRelationshipDescription class]] && [(NSRelationshipDescription *)property isToMany]) + { + // Must create a mutable set then add objects to it to prevent rare crash when relationship is still a fault. + NSMutableSet *relationshipObjects = [[NSMutableSet alloc] init]; + + NSSet *set = (NSSet *)value; + for (id value in set) + { + [relationshipObjects addObject:value]; + } + + snapshot[property.name] = relationshipObjects; + } + else + { + snapshot[property.name] = value; + } + } + + [snapshots setObject:snapshot forKey:managedObject]; + } + + objc_setAssociatedObject(self, @selector(snapshots), snapshots, OBJC_ASSOCIATION_RETAIN_NONATOMIC); + + return snapshots; +} + ++ (NSMapTable *> *)cacheSnapshotsForConflicts:(NSArray *)conflicts +{ + NSMapTable *> *snapshots = [NSMapTable strongToStrongObjectsMapTable]; + + for (NSConstraintConflict *conflict in conflicts) + { + NSMapTable *> *conflictSnapshots = conflict.snapshots; + for (NSManagedObject *managedObject in conflictSnapshots) + { + NSDictionary *snapshot = [conflictSnapshots objectForKey:managedObject]; + [snapshots setObject:snapshot forKey:managedObject]; + } + } + + return snapshots; +} + +@end diff --git a/Pods/Roxas/Roxas/NSFileManager+URLs.h b/Pods/Roxas/Roxas/NSFileManager+URLs.h new file mode 100644 index 000000000..9b020234c --- /dev/null +++ b/Pods/Roxas/Roxas/NSFileManager+URLs.h @@ -0,0 +1,29 @@ +// +// NSFileManager+URLs.h +// Roxas +// +// Created by Riley Testut on 12/21/14. +// Copyright (c) 2014 Riley Testut. All rights reserved. +// + +@import Foundation; + +NS_ASSUME_NONNULL_BEGIN + +@interface NSFileManager (URLs) + +@property (readonly, copy) NSURL *documentsDirectory; +@property (readonly, copy) NSURL *libraryDirectory; +@property (readonly, copy) NSURL *applicationSupportDirectory; +@property (readonly, copy) NSURL *cachesDirectory; + +- (NSURL *)uniqueTemporaryURL; + +// Automatically removes item at temporaryURL upon returning from block. Synchronous. +- (void)prepareTemporaryURL:(void(^)(NSURL *temporaryURL))fileHandlingBlock; + +- (BOOL)copyItemAtURL:(NSURL *)sourceURL toURL:(NSURL *)destinationURL shouldReplace:(BOOL)shouldReplace error:(NSError *__autoreleasing _Nullable *)error; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/NSFileManager+URLs.m b/Pods/Roxas/Roxas/NSFileManager+URLs.m new file mode 100644 index 000000000..806953d7e --- /dev/null +++ b/Pods/Roxas/Roxas/NSFileManager+URLs.m @@ -0,0 +1,108 @@ +// +// NSFileManager+URLs.m +// Roxas +// +// Created by Riley Testut on 12/21/14. +// Copyright (c) 2014 Riley Testut. All rights reserved. +// + +#import "NSFileManager+URLs.h" + +@implementation NSFileManager (URLs) + +- (void)prepareTemporaryURL:(void (^)(NSURL *))fileHandlingBlock +{ + if (fileHandlingBlock == nil) + { + return; + } + + NSURL *temporaryURL = [self uniqueTemporaryURL]; + + fileHandlingBlock(temporaryURL); + + NSError *error = nil; + if (![self removeItemAtURL:temporaryURL error:&error]) + { + // Ignore this error, because it means the client has manually removed the file themselves + if (error.code != NSFileNoSuchFileError) + { + ELog(error); + } + } +} + +- (BOOL)copyItemAtURL:(NSURL *)sourceURL toURL:(NSURL *)destinationURL shouldReplace:(BOOL)shouldReplace error:(NSError *__autoreleasing _Nullable *)error +{ + if (!shouldReplace) + { + return [self copyItemAtURL:sourceURL toURL:destinationURL error:error]; + } + + NSURL *temporaryDirectory = [self URLForDirectory:NSItemReplacementDirectory inDomain:NSUserDomainMask appropriateForURL:destinationURL create:YES error:error]; + if (temporaryDirectory == nil) + { + return NO; + } + + void (^removeDirectory)(void) = ^{ + NSError *error = nil; + if (![self removeItemAtURL:temporaryDirectory error:&error]) + { + ELog(error); + } + }; + + NSURL *temporaryURL = [temporaryDirectory URLByAppendingPathComponent:[[NSUUID UUID] UUIDString]]; + if (![self copyItemAtURL:sourceURL toURL:temporaryURL error:error]) + { + removeDirectory(); + return NO; + } + + if (![self replaceItemAtURL:destinationURL withItemAtURL:temporaryURL backupItemName:nil options:0 resultingItemURL:nil error:error]) + { + removeDirectory(); + return NO; + } + + removeDirectory(); + return YES; +} + +#pragma mark - Getters/Setters - + +- (NSURL *)uniqueTemporaryURL +{ + NSURL *temporaryDirectoryURL = [NSURL fileURLWithPath:NSTemporaryDirectory() isDirectory:YES]; + NSString *uniqueIdentifier = [[NSProcessInfo processInfo] globallyUniqueString]; + + NSURL *temporaryURL = [temporaryDirectoryURL URLByAppendingPathComponent:uniqueIdentifier]; + return temporaryURL; +} + +- (NSURL *)documentsDirectory +{ + NSURL *documentsDirectory = [self URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask].firstObject; + return documentsDirectory; +} + +- (NSURL *)libraryDirectory +{ + NSURL *libraryDirectory = [self URLsForDirectory:NSLibraryDirectory inDomains:NSUserDomainMask].firstObject; + return libraryDirectory; +} + +- (NSURL *)applicationSupportDirectory +{ + NSURL *applicationSupportDirectory = [self URLsForDirectory:NSApplicationSupportDirectory inDomains:NSUserDomainMask].firstObject; + return applicationSupportDirectory; +} + +- (NSURL *)cachesDirectory +{ + NSURL *cachesDirectory = [self URLsForDirectory:NSCachesDirectory inDomains:NSUserDomainMask].firstObject; + return cachesDirectory; +} + +@end diff --git a/Pods/Roxas/Roxas/NSLayoutConstraint+Edges.h b/Pods/Roxas/Roxas/NSLayoutConstraint+Edges.h new file mode 100644 index 000000000..0e76317b0 --- /dev/null +++ b/Pods/Roxas/Roxas/NSLayoutConstraint+Edges.h @@ -0,0 +1,31 @@ +// +// NSLayoutConstraint+Edges.h +// Roxas +// +// Created by Riley Testut on 5/2/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +@import UIKit; + +NS_ASSUME_NONNULL_BEGIN + +@interface NSLayoutConstraint (Edges) + ++ (NSArray *)constraintsPinningEdgesOfView:(UIView *)view1 toEdgesOfView:(UIView *)view2; ++ (NSArray *)constraintsPinningEdgesOfView:(UIView *)view1 toEdgesOfView:(UIView *)view2 withInsets:(UIEdgeInsets)insets; + +@end + +NS_ASSUME_NONNULL_END + + +NS_ASSUME_NONNULL_BEGIN + +@interface UIView (PinnedEdges) + +- (void)addSubview:(UIView *)view pinningEdgesWithInsets:(UIEdgeInsets)insets; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/NSLayoutConstraint+Edges.m b/Pods/Roxas/Roxas/NSLayoutConstraint+Edges.m new file mode 100644 index 000000000..97dcf84e3 --- /dev/null +++ b/Pods/Roxas/Roxas/NSLayoutConstraint+Edges.m @@ -0,0 +1,42 @@ +// +// NSLayoutConstraint+Edges.m +// Roxas +// +// Created by Riley Testut on 5/2/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +#import "NSLayoutConstraint+Edges.h" + +@implementation NSLayoutConstraint (Edges) + ++ (NSArray *)constraintsPinningEdgesOfView:(UIView *)view1 toEdgesOfView:(UIView *)view2 +{ + return [self constraintsPinningEdgesOfView:view1 toEdgesOfView:view2 withInsets:UIEdgeInsetsZero]; +} + ++ (NSArray *)constraintsPinningEdgesOfView:(UIView *)view1 toEdgesOfView:(UIView *)view2 withInsets:(UIEdgeInsets)insets +{ + NSLayoutConstraint *topConstraint = [view1.topAnchor constraintEqualToAnchor:view2.topAnchor constant:insets.top]; + NSLayoutConstraint *bottomConstraint = [view2.bottomAnchor constraintEqualToAnchor:view1.bottomAnchor constant:insets.bottom]; + NSLayoutConstraint *leftConstraint = [view1.leftAnchor constraintEqualToAnchor:view2.leftAnchor constant:insets.left]; + NSLayoutConstraint *rightConstraint = [view2.rightAnchor constraintEqualToAnchor:view1.rightAnchor constant:insets.right]; + + return @[topConstraint, bottomConstraint, leftConstraint, rightConstraint]; +} + +@end + + +@implementation UIView (PinnedEdges) + +- (void)addSubview:(UIView *)view pinningEdgesWithInsets:(UIEdgeInsets)insets +{ + view.translatesAutoresizingMaskIntoConstraints = NO; + [self addSubview:view]; + + NSArray *pinningConstraints = [NSLayoutConstraint constraintsPinningEdgesOfView:view toEdgesOfView:self withInsets:insets]; + [NSLayoutConstraint activateConstraints:pinningConstraints]; +} + +@end diff --git a/Pods/Roxas/Roxas/NSPredicate+Search.h b/Pods/Roxas/Roxas/NSPredicate+Search.h new file mode 100644 index 000000000..54682c14b --- /dev/null +++ b/Pods/Roxas/Roxas/NSPredicate+Search.h @@ -0,0 +1,19 @@ +// +// NSPredicate+Search.h +// Roxas +// +// Created by Riley Testut on 2/14/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +@import Foundation; + +NS_ASSUME_NONNULL_BEGIN + +@interface NSPredicate (Search) + ++ (instancetype)predicateForSearchingForText:(NSString *)searchText inValuesForKeyPaths:(NSSet *)keyPaths; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/NSPredicate+Search.m b/Pods/Roxas/Roxas/NSPredicate+Search.m new file mode 100644 index 000000000..77f07012c --- /dev/null +++ b/Pods/Roxas/Roxas/NSPredicate+Search.m @@ -0,0 +1,64 @@ +// +// NSPredicate+Search.m +// Roxas +// +// Created by Riley Testut on 2/14/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +#import "NSPredicate+Search.h" + +@implementation NSPredicate (Search) + ++ (instancetype)predicateForSearchingForText:(NSString *)searchText inValuesForKeyPaths:(NSSet *)keyPaths +{ + if (keyPaths.count == 0) + { + return [NSPredicate predicateWithValue:NO]; + } + + if (searchText.length == 0) + { + return [NSPredicate predicateWithValue:YES]; + } + + // Strip out all the leading and trailing spaces. + NSString *strippedString = [searchText stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; + + // Break up the search terms (separated by spaces). + NSArray *searchTerms = [strippedString componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; + + NSMutableArray *subpredicates = [NSMutableArray arrayWithCapacity:keyPaths.count]; + + for (NSString *searchTerm in searchTerms) + { + // Every search term must exist in at least ONE keyPath value. + // To accomplish this, we use an OR predicate when iterating keyPaths (since only one needs to return true), + // and then combine them with an AND predicate at the end (to ensure each search term exists somewhere). + + NSMutableArray *andPredicates = [NSMutableArray array]; + + for (NSString *keyPath in keyPaths) + { + // Determine whether lhs (valueForKeyPath) contains rhs (a term from searchText) + NSExpression *lhs = [NSExpression expressionForKeyPath:keyPath]; + NSExpression *rhs = [NSExpression expressionForConstantValue:searchTerm]; + + NSPredicate *predicate = [NSComparisonPredicate predicateWithLeftExpression:lhs + rightExpression:rhs + modifier:NSDirectPredicateModifier + type:NSContainsPredicateOperatorType + options:NSCaseInsensitivePredicateOption | NSDiacriticInsensitivePredicateOption]; + + [andPredicates addObject:predicate]; + } + + NSCompoundPredicate *compoundPredicate = [NSCompoundPredicate orPredicateWithSubpredicates:andPredicates]; + [subpredicates addObject:compoundPredicate]; + } + + NSCompoundPredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:subpredicates]; + return predicate; +} + +@end diff --git a/Pods/Roxas/Roxas/NSString+Localization.h b/Pods/Roxas/Roxas/NSString+Localization.h new file mode 100644 index 000000000..5ac0e783e --- /dev/null +++ b/Pods/Roxas/Roxas/NSString+Localization.h @@ -0,0 +1,19 @@ +// +// NSString+Localization.h +// Roxas +// +// Created by Riley Testut on 1/13/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +@import Foundation; + +NS_ASSUME_NONNULL_BEGIN + +@interface NSString (Localization) + +NSString *RSTSystemLocalizedString(NSString *); + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/NSString+Localization.m b/Pods/Roxas/Roxas/NSString+Localization.m new file mode 100644 index 000000000..b6e7bbbf5 --- /dev/null +++ b/Pods/Roxas/Roxas/NSString+Localization.m @@ -0,0 +1,37 @@ +// +// NSString+Localization.m +// Roxas +// +// Created by Riley Testut on 1/13/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +#import "NSString+Localization.h" + +@import UIKit; + +NSString *RSTSystemLocalizedStringNotFound = @"com.rileytestut.RSTSystemLocalizedStringNotFound"; + +@implementation NSString (Localization) + +NSString *RSTSystemLocalizedString(NSString *string) +{ + NSBundle *bundle = [NSBundle bundleForClass:UIApplication.class]; + + NSString *localizedString = [bundle localizedStringForKey:string value:RSTSystemLocalizedStringNotFound table:nil]; + + if ([localizedString isEqualToString:RSTSystemLocalizedStringNotFound]) + { + NSString *assertMessage = [NSString stringWithFormat:@"'%@' is not a system localized string.", string]; + + // Throw exception in debug builds if string is not a system localized string. + NSCAssert(NO, assertMessage); + + // Assign localizedString to string so release builds simply return the input string. + localizedString = string; + } + + return localizedString; +} + +@end diff --git a/Pods/Roxas/Roxas/NSUserDefaults+DynamicProperties.h b/Pods/Roxas/Roxas/NSUserDefaults+DynamicProperties.h new file mode 100644 index 000000000..660d03c79 --- /dev/null +++ b/Pods/Roxas/Roxas/NSUserDefaults+DynamicProperties.h @@ -0,0 +1,13 @@ +// +// NSUserDefaults+DynamicProperties.h +// Roxas +// +// Created by Riley Testut on 6/27/15. +// Copyright (c) 2015 Riley Testut. All rights reserved. +// + +@import Foundation; + +@interface NSUserDefaults (DynamicProperties) + +@end diff --git a/Pods/Roxas/Roxas/NSUserDefaults+DynamicProperties.m b/Pods/Roxas/Roxas/NSUserDefaults+DynamicProperties.m new file mode 100644 index 000000000..ca498c68f --- /dev/null +++ b/Pods/Roxas/Roxas/NSUserDefaults+DynamicProperties.m @@ -0,0 +1,378 @@ +// +// NSUserDefaults+DynamicProperties.m +// Roxas +// +// Created by Riley Testut on 6/27/15. +// Copyright (c) 2015 Riley Testut. All rights reserved. +// + +#import "NSUserDefaults+DynamicProperties.h" + +@import ObjectiveC.runtime; + +static NSDictionary *_propertyAccessorMethodsMappingDictionary = nil; + +typedef NS_ENUM(char, RSTObjCEncoding) +{ + // Normally I'd prefix these with the enum type, but in this case it's far more readable in practice + + Bool = 'B', + Char = 'c', + Float = 'f', + Double = 'd', + Int = 'i', + Long = 'l', + LongLong = 'q', + Object = '@', +}; + + +@interface RSTDummyObject : NSObject + +// Primitives +@property (assign, nonatomic) BOOL boolProperty; +@property (assign, nonatomic) float floatProperty; +@property (assign, nonatomic) double doubleProperty; +@property (assign, nonatomic) NSInteger integerProperty; + +// Objects +@property (copy, nonatomic) NSURL *URLProperty; +@property (strong, nonatomic) id objectProperty; + +@end + +@implementation RSTDummyObject +@end + + +@implementation NSUserDefaults (DynamicProperties) + ++ (void)initialize +{ + if (self != [NSUserDefaults class]) + { + return; + } + + unsigned int count = 0; + objc_property_t *properties = class_copyPropertyList([self class], &count); + + NSMutableDictionary *dictionary = [NSMutableDictionary dictionary]; + + for (unsigned int i = 0; i < count; i++) + { + objc_property_t property = properties[i]; + + const char *name = property_getName(property); + if (name == NULL) + { + continue; + } + + char *isDynamic = property_copyAttributeValue(property, "D"); + if (isDynamic != NULL) + { + // Property is a dynamic property + free(isDynamic); + } + else + { + // Not a dynamic property, so we'll ignore + continue; + } + + NSString *propertyName = [NSString stringWithCString:name encoding:[NSString defaultCStringEncoding]]; + + char *getter = property_copyAttributeValue(property, "G"); + if (getter != NULL) + { + // Use custom getter method as dictionary key + NSString *getterName = [NSString stringWithCString:getter encoding:[NSString defaultCStringEncoding]]; + dictionary[getterName] = propertyName; + + free(getter); + } + else + { + // Use property name as getter method for dictionary key (as per Cocoa conventions) + dictionary[propertyName] = propertyName; + } + + char *setter = property_copyAttributeValue(property, "S"); + if (setter != NULL) + { + // Use custom setter method as dictionary key + NSString *setterName = [NSString stringWithCString:setter encoding:[NSString defaultCStringEncoding]]; + dictionary[setterName] = propertyName; + + free(setter); + } + else + { + // Transform property name into setProperty: format for dictionary key (as per Cocoa conventions) + NSString *firstCharacter = [[propertyName substringWithRange:NSMakeRange(0, 1)] uppercaseString]; + + NSMutableString *setterName = [propertyName mutableCopy]; + [setterName replaceCharactersInRange:NSMakeRange(0, 1) withString:firstCharacter]; + [setterName insertString:@"set" atIndex:0]; + [setterName appendString:@":"]; + + dictionary[setterName] = propertyName; + } + } + + _propertyAccessorMethodsMappingDictionary = [dictionary copy]; + + free(properties); +} + ++ (BOOL)resolveInstanceMethod:(SEL)selector +{ + if ([super resolveInstanceMethod:selector]) + { + return YES; + } + + NSString *methodName = NSStringFromSelector(selector); + NSString *propertyName = _propertyAccessorMethodsMappingDictionary[methodName]; + + if (propertyName == nil) + { + return NO; + } + + objc_property_t property = class_getProperty(self, [propertyName cStringUsingEncoding:[NSString defaultCStringEncoding]]); + if (propertyName == NULL) + { + return NO; + } + + char *propertyEncoding = property_copyAttributeValue(property, "T"); + if (propertyEncoding == NULL) + { + return NO; + } + + BOOL isSetter = [[methodName substringFromIndex:methodName.length - 1] isEqualToString:@":"]; + + IMP imp = NULL; + const char *types = NULL; + + switch (*propertyEncoding) + { + case Bool: + case Char: + { + if (isSetter) + { + imp = (IMP)rst_setBoolValue; + types = method_getTypeEncoding(class_getInstanceMethod([RSTDummyObject class], @selector(setBoolProperty:))); + } + else + { + imp = (IMP)rst_boolValue; + types = method_getTypeEncoding(class_getInstanceMethod([RSTDummyObject class], @selector(boolProperty))); + } + + break; + } + + case Float: + { + if (isSetter) + { + imp = (IMP)rst_setFloatValue; + types = method_getTypeEncoding(class_getInstanceMethod([RSTDummyObject class], @selector(setFloatProperty:))); + } + else + { + imp = (IMP)rst_floatValue; + types = method_getTypeEncoding(class_getInstanceMethod([RSTDummyObject class], @selector(floatProperty))); + } + + break; + } + + case Double: + { + if (isSetter) + { + imp = (IMP)rst_setDoubleValue; + types = method_getTypeEncoding(class_getInstanceMethod([RSTDummyObject class], @selector(setDoubleProperty:))); + } + else + { + imp = (IMP)rst_doubleValue; + types = method_getTypeEncoding(class_getInstanceMethod([RSTDummyObject class], @selector(doubleProperty))); + } + + break; + } + + case Int: + case Long: + case LongLong: + { + if (isSetter) + { + imp = (IMP)rst_setIntegerValue; + types = method_getTypeEncoding(class_getInstanceMethod([RSTDummyObject class], @selector(setIntegerProperty:))); + } + else + { + imp = (IMP)rst_integerValue; + types = method_getTypeEncoding(class_getInstanceMethod([RSTDummyObject class], @selector(integerProperty))); + } + + break; + } + + case Object: + { + NSMutableString *propertyType = [NSMutableString stringWithUTF8String:propertyEncoding]; + [propertyType replaceOccurrencesOfString:@"@" withString:@"" options:0 range:NSMakeRange(0, propertyType.length)]; + [propertyType replaceOccurrencesOfString:@"\"" withString:@"" options:0 range:NSMakeRange(0, propertyType.length)]; + + BOOL isURL = NO; + + // From NSObject.mm (-[NSObject isKindOfClass:]) + for (Class class = NSClassFromString(propertyType); class; class = class_getSuperclass(class)) + { + if (class == [NSURL class]) + { + isURL = YES; + break; + } + } + + if (isURL) + { + if (isSetter) + { + imp = (IMP)rst_setURLValue; + types = method_getTypeEncoding(class_getInstanceMethod([RSTDummyObject class], @selector(setURLProperty:))); + } + else + { + imp = (IMP)rst_URLValue; + types = method_getTypeEncoding(class_getInstanceMethod([RSTDummyObject class], @selector(URLProperty))); + } + } + else + { + if (isSetter) + { + imp = (IMP)rst_setObjectValue; + types = method_getTypeEncoding(class_getInstanceMethod([RSTDummyObject class], @selector(setObjectProperty:))); + } + else + { + imp = (IMP)rst_objectValue; + types = method_getTypeEncoding(class_getInstanceMethod([RSTDummyObject class], @selector(objectProperty))); + } + } + + break; + } + + default: + { + @throw [NSException exceptionWithName:@"Unsupported Property Type" + reason:@"NSUserDefaults+DynamicProperties only supports dynamic properties of supported NSUserDefaults types. Check the NSUserDefaults documentation or header file to see what types can be directly set." + userInfo:nil]; + break; + } + } + + class_addMethod(self, selector, imp, types); + + return YES; +} + +#pragma mark - IMPs - + +#pragma mark - BOOL + +void rst_setBoolValue(id self, SEL _cmd, BOOL value) +{ + NSString *propertyName = _propertyAccessorMethodsMappingDictionary[NSStringFromSelector(_cmd)]; + [self setBool:value forKey:propertyName]; +} + +BOOL rst_boolValue(id self, SEL _cmd) +{ + NSString *propertyName = _propertyAccessorMethodsMappingDictionary[NSStringFromSelector(_cmd)]; + return [self boolForKey:propertyName]; +} + +#pragma mark - Float + +void rst_setFloatValue(id self, SEL _cmd, float value) +{ + NSString *propertyName = _propertyAccessorMethodsMappingDictionary[NSStringFromSelector(_cmd)]; + return [self setFloat:value forKey:propertyName]; +} + +float rst_floatValue(id self, SEL _cmd) +{ + NSString *propertyName = _propertyAccessorMethodsMappingDictionary[NSStringFromSelector(_cmd)]; + return [self floatForKey:propertyName]; +} + +#pragma mark - Double + +void rst_setDoubleValue(id self, SEL _cmd, double value) +{ + NSString *propertyName = _propertyAccessorMethodsMappingDictionary[NSStringFromSelector(_cmd)]; + return [self setDouble:value forKey:propertyName]; +} + +double rst_doubleValue(id self, SEL _cmd) +{ + NSString *propertyName = _propertyAccessorMethodsMappingDictionary[NSStringFromSelector(_cmd)]; + return [self doubleForKey:propertyName]; +} + +#pragma mark - Integer + +void rst_setIntegerValue(id self, SEL _cmd, NSInteger value) +{ + NSString *propertyName = _propertyAccessorMethodsMappingDictionary[NSStringFromSelector(_cmd)]; + return [self setInteger:value forKey:propertyName]; +} + +NSInteger rst_integerValue(id self, SEL _cmd) +{ + NSString *propertyName = _propertyAccessorMethodsMappingDictionary[NSStringFromSelector(_cmd)]; + return [self integerForKey:propertyName]; +} + +#pragma mark - URL + +void rst_setURLValue(id self, SEL _cmd, NSURL *value) +{ + NSString *propertyName = _propertyAccessorMethodsMappingDictionary[NSStringFromSelector(_cmd)]; + return [self setURL:[value copy] forKey:propertyName]; +} + +NSURL *rst_URLValue(id self, SEL _cmd) +{ + NSString *propertyName = _propertyAccessorMethodsMappingDictionary[NSStringFromSelector(_cmd)]; + return [self URLForKey:propertyName]; +} + +#pragma mark - Object + +void rst_setObjectValue(id self, SEL _cmd, id value) +{ + NSString *propertyName = _propertyAccessorMethodsMappingDictionary[NSStringFromSelector(_cmd)]; + return [self setObject:value forKey:propertyName]; +} + +id rst_objectValue(id self, SEL _cmd) +{ + NSString *propertyName = _propertyAccessorMethodsMappingDictionary[NSStringFromSelector(_cmd)]; + return [self objectForKey:propertyName]; +} + +@end diff --git a/Pods/Roxas/Roxas/RSTActivityIndicating.h b/Pods/Roxas/Roxas/RSTActivityIndicating.h new file mode 100644 index 000000000..4beffd8d9 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTActivityIndicating.h @@ -0,0 +1,24 @@ +// +// RSTActivityIndicating.h +// Roxas +// +// Created by Riley Testut on 4/2/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +@import UIKit; + +NS_ASSUME_NONNULL_BEGIN + +@protocol RSTActivityIndicating + +@property (nonatomic, getter=isIndicatingActivity) BOOL indicatingActivity; + +@property (nonatomic, readonly) NSUInteger activityCount; + +- (void)incrementActivityCount; +- (void)decrementActivityCount; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/RSTArrayDataSource.h b/Pods/Roxas/Roxas/RSTArrayDataSource.h new file mode 100644 index 000000000..9c304cf6d --- /dev/null +++ b/Pods/Roxas/Roxas/RSTArrayDataSource.h @@ -0,0 +1,58 @@ +// +// RSTArrayDataSource.h +// Roxas +// +// Created by Riley Testut on 2/13/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +#import "RSTCellContentDataSource.h" +#import "RSTCellContentPrefetchingDataSource.h" + +@class RSTCellContentChange; + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTArrayDataSource *, ViewType: UIScrollView *, DataSourceType> : RSTCellContentDataSource + +@property (copy, nonatomic) NSArray *items; + +- (instancetype)initWithItems:(NSArray *)items NS_DESIGNATED_INITIALIZER; + +- (void)setItems:(NSArray *)items withChanges:(nullable NSArray *)changes; + +- (instancetype)init NS_UNAVAILABLE; + +@end + + +@interface RSTArrayPrefetchingDataSource *, ViewType: UIScrollView *, DataSourceType, PrefetchContentType> : RSTArrayDataSource + +@property (nonatomic) NSCache *prefetchItemCache; + +@property (nullable, copy, nonatomic) NSOperation *_Nullable (^prefetchHandler)(ContentType item, NSIndexPath *indexPath, void (^completionHandler)(_Nullable PrefetchContentType item, NSError *_Nullable error)); +@property (nullable, copy, nonatomic) void (^prefetchCompletionHandler)(CellType cell, _Nullable PrefetchContentType item, NSIndexPath *indexPath, NSError *_Nullable error); + +@end + +NS_ASSUME_NONNULL_END + + +// Concrete Subclasses + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTArrayTableViewDataSource : RSTArrayDataSource> +@end + +@interface RSTArrayCollectionViewDataSource : RSTArrayDataSource> +@end + + +@interface RSTArrayTableViewPrefetchingDataSource : RSTArrayPrefetchingDataSource, PrefetchContentType> +@end + +@interface RSTArrayCollectionViewPrefetchingDataSource : RSTArrayPrefetchingDataSource, PrefetchContentType> +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/RSTArrayDataSource.m b/Pods/Roxas/Roxas/RSTArrayDataSource.m new file mode 100644 index 000000000..c0ca59a79 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTArrayDataSource.m @@ -0,0 +1,135 @@ +// +// RSTArrayDataSource.m +// Roxas +// +// Created by Riley Testut on 2/13/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +#import "RSTArrayDataSource.h" +#import "RSTCellContentDataSource_Subclasses.h" + +#import "RSTHelperFile.h" + + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTArrayDataSource () + +@property (nullable, copy, nonatomic) NSArray *filteredItems; + +@end + +NS_ASSUME_NONNULL_END + + +@implementation RSTArrayDataSource + +- (instancetype)initWithItems:(NSArray *)items +{ + self = [super init]; + if (self) + { + _items = [items copy]; + } + + return self; +} + +#pragma mark - RSTCellContentDataSource - + +- (id)itemAtIndexPath:(NSIndexPath *)indexPath +{ + NSArray *items = self.filteredItems ?: self.items; + return items[indexPath.row]; +} + +- (NSInteger)numberOfSectionsInContentView:(__kindof UIView *)contentView +{ + return 1; +} + +- (NSInteger)contentView:(__kindof UIView *)contentView numberOfItemsInSection:(NSInteger)section +{ + NSArray *items = self.filteredItems ?: self.items; + return items.count; +} + +- (void)filterContentWithPredicate:(nullable NSPredicate *)predicate +{ + if (predicate == nil) + { + self.filteredItems = nil; + } + else + { + self.filteredItems = [self.items filteredArrayUsingPredicate:predicate]; + } +} + +#pragma mark - Getters/Setters - + +- (void)setItems:(NSArray *)items +{ + [self setItems:items withChanges:nil]; +} + +- (void)setItems:(NSArray *)items withChanges:(NSArray *)changes +{ + _items = [items copy]; + + if (self.filteredItems) + { + [self filterContentWithPredicate:self.predicate]; + + rst_dispatch_sync_on_main_thread(^{ + [self.contentView reloadData]; + }); + } + else + { + if (changes) + { + [self.contentView beginUpdates]; + + for (RSTCellContentChange *change in changes) + { + [self addChange:change]; + } + + [self.contentView endUpdates]; + } + else + { + rst_dispatch_sync_on_main_thread(^{ + [self.contentView reloadData]; + }); + } + } +} + +@end + +@implementation RSTArrayTableViewDataSource +@end + +@implementation RSTArrayCollectionViewDataSource +@end + +@implementation RSTArrayPrefetchingDataSource +@dynamic prefetchItemCache; +@dynamic prefetchHandler; +@dynamic prefetchCompletionHandler; + +- (BOOL)isPrefetchingDataSource +{ + return YES; +} + +@end + +@implementation RSTArrayTableViewPrefetchingDataSource +@end + +@implementation RSTArrayCollectionViewPrefetchingDataSource +@end diff --git a/Pods/Roxas/Roxas/RSTBlockOperation.h b/Pods/Roxas/Roxas/RSTBlockOperation.h new file mode 100644 index 000000000..b40c102b0 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTBlockOperation.h @@ -0,0 +1,42 @@ +// +// RSTBlockOperation.h +// Roxas +// +// Created by Riley Testut on 2/20/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +#import "RSTOperation.h" + +NS_ASSUME_NONNULL_BEGIN + +// Similar to NSBlockOperation, but passes a reference to itself into executionBlock. +// This allows the code inside executionBlock to determine whether the operation has been cancelled, +// without resulting in a strong reference cycle. +@interface RSTBlockOperation : RSTOperation + +@property (copy, nonatomic, readonly) void (^executionBlock)(__weak RSTBlockOperation *); +@property (nullable, copy, nonatomic) void (^cancellationBlock)(void); + ++ (instancetype)blockOperationWithExecutionBlock:(void (^)(__weak RSTBlockOperation *))executionBlock; + +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END + + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTAsyncBlockOperation : RSTBlockOperation + +@property (copy, nonatomic, readonly) void (^executionBlock)(__weak RSTAsyncBlockOperation *); + ++ (instancetype)blockOperationWithExecutionBlock:(void (^)(__weak RSTAsyncBlockOperation *))executionBlock; + +- (void)finish; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/RSTBlockOperation.m b/Pods/Roxas/Roxas/RSTBlockOperation.m new file mode 100644 index 000000000..c5fdddb12 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTBlockOperation.m @@ -0,0 +1,73 @@ +// +// RSTBlockOperation.m +// Roxas +// +// Created by Riley Testut on 2/20/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +#import "RSTBlockOperation.h" +#import "RSTOperation_Subclasses.h" + +@interface RSTBlockOperation () + +@property (copy, nonatomic, readwrite) void (^executionBlock)(__weak RSTBlockOperation *); + +@end + +@implementation RSTBlockOperation + +- (instancetype)initWithExecutionBlock:(void (^)(__weak RSTBlockOperation * _Nonnull))executionBlock +{ + self = [super init]; + if (self) + { + _executionBlock = [executionBlock copy]; + } + + return self; +} + ++ (instancetype)blockOperationWithExecutionBlock:(void (^)(__weak RSTBlockOperation * _Nonnull))executionBlock +{ + RSTBlockOperation *operation = [[self.class alloc] initWithExecutionBlock:executionBlock]; + return operation; +} + +- (void)main +{ + self.executionBlock(self); +} + +- (void)cancel +{ + [super cancel]; + + if (self.cancellationBlock) + { + self.cancellationBlock(); + } +} + +@end + + +@implementation RSTAsyncBlockOperation +@dynamic executionBlock; + +- (BOOL)isAsynchronous +{ + return YES; +} + ++ (instancetype)blockOperationWithExecutionBlock:(void (^)(__weak RSTAsyncBlockOperation * _Nonnull))executionBlock +{ + return [super blockOperationWithExecutionBlock:(void(^_Nonnull)(RSTBlockOperation *_Nonnull __weak))executionBlock]; +} + +- (void)finish +{ + [super finish]; +} + +@end diff --git a/Pods/Roxas/Roxas/RSTCellContentCell.h b/Pods/Roxas/Roxas/RSTCellContentCell.h new file mode 100644 index 000000000..5f5630dad --- /dev/null +++ b/Pods/Roxas/Roxas/RSTCellContentCell.h @@ -0,0 +1,21 @@ +// +// RSTCellContentCell.h +// Roxas +// +// Created by Riley Testut on 2/20/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +@import UIKit; + +NS_ASSUME_NONNULL_BEGIN + +@protocol RSTCellContentCell + +@property (class, nullable, nonatomic, readonly) UINib *nib; + ++ (nullable instancetype)instantiateWithNib:(UINib *)nib; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/RSTCellContentChange.h b/Pods/Roxas/Roxas/RSTCellContentChange.h new file mode 100644 index 000000000..7e2d8d534 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTCellContentChange.h @@ -0,0 +1,57 @@ +// +// RSTCellContentChange.h +// Roxas +// +// Created by Riley Testut on 8/2/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +#import "RSTDefines.h" + +@import UIKit; +@import CoreData; + +@class RSTCellContentChange; + +NS_ASSUME_NONNULL_BEGIN + +extern NSInteger RSTUnknownSectionIndex; + +typedef NS_ENUM(NSInteger, RSTCellContentChangeType) +{ + RSTCellContentChangeInsert = NSFetchedResultsChangeInsert, + RSTCellContentChangeDelete = NSFetchedResultsChangeDelete, + RSTCellContentChangeMove = NSFetchedResultsChangeMove, + RSTCellContentChangeUpdate = NSFetchedResultsChangeUpdate, +}; + +RST_EXTERN RSTCellContentChangeType RSTCellContentChangeTypeFromFetchedResultsChangeType(NSFetchedResultsChangeType type); +RST_EXTERN NSFetchedResultsChangeType NSFetchedResultsChangeTypeFromCellContentChangeType(RSTCellContentChangeType type); + +NS_ASSUME_NONNULL_END + + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTCellContentChange : NSObject + +@property (nonatomic, readonly) RSTCellContentChangeType type; + +@property (nullable, copy, nonatomic, readonly) NSIndexPath *currentIndexPath; +@property (nullable, copy, nonatomic, readonly) NSIndexPath *destinationIndexPath; + +// Defaults to RSTUnknownSectionIndex if not representing a section. +@property (nonatomic, readonly) NSInteger sectionIndex; + +// Animation to use when applied to a UITableView. +@property (nonatomic) UITableViewRowAnimation rowAnimation; + +- (instancetype)initWithType:(RSTCellContentChangeType)type currentIndexPath:(nullable NSIndexPath *)currentIndexPath destinationIndexPath:(nullable NSIndexPath *)destinationIndexPath NS_DESIGNATED_INITIALIZER; + +- (instancetype)initWithType:(RSTCellContentChangeType)type sectionIndex:(NSInteger)sectionIndex NS_DESIGNATED_INITIALIZER; + +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/RSTCellContentChange.m b/Pods/Roxas/Roxas/RSTCellContentChange.m new file mode 100644 index 000000000..b6e58f1dc --- /dev/null +++ b/Pods/Roxas/Roxas/RSTCellContentChange.m @@ -0,0 +1,114 @@ +// +// RSTCellContentChange.m +// Roxas +// +// Created by Riley Testut on 8/2/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +#import "RSTCellContentChange.h" + +NSInteger RSTUnknownSectionIndex = -1; + +RSTCellContentChangeType RSTCellContentChangeTypeFromFetchedResultsChangeType(NSFetchedResultsChangeType type) +{ + switch (type) + { + case NSFetchedResultsChangeInsert: return RSTCellContentChangeInsert; + case NSFetchedResultsChangeDelete: return RSTCellContentChangeDelete; + case NSFetchedResultsChangeMove: return RSTCellContentChangeMove; + case NSFetchedResultsChangeUpdate: return RSTCellContentChangeUpdate; + } +} + +NSFetchedResultsChangeType NSFetchedResultsChangeTypeFromCellContentChangeType(RSTCellContentChangeType type) +{ + switch (type) + { + case RSTCellContentChangeInsert: return NSFetchedResultsChangeInsert; + case RSTCellContentChangeDelete: return NSFetchedResultsChangeDelete; + case RSTCellContentChangeMove: return NSFetchedResultsChangeMove; + case RSTCellContentChangeUpdate: return NSFetchedResultsChangeUpdate; + } +} + +@implementation RSTCellContentChange + +- (instancetype)initWithType:(RSTCellContentChangeType)type currentIndexPath:(NSIndexPath *)currentIndexPath destinationIndexPath:(NSIndexPath *)destinationIndexPath +{ + self = [super init]; + if (self) + { + _type = type; + + _currentIndexPath = [currentIndexPath copy]; + _destinationIndexPath = [destinationIndexPath copy]; + + _sectionIndex = RSTUnknownSectionIndex; + + _rowAnimation = UITableViewRowAnimationAutomatic; + } + + return self; +} + +- (instancetype)initWithType:(RSTCellContentChangeType)type sectionIndex:(NSInteger)sectionIndex +{ + self = [super init]; + if (self) + { + _type = type; + _sectionIndex = sectionIndex; + + _rowAnimation = UITableViewRowAnimationAutomatic; + } + + return self; +} + +#pragma mark - NSObject - + +- (NSString *)description +{ + NSString *type = nil; + switch (self.type) + { + case RSTCellContentChangeInsert: + type = @"Insert"; + break; + + case RSTCellContentChangeDelete: + type = @"Delete"; + break; + + case RSTCellContentChangeUpdate: + type = @"Update"; + break; + + case RSTCellContentChangeMove: + type = @"Move"; + break; + } + + return [NSString stringWithFormat:@"<%@: %p, Type: %@, Index Path: %@, New Index Path: %@>", NSStringFromClass([self class]), self, type, self.currentIndexPath, self.destinationIndexPath]; +} + +#pragma mark - - + +- (instancetype)copyWithZone:(NSZone *)zone +{ + RSTCellContentChange *change = nil; + + if (self.sectionIndex != RSTUnknownSectionIndex) + { + change = [[RSTCellContentChange alloc] initWithType:self.type sectionIndex:self.sectionIndex]; + } + else + { + change = [[RSTCellContentChange alloc] initWithType:self.type currentIndexPath:self.currentIndexPath destinationIndexPath:self.destinationIndexPath]; + } + + return change; +} + +@end diff --git a/Pods/Roxas/Roxas/RSTCellContentChangeOperation.h b/Pods/Roxas/Roxas/RSTCellContentChangeOperation.h new file mode 100644 index 000000000..6b91669d7 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTCellContentChangeOperation.h @@ -0,0 +1,44 @@ +// +// RSTCellContentChangeOperation.h +// Roxas +// +// Created by Riley Testut on 8/2/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +#import "RSTOperation.h" + +@import UIKit; + +@class RSTCellContentChange; + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTCellContentChangeOperation : RSTOperation + +@property (copy, nonatomic, readonly) RSTCellContentChange *change; + +- (instancetype)init NS_UNAVAILABLE; + +@end + + +@interface RSTTableViewChangeOperation : RSTCellContentChangeOperation + +@property (nullable, weak, nonatomic, readonly) UITableView *tableView; + +- (instancetype)initWithChange:(RSTCellContentChange *)change tableView:(nullable UITableView *)tableView NS_DESIGNATED_INITIALIZER; + +@end + + +@interface RSTCollectionViewChangeOperation : RSTCellContentChangeOperation + +@property (nullable, weak, nonatomic, readonly) UICollectionView *collectionView; + +- (instancetype)initWithChange:(RSTCellContentChange *)change collectionView:(nullable UICollectionView *)collectionView NS_DESIGNATED_INITIALIZER; + +@end + + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/RSTCellContentChangeOperation.m b/Pods/Roxas/Roxas/RSTCellContentChangeOperation.m new file mode 100644 index 000000000..dc642c451 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTCellContentChangeOperation.m @@ -0,0 +1,150 @@ +// +// RSTCellContentChangeOperation.m +// Roxas +// +// Created by Riley Testut on 8/2/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +#import "RSTCellContentChangeOperation.h" + +#import "RSTCellContentChange.h" + +@implementation RSTCellContentChangeOperation + +- (instancetype)initWithChange:(RSTCellContentChange *)change +{ + self = [super init]; + if (self) + { + _change = [change copy]; + } + + return self; +} + +@end + + +@implementation RSTTableViewChangeOperation + +- (instancetype)initWithChange:(RSTCellContentChange *)change tableView:(nullable UITableView *)tableView +{ + self = [super initWithChange:change]; + if (self) + { + _tableView = tableView; + } + + return self; +} + +- (void)main +{ + switch (self.change.type) + { + case NSFetchedResultsChangeInsert: + { + if (self.change.sectionIndex != RSTUnknownSectionIndex) + { + [self.tableView insertSections:[NSIndexSet indexSetWithIndex:self.change.sectionIndex] withRowAnimation:self.change.rowAnimation]; + } + else + { + [self.tableView insertRowsAtIndexPaths:@[self.change.destinationIndexPath] withRowAnimation:self.change.rowAnimation]; + } + + break; + } + + case NSFetchedResultsChangeDelete: + { + if (self.change.sectionIndex != RSTUnknownSectionIndex) + { + [self.tableView deleteSections:[NSIndexSet indexSetWithIndex:self.change.sectionIndex] withRowAnimation:self.change.rowAnimation]; + } + else + { + [self.tableView deleteRowsAtIndexPaths:@[self.change.currentIndexPath] withRowAnimation:self.change.rowAnimation]; + } + + break; + } + + case NSFetchedResultsChangeMove: + { + [self.tableView moveRowAtIndexPath:self.change.currentIndexPath toIndexPath:self.change.destinationIndexPath]; + break; + } + + case NSFetchedResultsChangeUpdate: + { + [self.tableView reloadRowsAtIndexPaths:@[self.change.currentIndexPath] withRowAnimation:self.change.rowAnimation]; + break; + } + } +} + +@end + + +@implementation RSTCollectionViewChangeOperation + +- (instancetype)initWithChange:(RSTCellContentChange *)change collectionView:(UICollectionView *)collectionView +{ + self = [super initWithChange:change]; + if (self) + { + _collectionView = collectionView; + } + + return self; +} + +- (void)main +{ + switch (self.change.type) + { + case NSFetchedResultsChangeInsert: + { + if (self.change.sectionIndex != RSTUnknownSectionIndex) + { + [self.collectionView insertSections:[NSIndexSet indexSetWithIndex:self.change.sectionIndex]]; + } + else + { + [self.collectionView insertItemsAtIndexPaths:@[self.change.destinationIndexPath]]; + } + + break; + } + + case NSFetchedResultsChangeDelete: + { + if (self.change.sectionIndex != RSTUnknownSectionIndex) + { + [self.collectionView deleteSections:[NSIndexSet indexSetWithIndex:self.change.sectionIndex]]; + } + else + { + [self.collectionView deleteItemsAtIndexPaths:@[self.change.currentIndexPath]]; + } + + break; + } + + case NSFetchedResultsChangeMove: + { + [self.collectionView moveItemAtIndexPath:self.change.currentIndexPath toIndexPath:self.change.destinationIndexPath]; + break; + } + + case NSFetchedResultsChangeUpdate: + { + [self.collectionView reloadItemsAtIndexPaths:@[self.change.currentIndexPath]]; + break; + } + } +} + +@end diff --git a/Pods/Roxas/Roxas/RSTCellContentDataSource.h b/Pods/Roxas/Roxas/RSTCellContentDataSource.h new file mode 100644 index 000000000..999cb893e --- /dev/null +++ b/Pods/Roxas/Roxas/RSTCellContentDataSource.h @@ -0,0 +1,70 @@ +// +// RSTCellContentDataSource.h +// Roxas +// +// Created by Riley Testut on 2/7/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +#import "RSTCellContentChange.h" + +#import "UITableView+CellContent.h" +#import "UITableViewCell+CellContent.h" + +#import "UICollectionView+CellContent.h" +#import "UICollectionViewCell+CellContent.h" + +@import UIKit; + +@class RSTSearchController; +@class RSTCellContentChange; + +NS_ASSUME_NONNULL_BEGIN + +RST_EXTERN NSString *RSTCellContentGenericCellIdentifier; + +@interface RSTCellContentDataSource *, ViewType: UIScrollView *, DataSourceType> : NSObject + +// The view containing the content cells. +@property (nullable, weak, nonatomic, readonly) ViewType contentView; + +// RSTSearchController for easily adding support for searching through content. +// Lazily initialized upon first access. +@property (nonatomic, readonly) RSTSearchController *searchController; + +// Object to forward optional contentView.dataSource methods to. +@property (nullable, weak, nonatomic) DataSourceType proxy; + +// Block to determine the cell reuse identifier to use for a given index path. +// Defaults to using RSTCellContentGenericCellIdentifier for all index paths. +@property (copy, nonatomic) NSString * (^cellIdentifierHandler)(NSIndexPath *indexPath); + +// Block to configure a cell before it is displayed. +// Defaults to setting textLabel.text to item.description if CellType is UITableViewCell. +@property (copy, nonatomic) void (^cellConfigurationHandler)(CellType cell, ContentType item, NSIndexPath *indexPath); + +// Optional predicate to filter content, and refreshes content immediately. +// To set predicate without refreshing content, call -[RSTCellContentDataSource setPredicate:refreshContent:] and pass NO to refreshContent:. +@property (nullable, copy, nonatomic) NSPredicate *predicate; + +// A view to display when there is no content available. +// RSTBackgroundView preferred, but any UIView is valid. +// Defaults to nil. +@property (nullable, nonatomic) __kindof UIView *placeholderView; + +// Animation to use when animating changes in a UITableView. +@property (nonatomic) UITableViewRowAnimation rowAnimation; + +// Total number of items to be displayed in contentView. +@property (nonatomic, readonly) NSInteger itemCount; + +// Returns content item at indexPath. Performs no bounds-checking. +- (ContentType)itemAtIndexPath:(NSIndexPath *)indexPath; + +// Sets an optional predicate to filter content. +// Refreshes content immediately if passed YES for refreshContent:, otherwise refreshes at some later point (such as when calling [contentView reloadData]). +- (void)setPredicate:(NSPredicate * _Nullable)predicate refreshContent:(BOOL)refreshContent; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/RSTCellContentDataSource.m b/Pods/Roxas/Roxas/RSTCellContentDataSource.m new file mode 100644 index 000000000..0651f187d --- /dev/null +++ b/Pods/Roxas/Roxas/RSTCellContentDataSource.m @@ -0,0 +1,668 @@ +// +// RSTCellContentDataSource.m +// Roxas +// +// Created by Riley Testut on 2/7/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +#import "RSTCellContentDataSource_Subclasses.h" +#import "RSTSearchController.h" +#import "RSTOperationQueue.h" +#import "RSTBlockOperation.h" + +#import "RSTHelperFile.h" + +@import ObjectiveC.runtime; + +typedef void (^PrefetchCompletionHandler)(_Nullable id prefetchItem, NSError *_Nullable error); + +NSString *RSTCellContentGenericCellIdentifier = @"Cell"; + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTCellContentDataSource () + +@property (nonatomic, getter=isPlaceholderViewVisible) BOOL placeholderViewVisible; + +@property (nonatomic, readonly) RSTOperationQueue *prefetchOperationQueue; + +@property (nonatomic, readonly) NSMapTable *> *prefetchCompletionHandlers; + +@end + +NS_ASSUME_NONNULL_END + + +@implementation RSTCellContentDataSource +{ + UITableViewCellSeparatorStyle _previousSeparatorStyle; + UIView *_previousBackgroundView; + BOOL _previousScrollEnabled; + + NSInteger _sectionsCount; + NSInteger _itemsCount; +} +@synthesize searchController = _searchController; +@synthesize prefetchItemCache = _prefetchItemCache; +@synthesize prefetchHandler = _prefetchHandler; +@synthesize prefetchCompletionHandler = _prefetchCompletionHandler; + +- (instancetype)init +{ + self = [super init]; + if (self) + { + _cellIdentifierHandler = [^NSString *(NSIndexPath *indexPath) { + return RSTCellContentGenericCellIdentifier; + } copy]; + + _cellConfigurationHandler = [^(id cell, id item, NSIndexPath *indexPath) { + if ([cell isKindOfClass:[UITableViewCell class]]) + { + [(UITableViewCell *)cell textLabel].text = [item description]; + } + } copy]; + + __weak RSTCellContentDataSource *weakSelf = self; + _defaultSearchHandler = [^NSOperation *(RSTSearchValue *searchValue, RSTSearchValue *previousSearchValue) { + weakSelf.predicate = searchValue.predicate; + return nil; + } copy]; + + _rowAnimation = UITableViewRowAnimationAutomatic; + + _prefetchItemCache = [[NSCache alloc] init]; + + _prefetchOperationQueue = [[RSTOperationQueue alloc] init]; + _prefetchOperationQueue.name = @"com.rileytestut.Roxas.RSTCellContentDataSource.prefetchOperationQueue"; + _prefetchOperationQueue.qualityOfService = NSQualityOfServiceUserInitiated; + + _prefetchCompletionHandlers = [NSMapTable strongToStrongObjectsMapTable]; + } + + return self; +} + +#pragma mark - NSObject - + +- (BOOL)dataSourceProtocolContainsSelector:(SEL)aSelector +{ + Protocol *dataSourceProtocol = self.contentView.dataSourceProtocol; + if (dataSourceProtocol == nil) + { + return NO; + } + + struct objc_method_description dataSourceSelector = protocol_getMethodDescription(dataSourceProtocol, aSelector, NO, YES); + + BOOL containsSelector = (dataSourceSelector.name != NULL); + return containsSelector; +} + +- (BOOL)respondsToSelector:(SEL)aSelector +{ + if ([super respondsToSelector:aSelector]) + { + return YES; + } + + if ([self dataSourceProtocolContainsSelector:aSelector]) + { + return [self.proxy respondsToSelector:aSelector]; + } + + return NO; +} + +- (id)forwardingTargetForSelector:(SEL)aSelector +{ + if ([self dataSourceProtocolContainsSelector:aSelector]) + { + return self.proxy; + } + + return nil; +} + +#pragma mark - RSTCellContentDataSource - + +#pragma mark Placeholder View + +- (void)showPlaceholderView +{ + if ([self isPlaceholderViewVisible]) + { + return; + } + + if (self.placeholderView == nil || self.contentView == nil) + { + return; + } + + self.placeholderViewVisible = YES; + + if ([self.contentView isKindOfClass:[UITableView class]]) + { + UITableView *tableView = (UITableView *)self.contentView; + + _previousSeparatorStyle = tableView.separatorStyle; + tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + } + + _previousScrollEnabled = self.contentView.scrollEnabled; + self.contentView.scrollEnabled = NO; + + _previousBackgroundView = self.contentView.backgroundView; + self.contentView.backgroundView = self.placeholderView; + +} + +- (void)hidePlaceholderView +{ + if (![self isPlaceholderViewVisible]) + { + return; + } + + self.placeholderViewVisible = NO; + + if ([self.contentView isKindOfClass:[UITableView class]]) + { + UITableView *tableView = (UITableView *)self.contentView; + tableView.separatorStyle = _previousSeparatorStyle; + } + + self.contentView.scrollEnabled = _previousScrollEnabled; + self.contentView.backgroundView = _previousBackgroundView; +} + +#pragma mark Prefetching + +- (void)prefetchItemAtIndexPath:(NSIndexPath *)indexPath completionHandler:(void (^_Nullable)(id prefetchItem, NSError *error))completionHandler +{ + if (self.prefetchHandler == nil || self.prefetchCompletionHandler == nil) + { + return; + } + + id item = [self itemAtIndexPath:indexPath]; + + // Disable prefetching for NSProxy items to prevent obscure crashes. + if ([item isProxy]) + { + return; + } + + if (completionHandler) + { + // Each completionHandler is mapped to an item, and then to the indexPath originally requested. + // This allows us to prevent multiple fetches for the same item, but also handle the case where the prefetch item is needed by multiple cells, or the cell has moved. + + NSMutableDictionary *completionHandlers = [self.prefetchCompletionHandlers objectForKey:item]; + if (completionHandlers == nil) + { + completionHandlers = [NSMutableDictionary dictionary]; + [self.prefetchCompletionHandlers setObject:completionHandlers forKey:item]; + } + + completionHandlers[indexPath] = completionHandler; + } + + // If prefetch operation is currently in progress, return. + if (self.prefetchOperationQueue[item] != nil) + { + return; + } + + void (^prefetchCompletionHandler)(id, NSError *) = ^(id prefetchItem, NSError *error) { + if (prefetchItem) + { + [self.prefetchItemCache setObject:prefetchItem forKey:item]; + } + + NSMutableDictionary *completionHandlers = [self.prefetchCompletionHandlers objectForKey:item]; + [completionHandlers enumerateKeysAndObjectsUsingBlock:^(NSIndexPath *indexPath, PrefetchCompletionHandler completionHandler, BOOL *stop) { + completionHandler(prefetchItem, error); + }]; + [self.prefetchCompletionHandlers removeObjectForKey:item]; + }; + + id cachedItem = [self.prefetchItemCache objectForKey:item]; + if (cachedItem) + { + // Prefetch item has been cached, so use it immediately. + + rst_dispatch_sync_on_main_thread(^{ + prefetchCompletionHandler(cachedItem, nil); + }); + } + else + { + // Prefetch item has not been cached, so perform operation to retrieve it. + + __weak __block NSOperation *weakOperation = nil; + + NSOperation *operation = self.prefetchHandler(item, indexPath, ^(id prefetchItem, NSError *error) { + dispatch_async(dispatch_get_main_queue(), ^{ + + if (indexPath.section < [self numberOfSectionsInContentView:self.contentView] && + indexPath.row < [self contentView:self.contentView numberOfItemsInSection:indexPath.section]) + { + prefetchCompletionHandler(prefetchItem, error); + } + + if ([weakOperation isKindOfClass:[RSTAsyncBlockOperation class]]) + { + // Automatically call finish for RSTAsyncBlockOperations. + [(RSTAsyncBlockOperation *)weakOperation finish]; + } + }); + }); + + weakOperation = operation; + + if (operation) + { + [self.prefetchOperationQueue addOperation:operation forKey:item]; + } + } +} + +#pragma mark Validation + +- (BOOL)isValidIndexPath:(NSIndexPath *)indexPath +{ + if (indexPath.section >= [self numberOfSectionsInContentView:self.contentView]) + { + return NO; + } + + if (indexPath.item >= [self contentView:self.contentView numberOfItemsInSection:indexPath.section]) + { + return NO; + } + + return YES; +} + +#pragma mark Filtering + +- (void)filterContentWithPredicate:(NSPredicate *)predicate refreshContent:(BOOL)refreshContent +{ + [self filterContentWithPredicate:predicate]; + + if (refreshContent) + { + rst_dispatch_sync_on_main_thread(^{ + [self.contentView reloadData]; + }); + } +} + +#pragma mark Changes + +- (void)addChange:(RSTCellContentChange *)change +{ + RSTCellContentChange *transformedChange = nil; + + if (change.sectionIndex == RSTUnknownSectionIndex) + { + NSIndexPath *currentIndexPath = change.currentIndexPath; + if (currentIndexPath != nil) + { + currentIndexPath = [self.indexPathTranslator dataSource:self globalIndexPathForLocalIndexPath:currentIndexPath] ?: currentIndexPath; + } + + NSIndexPath *destinationIndexPath = change.destinationIndexPath; + if (destinationIndexPath != nil) + { + destinationIndexPath = [self.indexPathTranslator dataSource:self globalIndexPathForLocalIndexPath:destinationIndexPath] ?: destinationIndexPath; + } + + transformedChange = [[RSTCellContentChange alloc] initWithType:change.type currentIndexPath:currentIndexPath destinationIndexPath:destinationIndexPath]; + + NSIndexPath *indexPathForRemovingFromCache = nil; + switch (change.type) + { + case RSTCellContentChangeUpdate: + indexPathForRemovingFromCache = change.currentIndexPath; + break; + + case RSTCellContentChangeMove: + // At this point, the data source has already changed index paths of objects. + // So to remove the old cached item, we need to get the item at the _new_ index path. + indexPathForRemovingFromCache = change.destinationIndexPath; + break; + + case RSTCellContentChangeDelete: + case RSTCellContentChangeInsert: + break; + } + + if (indexPathForRemovingFromCache != nil) + { + // Remove cached prefetched item since the object has been changed. + id item = [self itemAtIndexPath:indexPathForRemovingFromCache]; + [self.prefetchItemCache removeObjectForKey:item]; + } + } + else + { + NSIndexPath *sectionIndexPath = [NSIndexPath indexPathForItem:0 inSection:change.sectionIndex]; + NSIndexPath *indexPath = [self.indexPathTranslator dataSource:self globalIndexPathForLocalIndexPath:sectionIndexPath] ?: sectionIndexPath; + + transformedChange = [[RSTCellContentChange alloc] initWithType:change.type sectionIndex:indexPath.section]; + } + + [self.contentView addChange:transformedChange]; +} + +#pragma mark - RSTCellContentDataSource Subclass Methods - + +- (NSInteger)numberOfSectionsInContentView:(__kindof UIView *)contentView +{ + [self doesNotRecognizeSelector:_cmd]; + return 0; +} + +- (NSInteger)contentView:(__kindof UIView *)contentView numberOfItemsInSection:(NSInteger)section +{ + [self doesNotRecognizeSelector:_cmd]; + return 0; +} + +- (id)itemAtIndexPath:(NSIndexPath *)indexPath +{ + [self doesNotRecognizeSelector:_cmd]; + return nil; +} + +- (void)filterContentWithPredicate:(NSPredicate *)predicate +{ + [self doesNotRecognizeSelector:_cmd]; +} + +#pragma mark - Data Source - + +- (NSInteger)_numberOfSectionsInContentView:(UIScrollView *)contentView +{ + self.contentView = contentView; + + NSInteger sections = [self numberOfSectionsInContentView:contentView]; + + if (sections == 0) + { + [self showPlaceholderView]; + } + + _itemsCount = 0; + _sectionsCount = sections; + + return sections; +} + +- (NSInteger)_contentView:(UIScrollView *)contentView numberOfItemsInSection:(NSInteger)section +{ + NSInteger items = [self contentView:contentView numberOfItemsInSection:section]; + _itemsCount += items; + + if (section == _sectionsCount - 1) + { + if (_itemsCount == 0) + { + [self showPlaceholderView]; + } + else + { + [self hidePlaceholderView]; + } + + _itemsCount = 0; + _sectionsCount = 0; + } + + return items; +} + +- (__kindof UIView *)_contentView:(UIScrollView *)contentView cellForItemAtIndexPath:(NSIndexPath *)indexPath +{ + NSString *identifier = self.cellIdentifierHandler(indexPath); + id item = [self itemAtIndexPath:indexPath]; + + id cell = [contentView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath]; + self.cellConfigurationHandler(cell, item, indexPath); + + // We store the completionHandler, and it's not guaranteed to be nil'd out (since prefetch may take a long time), so we use a weak reference to self inside the block to prevent strong reference cycle. + RSTCellContentDataSource *__weak weakSelf = self; + [self prefetchItemAtIndexPath:indexPath completionHandler:^(id prefetchItem, NSError *error) { + NSIndexPath *cellIndexPath = [contentView indexPathForCell:cell]; + + if (cellIndexPath) + { + id cellItem = [weakSelf itemAtIndexPath:cellIndexPath]; + if ([item isEqual:cellItem]) + { + // Cell is in use, but its current index path still corresponds to the same item, so update. + weakSelf.prefetchCompletionHandler(cell, prefetchItem, cellIndexPath, error); + } + else + { + // Cell is in use, but its new index path does *not* correspond to the same item, so ignore. + } + } + else + { + // Cell is currently being configured for use, so update. + weakSelf.prefetchCompletionHandler(cell, prefetchItem, indexPath, error); + } + }]; + + return cell; +} + +#pragma mark Prefetching + +- (void)_contentView:(UIScrollView *)contentView prefetchItemsAtIndexPaths:(NSArray *)indexPaths +{ + for (NSIndexPath *indexPath in indexPaths) + { + if (![self isValidIndexPath:indexPath]) + { + continue; + } + + [self prefetchItemAtIndexPath:indexPath completionHandler:nil]; + } +} + +- (void)_contentView:(UIScrollView *)contentView cancelPrefetchingItemsForIndexPaths:(NSArray *)indexPaths +{ + for (NSIndexPath *indexPath in indexPaths) + { + if (![self isValidIndexPath:indexPath]) + { + continue; + } + + id item = [self itemAtIndexPath:indexPath]; + + NSOperation *operation = self.prefetchOperationQueue[item]; + [operation cancel]; + } +} + +#pragma mark - - + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView +{ + return [self _numberOfSectionsInContentView:tableView]; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section +{ + return [self _contentView:tableView numberOfItemsInSection:section]; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath +{ + return [self _contentView:tableView cellForItemAtIndexPath:indexPath]; +} + +#pragma mark - - + +- (void)tableView:(UITableView *)tableView prefetchRowsAtIndexPaths:(NSArray *)indexPaths +{ + [self _contentView:tableView prefetchItemsAtIndexPaths:indexPaths]; +} + +- (void)tableView:(UITableView *)tableView cancelPrefetchingForRowsAtIndexPaths:(NSArray *)indexPaths +{ + [self _contentView:tableView cancelPrefetchingItemsForIndexPaths:indexPaths]; +} + +#pragma mark - - + +- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView +{ + return [self _numberOfSectionsInContentView:collectionView]; +} + +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section +{ + return [self _contentView:collectionView numberOfItemsInSection:section]; +} + +- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath +{ + return [self _contentView:collectionView cellForItemAtIndexPath:indexPath]; +} + +#pragma mark - - + +- (void)collectionView:(UICollectionView *)collectionView prefetchItemsAtIndexPaths:(NSArray *)indexPaths +{ + [self _contentView:collectionView prefetchItemsAtIndexPaths:indexPaths]; +} + +- (void)collectionView:(UICollectionView *)collectionView cancelPrefetchingForItemsAtIndexPaths:(NSArray *)indexPaths +{ + [self _contentView:collectionView cancelPrefetchingItemsForIndexPaths:indexPaths]; +} + +#pragma mark - Getters/Setters - + +- (RSTSearchController *)searchController +{ + if (_searchController == nil) + { + _searchController = [[RSTSearchController alloc] initWithSearchResultsController:nil]; + + __weak RSTCellContentDataSource *weakSelf = self; + _searchController.searchHandler = ^NSOperation *(RSTSearchValue *searchValue, RSTSearchValue *previousSearchValue) { + weakSelf.predicate = searchValue.predicate; + return nil; + }; + } + + return _searchController; +} + +- (void)setContentView:(UIScrollView *)contentView +{ + if (contentView == _contentView) + { + return; + } + + _contentView = contentView; + + if (contentView.dataSource == self) + { + // Must set ourselves as dataSource again to refresh respondsToSelector: cache. + contentView.dataSource = nil; + contentView.dataSource = self; + } + + if (self.contentView != nil) + { + if ([self isPrefetchingDataSource]) + { + if (self.contentView.prefetchDataSource == nil) + { + NSLog(@"%@ is a prefetching data source, but its content view's prefetchDataSource is nil. Did you forget to assign it?", self); + } + } + } +} + +- (void)setPredicate:(NSPredicate *)predicate +{ + [self setPredicate:predicate refreshContent:YES]; +} + +- (void)setPredicate:(NSPredicate *)predicate refreshContent:(BOOL)refreshContent +{ + _predicate = predicate; + + [self filterContentWithPredicate:_predicate refreshContent:refreshContent]; +} + +- (void)setPlaceholderView:(UIView *)placeholderView +{ + if (_placeholderView != nil && self.contentView.backgroundView == _placeholderView) + { + self.contentView.backgroundView = placeholderView; + } + + _placeholderView = placeholderView; + _placeholderView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; + + if (self.contentView) + { + // Show placeholder only if there are no items to display. + + BOOL shouldShowPlaceholderView = YES; + + for (int i = 0; i < [self numberOfSectionsInContentView:self.contentView]; i++) + { + if ([self contentView:self.contentView numberOfItemsInSection:i] > 0) + { + shouldShowPlaceholderView = NO; + break; + } + } + + if (shouldShowPlaceholderView) + { + [self showPlaceholderView]; + } + else + { + [self hidePlaceholderView]; + } + } +} + +- (NSInteger)itemCount +{ + NSInteger itemCount = 0; + + for (int section = 0; section < [self numberOfSectionsInContentView:self.contentView]; section++) + { + for (int item = 0; item < [self contentView:self.contentView numberOfItemsInSection:section]; item++) + { + itemCount++; + } + } + + return itemCount; +} + +- (BOOL)isPrefetchingDataSource +{ + return NO; +} + +@end diff --git a/Pods/Roxas/Roxas/RSTCellContentDataSource_Subclasses.h b/Pods/Roxas/Roxas/RSTCellContentDataSource_Subclasses.h new file mode 100644 index 000000000..43e8718fa --- /dev/null +++ b/Pods/Roxas/Roxas/RSTCellContentDataSource_Subclasses.h @@ -0,0 +1,49 @@ +// +// RSTCellContentDataSource_Subclasses.h +// Roxas +// +// Created by Riley Testut on 2/7/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +#import "RSTCellContentDataSource.h" +#import "RSTCellContentPrefetchingDataSource.h" + +@class RSTSearchValue; + +NS_ASSUME_NONNULL_BEGIN + +@protocol RSTCellContentIndexPathTranslating + +- (nullable NSIndexPath *)dataSource:(RSTCellContentDataSource *)dataSource globalIndexPathForLocalIndexPath:(NSIndexPath *)indexPath; + +@end + +NS_ASSUME_NONNULL_END + + +NS_ASSUME_NONNULL_BEGIN + +// Privately declare conformance to DataSource protocols so clients must use a concrete subclass (which provides correct generic parameters to superclass). +@interface RSTCellContentDataSource () + +@property (nullable, weak, readwrite) UIScrollView *contentView; + +// Defaults to synchronously setting RSTCellContentDataSource's predicate to searchValue.predicate. +// Subclasses can customize if needed, such as by returning an NSOperation inside handler to enable asynchronous RSTSearchController search results. +@property (copy, nonatomic) NSOperation *_Nullable (^defaultSearchHandler)(RSTSearchValue *searchValue, RSTSearchValue *_Nullable previousSearchValue); + +@property (nullable, weak, nonatomic) id indexPathTranslator; + +@property (nonatomic, readonly, getter=isPrefetchingDataSource) BOOL prefetchingDataSource; + +- (NSInteger)numberOfSectionsInContentView:(__kindof UIScrollView *)contentView; +- (NSInteger)contentView:(__kindof UIScrollView *)contentView numberOfItemsInSection:(NSInteger)section; + +- (void)filterContentWithPredicate:(nullable NSPredicate *)predicate; + +- (void)addChange:(RSTCellContentChange *)change; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/RSTCellContentPrefetchingDataSource.h b/Pods/Roxas/Roxas/RSTCellContentPrefetchingDataSource.h new file mode 100644 index 000000000..7f3a9da8a --- /dev/null +++ b/Pods/Roxas/Roxas/RSTCellContentPrefetchingDataSource.h @@ -0,0 +1,24 @@ +// +// RSTCellContentPrefetchingDataSource.h +// Roxas +// +// Created by Riley Testut on 7/6/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +#import "RSTCellContentCell.h" + +@import UIKit; + +NS_ASSUME_NONNULL_BEGIN + +@protocol RSTCellContentPrefetchingDataSource + +@property (nonatomic) NSCache *prefetchItemCache; + +@property (nullable, copy, nonatomic) NSOperation *_Nullable (^prefetchHandler)(id item, NSIndexPath *indexPath, void (^completionHandler)(_Nullable id item, NSError *_Nullable error)); +@property (nullable, copy, nonatomic) void (^prefetchCompletionHandler)(__kindof UIView *cell, _Nullable id item, NSIndexPath *indexPath, NSError *_Nullable error); + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/RSTCellContentView.h b/Pods/Roxas/Roxas/RSTCellContentView.h new file mode 100644 index 000000000..95a1ae479 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTCellContentView.h @@ -0,0 +1,39 @@ +// +// RSTCellContentView.h +// Roxas +// +// Created by Riley Testut on 2/13/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +#import "RSTCellContentCell.h" + +@import UIKit; + +@class RSTCellContentChange; + +NS_ASSUME_NONNULL_BEGIN + +@protocol RSTCellContentView + +@property (nonatomic, nullable) id dataSource; +@property (nonatomic, nullable) id prefetchDataSource; + +@property (nonatomic, readonly) Protocol *dataSourceProtocol; + +@property (nonatomic, nullable) UIView *backgroundView; + +- (void)beginUpdates; +- (void)endUpdates; + +- (void)addChange:(RSTCellContentChange *)change; + +- (nullable id)indexPathForCell:(id)cell; + +- (id)dequeueReusableCellWithReuseIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath; + +@end + + + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/RSTCollectionViewCell.h b/Pods/Roxas/Roxas/RSTCollectionViewCell.h new file mode 100644 index 000000000..02a3806be --- /dev/null +++ b/Pods/Roxas/Roxas/RSTCollectionViewCell.h @@ -0,0 +1,23 @@ +// +// RSTCollectionViewCell.h +// Roxas +// +// Created by Riley Testut on 5/7/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +@import UIKit; + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTCollectionViewCell : UICollectionViewCell + +@property (nonatomic, readonly) UILabel *textLabel; +@property (nonatomic, readonly) UILabel *detailTextLabel; +@property (nonatomic, readonly) UIImageView *imageView; + +@property (nonatomic, readonly) UIStackView *stackView; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/RSTCollectionViewCell.m b/Pods/Roxas/Roxas/RSTCollectionViewCell.m new file mode 100644 index 000000000..bdd469c8c --- /dev/null +++ b/Pods/Roxas/Roxas/RSTCollectionViewCell.m @@ -0,0 +1,114 @@ +// +// RSTCollectionViewCell.m +// Roxas +// +// Created by Riley Testut on 5/7/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +#import "RSTCollectionViewCell.h" +#import "RSTCollectionViewGridLayout.h" + +#import "UICollectionViewCell+Nibs.h" +#import "NSLayoutConstraint+Edges.h" + +static void *RSTCollectionViewCellKVOContext = &RSTCollectionViewCellKVOContext; + +@interface RSTCollectionViewCell () + +@property (nonatomic, readwrite) IBOutlet UILabel *textLabel; +@property (nonatomic, readwrite) IBOutlet UILabel *detailTextLabel; +@property (nonatomic, readwrite) IBOutlet UIImageView *imageView; + +@property (nonatomic, readwrite) IBOutlet UIStackView *stackView; + +@end + +@implementation RSTCollectionViewCell + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) + { + [self initialize]; + } + + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)aDecoder +{ + self = [super initWithCoder:aDecoder]; + if (self) + { + [self initialize]; + } + + return self; +} + +- (void)initialize +{ + UINib *nib = [RSTCollectionViewCell nib]; + [nib instantiateWithOwner:self options:nil]; + + [self.contentView addSubview:self.stackView pinningEdgesWithInsets:UIEdgeInsetsZero]; + + [self.textLabel addObserver:self forKeyPath:NSStringFromSelector(@selector(text)) options:NSKeyValueObservingOptionNew context:RSTCollectionViewCellKVOContext]; + [self.detailTextLabel addObserver:self forKeyPath:NSStringFromSelector(@selector(text)) options:NSKeyValueObservingOptionNew context:RSTCollectionViewCellKVOContext]; + + self.textLabel.text = nil; + self.detailTextLabel.text = nil; +} + +- (void)dealloc +{ + [self.textLabel removeObserver:self forKeyPath:NSStringFromSelector(@selector(text)) context:RSTCollectionViewCellKVOContext]; + [self.detailTextLabel removeObserver:self forKeyPath:NSStringFromSelector(@selector(text)) context:RSTCollectionViewCellKVOContext]; +} + +#pragma mark - UIView - + +- (UICollectionViewLayoutAttributes *)preferredLayoutAttributesFittingAttributes:(UICollectionViewLayoutAttributes *)layoutAttributes +{ + if (![layoutAttributes isKindOfClass:[RSTCollectionViewGridLayoutAttributes class]]) + { + return [super preferredLayoutAttributesFittingAttributes:layoutAttributes]; + } + + RSTCollectionViewGridLayoutAttributes *gridLayoutAttributes = (RSTCollectionViewGridLayoutAttributes *)layoutAttributes; + + NSArray *constraints = @[[self.imageView.widthAnchor constraintEqualToConstant:gridLayoutAttributes.preferredItemSize.width], + [self.imageView.heightAnchor constraintEqualToConstant:gridLayoutAttributes.preferredItemSize.height]]; + + for (NSLayoutConstraint *constraint in constraints) + { + // Prevent conflicting with potential UIView-Encapsulated-Layout-Height when activating constraints. + // Still results in correct size when calling [super preferredLayoutAttributesFittingAttributes]. + constraint.priority = 999; + } + + [NSLayoutConstraint activateConstraints:constraints]; + + UICollectionViewLayoutAttributes *attributes = [super preferredLayoutAttributesFittingAttributes:layoutAttributes]; + + [NSLayoutConstraint deactivateConstraints:constraints]; + + return attributes; +} + +#pragma mark - KVO - + +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context +{ + if (context != RSTCollectionViewCellKVOContext) + { + return [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; + } + + UILabel *label = object; + label.hidden = (label.text.length == 0); +} + +@end diff --git a/Pods/Roxas/Roxas/RSTCollectionViewCell.xib b/Pods/Roxas/Roxas/RSTCollectionViewCell.xib new file mode 100644 index 000000000..a7b8e46f8 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTCollectionViewCell.xib @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Pods/Roxas/Roxas/RSTCollectionViewGridLayout.h b/Pods/Roxas/Roxas/RSTCollectionViewGridLayout.h new file mode 100644 index 000000000..66b6f9df3 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTCollectionViewGridLayout.h @@ -0,0 +1,42 @@ +// +// RSTCollectionViewGridLayout.h +// Roxas +// +// Created by Riley Testut on 5/7/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +@import UIKit; + +typedef NS_ENUM(NSInteger, RSTCollectionViewGridLayoutDistribution) +{ + RSTCollectionViewGridLayoutDistributionFlow, + RSTCollectionViewGridLayoutDistributionFill +}; + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTCollectionViewGridLayoutAttributes : UICollectionViewLayoutAttributes + +@property (nonatomic) CGSize preferredItemSize; + +@end + +NS_ASSUME_NONNULL_END + + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTCollectionViewGridLayout : UICollectionViewFlowLayout + +#if TARGET_INTERFACE_BUILDER +@property (nonatomic) IBInspectable NSInteger distribution; +#else +@property (nonatomic) IBInspectable RSTCollectionViewGridLayoutDistribution distribution; +#endif + +@property (nonatomic) IBInspectable BOOL automaticallyAdjustsSectionInsets; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/RSTCollectionViewGridLayout.m b/Pods/Roxas/Roxas/RSTCollectionViewGridLayout.m new file mode 100644 index 000000000..579d7ea2c --- /dev/null +++ b/Pods/Roxas/Roxas/RSTCollectionViewGridLayout.m @@ -0,0 +1,327 @@ +// +// RSTCollectionViewGridLayout.m +// Roxas +// +// Created by Riley Testut on 5/7/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +#import "RSTCollectionViewGridLayout.h" + +@implementation RSTCollectionViewGridLayoutAttributes + +- (id)copyWithZone:(NSZone *)zone +{ + RSTCollectionViewGridLayoutAttributes *copy = [super copyWithZone:zone]; + copy.preferredItemSize = self.preferredItemSize; + return copy; +} + +@end + +@interface RSTCollectionViewGridLayout () + +@property (nonatomic, readonly) CGFloat contentWidth; +@property (nonatomic, readonly) NSUInteger maximumItemsPerRow; +@property (nonatomic, readonly) CGFloat interitemSpacing; + +@property (nonatomic, readonly) NSMutableDictionary *cachedLayoutAttributes; +@property (nonatomic, readonly) NSMutableDictionary *initialLayoutAttributes; + +@end + +@implementation RSTCollectionViewGridLayout + ++ (Class)layoutAttributesClass +{ + return [RSTCollectionViewGridLayoutAttributes class]; +} + +- (instancetype)init +{ + self = [super init]; + if (self) + { + [self initialize]; + } + + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)aDecoder +{ + self = [super initWithCoder:aDecoder]; + if (self) + { + [self initialize]; + } + + return self; +} + +- (void)initialize +{ + _distribution = RSTCollectionViewGridLayoutDistributionFlow; + _automaticallyAdjustsSectionInsets = YES; + + _cachedLayoutAttributes = [NSMutableDictionary dictionary]; + _initialLayoutAttributes = [NSMutableDictionary dictionary]; + + if (@available(iOS 11.0, *)) + { + self.sectionInsetReference = UICollectionViewFlowLayoutSectionInsetFromSafeArea; + } + + self.estimatedItemSize = self.itemSize; +} + +#pragma mark - Preparations - + +- (void)prepareLayout +{ + [super prepareLayout]; + + if (self.automaticallyAdjustsSectionInsets) + { + UIEdgeInsets inset = self.sectionInset; + inset.left = self.interitemSpacing; + inset.right = self.interitemSpacing; + self.sectionInset = inset; + } +} + +- (void)finalizeCollectionViewUpdates +{ + [super finalizeCollectionViewUpdates]; + + [self.initialLayoutAttributes removeAllObjects]; +} + +#pragma mark - Invalidation - + +- (UICollectionViewLayoutInvalidationContext *)invalidationContextForPreferredLayoutAttributes:(UICollectionViewLayoutAttributes *)preferredAttributes withOriginalAttributes:(UICollectionViewLayoutAttributes *)originalAttributes +{ + UICollectionViewLayoutInvalidationContext *context = [super invalidationContextForPreferredLayoutAttributes:preferredAttributes withOriginalAttributes:originalAttributes]; + + // Update the initial attributes because the size may have changed since returning from initialLayoutAttributesForAppearingItemAtIndexPath. + UICollectionViewLayoutAttributes *initialAttributes = self.initialLayoutAttributes[preferredAttributes.indexPath]; + if (initialAttributes != nil) + { + CGRect rect = CGRectMake(0, 0, self.collectionViewContentSize.width, self.collectionViewContentSize.height); + + // Must call layoutAttributesForElementsInRect for the layout to recalculate the correct frames. + NSArray *layoutAttributes = [self layoutAttributesForElementsInRect:rect]; + for (UICollectionViewLayoutAttributes *attributes in layoutAttributes) + { + if ([attributes.indexPath isEqual:initialAttributes.indexPath]) + { + initialAttributes.frame = attributes.frame; + break; + } + } + } + + return context; +} + +#pragma mark - Returning Layout Attributes - + +- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath +{ + UICollectionViewLayoutAttributes *attributes = self.cachedLayoutAttributes[indexPath]; + if (attributes != nil) + { + return attributes; + } + + return [super layoutAttributesForItemAtIndexPath:indexPath]; +} + +- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect +{ + NSMutableArray *layoutAttributes = [NSMutableArray array]; + + for (UICollectionViewLayoutAttributes *attributes in [super layoutAttributesForElementsInRect:rect]) + { + UICollectionViewLayoutAttributes *updatedAttributes = [self transformedLayoutAttributesFromLayoutAttributes:attributes]; + [layoutAttributes addObject:updatedAttributes]; + } + + [self alignLayoutAttributes:layoutAttributes]; + + for (UICollectionViewLayoutAttributes *attributes in layoutAttributes) + { + // Cache layout attributes to ensure layoutAttributesForItemAtIndexPath returns correct attributes. + self.cachedLayoutAttributes[attributes.indexPath] = attributes; + } + + return layoutAttributes; +} + +- (UICollectionViewLayoutAttributes *)initialLayoutAttributesForAppearingItemAtIndexPath:(NSIndexPath *)itemIndexPath +{ + UICollectionViewLayoutAttributes *attributes = [[super initialLayoutAttributesForAppearingItemAtIndexPath:itemIndexPath] copy]; + self.initialLayoutAttributes[itemIndexPath] = attributes; + return attributes; +} + +#pragma mark - Transforming Layout Attributes - + +- (UICollectionViewLayoutAttributes *)transformedLayoutAttributesFromLayoutAttributes:(UICollectionViewLayoutAttributes *)attributes +{ + RSTCollectionViewGridLayoutAttributes *transformedLayoutAttributes = [attributes copy]; + transformedLayoutAttributes.preferredItemSize = self.itemSize; + + if (attributes.representedElementCategory == UICollectionElementCategoryCell) + { + if (attributes.indexPath.item == 0) + { + // When using self-sizing cells, a bug in UICollectionViewFlowLayout causes cells in sections with only one (currently visible) item to be centered horizontally. + // To compensate, we manually set the correct horizontal offset. + + CGRect frame = transformedLayoutAttributes.frame; + frame.origin.x = self.sectionInset.left; + transformedLayoutAttributes.frame = frame; + } + } + + return transformedLayoutAttributes; +} + +- (void)alignLayoutAttributes:(NSArray *)layoutAttributes +{ + NSNumber *minimumY = nil; + NSNumber *maximumY = nil; + + NSMutableArray *currentRowLayoutAttributes = [NSMutableArray array]; + + BOOL isSingleRow = YES; + + for (UICollectionViewLayoutAttributes *attributes in layoutAttributes) + { + if (attributes.representedElementCategory != UICollectionElementCategoryCell) + { + continue; + } + + if (minimumY != nil && maximumY != nil) + { + if (CGRectGetMinY(attributes.frame) > [maximumY doubleValue]) + { + // attributes.frame.minY is greater than maximumY, so this is a new row. + // As a result, we need to align all current row frame origins to the same Y-value (minimumY). + [self alignLayoutAttributes:currentRowLayoutAttributes toOriginY:[minimumY doubleValue]]; + + // Reset variables for new row. + [currentRowLayoutAttributes removeAllObjects]; + minimumY = nil; + maximumY = nil; + + isSingleRow = NO; + } + } + + // Update minimumY if needed. + if (minimumY == nil || CGRectGetMinY(attributes.frame) < [minimumY doubleValue]) + { + minimumY = @(CGRectGetMinY(attributes.frame)); + } + + // Update maximumY if needed. + if (maximumY == nil || CGRectGetMaxY(attributes.frame) > [maximumY doubleValue]) + { + maximumY = @(CGRectGetMaxY(attributes.frame)); + } + + [currentRowLayoutAttributes addObject:attributes]; + } + + // Handle remaining currentRowLayoutAttributes. + if (minimumY != nil) + { + [self alignLayoutAttributes:currentRowLayoutAttributes toOriginY:[minimumY doubleValue]]; + + if (isSingleRow && self.distribution == RSTCollectionViewGridLayoutDistributionFill) + { + CGFloat spacing = (self.contentWidth - (self.itemSize.width * currentRowLayoutAttributes.count)) / (currentRowLayoutAttributes.count + 1.0); + + [currentRowLayoutAttributes enumerateObjectsUsingBlock:^(UICollectionViewLayoutAttributes * _Nonnull attributes, NSUInteger index, BOOL * _Nonnull stop) { + CGRect frame = attributes.frame; + frame.origin.x = spacing + (spacing + self.itemSize.width) * index; + attributes.frame = frame; + }]; + } + } +} + +- (void)alignLayoutAttributes:(NSArray *)layoutAttributes toOriginY:(CGFloat)originY +{ + for (UICollectionViewLayoutAttributes *attributes in layoutAttributes) + { + CGRect frame = attributes.frame; + frame.origin.y = originY; + attributes.frame = frame; + } +} + +#pragma mark - Getters/Setters - + +- (CGFloat)contentWidth +{ + if (self.collectionView == nil) + { + return 0.0; + } + + CGFloat contentWidth = CGRectGetWidth(self.collectionView.bounds); + + if (!self.automaticallyAdjustsSectionInsets) + { + UIEdgeInsets insets = self.collectionView.contentInset; + if (@available(iOS 11, *)) + { + insets = self.collectionView.adjustedContentInset; + } + + contentWidth -= (insets.left + insets.right); + } + + return contentWidth; +} + +- (NSUInteger)maximumItemsPerRow +{ + NSUInteger maximumItemsPerRow = (self.contentWidth - self.minimumInteritemSpacing) / (self.itemSize.width + self.minimumInteritemSpacing); + return maximumItemsPerRow; +} + +- (CGFloat)interitemSpacing +{ + CGFloat interitemSpacing = (self.contentWidth - self.maximumItemsPerRow * self.itemSize.width) / (self.maximumItemsPerRow + 1.0); + return interitemSpacing; +} + +- (void)setDistribution:(RSTCollectionViewGridLayoutDistribution)distribution +{ + _distribution = distribution; + + [self invalidateLayout]; +} + +- (void)setAutomaticallyAdjustsSectionInsets:(BOOL)automaticallyAdjustsSectionInsets +{ + _automaticallyAdjustsSectionInsets = automaticallyAdjustsSectionInsets; + + [self invalidateLayout]; +} + +- (void)setItemSize:(CGSize)itemSize +{ + [super setItemSize:itemSize]; + + self.estimatedItemSize = itemSize; + + [self invalidateLayout]; +} + +@end diff --git a/Pods/Roxas/Roxas/RSTCompositeDataSource.h b/Pods/Roxas/Roxas/RSTCompositeDataSource.h new file mode 100644 index 000000000..dcaa5486e --- /dev/null +++ b/Pods/Roxas/Roxas/RSTCompositeDataSource.h @@ -0,0 +1,58 @@ +// +// RSTCompositeDataSource.h +// Roxas +// +// Created by Riley Testut on 12/19/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +#import "RSTCellContentDataSource.h" +#import "RSTCellContentPrefetchingDataSource.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTCompositeDataSource *, ViewType: UIScrollView *, DataSourceType> : RSTCellContentDataSource + +@property (nonatomic, copy, readonly) NSArray *> *dataSources; + +@property (nonatomic) BOOL shouldFlattenSections; + +- (instancetype)initWithDataSources:(NSArray *> *)dataSources; + +- (nullable RSTCellContentDataSource *)dataSourceForIndexPath:(NSIndexPath *)indexPath; + +- (instancetype)init NS_UNAVAILABLE; + +@end + + +@interface RSTCompositePrefetchingDataSource *, ViewType: UIScrollView *, DataSourceType, PrefetchContentType> : RSTCompositeDataSource + +@property (nonatomic) NSCache *prefetchItemCache; + +@property (nullable, copy, nonatomic) NSOperation *_Nullable (^prefetchHandler)(ContentType item, NSIndexPath *indexPath, void (^completionHandler)(_Nullable PrefetchContentType item, NSError *_Nullable error)); +@property (nullable, copy, nonatomic) void (^prefetchCompletionHandler)(CellType cell, _Nullable PrefetchContentType item, NSIndexPath *indexPath, NSError *_Nullable error); + +@end + +NS_ASSUME_NONNULL_END + + +// Concrete Subclasses + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTCompositeTableViewDataSource : RSTCompositeDataSource> +@end + +@interface RSTCompositeCollectionViewDataSource : RSTCompositeDataSource> +@end + + +@interface RSTCompositeTableViewPrefetchingDataSource : RSTCompositePrefetchingDataSource, PrefetchContentType> +@end + +@interface RSTCompositeCollectionViewPrefetchingDataSource : RSTCompositePrefetchingDataSource, PrefetchContentType> +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/RSTCompositeDataSource.m b/Pods/Roxas/Roxas/RSTCompositeDataSource.m new file mode 100644 index 000000000..948f64a7b --- /dev/null +++ b/Pods/Roxas/Roxas/RSTCompositeDataSource.m @@ -0,0 +1,333 @@ +// +// RSTCompositeDataSource.m +// Roxas +// +// Created by Riley Testut on 12/19/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +#import "RSTCompositeDataSource.h" +#import "RSTCellContentDataSource_Subclasses.h" + +#import "RSTHelperFile.h" + +// Allow NSValue-boxing literals for NSRange. +typedef struct __attribute__((objc_boxable)) _NSRange NSRange; + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTCompositeDataSource () + +@property (nonatomic, readonly) NSMapTable *dataSourceRanges; + +@end + +NS_ASSUME_NONNULL_END + +@implementation RSTCompositeDataSource + +- (instancetype)initWithDataSources:(NSArray *)dataSources +{ + self = [super init]; + if (self) + { + _dataSources = [dataSources copy]; + _dataSourceRanges = [NSMapTable strongToStrongObjectsMapTable]; + + for (RSTCellContentDataSource *dataSource in _dataSources) + { + dataSource.indexPathTranslator = self; + } + + __weak RSTCompositeDataSource *weakSelf = self; + + self.cellIdentifierHandler = ^NSString * _Nonnull(NSIndexPath *_Nonnull indexPath) { + RSTCellContentDataSource *dataSource = [weakSelf dataSourceForIndexPath:indexPath]; + if (dataSource == nil) + { + return RSTCellContentGenericCellIdentifier; + } + + NSIndexPath *localIndexPath = [weakSelf dataSource:dataSource localIndexPathForGlobalIndexPath:indexPath]; + + NSString *identifier = dataSource.cellIdentifierHandler(localIndexPath); + return identifier; + }; + + self.cellConfigurationHandler = ^(id _Nonnull cell, id _Nonnull item, NSIndexPath *_Nonnull indexPath) { + RSTCellContentDataSource *dataSource = [weakSelf dataSourceForIndexPath:indexPath]; + if (dataSource == nil) + { + return; + } + + NSIndexPath *localIndexPath = [weakSelf dataSource:dataSource localIndexPathForGlobalIndexPath:indexPath]; + dataSource.cellConfigurationHandler(cell, item, localIndexPath); + }; + + self.prefetchHandler = ^NSOperation * _Nullable(id _Nonnull item, NSIndexPath * _Nonnull indexPath, void (^ _Nonnull completionHandler)(id _Nullable, NSError * _Nullable)) { + RSTCellContentDataSource *dataSource = [weakSelf dataSourceForIndexPath:indexPath]; + if (dataSource == nil || dataSource.prefetchHandler == nil) + { + return nil; + } + + NSIndexPath *localIndexPath = [weakSelf dataSource:dataSource localIndexPathForGlobalIndexPath:indexPath]; + + NSOperation *operation = dataSource.prefetchHandler(item, localIndexPath, completionHandler); + return operation; + }; + + self.prefetchCompletionHandler = ^(__kindof UIView * _Nonnull cell, id _Nullable item, NSIndexPath * _Nonnull indexPath, NSError * _Nullable error) { + RSTCellContentDataSource *dataSource = [weakSelf dataSourceForIndexPath:indexPath]; + if (dataSource == nil || dataSource.prefetchCompletionHandler == nil) + { + return; + } + + NSIndexPath *localIndexPath = [weakSelf dataSource:dataSource localIndexPathForGlobalIndexPath:indexPath]; + dataSource.prefetchCompletionHandler(cell, item, localIndexPath, error); + }; + } + + return self; +} + +#pragma mark - RSTCompositeDataSource - + +- (RSTCellContentDataSource *)dataSourceForIndexPath:(NSIndexPath *)indexPath +{ + for (RSTCellContentDataSource *key in self.dataSourceRanges.copy) + { + NSRange range = [[self.dataSourceRanges objectForKey:key] rangeValue]; + + NSInteger index = [self shouldFlattenSections] ? indexPath.item : indexPath.section; + if (NSLocationInRange(index, range)) + { + return key; + } + } + + return nil; +} + +- (NSInteger)sectionForItem:(NSInteger)item dataSource:(RSTCellContentDataSource *)dataSource +{ + NSInteger section = 0; + + NSInteger itemCount = 0; + + for (int i = 0; i < [dataSource numberOfSectionsInContentView:self.contentView]; i++) + { + NSInteger count = [dataSource contentView:self.contentView numberOfItemsInSection:i]; + itemCount += count; + + if (itemCount > item) + { + section = i; + break; + } + } + + return section; +} + +#pragma mark - RSTCellContentDataSource - + +- (NSInteger)numberOfSectionsInContentView:(__kindof UIView *)contentView +{ + if ([self shouldFlattenSections]) + { + return 1; + } + + NSInteger numberOfSections = 0; + for (RSTCellContentDataSource *dataSource in self.dataSources) + { + NSInteger sections = [dataSource numberOfSectionsInContentView:contentView]; + + NSRange range = NSMakeRange(numberOfSections, sections); + [self.dataSourceRanges setObject:@(range) forKey:dataSource]; + + numberOfSections += sections; + } + + return numberOfSections; +} + +- (NSInteger)contentView:(__kindof UIView *)contentView numberOfItemsInSection:(NSInteger)section +{ + if ([self shouldFlattenSections]) + { + NSInteger itemCount = 0; + + for (RSTCellContentDataSource *dataSource in self.dataSources) + { + NSRange range = NSMakeRange(itemCount, dataSource.itemCount); + [self.dataSourceRanges setObject:@(range) forKey:dataSource]; + + itemCount += range.length; + } + + return itemCount; + } + else + { + NSIndexPath *indexPath = [NSIndexPath indexPathForItem:0 inSection:section]; + + RSTCellContentDataSource *dataSource = [self dataSourceForIndexPath:indexPath]; + if (dataSource == nil) + { + return 0; + } + + NSIndexPath *localIndexPath = [self dataSource:dataSource localIndexPathForGlobalIndexPath:indexPath]; + + NSInteger numberOfItems = [dataSource contentView:contentView numberOfItemsInSection:localIndexPath.section]; + return numberOfItems; + } +} + +- (id)itemAtIndexPath:(NSIndexPath *)indexPath +{ + RSTCellContentDataSource *dataSource = [self dataSourceForIndexPath:indexPath]; + if (dataSource == nil) + { + @throw [NSException exceptionWithName:NSRangeException reason:nil userInfo:nil]; + } + + NSIndexPath *localIndexPath = [self dataSource:dataSource localIndexPathForGlobalIndexPath:indexPath]; + + id item = [dataSource itemAtIndexPath:localIndexPath]; + return item; +} + +- (void)filterContentWithPredicate:(nullable NSPredicate *)predicate +{ + for (RSTCellContentDataSource *dataSource in self.dataSources) + { + [dataSource filterContentWithPredicate:predicate]; + } +} + +#pragma mark - - + +- (nullable NSIndexPath *)dataSource:(RSTCellContentDataSource *)dataSource localIndexPathForGlobalIndexPath:(nonnull NSIndexPath *)indexPath +{ + NSValue *rangeValue = [self.dataSourceRanges objectForKey:dataSource]; + if (rangeValue == nil) + { + return nil; + } + + NSRange range = [rangeValue rangeValue]; + + NSIndexPath *localIndexPath = nil; + + if ([self shouldFlattenSections]) + { + NSInteger item = indexPath.item - range.location; + NSInteger section = [self sectionForItem:item dataSource:dataSource]; + + for (int i = 0; i < section; i++) + { + NSInteger count = [dataSource contentView:self.contentView numberOfItemsInSection:i]; + item -= count; + } + + localIndexPath = [NSIndexPath indexPathForItem:item inSection:section]; + } + else + { + localIndexPath = [NSIndexPath indexPathForItem:indexPath.item inSection:indexPath.section - range.location]; + } + + return localIndexPath; +} + +- (nullable NSIndexPath *)dataSource:(RSTCellContentDataSource *)dataSource globalIndexPathForLocalIndexPath:(nonnull NSIndexPath *)indexPath +{ + NSValue *rangeValue = [self.dataSourceRanges objectForKey:dataSource]; + if (rangeValue == nil) + { + return nil; + } + + NSRange range = [rangeValue rangeValue]; + + NSIndexPath *globalIndexPath = nil; + + if ([self shouldFlattenSections]) + { + NSInteger item = indexPath.item; + + for (int i = 0; i < indexPath.section; i++) + { + NSInteger count = [dataSource contentView:self.contentView numberOfItemsInSection:i]; + item += count; + } + + globalIndexPath = [NSIndexPath indexPathForItem:item inSection:0]; + } + else + { + globalIndexPath = [NSIndexPath indexPathForItem:indexPath.item inSection:indexPath.section + range.location]; + } + + if (self.indexPathTranslator != nil) + { + globalIndexPath = [self.indexPathTranslator dataSource:self globalIndexPathForLocalIndexPath:globalIndexPath]; + } + + return globalIndexPath; +} + +#pragma mark - Getters/Setters - + +- (void)setContentView:(UIScrollView *)contentView +{ + [super setContentView:contentView]; + + for (RSTCellContentDataSource *dataSource in self.dataSources) + { + dataSource.contentView = contentView; + } +} + +- (void)setShouldFlattenSections:(BOOL)shouldFlattenSections +{ + if (shouldFlattenSections == _shouldFlattenSections) + { + return; + } + + _shouldFlattenSections = shouldFlattenSections; + + [self.contentView reloadData]; +} + +@end + +@implementation RSTCompositeTableViewDataSource +@end + +@implementation RSTCompositeCollectionViewDataSource +@end + +@implementation RSTCompositePrefetchingDataSource +@dynamic prefetchItemCache; +@dynamic prefetchHandler; +@dynamic prefetchCompletionHandler; + +- (BOOL)isPrefetchingDataSource +{ + return YES; +} + +@end + +@implementation RSTCompositeTableViewPrefetchingDataSource +@end + +@implementation RSTCompositeCollectionViewPrefetchingDataSource +@end diff --git a/Pods/Roxas/Roxas/RSTConstants.h b/Pods/Roxas/Roxas/RSTConstants.h new file mode 100644 index 000000000..482dea394 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTConstants.h @@ -0,0 +1,16 @@ +// +// RSTConstants.h +// Roxas +// +// Created by Riley Testut on 1/23/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +#ifndef RSTConstants_h +#define RSTConstants_h + +@import UIKit; + +static UIViewAnimationOptions RSTSystemTransitionAnimationCurve = (7 << 16); + +#endif /* RSTConstants_h */ diff --git a/Pods/Roxas/Roxas/RSTDefines.h b/Pods/Roxas/Roxas/RSTDefines.h new file mode 100644 index 000000000..c94c9c48f --- /dev/null +++ b/Pods/Roxas/Roxas/RSTDefines.h @@ -0,0 +1,38 @@ +// +// RSTDefines.h +// Roxas +// +// Created by Riley Testut on 12/6/14. +// Copyright (c) 2014 Riley Testut. All rights reserved. +// + +#ifndef Roxas_RSTDefines_h +#define Roxas_RSTDefines_h + +#if defined(__cplusplus) +#define RST_EXTERN extern "C" +#else +#define RST_EXTERN extern +#endif + +/*** Logging ***/ + +// http://stackoverflow.com/questions/969130/how-to-print-out-the-method-name-and-line-number-and-conditionally-disable-nslog +#ifdef DEBUG +# define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__) +#else +# define DLog(...) +#endif + +// ALog always displays output regardless of the DEBUG setting +#define ALog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__) + +#ifdef DEBUG +# define ULog(fmt, ...) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"%s\n [Line %d] ", __PRETTY_FUNCTION__, __LINE__] message:[NSString stringWithFormat:fmt, ##__VA_ARGS__] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; } +#else +# define ULog(...) +#endif + +#define ELog(error) NSLog(@"%s [Line %d] Error:\n%@\n%@\n%@", __PRETTY_FUNCTION__, __LINE__, [error localizedDescription], [error localizedRecoverySuggestion], [error userInfo]) + +#endif diff --git a/Pods/Roxas/Roxas/RSTDynamicDataSource.h b/Pods/Roxas/Roxas/RSTDynamicDataSource.h new file mode 100644 index 000000000..cb36fd835 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTDynamicDataSource.h @@ -0,0 +1,50 @@ +// +// RSTDynamicDataSource.h +// Roxas +// +// Created by Riley Testut on 1/2/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +#import "RSTCellContentDataSource.h" +#import "RSTCellContentPrefetchingDataSource.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTDynamicDataSource *, ViewType: UIScrollView *, DataSourceType> : RSTCellContentDataSource + +@property (copy, nonatomic) NSInteger (^numberOfSectionsHandler)(void); +@property (copy, nonatomic) NSInteger (^numberOfItemsHandler)(NSInteger section); + +@end + +@interface RSTDynamicPrefetchingDataSource *, ViewType: UIScrollView *, DataSourceType, PrefetchContentType> : RSTDynamicDataSource + +@property (nonatomic) NSCache *prefetchItemCache; + +@property (nullable, copy, nonatomic) NSOperation *_Nullable (^prefetchHandler)(ContentType item, NSIndexPath *indexPath, void (^completionHandler)(_Nullable PrefetchContentType item, NSError *_Nullable error)); +@property (nullable, copy, nonatomic) void (^prefetchCompletionHandler)(CellType cell, _Nullable PrefetchContentType item, NSIndexPath *indexPath, NSError *_Nullable error); + +@end + +NS_ASSUME_NONNULL_END + + +// Concrete Subclasses + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTDynamicTableViewDataSource : RSTDynamicDataSource> +@end + +@interface RSTDynamicCollectionViewDataSource : RSTDynamicDataSource> +@end + + +@interface RSTDynamicTableViewPrefetchingDataSource : RSTDynamicPrefetchingDataSource, PrefetchContentType> +@end + +@interface RSTDynamicCollectionViewPrefetchingDataSource : RSTDynamicPrefetchingDataSource, PrefetchContentType> +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/RSTDynamicDataSource.m b/Pods/Roxas/Roxas/RSTDynamicDataSource.m new file mode 100644 index 000000000..41a43a59c --- /dev/null +++ b/Pods/Roxas/Roxas/RSTDynamicDataSource.m @@ -0,0 +1,96 @@ +// +// RSTDynamicDataSource.m +// Roxas +// +// Created by Riley Testut on 1/2/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +#import "RSTDynamicDataSource.h" +#import "RSTCellContentDataSource_Subclasses.h" + +@interface RSTPlaceholderItem : NSProxy +@end + +@implementation RSTPlaceholderItem + +- (instancetype)init +{ + return self; +} + +- (void)forwardInvocation:(NSInvocation *)invocation +{ + @throw [NSException exceptionWithName:@"Accessed placeholder item." reason:@"You cannot access the provided item in RSTDynamicDataSource's cellConfigurationHandler." userInfo:nil]; +} + +@end + +@implementation RSTDynamicDataSource + +- (instancetype)init +{ + self = [super init]; + if (self) + { + _numberOfSectionsHandler = [^NSInteger (void) { + return 0; + } copy]; + + _numberOfItemsHandler = [^NSInteger (NSInteger section) { + return 0; + } copy]; + } + + return self; +} + +#pragma mark - RSTCellContentDataSource - + +- (NSInteger)numberOfSectionsInContentView:(__kindof UIScrollView *)contentView +{ + NSInteger numberOfSections = self.numberOfSectionsHandler(); + return numberOfSections; +} + +- (NSInteger)contentView:(__kindof UIScrollView *)contentView numberOfItemsInSection:(NSInteger)section +{ + NSInteger numberOfItems = self.numberOfItemsHandler(section); + return numberOfItems; +} + +- (id)itemAtIndexPath:(NSIndexPath *)indexPath +{ + RSTPlaceholderItem *placeholder = [[RSTPlaceholderItem alloc] init]; + return placeholder; +} + +- (void)filterContentWithPredicate:(NSPredicate *)predicate +{ +} + +@end + +@implementation RSTDynamicTableViewDataSource +@end + +@implementation RSTDynamicCollectionViewDataSource +@end + +@implementation RSTDynamicPrefetchingDataSource +@dynamic prefetchItemCache; +@dynamic prefetchHandler; +@dynamic prefetchCompletionHandler; + +- (BOOL)isPrefetchingDataSource +{ + return YES; +} + +@end + +@implementation RSTDynamicTableViewPrefetchingDataSource +@end + +@implementation RSTDynamicCollectionViewPrefetchingDataSource +@end diff --git a/Pods/Roxas/Roxas/RSTError.h b/Pods/Roxas/Roxas/RSTError.h new file mode 100644 index 000000000..24abe2cea --- /dev/null +++ b/Pods/Roxas/Roxas/RSTError.h @@ -0,0 +1,25 @@ +// +// RSTError.h +// Roxas +// +// Created by Riley Testut on 1/30/19. +// Copyright © 2019 Riley Testut. All rights reserved. +// + +@import Foundation; + +extern NSErrorDomain const RoxasErrorDomain; + +typedef NS_ERROR_ENUM(RoxasErrorDomain, RSTError) +{ + RSTErrorMissingManagedObjectModel = -23, + RSTErrorMissingMappingModel = -24, + RSTErrorMissingPersistentStore = -25, +}; + +NS_ASSUME_NONNULL_BEGIN + +@interface NSError (Roxas) +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/RSTError.m b/Pods/Roxas/Roxas/RSTError.m new file mode 100644 index 000000000..8749c8857 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTError.m @@ -0,0 +1,44 @@ +// +// RSTError.m +// Roxas +// +// Created by Riley Testut on 1/30/19. +// Copyright © 2019 Riley Testut. All rights reserved. +// + +#import "RSTError.h" + +NSErrorDomain const RoxasErrorDomain = @"com.rileytestut.Roxas"; + +@implementation NSError (Roxas) + ++ (void)load +{ + [NSError setUserInfoValueProviderForDomain:RoxasErrorDomain provider:^id _Nullable(NSError * _Nonnull error, NSErrorUserInfoKey _Nonnull userInfoKey) { + if ([userInfoKey isEqualToString:NSLocalizedDescriptionKey]) + { + return [error rst_localizedDescription]; + } + + return nil; + }]; +} + +- (nullable NSString *)rst_localizedDescription +{ + switch (self.code) + { + case RSTErrorMissingManagedObjectModel: + return NSLocalizedString(@"Unable to find any managed object models.", @""); + + case RSTErrorMissingMappingModel: + return NSLocalizedString(@"Unable to find a valid mapping model.", @""); + + case RSTErrorMissingPersistentStore: + return NSLocalizedString(@"Unable to find a persistent store.", @""); + } + + return nil; +} + +@end diff --git a/Pods/Roxas/Roxas/RSTFetchedResultsDataSource.h b/Pods/Roxas/Roxas/RSTFetchedResultsDataSource.h new file mode 100644 index 000000000..d1a8824fe --- /dev/null +++ b/Pods/Roxas/Roxas/RSTFetchedResultsDataSource.h @@ -0,0 +1,59 @@ +// +// RSTFetchedResultsDataSource.h +// Roxas +// +// Created by Riley Testut on 8/12/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +#import "RSTCellContentDataSource.h" +#import "RSTCellContentPrefetchingDataSource.h" + +@import CoreData; + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTFetchedResultsDataSource *, ViewType: UIScrollView *, DataSourceType> : RSTCellContentDataSource + +@property (nonatomic) NSInteger liveFetchLimit; + +@property (nonatomic) NSFetchedResultsController *fetchedResultsController; + +- (instancetype)initWithFetchRequest:(NSFetchRequest *)fetchRequest managedObjectContext:(NSManagedObjectContext *)managedObjectContext; +- (instancetype)initWithFetchedResultsController:(NSFetchedResultsController *)fetchedResultsController NS_DESIGNATED_INITIALIZER; + +- (instancetype)init NS_UNAVAILABLE; + +@end + + +@interface RSTFetchedResultsPrefetchingDataSource *, ViewType: UIScrollView *, DataSourceType, PrefetchContentType> : RSTFetchedResultsDataSource + +@property (nonatomic) NSCache *prefetchItemCache; + +@property (nullable, copy, nonatomic) NSOperation *_Nullable (^prefetchHandler)(ContentType item, NSIndexPath *indexPath, void (^completionHandler)(_Nullable PrefetchContentType item, NSError *_Nullable error)); +@property (nullable, copy, nonatomic) void (^prefetchCompletionHandler)(CellType cell, _Nullable PrefetchContentType item, NSIndexPath *indexPath, NSError *_Nullable error); + +@end + +NS_ASSUME_NONNULL_END + + +// Concrete Subclasses + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTFetchedResultsTableViewDataSource : RSTFetchedResultsDataSource> +@end + +@interface RSTFetchedResultsCollectionViewDataSource : RSTFetchedResultsDataSource> +@end + + +@interface RSTFetchedResultsTableViewPrefetchingDataSource : RSTFetchedResultsPrefetchingDataSource, PrefetchContentType> +@end + +@interface RSTFetchedResultsCollectionViewPrefetchingDataSource : RSTFetchedResultsPrefetchingDataSource, PrefetchContentType> +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/RSTFetchedResultsDataSource.m b/Pods/Roxas/Roxas/RSTFetchedResultsDataSource.m new file mode 100644 index 000000000..0bab35621 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTFetchedResultsDataSource.m @@ -0,0 +1,398 @@ +// +// RSTFetchedResultsDataSource.m +// Roxas +// +// Created by Riley Testut on 8/12/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +#import "RSTFetchedResultsDataSource.h" +#import "RSTCellContentDataSource_Subclasses.h" + +#import "RSTBlockOperation.h" +#import "RSTSearchController.h" + +#import "RSTHelperFile.h" + +static void *RSTFetchedResultsDataSourceContext = &RSTFetchedResultsDataSourceContext; + + +NS_ASSUME_NONNULL_BEGIN + +// Declare custom NSPredicate subclass so we can detect whether NSFetchedResultsController's predicate was changed externally or by us. +@interface RSTProxyPredicate : NSCompoundPredicate + +- (instancetype)initWithPredicate:(nullable NSPredicate *)predicate externalPredicate:(nullable NSPredicate *)externalPredicate; + +@end + +NS_ASSUME_NONNULL_END + + +@implementation RSTProxyPredicate + +- (instancetype)initWithPredicate:(nullable NSPredicate *)predicate externalPredicate:(nullable NSPredicate *)externalPredicate +{ + NSMutableArray *subpredicates = [NSMutableArray array]; + + if (externalPredicate != nil) + { + [subpredicates addObject:externalPredicate]; + } + + if (predicate != nil) + { + [subpredicates addObject:predicate]; + } + + self = [super initWithType:NSAndPredicateType subpredicates:subpredicates]; + return self; +} + +@end + + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTFetchedResultsDataSource () + +@property (nonatomic, copy, nullable) NSPredicate *externalPredicate; + +@end + +NS_ASSUME_NONNULL_END + + +@implementation RSTFetchedResultsDataSource + +- (instancetype)initWithFetchRequest:(NSFetchRequest *)fetchRequest managedObjectContext:(NSManagedObjectContext *)managedObjectContext +{ + NSFetchedResultsController *fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:nil cacheName:nil]; + + self = [self initWithFetchedResultsController:fetchedResultsController]; + return self; +} + +- (instancetype)initWithFetchedResultsController:(NSFetchedResultsController *)fetchedResultsController +{ + self = [super init]; + if (self) + { + [self setFetchedResultsController:fetchedResultsController]; + + __weak RSTFetchedResultsDataSource *weakSelf = self; + self.defaultSearchHandler = ^NSOperation *(RSTSearchValue *searchValue, RSTSearchValue *previousSearchValue) { + return [RSTBlockOperation blockOperationWithExecutionBlock:^(RSTBlockOperation * _Nonnull __weak operation) { + [weakSelf setPredicate:searchValue.predicate refreshContent:NO]; + + // Only refresh content if search operation has not been cancelled, such as when the search text changes. + if (operation != nil && ![operation isCancelled]) + { + dispatch_async(dispatch_get_main_queue(), ^{ + [weakSelf.contentView reloadData]; + }); + } + }]; + }; + } + + return self; +} + +- (void)dealloc +{ + [_fetchedResultsController removeObserver:self forKeyPath:@"fetchRequest.predicate" context:RSTFetchedResultsDataSourceContext]; +} + +#pragma mark - RSTCellContentViewDataSource - + +- (id)itemAtIndexPath:(NSIndexPath *)indexPath +{ + id item = [self.fetchedResultsController objectAtIndexPath:indexPath]; + return item; +} + +- (NSInteger)numberOfSectionsInContentView:(__kindof UIView *)contentView +{ + if (self.fetchedResultsController.sections == nil) + { + NSError *error = nil; + if (![self.fetchedResultsController performFetch:&error]) + { + ELog(error); + } + } + + NSInteger numberOfSections = self.fetchedResultsController.sections.count; + return numberOfSections; +} + +- (NSInteger)contentView:(__kindof UIView *)contentView numberOfItemsInSection:(NSInteger)section +{ + id sectionInfo = self.fetchedResultsController.sections[section]; + + if (self.liveFetchLimit == 0) + { + return sectionInfo.numberOfObjects; + } + else + { + return MIN(sectionInfo.numberOfObjects, self.liveFetchLimit); + } +} + +- (void)filterContentWithPredicate:(nullable NSPredicate *)predicate +{ + RSTProxyPredicate *proxyPredicate = [[RSTProxyPredicate alloc] initWithPredicate:predicate externalPredicate:self.externalPredicate]; + self.fetchedResultsController.fetchRequest.predicate = proxyPredicate; + + NSError *error = nil; + if (![self.fetchedResultsController performFetch:&error]) + { + ELog(error); + } +} + +#pragma mark - KVO - + +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context +{ + if (context != RSTFetchedResultsDataSourceContext) + { + return [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; + } + + NSPredicate *predicate = change[NSKeyValueChangeNewKey]; + if (![predicate isKindOfClass:[RSTProxyPredicate class]]) + { + self.externalPredicate = predicate; + + RSTProxyPredicate *proxyPredicate = [[RSTProxyPredicate alloc] initWithPredicate:self.predicate externalPredicate:self.externalPredicate]; + [[(NSFetchedResultsController *)object fetchRequest] setPredicate:proxyPredicate]; + } +} + +#pragma mark - - + +- (void)controllerWillChangeContent:(NSFetchedResultsController *)controller +{ + [self.contentView beginUpdates]; +} + +- (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id)sectionInfo atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type +{ + RSTCellContentChangeType changeType = RSTCellContentChangeTypeFromFetchedResultsChangeType(type); + + RSTCellContentChange *change = [[RSTCellContentChange alloc] initWithType:changeType sectionIndex:sectionIndex]; + change.rowAnimation = self.rowAnimation; + [self addChange:change]; +} + +- (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath +{ + RSTCellContentChangeType changeType = RSTCellContentChangeTypeFromFetchedResultsChangeType(type); + + RSTCellContentChange *change = nil; + + if (type == NSFetchedResultsChangeUpdate && ![indexPath isEqual:newIndexPath]) + { + // Sometimes NSFetchedResultsController incorrectly reports moves as updates with different index paths. + // This can cause assertion failures and strange UI issues. + // To compensate, we manually check for these "updates" and turn them into moves. + change = [[RSTCellContentChange alloc] initWithType:RSTCellContentChangeMove currentIndexPath:indexPath destinationIndexPath:newIndexPath]; + } + else + { + change = [[RSTCellContentChange alloc] initWithType:changeType currentIndexPath:indexPath destinationIndexPath:newIndexPath]; + } + + change.rowAnimation = self.rowAnimation; + + if (self.liveFetchLimit > 0) + { + NSInteger itemCount = self.itemCount; + + switch (change.type) + { + case RSTCellContentChangeInsert: + if (newIndexPath.item >= self.liveFetchLimit) + { + return; + } + + break; + + case RSTCellContentChangeDelete: + if (indexPath.item >= self.liveFetchLimit) + { + return; + } + + if (itemCount >= self.liveFetchLimit) + { + // Unlike insertions, deletions don't also report the items that moved. + // To ensure consistency, we manually insert an item previously hidden by fetch limit. + NSIndexPath *indexPath = [NSIndexPath indexPathForItem:self.liveFetchLimit - 1 inSection:0]; + + RSTCellContentChange *change = [[RSTCellContentChange alloc] initWithType:RSTCellContentChangeInsert currentIndexPath:nil destinationIndexPath:indexPath]; + [self.contentView addChange:change]; + } + + break; + + case RSTCellContentChangeUpdate: + if (indexPath.item >= self.liveFetchLimit) + { + return; + } + + break; + + case RSTCellContentChangeMove: + if (indexPath.item >= self.liveFetchLimit && newIndexPath.item >= self.liveFetchLimit) + { + return; + } + else if (indexPath.item >= self.liveFetchLimit && newIndexPath.item < self.liveFetchLimit) + { + change = [[RSTCellContentChange alloc] initWithType:RSTCellContentChangeInsert currentIndexPath:nil destinationIndexPath:newIndexPath]; + } + else if (indexPath.item < self.liveFetchLimit && newIndexPath.item >= self.liveFetchLimit) + { + change = [[RSTCellContentChange alloc] initWithType:RSTCellContentChangeDelete currentIndexPath:indexPath destinationIndexPath:nil]; + } + + break; + } + } + + [self addChange:change]; +} + +- (void)controllerDidChangeContent:(NSFetchedResultsController *)controller +{ + [self.contentView endUpdates]; +} + +#pragma mark - Getters/Setters - + +- (void)setFetchedResultsController:(NSFetchedResultsController *)fetchedResultsController +{ + if (fetchedResultsController == _fetchedResultsController) + { + return; + } + + // Clean up previous _fetchedResultsController. + [_fetchedResultsController removeObserver:self forKeyPath:@"fetchRequest.predicate" context:RSTFetchedResultsDataSourceContext]; + + _fetchedResultsController.fetchRequest.predicate = self.externalPredicate; + self.externalPredicate = nil; + + + // Prepare new _fetchedResultsController. + _fetchedResultsController = fetchedResultsController; + + if (_fetchedResultsController.delegate == nil) + { + _fetchedResultsController.delegate = self; + } + + self.externalPredicate = _fetchedResultsController.fetchRequest.predicate; + + RSTProxyPredicate *proxyPredicate = [[RSTProxyPredicate alloc] initWithPredicate:self.predicate externalPredicate:self.externalPredicate]; + _fetchedResultsController.fetchRequest.predicate = proxyPredicate; + + [_fetchedResultsController addObserver:self forKeyPath:@"fetchRequest.predicate" options:NSKeyValueObservingOptionNew context:RSTFetchedResultsDataSourceContext]; + + rst_dispatch_sync_on_main_thread(^{ + [self.contentView reloadData]; + }); +} + +- (void)setLiveFetchLimit:(NSInteger)liveFetchLimit +{ + if (liveFetchLimit == _liveFetchLimit) + { + return; + } + + NSInteger previousLiveFetchLimit = _liveFetchLimit; + _liveFetchLimit = liveFetchLimit; + + // Turn 0 -> NSIntegerMax to simplify calculations. + if (liveFetchLimit == 0) + { + liveFetchLimit = NSIntegerMax; + } + + if (previousLiveFetchLimit == 0) + { + previousLiveFetchLimit = NSIntegerMax; + } + + [self.contentView beginUpdates]; + + id sectionInfo = self.fetchedResultsController.sections.firstObject; + NSInteger itemCount = sectionInfo.numberOfObjects; + + if (liveFetchLimit > previousLiveFetchLimit) + { + for (NSInteger i = previousLiveFetchLimit; i < itemCount; i++) + { + NSIndexPath *indexPath = [NSIndexPath indexPathForItem:i inSection:0]; + + RSTCellContentChange *change = [[RSTCellContentChange alloc] initWithType:RSTCellContentChangeInsert currentIndexPath:nil destinationIndexPath:indexPath]; + [self addChange:change]; + } + } + else + { + for (NSInteger i = liveFetchLimit; i < itemCount && i < previousLiveFetchLimit; i++) + { + NSIndexPath *indexPath = [NSIndexPath indexPathForItem:i inSection:0]; + + RSTCellContentChange *change = [[RSTCellContentChange alloc] initWithType:RSTCellContentChangeDelete currentIndexPath:indexPath destinationIndexPath:nil]; + [self addChange:change]; + } + } + + [self.contentView endUpdates]; +} + +- (NSInteger)itemCount +{ + if (self.fetchedResultsController.fetchedObjects == nil) + { + return [super itemCount]; + } + + NSUInteger itemCount = self.fetchedResultsController.fetchedObjects.count; + return itemCount; +} + +@end + +@implementation RSTFetchedResultsTableViewDataSource +@end + +@implementation RSTFetchedResultsCollectionViewDataSource +@end + +@implementation RSTFetchedResultsPrefetchingDataSource +@dynamic prefetchItemCache; +@dynamic prefetchHandler; +@dynamic prefetchCompletionHandler; + +- (BOOL)isPrefetchingDataSource +{ + return YES; +} + +@end + +@implementation RSTFetchedResultsTableViewPrefetchingDataSource +@end + +@implementation RSTFetchedResultsCollectionViewPrefetchingDataSource +@end diff --git a/Pods/Roxas/Roxas/RSTHasher.h b/Pods/Roxas/Roxas/RSTHasher.h new file mode 100644 index 000000000..a92e9bbf3 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTHasher.h @@ -0,0 +1,22 @@ +// +// RSTHasher.h +// Roxas +// +// Created by Riley Testut on 11/7/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +@import Foundation; + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTHasher : NSObject + ++ (nullable NSString *)sha1HashOfFileAtURL:(NSURL *)fileURL error:(NSError **)error; ++ (NSString *)sha1HashOfData:(NSData *)data; + +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/RSTHasher.m b/Pods/Roxas/Roxas/RSTHasher.m new file mode 100644 index 000000000..731787d7a --- /dev/null +++ b/Pods/Roxas/Roxas/RSTHasher.m @@ -0,0 +1,75 @@ +// +// RSTHasher.m +// Roxas +// +// Created by Riley Testut on 11/7/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +#import "RSTHasher.h" + +@import CommonCrypto; + +@implementation RSTHasher + ++ (nullable NSString *)sha1HashOfFileAtURL:(NSURL *)fileURL error:(NSError * _Nullable __autoreleasing * _Nullable)error +{ + NSInteger bufferSize = 1024 * 1024; + + NSFileHandle *fileHandle = [NSFileHandle fileHandleForReadingFromURL:fileURL error:error]; + if (fileHandle == nil) + { + return nil; + } + + CC_SHA1_CTX context; + CC_SHA1_Init(&context); + + while (true) + { + @autoreleasepool + { + NSData *data = [fileHandle readDataOfLength:bufferSize]; + if (data.length == 0) + { + break; + } + + CC_SHA1_Update(&context, [data bytes], (unsigned int)data.length); + } + } + + unsigned char digest[CC_SHA1_DIGEST_LENGTH]; + CC_SHA1_Final(digest, &context); + + NSString *hashString = [RSTHasher hashStringFromDigest:digest]; + return hashString; +} + ++ (NSString *)sha1HashOfData:(NSData *)data +{ + CC_SHA1_CTX context; + CC_SHA1_Init(&context); + + CC_SHA1_Update(&context, [data bytes], (unsigned int)data.length); + + unsigned char digest[CC_SHA1_DIGEST_LENGTH]; + CC_SHA1_Final(digest, &context); + + NSString *hashString = [RSTHasher hashStringFromDigest:digest]; + return hashString; +} + ++ (NSString *)hashStringFromDigest:(unsigned char[CC_SHA1_DIGEST_LENGTH])digest +{ + NSMutableString *hashString = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH * 2]; + + for (int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++) + { + [hashString appendFormat:@"%02x", digest[i]]; + } + + return [hashString copy]; +} + +@end diff --git a/Pods/Roxas/Roxas/RSTHelperFile.h b/Pods/Roxas/Roxas/RSTHelperFile.h new file mode 100644 index 000000000..7c87490bb --- /dev/null +++ b/Pods/Roxas/Roxas/RSTHelperFile.h @@ -0,0 +1,51 @@ +// +// RSTHelperFile.h +// Hoot +// +// Created by Riley Testut on 3/16/13. +// Copyright (c) 2013 Riley Testut. All rights reserved. +// + +#import "RSTNavigationController.h" + +@import UIKit; + +/*** Math ***/ + +static inline CGFloat RSTDegreesFromRadians(CGFloat radians) +{ + return radians * (180.0 / M_PI); +} + +static inline CGFloat RSTRadiansFromDegrees(CGFloat degrees) +{ + return (degrees * M_PI) / 180.0; +} + +static inline BOOL CGFloatEqualToFloat(CGFloat float1, CGFloat float2) +{ + if (float1 == float2) + { + return YES; + } + + if (ABS(float1 - float2) < FLT_EPSILON) + { + return YES; + } + + return NO; +} + +/*** Private Debugging ***/ + +// Daniel Eggert, http://www.objc.io/issue-2/low-level-concurrency-apis.html +// Returns average number of nanoseconds needed to perform task +RST_EXTERN uint64_t rst_benchmark(size_t count, void (^block)(void)); + + +/*** Concurrency ***/ + +RST_EXTERN void rst_dispatch_sync_on_main_thread(dispatch_block_t block); +RST_EXTERN UIBackgroundTaskIdentifier RSTBeginBackgroundTask(NSString *name); +RST_EXTERN void RSTEndBackgroundTask(UIBackgroundTaskIdentifier backgroundTask); diff --git a/Pods/Roxas/Roxas/RSTHelperFile.m b/Pods/Roxas/Roxas/RSTHelperFile.m new file mode 100644 index 000000000..4afdfccb1 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTHelperFile.m @@ -0,0 +1,57 @@ +// +// RSTHelperFile.m +// Hoot +// +// Created by Riley Testut on 3/16/13. +// Copyright (c) 2013 Riley Testut. All rights reserved. +// + +#import "RSTHelperFile.h" + +#ifdef DEBUG + +uint64_t dispatch_benchmark(size_t count, void (^block)(void)); + +uint64_t rst_benchmark(size_t count, void (^block)(void)) +{ + return dispatch_benchmark(count, block);; +} + +#else + +uint64_t rst_benchmark(size_t count, void (^block)(void)) +{ + return 0; +} + +#endif + +void rst_dispatch_sync_on_main_thread(dispatch_block_t block) +{ + if ([NSThread isMainThread]) + { + if (block) + { + block(); + } + } + else + { + dispatch_sync(dispatch_get_main_queue(), block); + } +} + +UIBackgroundTaskIdentifier RSTBeginBackgroundTask(NSString *name) +{ + __block UIBackgroundTaskIdentifier backgroundTask = [[[UIApplication class] sharedApplication] beginBackgroundTaskWithName:name expirationHandler:^{ + RSTEndBackgroundTask(backgroundTask); + }]; + + return backgroundTask; +}; + +void RSTEndBackgroundTask(UIBackgroundTaskIdentifier backgroundTask) +{ + [[[UIApplication class] sharedApplication] endBackgroundTask:backgroundTask]; + backgroundTask = UIBackgroundTaskInvalid; +} \ No newline at end of file diff --git a/Pods/Roxas/Roxas/RSTLaunchViewController.h b/Pods/Roxas/Roxas/RSTLaunchViewController.h new file mode 100644 index 000000000..3437539ef --- /dev/null +++ b/Pods/Roxas/Roxas/RSTLaunchViewController.h @@ -0,0 +1,40 @@ +// +// RSTLaunchViewController.h +// Roxas +// +// Created by Riley Testut on 3/24/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +@import UIKit; + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTLaunchCondition : NSObject + +@property (nonatomic, copy, readonly) BOOL (^condition)(void); +@property (nonatomic, copy, readonly) void (^action)(void (^completionHandler)(NSError *_Nullable error)); + +- (instancetype)initWithCondition:(BOOL (^)(void))condition action:(void (^)(void (^completionHandler)(NSError *_Nullable error)))action; + +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END + + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTLaunchViewController : UIViewController + +@property (nonatomic, readonly) NSArray *launchConditions; + +- (void)handleLaunchConditions; +- (void)handleLaunchError:(NSError *)error; + +- (void)finishLaunching; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/RSTLaunchViewController.m b/Pods/Roxas/Roxas/RSTLaunchViewController.m new file mode 100644 index 000000000..a4b16fd11 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTLaunchViewController.m @@ -0,0 +1,148 @@ +// +// RSTLaunchViewController.m +// Roxas +// +// Created by Riley Testut on 3/24/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +#import "RSTLaunchViewController.h" +#import "RSTHelperFile.h" +#import "NSLayoutConstraint+Edges.h" + +@implementation RSTLaunchCondition + +- (instancetype)initWithCondition:(BOOL (^)(void))condition action:(void (^)(void (^completionHandler)(NSError *_Nullable error)))action +{ + self = [super init]; + if (self) + { + _condition = [condition copy]; + _action = [action copy]; + } + + return self; +} + +@end + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTLaunchViewController () + +@property (nonatomic, nullable) UIView *launchView; + +@end + +NS_ASSUME_NONNULL_END + + +@implementation RSTLaunchViewController + +- (void)viewDidLoad +{ + [super viewDidLoad]; + + NSString *storyboardName = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UILaunchStoryboardName"]; + if (storyboardName == nil) + { + return; + } + + if ([[NSBundle mainBundle] URLForResource:storyboardName withExtension:@"nib"] != nil) + { + UINib *launchNib = [UINib nibWithNibName:storyboardName bundle:[NSBundle mainBundle]]; + + NSArray *objects = [launchNib instantiateWithOwner:nil options:nil]; + + for (UIView *view in objects) + { + if ([view isKindOfClass:[UIView class]]) + { + self.launchView = view; + break; + } + } + } + else + { + UIStoryboard *launchStoryboard = [UIStoryboard storyboardWithName:storyboardName bundle:[NSBundle mainBundle]]; + + UIViewController *initialViewController = [launchStoryboard instantiateInitialViewController]; + self.launchView = initialViewController.view; + } + + if (self.launchView == nil) + { + return; + } + + [self.view addSubview:self.launchView pinningEdgesWithInsets:UIEdgeInsetsZero]; + [self.view sendSubviewToBack:self.launchView]; +} + +- (void)viewDidAppear:(BOOL)animated +{ + [super viewDidAppear:animated]; + + [self handleLaunchConditions]; +} + +#pragma mark - RSTLaunchViewController - + +- (void)handleLaunchConditions +{ + [self handleLaunchConditionAtIndex:0]; +} + +- (void)handleLaunchConditionAtIndex:(NSInteger)index +{ + if (![NSThread isMainThread]) + { + dispatch_async(dispatch_get_main_queue(), ^{ + [self handleLaunchConditionAtIndex:index]; + }); + + return; + } + + if (index >= self.launchConditions.count) + { + [self finishLaunching]; + + return; + } + + RSTLaunchCondition *condition = self.launchConditions[index]; + + if (condition.condition()) + { + [self handleLaunchConditionAtIndex:index + 1]; + } + else + { + condition.action(^(NSError *_Nullable error) { + if (error != nil) + { + rst_dispatch_sync_on_main_thread(^{ + [self handleLaunchError:error]; + }); + + return; + } + + [self handleLaunchConditionAtIndex:index + 1]; + }); + } +} + +- (void)handleLaunchError:(NSError *)error +{ + DLog(@"Launch Error: %@", [error localizedDescription]); +} + +- (void)finishLaunching +{ +} + +@end diff --git a/Pods/Roxas/Roxas/RSTLoadOperation.h b/Pods/Roxas/Roxas/RSTLoadOperation.h new file mode 100644 index 000000000..2cefb1233 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTLoadOperation.h @@ -0,0 +1,29 @@ +// +// RSTLoadOperation.h +// Roxas +// +// Created by Riley Testut on 2/21/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +#import "RSTOperation.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTLoadOperation : RSTOperation + +@property (nullable, nonatomic) CacheKeyType cacheKey; + +@property (copy, nonatomic) void (^resultHandler)(_Nullable ResultType, NSError *_Nullable); +@property (nullable, nonatomic) NSCache *resultsCache; + +- (instancetype)initWithCacheKey:(nullable CacheKeyType)cacheKey NS_DESIGNATED_INITIALIZER; + +// Overridden by subclasses to return result. +- (void)loadResultWithCompletion:(void (^)(_Nullable ResultType, NSError *_Nullable))completion; + +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/RSTLoadOperation.m b/Pods/Roxas/Roxas/RSTLoadOperation.m new file mode 100644 index 000000000..844243e49 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTLoadOperation.m @@ -0,0 +1,110 @@ +// +// RSTLoadOperation.m +// Roxas +// +// Created by Riley Testut on 2/21/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +#import "RSTLoadOperation.h" +#import "RSTOperation_Subclasses.h" + +@import UIKit; + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTLoadOperation () + +@property (nullable, strong, nonatomic) id result; +@property (nullable, strong, nonatomic) id error; + +@end + +NS_ASSUME_NONNULL_END + + +@implementation RSTLoadOperation + +- (instancetype)initWithCacheKey:(id)cacheKey +{ + self = [super init]; + if (self) + { + _cacheKey = cacheKey; + } + + return self; +} + +- (void)main +{ + id cachedResult = nil; + if (self.cacheKey) + { + cachedResult = [self.resultsCache objectForKey:self.cacheKey]; + } + + if (cachedResult) + { + self.result = cachedResult; + + if ([self isAsynchronous]) + { + [self finish]; + } + + return; + } + + [self loadResultWithCompletion:^(id _Nullable result, NSError *_Nullable error) { + + if ([self isCancelled]) + { + return; + } + + self.result = result; + self.error = error; + + if (self.result && self.cacheKey) + { + [self.resultsCache setObject:result forKey:self.cacheKey]; + } + + if ([self isAsynchronous]) + { + [self finish]; + } + }]; +} + +- (void)loadResultWithCompletion:(void (^)(id _Nullable, NSError *_Nullable error))completion +{ + completion(nil, nil); +} + +- (void)finish +{ + [super finish]; + + if (self.resultHandler) + { + self.resultHandler(self.result, self.error); + } +} + +#pragma mark - Getters/Setters - + +- (void)setResultsCache:(NSCache *)resultsCache +{ + _resultsCache = resultsCache; + + if (self.cacheKey && [_resultsCache objectForKey:self.cacheKey]) + { + // Ensures if an item is cached, it will be returned immediately. + // This is useful to prevent temporary flashes of placeholder images. + self.immediate = YES; + } +} + +@end diff --git a/Pods/Roxas/Roxas/RSTNavigationController.h b/Pods/Roxas/Roxas/RSTNavigationController.h new file mode 100644 index 000000000..db06c7df0 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTNavigationController.h @@ -0,0 +1,15 @@ +// +// RSTNavigationController.h +// Roxas +// +// Created by Riley Testut on 11/5/14. +// Copyright (c) 2014 Riley Testut. All rights reserved. +// + +@import UIKit; + +@interface RSTNavigationController : UINavigationController + +@end + +RST_EXTERN RSTNavigationController *RSTContainInNavigationController(UIViewController *viewController); diff --git a/Pods/Roxas/Roxas/RSTNavigationController.m b/Pods/Roxas/Roxas/RSTNavigationController.m new file mode 100644 index 000000000..a452e17c4 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTNavigationController.m @@ -0,0 +1,53 @@ +// +// RSTNavigationController.m +// Roxas +// +// Created by Riley Testut on 11/5/14. +// Copyright (c) 2014 Riley Testut. All rights reserved. +// + +#import "RSTNavigationController.h" + +@interface RSTNavigationController () + +@end + +@implementation RSTNavigationController + +- (void)viewDidLoad +{ + [super viewDidLoad]; + // Do any additional setup after loading the view. +} + +- (void)didReceiveMemoryWarning +{ + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +#pragma mark - Rotation - + +- (BOOL)shouldAutorotate +{ + return [self.topViewController shouldAutorotate]; +} + +- (UIInterfaceOrientationMask)supportedInterfaceOrientations +{ + return [self.topViewController supportedInterfaceOrientations]; +} + +- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation +{ + return [self.topViewController preferredInterfaceOrientationForPresentation]; +} + +@end + + +RSTNavigationController *RSTContainInNavigationController(UIViewController *viewController) +{ + RSTNavigationController *navigationController = [[RSTNavigationController alloc] initWithRootViewController:viewController]; + return navigationController; +} \ No newline at end of file diff --git a/Pods/Roxas/Roxas/RSTNibView.h b/Pods/Roxas/Roxas/RSTNibView.h new file mode 100644 index 000000000..1ac73271d --- /dev/null +++ b/Pods/Roxas/Roxas/RSTNibView.h @@ -0,0 +1,16 @@ +// +// RSTNibView.h +// Roxas +// +// Created by Riley Testut on 8/23/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +@import UIKit; + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTNibView : UIView +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/RSTNibView.m b/Pods/Roxas/Roxas/RSTNibView.m new file mode 100644 index 000000000..859bd23c8 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTNibView.m @@ -0,0 +1,54 @@ +// +// RSTNibView.m +// Roxas +// +// Created by Riley Testut on 8/23/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +#import "RSTNibView.h" + +#import "NSLayoutConstraint+Edges.h" + +@implementation RSTNibView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) + { + [self initializeFromNib]; + } + + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)aDecoder +{ + self = [super initWithCoder:aDecoder]; + if (self) + { + [self initializeFromNib]; + } + + return self; +} + +- (void)initializeFromNib +{ + NSString *name = NSStringFromClass(self.class); + + NSArray *components = [name componentsSeparatedByString:@"."]; + name = [components lastObject]; + + UINib *nib = [UINib nibWithNibName:name bundle:[NSBundle bundleForClass:self.class]]; + NSArray *views = [nib instantiateWithOwner:self options:nil]; + + UIView *nibView = [views firstObject]; + NSAssert(nibView != nil && [nibView isKindOfClass:[UIView class]], @"The nib for %@ must contain a root UIView.", name); + + nibView.preservesSuperviewLayoutMargins = YES; + [self addSubview:nibView pinningEdgesWithInsets:UIEdgeInsetsZero]; +} + +@end diff --git a/Pods/Roxas/Roxas/RSTOperation.h b/Pods/Roxas/Roxas/RSTOperation.h new file mode 100644 index 000000000..4c33590c6 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTOperation.h @@ -0,0 +1,18 @@ +// +// RSTOperation.h +// Roxas +// +// Created by Riley Testut on 3/14/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +@import Foundation; + +@interface RSTOperation : NSOperation + +// Immediate operations, when added to an RSTOperationQueue, are performed immediately and synchronously. +// Essentially, immediate operations act the same as if they were synchronous operations started outside of an operation queue. +// Because of this, they block whatever thread they were added to the operation queue on, so be careful! +@property (nonatomic, getter=isImmediate) BOOL immediate; + +@end diff --git a/Pods/Roxas/Roxas/RSTOperation.m b/Pods/Roxas/Roxas/RSTOperation.m new file mode 100644 index 000000000..55b94e4c7 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTOperation.m @@ -0,0 +1,124 @@ +// +// RSTOperation.m +// Roxas +// +// Created by Riley Testut on 3/14/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +#import "RSTOperation.h" +#import "RSTOperation_Subclasses.h" + +static void *RSTOperationKVOContext = &RSTOperationKVOContext; + +@implementation RSTOperation + +- (void)start +{ + if (![self isAsynchronous]) + { + [self addObserver:self forKeyPath:NSStringFromSelector(@selector(isFinished)) options:NSKeyValueObservingOptionNew context:RSTOperationKVOContext]; + + [super start]; + + return; + } + + if ([self isFinished]) + { + return; + } + + if ([self isCancelled]) + { + [self finish]; + } + else + { + [self willChangeValueForKey:@"isExecuting"]; + _isExecuting = YES; + [self didChangeValueForKey:@"isExecuting"]; + + [self main]; + } +} + +- (void)finish +{ + if (![self isAsynchronous]) + { + return; + } + + [self willChangeValueForKey:@"isFinished"]; + [self willChangeValueForKey:@"isExecuting"]; + + _isExecuting = NO; + _isFinished = YES; + + [self didChangeValueForKey:@"isExecuting"]; + [self didChangeValueForKey:@"isFinished"]; +} + +- (BOOL)isExecuting +{ + if (![self isAsynchronous]) + { + return [super isExecuting]; + } + + return _isExecuting; +} + +- (BOOL)isFinished +{ + if (![self isAsynchronous]) + { + return [super isFinished]; + } + + return _isFinished; +} + +#pragma mark - KVO - + +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context +{ + if (context != RSTOperationKVOContext) + { + return [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; + } + + if ([change[NSKeyValueChangeNewKey] boolValue]) + { + // Manually call finish for synchronous subclasses that override it to know when operation is finished. + [self finish]; + + [self removeObserver:self forKeyPath:keyPath context:RSTOperationKVOContext]; + } +} + +#pragma mark - Getters/Setters - + +- (void)setImmediate:(BOOL)immediate +{ + if (immediate == _immediate) + { + return; + } + + _immediate = immediate; + + if (immediate) + { + self.qualityOfService = NSQualityOfServiceUserInitiated; + self.queuePriority = NSOperationQueuePriorityHigh; + } + else + { + self.qualityOfService = NSQualityOfServiceDefault; + self.queuePriority = NSOperationQueuePriorityNormal; + } +} + +@end diff --git a/Pods/Roxas/Roxas/RSTOperationQueue.h b/Pods/Roxas/Roxas/RSTOperationQueue.h new file mode 100644 index 000000000..0a3f85674 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTOperationQueue.h @@ -0,0 +1,25 @@ +// +// RSTOperationQueue.h +// Roxas +// +// Created by Riley Testut on 3/14/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +@import Foundation; + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTOperationQueue : NSOperationQueue + +- (void)addOperation:(NSOperation *)operation forKey:(id)key; +- (nullable __kindof NSOperation *)operationForKey:(id)key; + +- (nullable __kindof NSOperation *)objectForKeyedSubscript:(id)key; + +// Unavailable +- (void)addOperations:(NSArray *)ops waitUntilFinished:(BOOL)wait __attribute__((unavailable("waitUntilFinished conflicts with RSTOperation's immediate property."))); + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/RSTOperationQueue.m b/Pods/Roxas/Roxas/RSTOperationQueue.m new file mode 100644 index 000000000..18fa2de95 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTOperationQueue.m @@ -0,0 +1,80 @@ +// +// RSTOperationQueue.m +// Roxas +// +// Created by Riley Testut on 3/14/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +#import "RSTOperationQueue.h" +#import "RSTOperation.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTOperationQueue () + +@property (copy, nonatomic, readonly) NSMapTable *operationsMapTable; + +@end + +NS_ASSUME_NONNULL_END + +@implementation RSTOperationQueue + +#pragma mark - NSOperationQueue - + +- (instancetype)init +{ + self = [super init]; + if (self) + { + _operationsMapTable = [NSMapTable strongToWeakObjectsMapTable]; + } + + return self; +} + +- (void)addOperation:(NSOperation *)operation +{ + [super addOperation:operation]; + + if ([operation isKindOfClass:[RSTOperation class]] && [(RSTOperation *)operation isImmediate]) + { + // Maintain a reference to completion block, and then nil it out so it isn't called automatically + void (^completionBlock)(void) = operation.completionBlock; + operation.completionBlock = nil; + + [operation waitUntilFinished]; + + if (completionBlock) + { + // Call the completion block ourselves to ensure it gets called synchronously *after* waitUntilFinished returns, but *before* this method returns + completionBlock(); + } + } +} + +#pragma mark - RSTOperationQueue - + +- (void)addOperation:(NSOperation *)operation forKey:(id)key +{ + NSOperation *previousOperation = [self operationForKey:key]; + [previousOperation cancel]; + + [self.operationsMapTable setObject:operation forKey:key]; + + [self addOperation:operation]; +} + +- (NSOperation *)operationForKey:(id)key +{ + NSOperation *operation = [self.operationsMapTable objectForKey:key]; + return operation; +} + +- (NSOperation *)objectForKeyedSubscript:(id)key +{ + return [self operationForKey:key]; +} + +@end diff --git a/Pods/Roxas/Roxas/RSTOperation_Subclasses.h b/Pods/Roxas/Roxas/RSTOperation_Subclasses.h new file mode 100644 index 000000000..e6b2b516c --- /dev/null +++ b/Pods/Roxas/Roxas/RSTOperation_Subclasses.h @@ -0,0 +1,19 @@ +// +// RSTOperation_Subclasses.h +// Roxas +// +// Created by Riley Testut on 3/14/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +#import "RSTOperation.h" + +@interface RSTOperation () +{ + @protected BOOL _isExecuting; + @protected BOOL _isFinished; +} + +- (void)finish NS_REQUIRES_SUPER; + +@end diff --git a/Pods/Roxas/Roxas/RSTPersistentContainer.h b/Pods/Roxas/Roxas/RSTPersistentContainer.h new file mode 100644 index 000000000..5f338e95f --- /dev/null +++ b/Pods/Roxas/Roxas/RSTPersistentContainer.h @@ -0,0 +1,29 @@ +// +// RSTPersistentContainer.h +// Roxas +// +// Created by Riley Testut on 7/16/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +@import CoreData; + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTPersistentContainer : NSPersistentContainer + +@property (assign) BOOL shouldAddStoresAsynchronously; + +@property (nonatomic) NSMergePolicy *preferredMergePolicy; + +- (instancetype)initWithName:(NSString *)name bundle:(NSBundle *)bundle; +- (instancetype)initWithName:(NSString *)name managedObjectModel:(NSManagedObjectModel *)model; + +- (NSManagedObjectContext *)newBackgroundSavingViewContext; + +- (NSManagedObjectContext *)newViewContextWithParent:(NSManagedObjectContext *)parent; +- (NSManagedObjectContext *)newBackgroundContextWithParent:(NSManagedObjectContext *)parent; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/RSTPersistentContainer.m b/Pods/Roxas/Roxas/RSTPersistentContainer.m new file mode 100644 index 000000000..11df8f491 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTPersistentContainer.m @@ -0,0 +1,371 @@ +// +// RSTPersistentContainer.m +// Roxas +// +// Created by Riley Testut on 7/16/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +#import "RSTPersistentContainer.h" +#import "RSTRelationshipPreservingMergePolicy.h" + +#import "RSTError.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTPersistentContainer () + +@property (readonly, nonatomic) NSHashTable *parentBackgroundContexts; +@property (readonly, nonatomic) NSHashTable *pendingSaveParentBackgroundContexts; + +@end + +NS_ASSUME_NONNULL_END + +@implementation RSTPersistentContainer + +- (instancetype)initWithName:(NSString *)name bundle:(NSBundle *)bundle +{ + NSManagedObjectModel *managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:@[bundle]]; + + self = [super initWithName:name managedObjectModel:managedObjectModel]; + if (self) + { + [self initialize]; + } + return self; +} + +- (instancetype)initWithName:(NSString *)name managedObjectModel:(NSManagedObjectModel *)model +{ + self = [super initWithName:name managedObjectModel:model]; + if (self) + { + [self initialize]; + } + return self; +} + +- (void)initialize +{ + _shouldAddStoresAsynchronously = NO; + + _preferredMergePolicy = [[RSTRelationshipPreservingMergePolicy alloc] init]; + + _parentBackgroundContexts = [NSHashTable weakObjectsHashTable]; + _pendingSaveParentBackgroundContexts = [NSHashTable weakObjectsHashTable]; + + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(rst_managedObjectContextWillSave:) name:NSManagedObjectContextWillSaveNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(rst_managedObjectContextObjectsDidChange:) name:NSManagedObjectContextObjectsDidChangeNotification object:nil]; +} + +- (void)loadPersistentStoresWithCompletionHandler:(void (^)(NSPersistentStoreDescription * _Nonnull, NSError * _Nullable))completionHandler +{ + dispatch_group_t dispatchGroup = dispatch_group_create(); + + for (NSPersistentStoreDescription *description in self.persistentStoreDescriptions) + { + description.shouldAddStoreAsynchronously = self.shouldAddStoresAsynchronously; + + NSDictionary *metadata = [NSPersistentStoreCoordinator metadataForPersistentStoreOfType:description.type URL:description.URL options:description.options error:nil]; + if (metadata == nil) + { + continue; + } + + if (![self.managedObjectModel isConfiguration:nil compatibleWithStoreMetadata:metadata] && description.shouldMigrateStoreAutomatically) + { + // Migrate database if incompatible with managed object model. + + dispatch_group_enter(dispatchGroup); + + [self progressivelyMigratePersistentStoreToModel:self.managedObjectModel + configuration:description.configuration + isAsynchronous:description.shouldAddStoreAsynchronously + completionHandler:^(NSError * _Nullable error) { + if (error != nil) + { + ELog(error); + } + + dispatch_group_leave(dispatchGroup); + }]; + } + } + + void (^finish)(NSPersistentStoreDescription *, NSError *) = ^(NSPersistentStoreDescription *description, NSError *error) { + [self configureManagedObjectContext:self.viewContext parent:nil]; + completionHandler(description, error); + }; + + if (self.shouldAddStoresAsynchronously) + { + dispatch_group_notify(dispatchGroup, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + [super loadPersistentStoresWithCompletionHandler:finish]; + }); + } + else + { + dispatch_group_wait(dispatchGroup, DISPATCH_TIME_FOREVER); + + [super loadPersistentStoresWithCompletionHandler:finish]; + } +} + +- (NSManagedObjectContext *)newBackgroundContext +{ + NSManagedObjectContext *context = [super newBackgroundContext]; + [self configureManagedObjectContext:context parent:nil]; + return context; +} + +- (NSManagedObjectContext *)newBackgroundSavingViewContext +{ + NSManagedObjectContext *parentBackgroundContext = [self newBackgroundContext]; + [self.parentBackgroundContexts addObject:parentBackgroundContext]; + + NSManagedObjectContext *context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType]; + [self configureManagedObjectContext:context parent:parentBackgroundContext]; + return context; +} + +- (NSManagedObjectContext *)newViewContextWithParent:(NSManagedObjectContext *)parentContext +{ + NSManagedObjectContext *context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType]; + [self configureManagedObjectContext:context parent:parentContext]; + return context; +} + +- (NSManagedObjectContext *)newBackgroundContextWithParent:(NSManagedObjectContext *)parentContext +{ + NSManagedObjectContext *context = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType]; + [self configureManagedObjectContext:context parent:parentContext]; + return context; +} + +- (void)configureManagedObjectContext:(NSManagedObjectContext *)context parent:(nullable NSManagedObjectContext *)parent +{ + if (parent != nil) + { + context.parentContext = parent; + } + + context.automaticallyMergesChangesFromParent = YES; + context.mergePolicy = self.preferredMergePolicy; +} + +#pragma mark - Migrations - + +// Migration logic based off of https://www.objc.io/issues/4-core-data/core-data-migration/ + +- (void)progressivelyMigratePersistentStoreToModel:(NSManagedObjectModel *)model configuration:(nullable NSString *)configuration isAsynchronous:(BOOL)asynchronous completionHandler:(void (^)(NSError * _Nullable))completionHandler +{ + void (^migrate)(void) = ^(void) { + NSError *error = nil; + BOOL success = [self _progressivelyMigratePersistentStoreToModel:model configuration:configuration error:&error]; + + if (success) + { + completionHandler(nil); + } + else + { + completionHandler(error); + } + }; + + if (asynchronous) + { + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{ + migrate(); + }); + } + else + { + migrate(); + } +} + +- (BOOL)_progressivelyMigratePersistentStoreToModel:(NSManagedObjectModel *)model configuration:(nullable NSString *)configuration error:(NSError * _Nonnull *)error +{ + NSPersistentStoreDescription *description = self.persistentStoreDescriptions.firstObject; + if (description == nil) + { + *error = [NSError errorWithDomain:RoxasErrorDomain code:RSTErrorMissingPersistentStore userInfo:nil]; + return NO; + } + + NSDictionary *sourceMetadata = [NSPersistentStoreCoordinator metadataForPersistentStoreOfType:description.type URL:description.URL options:description.options error:error]; + if (sourceMetadata == nil) + { + return NO; + } + + if ([self.managedObjectModel isConfiguration:nil compatibleWithStoreMetadata:sourceMetadata]) + { + // The store is now compatible with the managed object model, so we're done. + return YES; + } + + NSManagedObjectModel *sourceModel = [NSManagedObjectModel mergedModelFromBundles:NSBundle.allBundles forStoreMetadata:sourceMetadata]; + if (sourceModel == nil) + { + *error = [NSError errorWithDomain:RoxasErrorDomain code:RSTErrorMissingManagedObjectModel userInfo:nil]; + return NO; + } + + NSMappingModel *mappingModel = nil; + NSMigrationManager *migrationManager = [self progressiveMigrationManagerForSourceModel:sourceModel destinationModel:model configuration:configuration mappingModel:&mappingModel]; + if (migrationManager == nil) + { + *error = [NSError errorWithDomain:RoxasErrorDomain code:RSTErrorMissingMappingModel userInfo:nil]; + return NO; + } + + NSString *temporaryFilename = [[[NSUUID UUID] UUIDString] stringByAppendingFormat:@".%@", description.URL.pathExtension]; + NSURL *temporaryDestinationURL = [NSFileManager.defaultManager.temporaryDirectory URLByAppendingPathComponent:temporaryFilename]; + + BOOL success = [migrationManager migrateStoreFromURL:description.URL + type:description.type + options:description.options + withMappingModel:mappingModel // migrationManager.mappingModel is nil for some reason + toDestinationURL:temporaryDestinationURL + destinationType:description.type + destinationOptions:description.options + error:error]; + if (!success) + { + return NO; + } + + BOOL replacementSuccess = [self.persistentStoreCoordinator replacePersistentStoreAtURL:description.URL + destinationOptions:description.options + withPersistentStoreFromURL:temporaryDestinationURL + sourceOptions:description.options + storeType:description.type + error:error]; + if (!replacementSuccess) + { + return NO; + } + + NSError *deletionError = nil; + if (![self.persistentStoreCoordinator destroyPersistentStoreAtURL:temporaryDestinationURL withType:description.type options:description.options error:&deletionError]) + { + ELog(deletionError); + } + + return [self _progressivelyMigratePersistentStoreToModel:model configuration:configuration error:error]; +} + +- (nullable NSMigrationManager *)progressiveMigrationManagerForSourceModel:(NSManagedObjectModel *)sourceModel destinationModel:(NSManagedObjectModel *)destinationModel configuration:(nullable NSString *)configuration mappingModel:(NSMappingModel **)outMappingModel +{ + NSArray *managedObjectModelURLs = [self managedObjectModelURLs]; + for (NSURL *modelURL in managedObjectModelURLs) + { + NSManagedObjectModel *model = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; + NSMappingModel *mappingModel = [NSMappingModel mappingModelFromBundles:NSBundle.allBundles + forSourceModel:sourceModel + destinationModel:model]; + if (mappingModel == nil) + { + continue; + } + + // If this model contains at least one entity that belongs to our configuration, + // we can assume that this is a valid mapping model for the configuration. + BOOL isValidForConfiguration = NO; + + // sourceModel doesn't properly merge configurations, so retrieve configuration entities via self.managedObjectModel. + for (NSEntityDescription *entityDescription in [self.managedObjectModel entitiesForConfiguration:configuration]) + { + if (model.entitiesByName[entityDescription.name] != nil) + { + isValidForConfiguration = YES; + break; + } + } + + if (!isValidForConfiguration) + { + continue; + } + + *outMappingModel = mappingModel; + + NSMigrationManager *migrationManager = [[NSMigrationManager alloc] initWithSourceModel:sourceModel destinationModel:model]; + return migrationManager; + } + + // Fallback to inferring mapping model. + + NSError *error = nil; + NSMappingModel *inferredMappingModel = [NSMappingModel inferredMappingModelForSourceModel:sourceModel destinationModel:destinationModel error:&error]; + + if (inferredMappingModel == nil) + { + NSLog(@"Error inferring mapping: %@", error); + return nil; + } + + *outMappingModel = inferredMappingModel; + + NSMigrationManager *migrationManager = [[NSMigrationManager alloc] initWithSourceModel:sourceModel destinationModel:destinationModel]; + return migrationManager; +} + +- (NSArray *)managedObjectModelURLs +{ + NSMutableArray *modelURLs = [NSMutableArray array]; + + for (NSBundle *bundle in NSBundle.allBundles) + { + NSArray *momdURLs = [bundle URLsForResourcesWithExtension:@"momd" subdirectory:nil]; + for (NSURL *URL in momdURLs) + { + NSString *resourceDirectory = [URL lastPathComponent]; + + NSArray *momURLs = [bundle URLsForResourcesWithExtension:@"mom" subdirectory:resourceDirectory]; + [modelURLs addObjectsFromArray:momURLs]; + } + + NSArray *momURLs = [bundle URLsForResourcesWithExtension:@"mom" subdirectory:nil]; + [modelURLs addObjectsFromArray:momURLs]; + } + + return modelURLs; +} + +#pragma mark - NSNotifications - + +// Use rst_ prefix to prevent collisions with subclasses. +- (void)rst_managedObjectContextWillSave:(NSNotification *)notification +{ + NSManagedObjectContext *context = notification.object; + if (![self.parentBackgroundContexts containsObject:context.parentContext]) + { + return; + } + + [self.pendingSaveParentBackgroundContexts addObject:context.parentContext]; +} + +// Use rst_ prefix to prevent collisions with subclasses. +- (void)rst_managedObjectContextObjectsDidChange:(NSNotification *)notification +{ + NSManagedObjectContext *context = notification.object; + if (![self.pendingSaveParentBackgroundContexts containsObject:context]) + { + return; + } + + NSError *error = nil; + if (![context save:&error]) + { + ELog(error); + } + + [self.pendingSaveParentBackgroundContexts removeObject:context]; +} + +@end diff --git a/Pods/Roxas/Roxas/RSTPlaceholderView.h b/Pods/Roxas/Roxas/RSTPlaceholderView.h new file mode 100644 index 000000000..60b5be8d1 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTPlaceholderView.h @@ -0,0 +1,27 @@ +// +// RSTPlaceholderView.h +// Roxas +// +// Created by Riley Testut on 11/21/15. +// Copyright © 2015 Riley Testut. All rights reserved. +// + +#import + +@import UIKit; + +IB_DESIGNABLE +@interface RSTPlaceholderView : RSTNibView + +// Visible by default +@property (nonnull, nonatomic, readonly) UILabel *textLabel; +@property (nonnull, nonatomic, readonly) UILabel *detailTextLabel; + +// Hidden by default +@property (nonnull, nonatomic, readonly) UIActivityIndicatorView *activityIndicatorView; +@property (nonnull, nonatomic, readonly) UIImageView *imageView; + +// Layout +@property (nonnull, nonatomic, readonly) UIStackView *stackView; + +@end diff --git a/Pods/Roxas/Roxas/RSTPlaceholderView.m b/Pods/Roxas/Roxas/RSTPlaceholderView.m new file mode 100644 index 000000000..48b8815b0 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTPlaceholderView.m @@ -0,0 +1,57 @@ +// +// RSTPlaceholderView.m +// Roxas +// +// Created by Riley Testut on 11/21/15. +// Copyright © 2015 Riley Testut. All rights reserved. +// + +#import "RSTPlaceholderView.h" + +@interface RSTPlaceholderView () + +@property (nonnull, nonatomic, readwrite) IBOutlet UILabel *textLabel; +@property (nonnull, nonatomic, readwrite) IBOutlet UILabel *detailTextLabel; +@property (nonnull, nonatomic, readwrite) IBOutlet UIActivityIndicatorView *activityIndicatorView; +@property (nonnull, nonatomic, readwrite) IBOutlet UIImageView *imageView; +@property (nonnull, nonatomic, readwrite) IBOutlet UIStackView *stackView; + +@end + +@implementation RSTPlaceholderView + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) + { + [self initialize]; + } + + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)aDecoder +{ + self = [super initWithCoder:aDecoder]; + if (self) + { + [self initialize]; + } + + return self; +} + +- (void)initialize +{ + self.activityIndicatorView.hidden = YES; + self.imageView.hidden = YES; + + if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomTV) + { + self.stackView.spacing = 15; + self.detailTextLabel.font = [UIFont fontWithDescriptor:[UIFontDescriptor preferredFontDescriptorWithTextStyle:UIFontTextStyleHeadline] size:0.0]; + } +} + +@end diff --git a/Pods/Roxas/Roxas/RSTPlaceholderView.xib b/Pods/Roxas/Roxas/RSTPlaceholderView.xib new file mode 100644 index 000000000..190a0b990 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTPlaceholderView.xib @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Pods/Roxas/Roxas/RSTRelationshipPreservingMergePolicy.h b/Pods/Roxas/Roxas/RSTRelationshipPreservingMergePolicy.h new file mode 100644 index 000000000..be3c1af19 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTRelationshipPreservingMergePolicy.h @@ -0,0 +1,21 @@ +// +// RSTRelationshipPreservingMergePolicy.h +// Roxas +// +// Created by Riley Testut on 7/16/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +@import CoreData; + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTRelationshipPreservingMergePolicy : NSMergePolicy + +- (instancetype)init; + +- (instancetype)initWithMergeType:(NSMergePolicyType)mergeType NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/RSTRelationshipPreservingMergePolicy.m b/Pods/Roxas/Roxas/RSTRelationshipPreservingMergePolicy.m new file mode 100644 index 000000000..3b416f538 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTRelationshipPreservingMergePolicy.m @@ -0,0 +1,139 @@ +// +// RSTRelationshipPreservingMergePolicy.m +// Roxas +// +// Created by Riley Testut on 7/16/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +#import "RSTRelationshipPreservingMergePolicy.h" + +#import "NSConstraintConflict+Conveniences.h" + +@implementation RSTRelationshipPreservingMergePolicy + +- (instancetype)init +{ + self = [super initWithMergeType:NSMergeByPropertyObjectTrumpMergePolicyType]; + return self; +} + +- (BOOL)resolveConstraintConflicts:(NSArray *)conflicts error:(NSError * _Nullable __autoreleasing *)error +{ + [NSConstraintConflict cacheSnapshotsForConflicts:conflicts]; + + BOOL success = [super resolveConstraintConflicts:conflicts error:error]; + + for (NSConstraintConflict *conflict in conflicts) + { + if (conflict.databaseObject == nil) + { + // Only handle database-level conflicts. + continue; + } + + NSManagedObject *databaseObject = conflict.databaseObject; + NSManagedObject *updatedObject = conflict.conflictingObjects.firstObject; + + NSDictionary *databaseSnapshot = [conflict.snapshots objectForKey:databaseObject]; + NSDictionary *updatedSnapshot = [conflict.snapshots objectForKey:updatedObject]; + + if (databaseObject == nil || updatedObject == nil || databaseSnapshot == nil || updatedSnapshot == nil) + { + continue; + } + + [databaseObject.entity.relationshipsByName enumerateKeysAndObjectsUsingBlock:^(NSString *name, NSRelationshipDescription *relationship, BOOL *stop) { + if ([relationship isToMany]) + { + // Superclass already handles to-many relationships correctly, so ignore this relationship. + return; + } + + NSManagedObject *relationshipObject = nil; + + NSManagedObject *previousRelationshipObject = databaseSnapshot[name]; + NSManagedObject *updatedRelationshipObject = updatedSnapshot[name]; + + if (previousRelationshipObject != nil) + { + if (updatedRelationshipObject == nil) + { + if (updatedObject.changedValues[name] == nil) + { + // Previously non-nil, updated to nil, but was _not_ explicitly set to nil, so restore previous relationship. + relationshipObject = previousRelationshipObject; + } + else + { + // Same as above, but _was_ explicitly set to nil, so should remain nil. + relationshipObject = nil; + } + } + else + { + if ([databaseObject valueForKey:name] == nil) + { + // Previously non-nil, updated to non-nil, but resulted in nil, so restore previous relationship (since the new relationship has been deleted). + relationshipObject = previousRelationshipObject; + } + else if (updatedRelationshipObject.managedObjectContext == nil) + { + // Previously non-nil, updated to non-nil, but the updated snapshot points to an outdated relationship object, so restore previous relationship. + relationshipObject = previousRelationshipObject; + } + else + { + // Previously non-nil, updated to non-nil, so ensure relationship object is the updated relationship object. + relationshipObject = updatedRelationshipObject; + } + } + } + else + { + if (updatedRelationshipObject != nil) + { + // Previously nil, updated to non-nil, so restore updated relationship. + relationshipObject = updatedRelationshipObject; + } + else + { + // Previously nil, remained nil, so no need to fix anything. + relationshipObject = nil; + } + } + + if ([databaseObject valueForKey:name] == relationshipObject) + { + return; + } + + if (relationshipObject.managedObjectContext == nil) + { + return; + } + + [databaseObject setValue:relationshipObject forKey:name]; + + NSRelationshipDescription *inverseRelationship = relationship.inverseRelationship; + if (inverseRelationship != nil && ![inverseRelationship isToMany]) + { + // We need to also update to-one inverse relationships. + + if (relationshipObject != nil) + { + [relationshipObject setValue:databaseObject forKey:inverseRelationship.name]; + } + else + { + [previousRelationshipObject setValue:nil forKey:inverseRelationship.name]; + [updatedRelationshipObject setValue:nil forKey:inverseRelationship.name]; + } + } + }]; + } + + return success; +} + +@end diff --git a/Pods/Roxas/Roxas/RSTSearchController.h b/Pods/Roxas/Roxas/RSTSearchController.h new file mode 100644 index 000000000..094e8fe1d --- /dev/null +++ b/Pods/Roxas/Roxas/RSTSearchController.h @@ -0,0 +1,41 @@ +// +// RSTSearchResultsController.h +// Roxas +// +// Created by Riley Testut on 2/7/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +@import UIKit; + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTSearchValue : NSObject + +@property (nonatomic, readonly) NSString *text; +@property (nonatomic, readonly) NSPredicate *predicate; + +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END + + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTSearchController : UISearchController + +// Used to generate RSTSearchValue predicates. +@property (copy, nonatomic) NSSet *searchableKeyPaths; + +// Handler called when the search text changes. +// To perform a synchronous search, perform the necessary search logic synchronously in the handler, and return nil. +// To perform an asynchronous search, return an NSOperation that will perform the search logic. +// When searching asynchronously, the previous search NSOperation will be cancelled when the search text changes. +// To ensure outdated results are not displayed, make sure to check that -[NSOperation isCancelled] is NO before updating results. +@property (nullable, copy, nonatomic) NSOperation *_Nullable (^searchHandler)(RSTSearchValue *searchValue, RSTSearchValue *_Nullable previousSearchValue); + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/RSTSearchController.m b/Pods/Roxas/Roxas/RSTSearchController.m new file mode 100644 index 000000000..bc513dd52 --- /dev/null +++ b/Pods/Roxas/Roxas/RSTSearchController.m @@ -0,0 +1,112 @@ +// +// RSTSearchResultsController.m +// Roxas +// +// Created by Riley Testut on 2/7/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +#import "RSTSearchController.h" +#import "RSTOperationQueue.h" + +#import "NSPredicate+Search.h" + +@implementation RSTSearchValue + +- (instancetype)initWithText:(NSString *)text predicate:(NSPredicate *)predicate +{ + self = [super init]; + if (self) + { + _text = [text copy]; + _predicate = [predicate copy]; + } + + return self; +} + +- (id)copyWithZone:(NSZone *)zone +{ + RSTSearchValue *copy = [[RSTSearchValue alloc] initWithText:self.text predicate:self.predicate]; + return copy; +} + +- (BOOL)isEqual:(id)object +{ + if (![object isKindOfClass:[RSTSearchValue class]]) + { + return NO; + } + + return [self.text isEqual:[(RSTSearchValue *)object text]]; +} + +- (NSUInteger)hash +{ + return self.text.hash; +} + +@end + + +@interface RSTSearchController () + +@property (nullable, copy, nonatomic) RSTSearchValue *previousSearchValue; + +@property (nonatomic, readonly) RSTOperationQueue *searchOperationQueue; + +@end + + +@implementation RSTSearchController + +- (instancetype)initWithSearchResultsController:(UIViewController *)searchResultsController +{ + self = [super initWithSearchResultsController:searchResultsController]; + if (self) + { + _searchableKeyPaths = [NSSet setWithObject:@"self"]; + + _searchOperationQueue = [[RSTOperationQueue alloc] init]; + _searchOperationQueue.qualityOfService = NSOperationQualityOfServiceUserInitiated; + + // We want a concurrent queue, since this allows an operation to start before the previous operation has finished. + // However, because we cancel the previous operation before adding a new one, there's no issue with finishing out of order. + // _searchOperationQueue.maxConcurrentOperationCount = 1; + + self.searchResultsUpdater = self; + + if (searchResultsController == nil) + { + self.obscuresBackgroundDuringPresentation = NO; + } + } + + return self; +} + +#pragma mark - - + +- (void)updateSearchResultsForSearchController:(UISearchController *)searchController +{ + NSString *searchText = [searchController.searchBar.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] ?: @""; + NSPredicate *searchPredicate = [NSPredicate predicateForSearchingForText:searchText inValuesForKeyPaths:self.searchableKeyPaths]; + + RSTSearchValue *searchValue = [[RSTSearchValue alloc] initWithText:searchText predicate:searchPredicate]; + + NSOperation *previousSearchOperation = self.searchOperationQueue[self.previousSearchValue]; + [previousSearchOperation cancel]; + + if (self.searchHandler) + { + NSOperation *searchOperation = self.searchHandler(searchValue, self.previousSearchValue); + if (searchOperation) + { + [self.searchOperationQueue addOperation:searchOperation forKey:searchValue]; + } + } + + self.previousSearchValue = searchValue; +} + +@end diff --git a/Pods/Roxas/Roxas/RSTSeparatorView.h b/Pods/Roxas/Roxas/RSTSeparatorView.h new file mode 100644 index 000000000..41ffdf3cd --- /dev/null +++ b/Pods/Roxas/Roxas/RSTSeparatorView.h @@ -0,0 +1,22 @@ +// +// RSTSeparatorView.h +// Roxas +// +// Created by Riley Testut on 6/29/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +@import UIKit; + +NS_ASSUME_NONNULL_BEGIN + +IB_DESIGNABLE +@interface RSTSeparatorView : UIView + +@property (null_resettable, nonatomic) UIColor *tintColor; + +@property (nonatomic) IBInspectable CGFloat lineWidth; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/RSTSeparatorView.m b/Pods/Roxas/Roxas/RSTSeparatorView.m new file mode 100644 index 000000000..b63e6a58b --- /dev/null +++ b/Pods/Roxas/Roxas/RSTSeparatorView.m @@ -0,0 +1,116 @@ +// +// RSTSeparatorView.m +// Roxas +// +// Created by Riley Testut on 6/29/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +#import "RSTSeparatorView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTSeparatorView () +{ + BOOL _layoutMarginsDidChange; +} + +@property (nonatomic, readonly) UIView *separator; + +@end + +NS_ASSUME_NONNULL_END + +@implementation RSTSeparatorView + +#pragma mark - Initialization - + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) + { + [self initialize]; + } + + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)aDecoder +{ + self = [super initWithCoder:aDecoder]; + if (self) + { + [self initialize]; + } + + return self; +} + +- (void)initialize +{ + _lineWidth = 0.5; + + self.userInteractionEnabled = NO; + self.backgroundColor = nil; + + _separator = [[UIView alloc] initWithFrame:self.frame]; + _separator.translatesAutoresizingMaskIntoConstraints = NO; + _separator.backgroundColor = self.tintColor; + [self addSubview:_separator]; + + if (!_layoutMarginsDidChange) + { + self.layoutMargins = UIEdgeInsetsZero; + } + + [NSLayoutConstraint activateConstraints:@[[_separator.leadingAnchor constraintEqualToAnchor:self.layoutMarginsGuide.leadingAnchor], + [_separator.trailingAnchor constraintEqualToAnchor:self.layoutMarginsGuide.trailingAnchor], + [_separator.topAnchor constraintEqualToAnchor:self.layoutMarginsGuide.topAnchor], + [_separator.bottomAnchor constraintEqualToAnchor:self.layoutMarginsGuide.bottomAnchor]]]; +} + +#pragma mark - UIView - + +- (CGSize)intrinsicContentSize +{ + return CGSizeMake(self.lineWidth, self.lineWidth); +} + +- (void)tintColorDidChange +{ + self.separator.backgroundColor = self.tintColor; +} + +- (void)layoutMarginsDidChange +{ + _layoutMarginsDidChange = YES; +} + +#pragma mark - Getters/Setters - + +- (UIColor *)tintColor +{ + // Must override tintColor accessor methods and call super. + // Otherwise, tintColor may not work as intended 🤷‍♂️. + return [super tintColor]; +} + +- (void)setTintColor:(UIColor *)tintColor +{ + [super setTintColor:tintColor]; +} + +- (void)setLineWidth:(CGFloat)lineWidth +{ + if (lineWidth == _lineWidth) + { + return; + } + + _lineWidth = lineWidth; + + [self invalidateIntrinsicContentSize]; +} + +@end diff --git a/Pods/Roxas/Roxas/RSTTintedImageView.h b/Pods/Roxas/Roxas/RSTTintedImageView.h new file mode 100644 index 000000000..46d1b937e --- /dev/null +++ b/Pods/Roxas/Roxas/RSTTintedImageView.h @@ -0,0 +1,17 @@ +// +// RSTTintedImageView.h +// Roxas +// +// Created by Riley Testut on 8/29/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +@import UIKit; + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTTintedImageView : UIImageView + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/RSTTintedImageView.m b/Pods/Roxas/Roxas/RSTTintedImageView.m new file mode 100644 index 000000000..ffb46bc4c --- /dev/null +++ b/Pods/Roxas/Roxas/RSTTintedImageView.m @@ -0,0 +1,25 @@ +// +// RSTTintedImageView.m +// Roxas +// +// Created by Riley Testut on 8/29/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +#import "RSTTintedImageView.h" + +@implementation RSTTintedImageView + +- (void)awakeFromNib +{ + [super awakeFromNib]; + + // When loading from nib, the image is not tinted with the tint color. + // To fix this, we set the tint color to nil, then back to the original tint color. + + UIColor *tintColor = self.tintColor; + self.tintColor = nil; + self.tintColor = tintColor; +} + +@end diff --git a/Pods/Roxas/Roxas/RSTToastView.h b/Pods/Roxas/Roxas/RSTToastView.h new file mode 100644 index 000000000..c017d9f4f --- /dev/null +++ b/Pods/Roxas/Roxas/RSTToastView.h @@ -0,0 +1,58 @@ +// +// RSTToastView.h +// Roxas +// +// Created by Riley Testut on 5/2/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +@import UIKit; + +typedef NS_ENUM(NSInteger, RSTViewEdge) { + RSTViewEdgeNone, + RSTViewEdgeTop, + RSTViewEdgeBottom, + RSTViewEdgeLeft, + RSTViewEdgeRight +}; + +NS_ASSUME_NONNULL_BEGIN + +RST_EXTERN NSNotificationName const RSTToastViewWillShowNotification NS_SWIFT_NAME(RSTToastView.willShowNotification); +RST_EXTERN NSNotificationName const RSTToastViewDidShowNotification NS_SWIFT_NAME(RSTToastView.didShowNotification); +RST_EXTERN NSNotificationName const RSTToastViewWillDismissNotification NS_SWIFT_NAME(RSTToastView.willDismissNotification); +RST_EXTERN NSNotificationName const RSTToastViewDidDismissNotification NS_SWIFT_NAME(RSTToastView.didDismissNotification); + +typedef NSString *RSTToastViewUserInfoKey NS_TYPED_EXTENSIBLE_ENUM; + +RST_EXTERN RSTToastViewUserInfoKey const RSTToastViewUserInfoKeyPropertyAnimator; + +NS_CLASS_AVAILABLE_IOS(11_0) +@interface RSTToastView : UIControl + +@property (null_resettable, nonatomic) UIColor *tintColor UI_APPEARANCE_SELECTOR; + +@property (nonatomic, readonly) UILabel *textLabel; +@property (nonatomic, readonly) UILabel *detailTextLabel; +@property (nonatomic, readonly) UIActivityIndicatorView *activityIndicatorView; + +@property (nonatomic) RSTViewEdge presentationEdge UI_APPEARANCE_SELECTOR; +@property (nonatomic) RSTViewEdge alignmentEdge UI_APPEARANCE_SELECTOR; + +@property (nonatomic) UIOffset edgeOffset; + +@property (nonatomic, readonly, getter=isShown) BOOL shown; + +- (instancetype)initWithText:(NSString *)text detailText:(nullable NSString *)detailedText NS_DESIGNATED_INITIALIZER; +- (instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER; + +- (instancetype)initWithError:(NSError *)error; + +- (void)showInView:(UIView *)view; +- (void)showInView:(UIView *)view duration:(NSTimeInterval)duration; + +- (void)dismiss; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/RSTToastView.m b/Pods/Roxas/Roxas/RSTToastView.m new file mode 100644 index 000000000..6dba48fbd --- /dev/null +++ b/Pods/Roxas/Roxas/RSTToastView.m @@ -0,0 +1,502 @@ +// +// RSTToastView.m +// Roxas +// +// Created by Riley Testut on 5/2/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +#import "RSTToastView.h" + +#import "NSLayoutConstraint+Edges.h" +#import "UISpringTimingParameters+Conveniences.h" + +NSNotificationName const RSTToastViewWillShowNotification = @"RSTToastViewWillShowNotification"; +NSNotificationName const RSTToastViewDidShowNotification = @"RSTToastViewDidShowNotification"; +NSNotificationName const RSTToastViewWillDismissNotification = @"RSTToastViewWillDismissNotification"; +NSNotificationName const RSTToastViewDidDismissNotification = @"RSTToastViewDidDismissNotification"; + +RSTToastViewUserInfoKey const RSTToastViewUserInfoKeyPropertyAnimator = @"RSTToastViewUserInfoKeyPropertyAnimator"; + +static void *RSTToastViewContext = &RSTToastViewContext; + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTToastView () + +@property (nonatomic, readwrite, getter=isShown) BOOL shown; + +@property (nonatomic, readonly) UIView *dimmingView; +@property (nonatomic, readonly) UIStackView *stackView; + +@property (nullable, nonatomic) NSTimer *dismissTimer; + +@property (nullable, nonatomic) NSLayoutConstraint *axisConstraint; +@property (nullable, nonatomic) NSLayoutConstraint *hiddenAxisConstraint; + +@property (nullable, nonatomic) NSLayoutConstraint *alignmentConstraint; + +@property (nullable, nonatomic) NSLayoutConstraint *widthConstraint; +@property (nullable, nonatomic) NSLayoutConstraint *heightConstraint; + +@end + +NS_ASSUME_NONNULL_END + +@implementation RSTToastView +@dynamic tintColor; + +- (instancetype)initWithText:(NSString *)text detailText:(NSString *)detailText +{ + self = [super initWithFrame:CGRectZero]; + if (self) + { + [self initialize]; + + _textLabel.text = text; + _detailTextLabel.text = detailText; + } + + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)aDecoder +{ + self = [super initWithCoder:aDecoder]; + if (self) + { + [self initialize]; + } + + return self; +} + +- (instancetype)initWithError:(NSError *)error +{ + self = [self initWithText:error.localizedDescription detailText:error.localizedFailureReason]; + return self; +} + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [self initWithText:@"" detailText:nil]; + return self; +} + +- (void)initialize +{ + _edgeOffset = UIOffsetMake(15, 15); + + _dimmingView = [[UIView alloc] initWithFrame:CGRectZero]; + _dimmingView.backgroundColor = [UIColor blackColor]; + _dimmingView.alpha = 0.1; + _dimmingView.hidden = YES; + [self addSubview:_dimmingView pinningEdgesWithInsets:UIEdgeInsetsZero]; + + UIFontDescriptor *detailTextLabelFontDescriptor = [UIFontDescriptor preferredFontDescriptorWithTextStyle:UIFontTextStyleSubheadline]; + UIFontDescriptor *textLabelFontDescriptor = [detailTextLabelFontDescriptor fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold]; + + _textLabel = [[UILabel alloc] init]; + _textLabel.font = [UIFont fontWithDescriptor:textLabelFontDescriptor size:0.0]; + _textLabel.textColor = [UIColor whiteColor]; + _textLabel.minimumScaleFactor = 0.75; + _textLabel.numberOfLines = 0; + [_textLabel addObserver:self forKeyPath:NSStringFromSelector(@selector(text)) options:NSKeyValueObservingOptionOld context:RSTToastViewContext]; + + _detailTextLabel = [[UILabel alloc] init]; + _detailTextLabel.font = [UIFont fontWithDescriptor:detailTextLabelFontDescriptor size:0.0]; + _detailTextLabel.textColor = [UIColor whiteColor]; + _detailTextLabel.minimumScaleFactor = 0.75; + _detailTextLabel.numberOfLines = 0; + [_detailTextLabel addObserver:self forKeyPath:NSStringFromSelector(@selector(text)) options:NSKeyValueObservingOptionOld context:RSTToastViewContext]; + + _activityIndicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite]; + _activityIndicatorView.hidesWhenStopped = YES; + + UIStackView *labelsStackView = [[UIStackView alloc] initWithArrangedSubviews:@[_textLabel, _detailTextLabel]]; + labelsStackView.axis = UILayoutConstraintAxisVertical; + labelsStackView.alignment = UIStackViewAlignmentFill; + labelsStackView.spacing = 2.0; + + _stackView = [[UIStackView alloc] initWithArrangedSubviews:@[_activityIndicatorView, labelsStackView]]; + _stackView.translatesAutoresizingMaskIntoConstraints = NO; + _stackView.userInteractionEnabled = NO; + _stackView.axis = UILayoutConstraintAxisHorizontal; + _stackView.alignment = UIStackViewAlignmentCenter; + _stackView.spacing = 8.0; + _stackView.layoutMarginsRelativeArrangement = YES; + _stackView.insetsLayoutMarginsFromSafeArea = NO; + [self addSubview:_stackView]; + + _presentationEdge = RSTViewEdgeBottom; + _alignmentEdge = RSTViewEdgeNone; + + // Motion Effects + UIInterpolatingMotionEffect *xAxis = [[UIInterpolatingMotionEffect alloc] initWithKeyPath:@"center.x" type:UIInterpolatingMotionEffectTypeTiltAlongHorizontalAxis]; + xAxis.minimumRelativeValue = @(-10); + xAxis.maximumRelativeValue = @(10); + + UIInterpolatingMotionEffect *yAxis = [[UIInterpolatingMotionEffect alloc] initWithKeyPath:@"center.y" type:UIInterpolatingMotionEffectTypeTiltAlongVerticalAxis]; + yAxis.minimumRelativeValue = @(-10); + yAxis.maximumRelativeValue = @(10); + + UIMotionEffectGroup *group = [[UIMotionEffectGroup alloc] init]; + group.motionEffects = @[xAxis, yAxis]; + [self addMotionEffect:group]; + + self.clipsToBounds = YES; + self.translatesAutoresizingMaskIntoConstraints = NO; + + self.layoutMargins = UIEdgeInsetsMake(5, 10, 5, 10); + self.preservesSuperviewLayoutMargins = NO; + self.insetsLayoutMarginsFromSafeArea = NO; + + // Light blue + self.backgroundColor = [UIColor colorWithRed:61.0/255.0 green:172.0/255.0 blue:247.0/255.0 alpha:1]; + + // Actions + [self addTarget:self action:@selector(dismiss) forControlEvents:UIControlEventTouchUpInside]; + + // Notifications + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(toastViewWillShow:) name:RSTToastViewWillShowNotification object:nil]; +} + +#pragma mark - UIView - + +- (CGSize)intrinsicContentSize +{ + if (self.superview != nil) + { + CGFloat width = CGRectGetWidth(self.superview.bounds); + CGFloat preferredMaxLayoutWidth = width - (self.edgeOffset.horizontal * 2) - (self.layoutMargins.left + self.layoutMargins.right); + + self.textLabel.preferredMaxLayoutWidth = preferredMaxLayoutWidth; + self.detailTextLabel.preferredMaxLayoutWidth = preferredMaxLayoutWidth; + } + + CGSize intrinsicContentSize = [self.stackView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize]; + return intrinsicContentSize; +} + +- (void)layoutSubviews +{ + [super layoutSubviews]; + + CGFloat cornerRadius = MIN(10, CGRectGetMidY(self.bounds)); + self.layer.cornerRadius = cornerRadius; + + self.textLabel.preferredMaxLayoutWidth = CGRectGetWidth(self.superview.bounds) - self.superview.safeAreaInsets.left - self.superview.safeAreaInsets.right - self.edgeOffset.horizontal * 2; + self.detailTextLabel.preferredMaxLayoutWidth = CGRectGetWidth(self.superview.bounds) - self.superview.safeAreaInsets.left - self.superview.safeAreaInsets.right - self.edgeOffset.horizontal * 2; + + [self invalidateIntrinsicContentSize]; +} + +- (void)updateConstraints +{ + if (self.axisConstraint != nil || self.alignmentConstraint != nil) + { + return [super updateConstraints]; + } + + if (self.superview == nil) + { + return [super updateConstraints]; + } + + // Axis Constraints + switch (self.presentationEdge) + { + case RSTViewEdgeLeft: + self.axisConstraint = [self.leftAnchor constraintEqualToAnchor:self.superview.safeAreaLayoutGuide.leftAnchor constant:self.edgeOffset.horizontal]; + self.hiddenAxisConstraint = [self.superview.leftAnchor constraintEqualToAnchor:self.rightAnchor]; + break; + + case RSTViewEdgeRight: + self.axisConstraint = [self.superview.safeAreaLayoutGuide.rightAnchor constraintEqualToAnchor:self.rightAnchor constant:self.edgeOffset.horizontal]; + self.hiddenAxisConstraint = [self.leftAnchor constraintEqualToAnchor:self.superview.rightAnchor]; + break; + + case RSTViewEdgeTop: + self.axisConstraint = [self.topAnchor constraintEqualToAnchor:self.superview.safeAreaLayoutGuide.topAnchor constant:self.edgeOffset.vertical]; + self.hiddenAxisConstraint = [self.superview.topAnchor constraintEqualToAnchor:self.bottomAnchor]; + break; + + case RSTViewEdgeBottom: + case RSTViewEdgeNone: + self.axisConstraint = [self.superview.safeAreaLayoutGuide.bottomAnchor constraintEqualToAnchor:self.bottomAnchor constant:self.edgeOffset.vertical]; + self.hiddenAxisConstraint = [self.topAnchor constraintEqualToAnchor:self.superview.bottomAnchor]; + break; + } + + // Alignment Constraints + switch (self.presentationEdge) + { + case RSTViewEdgeLeft: + case RSTViewEdgeRight: + { + switch (self.alignmentEdge) + { + case RSTViewEdgeTop: + self.alignmentConstraint = [self.topAnchor constraintEqualToAnchor:self.superview.safeAreaLayoutGuide.topAnchor constant:self.edgeOffset.vertical]; + break; + + case RSTViewEdgeBottom: + self.alignmentConstraint = [self.superview.safeAreaLayoutGuide.bottomAnchor constraintEqualToAnchor:self.bottomAnchor constant:self.edgeOffset.vertical]; + break; + + case RSTViewEdgeLeft: + case RSTViewEdgeRight: + case RSTViewEdgeNone: + self.alignmentConstraint = [self.centerYAnchor constraintEqualToAnchor:self.superview.safeAreaLayoutGuide.centerYAnchor]; + break; + } + + break; + } + + case RSTViewEdgeTop: + case RSTViewEdgeBottom: + case RSTViewEdgeNone: + { + switch (self.alignmentEdge) + { + case RSTViewEdgeLeft: + self.alignmentConstraint = [self.leftAnchor constraintEqualToAnchor:self.superview.safeAreaLayoutGuide.leftAnchor constant:self.edgeOffset.horizontal]; + break; + + case RSTViewEdgeRight: + self.alignmentConstraint = [self.superview.safeAreaLayoutGuide.rightAnchor constraintEqualToAnchor:self.rightAnchor constant:self.edgeOffset.horizontal]; + break; + + case RSTViewEdgeTop: + case RSTViewEdgeBottom: + case RSTViewEdgeNone: + self.alignmentConstraint = [self.centerXAnchor constraintEqualToAnchor:self.superview.safeAreaLayoutGuide.centerXAnchor]; + break; + } + + break; + } + } + + self.widthConstraint = [self.widthAnchor constraintLessThanOrEqualToAnchor:self.superview.safeAreaLayoutGuide.widthAnchor constant:-(self.edgeOffset.horizontal * 2)]; + self.heightConstraint = [self.heightAnchor constraintLessThanOrEqualToAnchor:self.superview.safeAreaLayoutGuide.heightAnchor constant:-(self.edgeOffset.vertical * 2)]; + + [NSLayoutConstraint activateConstraints:@[self.hiddenAxisConstraint, self.alignmentConstraint, self.widthConstraint, self.heightConstraint]]; + + [super updateConstraints]; +} + +- (void)tintColorDidChange +{ + [super tintColorDidChange]; + + self.backgroundColor = self.tintColor; +} + +#pragma mark - Showing/Dismissing - + +- (void)showInView:(UIView *)view +{ + [self showInView:view duration:0]; +} + +- (void)showInView:(UIView *)view duration:(NSTimeInterval)duration +{ + [self.dismissTimer invalidate]; + + if (duration > 0) + { + self.dismissTimer = [NSTimer scheduledTimerWithTimeInterval:duration target:self selector:@selector(dismiss) userInfo:nil repeats:NO]; + } + else + { + self.dismissTimer = nil; + } + + if ([self isShown]) + { + return; + } + + self.shown = YES; + + // Set to a large value to ensure labels don't prematurely wrap content. + // self.widthConstraint will ensure labels wrap to stay within superview safe area inset by self.edgeOffset. + self.textLabel.preferredMaxLayoutWidth = CGRectGetWidth(view.bounds); + self.detailTextLabel.preferredMaxLayoutWidth = CGRectGetWidth(view.bounds); + + [view addSubview:self]; + [view layoutIfNeeded]; + + self.hiddenAxisConstraint.active = NO; + self.axisConstraint.active = YES; + + CGFloat distance = 0; + CGFloat overshoot = 10; + + switch (self.presentationEdge) + { + case RSTViewEdgeLeft: + distance = CGRectGetWidth(self.bounds) + self.edgeOffset.horizontal + self.superview.safeAreaInsets.left; + break; + + case RSTViewEdgeRight: + distance = CGRectGetWidth(self.bounds) + self.edgeOffset.horizontal + self.superview.safeAreaInsets.right; + break; + + case RSTViewEdgeTop: + distance = CGRectGetHeight(self.bounds) + self.edgeOffset.vertical + self.superview.safeAreaInsets.top; + break; + + case RSTViewEdgeBottom: + case RSTViewEdgeNone: + distance = CGRectGetHeight(self.bounds) + self.edgeOffset.vertical + self.superview.safeAreaInsets.bottom; + break; + } + + CGFloat percentOvershoot = overshoot / distance; + CGFloat dampingRatio = -log(percentOvershoot) / sqrt( pow(M_PI, 2) + pow(log(percentOvershoot), 2) ); + + UISpringTimingParameters *timingParameters = [[UISpringTimingParameters alloc] initWithStiffness:RSTSpringStiffnessDefault dampingRatio:dampingRatio]; + + UIViewPropertyAnimator *animator = [[UIViewPropertyAnimator alloc] initWithSpringTimingParameters:timingParameters animations:^{ + [view layoutIfNeeded]; + }]; + [animator addCompletion:^(UIViewAnimatingPosition finalPosition) { + [[NSNotificationCenter defaultCenter] postNotificationName:RSTToastViewDidShowNotification object:self]; + }]; + [animator startAnimation]; + + [[NSNotificationCenter defaultCenter] postNotificationName:RSTToastViewWillShowNotification object:self userInfo:@{RSTToastViewUserInfoKeyPropertyAnimator: animator}]; +} + +- (void)dismiss +{ + if (![self isShown]) + { + return; + } + + // Set to NO immediately to prevent potential concurrent dismissals. + self.shown = NO; + + if (self.superview != nil) + { + self.axisConstraint.active = NO; + self.hiddenAxisConstraint.active = YES; + } + + UISpringTimingParameters *timingParameters = [[UISpringTimingParameters alloc] initWithStiffness:RSTSpringStiffnessDefault dampingRatio:1.0]; + + UIViewPropertyAnimator *animator = [[UIViewPropertyAnimator alloc] initWithSpringTimingParameters:timingParameters animations:^{ + [self.superview layoutIfNeeded]; + }]; + [animator addCompletion:^(UIViewAnimatingPosition finalPosition) { + if (finalPosition != UIViewAnimatingPositionEnd) + { + return; + } + + [self removeFromSuperview]; + + self.axisConstraint = nil; + self.hiddenAxisConstraint = nil; + self.alignmentConstraint = nil; + + [[NSNotificationCenter defaultCenter] postNotificationName:RSTToastViewDidDismissNotification object:self]; + }]; + [animator startAnimation]; + + [[NSNotificationCenter defaultCenter] postNotificationName:RSTToastViewWillDismissNotification object:self userInfo:@{RSTToastViewUserInfoKeyPropertyAnimator: animator}]; +} + +#pragma mark - KVO - + +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context +{ + if (context != RSTToastViewContext) + { + return [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; + } + + [self invalidateIntrinsicContentSize]; + + UILabel *label = (UILabel *)object; + NSString *previousText = change[NSKeyValueChangeOldKey]; + + if (self.superview != nil) + { + CGFloat initialAlpha = 1.0; + CGFloat finalAlpha = 1.0; + + if (previousText.length == 0 && label.text.length != 0) + { + initialAlpha = 0.0; + finalAlpha = 1.0; + } + else if (previousText.length != 0 && label.text.length == 0) + { + initialAlpha = 1.0; + finalAlpha = 0.0; + } + + label.alpha = initialAlpha; + + UIViewPropertyAnimator *animator = [[UIViewPropertyAnimator alloc] initWithSpringTimingParameters:[UISpringTimingParameters new] animations:^{ + label.alpha = finalAlpha; + [self.superview layoutIfNeeded]; + }]; + [animator startAnimation]; + } +} + +#pragma mark - Notifications - + +- (void)toastViewWillShow:(NSNotification *)notification +{ + RSTToastView *toastView = notification.object; + + if (toastView == self) + { + return; + } + + if (toastView.presentationEdge != self.presentationEdge) + { + return; + } + + [self dismiss]; +} + +#pragma mark - Getters/Setters - + +- (void)setHighlighted:(BOOL)highlighted +{ + [super setHighlighted:highlighted]; + + self.dimmingView.hidden = !highlighted; +} + +- (void)setPresentationEdge:(RSTViewEdge)presentationEdge +{ + if (presentationEdge == RSTViewEdgeNone) + { + presentationEdge = RSTViewEdgeBottom; + } + + _presentationEdge = presentationEdge; +} + +- (void)setLayoutMargins:(UIEdgeInsets)layoutMargins +{ + [super setLayoutMargins:layoutMargins]; + + // For some reason, setting stackView.preservesSuperviewLayoutMargins to YES might result + // in some insets becoming zero when re-laying out (such as after updating label text). + // We compensate by overriding setLayoutMargins: and manually updating stackView's margins. + self.stackView.layoutMargins = layoutMargins; +} + +@end diff --git a/Pods/Roxas/Roxas/Roxas-Prefix.pch b/Pods/Roxas/Roxas/Roxas-Prefix.pch new file mode 100644 index 000000000..ec4e8ad98 --- /dev/null +++ b/Pods/Roxas/Roxas/Roxas-Prefix.pch @@ -0,0 +1,24 @@ +// +// Roxas-Prefix.pch +// Roxas +// +// Created by Riley Testut on 12/6/14. +// Copyright (c) 2014 Riley Testut. All rights reserved. +// + +#ifndef Roxas_Roxas_Prefix_pch +#define Roxas_Roxas_Prefix_pch + +#import + +#ifndef __IPHONE_8_0 +#warning "This project uses features only available in iOS SDK 8.0 and later." +#endif + +#ifdef __OBJC__ + +#import "RSTDefines.h" + +#endif + +#endif diff --git a/Pods/Roxas/Roxas/Roxas.h b/Pods/Roxas/Roxas/Roxas.h new file mode 100644 index 000000000..e21af7560 --- /dev/null +++ b/Pods/Roxas/Roxas/Roxas.h @@ -0,0 +1,103 @@ +// +// Roxas.h +// Roxas +// +// Created by Riley Testut on 8/27/14. +// Copyright (c) 2014 Riley Testut. All rights reserved. +// + +@import Foundation; + +//! Project version number for Roxas. +FOUNDATION_EXPORT double RoxasVersionNumber; + +//! Project version string for Roxas. +FOUNDATION_EXPORT const unsigned char RoxasVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +// Generic +#import +#import +#import +#import + +// Operations +#import +#import +#import + +// Operations - Block Operations +#import + +// Operations - Load Operations +#import + +// Cell Content +#import +#import + +// Cell Content - Changes +#import +#import + +// Cell Content - Data Sources +#import +#import +#import +#import +#import +#import + +// Cell Content - Search +#import + +// Cell Content - Collection View Layouts +#import + +// Cell Content - Cells +#import + +// Core Data +#import +#import + +// Visual Components +#import +#import +#import +#import +#import +#import + +// Containers +#import + +// Functionality +#import + +// Categories +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import + +// Categories - RSTActivityIndicating +#import +#import + +// Categories - Cell Content +#import +#import +#import +#import + + diff --git a/Pods/Roxas/Roxas/UIAlertAction+Actions.h b/Pods/Roxas/Roxas/UIAlertAction+Actions.h new file mode 100644 index 000000000..4fe128cfe --- /dev/null +++ b/Pods/Roxas/Roxas/UIAlertAction+Actions.h @@ -0,0 +1,20 @@ +// +// UIAlertAction+Actions.h +// Roxas +// +// Created by Riley Testut on 5/9/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +@import UIKit; + +NS_ASSUME_NONNULL_BEGIN + +@interface UIAlertAction (Actions) + +@property (class, nonatomic, readonly) UIAlertAction *okAction; +@property (class, nonatomic, readonly) UIAlertAction *cancelAction; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/UIAlertAction+Actions.m b/Pods/Roxas/Roxas/UIAlertAction+Actions.m new file mode 100644 index 000000000..57005079e --- /dev/null +++ b/Pods/Roxas/Roxas/UIAlertAction+Actions.m @@ -0,0 +1,24 @@ +// +// UIAlertAction+Actions.m +// Roxas +// +// Created by Riley Testut on 5/9/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +#import "UIAlertAction+Actions.h" +#import "NSString+Localization.h" + +@implementation UIAlertAction (Actions) + ++ (UIAlertAction *)okAction +{ + return [UIAlertAction actionWithTitle:RSTSystemLocalizedString(@"OK") style:UIAlertActionStyleDefault handler:nil]; +} + ++ (UIAlertAction *)cancelAction +{ + return [UIAlertAction actionWithTitle:RSTSystemLocalizedString(@"Cancel") style:UIAlertActionStyleCancel handler:nil]; +} + +@end diff --git a/Pods/Roxas/Roxas/UICollectionView+CellContent.h b/Pods/Roxas/Roxas/UICollectionView+CellContent.h new file mode 100644 index 000000000..df622b499 --- /dev/null +++ b/Pods/Roxas/Roxas/UICollectionView+CellContent.h @@ -0,0 +1,18 @@ +// +// UICollectionView+CellContent.h +// Roxas +// +// Created by Riley Testut on 8/2/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +#import "RSTCellContentView.h" + +@import UIKit; + +NS_ASSUME_NONNULL_BEGIN + +@interface UICollectionView (CellContent) +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/UICollectionView+CellContent.m b/Pods/Roxas/Roxas/UICollectionView+CellContent.m new file mode 100644 index 000000000..c0d6e5e55 --- /dev/null +++ b/Pods/Roxas/Roxas/UICollectionView+CellContent.m @@ -0,0 +1,132 @@ +// +// UICollectionView+CellContent.m +// Roxas +// +// Created by Riley Testut on 8/2/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +#import "UICollectionView+CellContent.h" +#import "RSTCellContentChange.h" + +#import "RSTCellContentChangeOperation.h" + +@import ObjectiveC.runtime; + +@interface UICollectionView () + +@property (nonatomic) NSInteger rst_nestedUpdatesCounter; +@property (nullable, nonatomic) NSMutableArray *rst_operations; + +@end + +@implementation UICollectionView (CellContent) + +- (void)beginUpdates +{ + if (self.rst_nestedUpdatesCounter == 0) + { + self.rst_operations = [NSMutableArray array]; + } + + self.rst_nestedUpdatesCounter++; +} + +- (void)endUpdates +{ + if (self.rst_nestedUpdatesCounter <= 0) + { + return; + } + + self.rst_nestedUpdatesCounter--; + + if (self.rst_nestedUpdatesCounter > 0) + { + return; + } + + NSArray *operations = [self.rst_operations copy]; + self.rst_operations = nil; + + // According to documentation: + // Move is reported when an object changes in a manner that affects its position in the results. An update of the object is assumed in this case, no separate update message is sent to the delegate. + + // Therefore, we need to manually send another update message to items that moved after move is complete + // (because it may crash if you try to update an item that is moving in the same batch updates block...) + __block NSMutableArray *postMoveUpdateOperations = [NSMutableArray array]; + for (RSTCellContentChangeOperation *operation in operations) + { + if (operation.change.type != RSTCellContentChangeMove) + { + continue; + } + + RSTCellContentChange *change = [[RSTCellContentChange alloc] initWithType:RSTCellContentChangeUpdate currentIndexPath:operation.change.destinationIndexPath destinationIndexPath:nil]; + + RSTCollectionViewChangeOperation *updateOperation = [[RSTCollectionViewChangeOperation alloc] initWithChange:change collectionView:self]; + [postMoveUpdateOperations addObject:updateOperation]; + } + + [CATransaction begin]; + [CATransaction setCompletionBlock:^{ + + // Perform additional updates after any moved items have been moved. + // These additional updates must be performed after the first batch of operations have finished animating, or else the animation looks weird. + // However, the completion block for performBatchUpdates: is only called if the updates result in an animation. + // Since there is no way to know if an animation will actually occur (dependent on multiple factors), we explicitly create our own CATransaction. + // If there are no animations, the CATransaction's completion block will be called immediately. If there *are* animations, the completion block will be called after the animations finish. + + [self performBatchUpdates:^{ + for (RSTCellContentChangeOperation *operation in postMoveUpdateOperations) + { + [operation start]; + } + } completion:nil]; + }]; + + [self performBatchUpdates:^{ + for (RSTCellContentChangeOperation *operation in operations) + { + [operation start]; + } + } completion:nil]; + + [CATransaction commit]; +} + +- (void)addChange:(RSTCellContentChange *)change +{ + RSTCollectionViewChangeOperation *operation = [[RSTCollectionViewChangeOperation alloc] initWithChange:change collectionView:self]; + [self.rst_operations addObject:operation]; +} + +#pragma mark - Getters/Setters - + +- (Protocol *)dataSourceProtocol +{ + return @protocol(UICollectionViewDataSource); +} + +- (NSInteger)rst_nestedUpdatesCounter +{ + return [objc_getAssociatedObject(self, @selector(rst_nestedUpdatesCounter)) integerValue]; +} + +- (void)setRst_nestedUpdatesCounter:(NSInteger)rst_nestedUpdatesCounter +{ + NSNumber *value = (rst_nestedUpdatesCounter != 0) ? @(rst_nestedUpdatesCounter) : nil; + objc_setAssociatedObject(self, @selector(rst_nestedUpdatesCounter), value, OBJC_ASSOCIATION_COPY_NONATOMIC); +} + +- (NSMutableArray *)rst_operations +{ + return objc_getAssociatedObject(self, @selector(rst_operations)); +} + +- (void)setRst_operations:(NSMutableArray *)rst_operations +{ + objc_setAssociatedObject(self, @selector(rst_operations), rst_operations, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +@end diff --git a/Pods/Roxas/Roxas/UICollectionViewCell+CellContent.h b/Pods/Roxas/Roxas/UICollectionViewCell+CellContent.h new file mode 100644 index 000000000..ee527d4c8 --- /dev/null +++ b/Pods/Roxas/Roxas/UICollectionViewCell+CellContent.h @@ -0,0 +1,18 @@ +// +// UICollectionViewCell+CellContent.h +// Roxas +// +// Created by Riley Testut on 8/3/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +#import "RSTCellContentCell.h" + +@import UIKit; + +NS_ASSUME_NONNULL_BEGIN + +@interface UICollectionViewCell (CellContent) +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/UICollectionViewCell+CellContent.m b/Pods/Roxas/Roxas/UICollectionViewCell+CellContent.m new file mode 100644 index 000000000..cef474030 --- /dev/null +++ b/Pods/Roxas/Roxas/UICollectionViewCell+CellContent.m @@ -0,0 +1,32 @@ +// +// UICollectionViewCell+CellContent.m +// Roxas +// +// Created by Riley Testut on 8/3/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +#import "UICollectionViewCell+CellContent.h" + +@implementation UICollectionViewCell (CellContent) + ++ (nullable instancetype)instantiateWithNib:(UINib *)nib +{ + NSArray *contents = [nib instantiateWithOwner:nil options:nil]; + + UICollectionViewCell *cell = [contents firstObject]; + return cell; +} + ++ (UINib *)nib +{ + NSString *className = NSStringFromClass(self); + + // Handle Swift names that are prefixed with module name + NSArray *components = [className componentsSeparatedByString:@"."]; + + UINib *nib = [UINib nibWithNibName:components.lastObject bundle:[NSBundle bundleForClass:self]]; + return nib; +} + +@end diff --git a/Pods/Roxas/Roxas/UICollectionViewCell+Nibs.h b/Pods/Roxas/Roxas/UICollectionViewCell+Nibs.h new file mode 100644 index 000000000..d09acfe15 --- /dev/null +++ b/Pods/Roxas/Roxas/UICollectionViewCell+Nibs.h @@ -0,0 +1,21 @@ +// +// UICollectionViewCell+Nibs.h +// Roxas +// +// Created by Riley Testut on 8/3/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +@import UIKit; + +NS_ASSUME_NONNULL_BEGIN + +@interface UICollectionViewCell (Nibs) + +@property (class, nullable, nonatomic, readonly) UINib *nib; + ++ (nullable instancetype)instantiateWithNib:(UINib *)nib; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/UICollectionViewCell+Nibs.m b/Pods/Roxas/Roxas/UICollectionViewCell+Nibs.m new file mode 100644 index 000000000..25fab4db4 --- /dev/null +++ b/Pods/Roxas/Roxas/UICollectionViewCell+Nibs.m @@ -0,0 +1,32 @@ +// +// UICollectionViewCell+Nibs.m +// Roxas +// +// Created by Riley Testut on 8/3/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +#import "UICollectionViewCell+Nibs.h" + +@implementation UICollectionViewCell (Nibs) + ++ (instancetype)instantiateWithNib:(UINib *)nib; +{ + NSArray *contents = [nib instantiateWithOwner:nil options:nil]; + + UICollectionViewCell *cell = [contents firstObject]; + return cell; +} + ++ (UINib *)nib +{ + NSString *className = NSStringFromClass(self); + + // Handle Swift names that are prefixed with module name + NSArray *components = [className componentsSeparatedByString:@"."]; + + UINib *nib = [UINib nibWithNibName:components.lastObject bundle:[NSBundle bundleForClass:self]]; + return nib; +} + +@end diff --git a/Pods/Roxas/Roxas/UIImage+Manipulation.h b/Pods/Roxas/Roxas/UIImage+Manipulation.h new file mode 100644 index 000000000..0d852225d --- /dev/null +++ b/Pods/Roxas/Roxas/UIImage+Manipulation.h @@ -0,0 +1,41 @@ +// +// UIImage+Manipulation.h +// Hoot +// +// Created by Riley Testut on 9/23/14. +// Copyright (c) 2014 TMT. All rights reserved. +// + +@import UIKit; + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, UIImageMetadataOrientation) +{ + UIImageMetadataOrientationUp = 1, + UIImageMetadataOrientationDown = 3, + UIImageMetadataOrientationLeft = 8, + UIImageMetadataOrientationRight = 6, + UIImageMetadataOrientationUpMirrored = 2, + UIImageMetadataOrientationDownMirrored = 4, + UIImageMetadataOrientationLeftMirrored = 5, + UIImageMetadataOrientationRightMirrored = 7, +}; + +RST_EXTERN UIImageMetadataOrientation UIImageMetadataOrientationFromImageOrientation(UIImageOrientation imageOrientation); +RST_EXTERN UIImageOrientation UIImageOrientationFromMetadataOrientation(UIImageMetadataOrientation metadataOrientation); + +@interface UIImage (Manipulation) + +// Resizing +- (nullable UIImage *)imageByResizingToSize:(CGSize)size; +- (nullable UIImage *)imageByResizingToFitSize:(CGSize)size; +- (nullable UIImage *)imageByResizingToFillSize:(CGSize)size; + +// Rounded Corners +- (nullable UIImage *)imageWithCornerRadius:(CGFloat)cornerRadius; +- (nullable UIImage *)imageWithCornerRadius:(CGFloat)cornerRadius inset:(UIEdgeInsets)inset; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/UIImage+Manipulation.m b/Pods/Roxas/Roxas/UIImage+Manipulation.m new file mode 100644 index 000000000..f9feee798 --- /dev/null +++ b/Pods/Roxas/Roxas/UIImage+Manipulation.m @@ -0,0 +1,270 @@ +// +// UIImage+Manipulation.m +// Hoot +// +// Created by Riley Testut on 9/23/14. +// Copyright (c) 2014 TMT. All rights reserved. +// + +#import "UIImage+Manipulation.h" + +@implementation UIImage (Manipulation) + +#pragma mark - Resizing - + +- (UIImage *)imageByResizingToFitSize:(CGSize)size +{ + CGSize imageSize = self.size; + + CGFloat horizontalScale = size.width / imageSize.width; + CGFloat verticalScale = size.height / imageSize.height; + + // Resizing to minimum scale (ex: 1/20 instead of 1/2) ensures image will retain aspect ratio, and fit inside size + CGFloat scale = MIN(horizontalScale, verticalScale); + size = CGSizeMake(imageSize.width * scale, imageSize.height * scale); + + return [self imageByResizingToSize:size]; +} + +- (UIImage *)imageByResizingToFillSize:(CGSize)size +{ + CGSize imageSize = self.size; + + CGFloat horizontalScale = size.width / imageSize.width; + CGFloat verticalScale = size.height / imageSize.height; + + // Resizing to maximum scale (ex: 1/2 instead of 1/20) ensures image will retain aspect ratio, and will fill size + CGFloat scale = MAX(horizontalScale, verticalScale); + size = CGSizeMake(imageSize.width * scale, imageSize.height * scale); + + return [self imageByResizingToSize:size]; +} + +- (UIImage *)imageByResizingToSize:(CGSize)size +{ + switch (self.imageOrientation) + { + case UIImageOrientationLeft: + case UIImageOrientationLeftMirrored: + case UIImageOrientationRight: + case UIImageOrientationRightMirrored: + size = CGSizeMake(size.height, size.width); + break; + + default: + break; + } + + CGRect rect = CGRectIntegral(CGRectMake(0, 0, size.width * self.scale, size.height * self.scale)); + + size_t bitsPerComponent = CGImageGetBitsPerComponent(self.CGImage); + CGColorSpaceRef colorSpace = CGImageGetColorSpace(self.CGImage); + CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(self.CGImage); + + if (bitmapInfo & kCGImageAlphaLast) + { + bitmapInfo &= ~(kCGImageAlphaLast); + } + + bitmapInfo |= kCGImageAlphaNoneSkipLast; + + CGContextRef context = CGBitmapContextCreate(NULL, + CGRectGetWidth(rect), + CGRectGetHeight(rect), + bitsPerComponent, + 0, // CGImageGetBytesPerRow(self.CGImage) crashes on malformed UIImages (such as Crossy Road's). Passing 0 = automatic calculation, and is safer + colorSpace, + bitmapInfo); + + if (context == NULL) + { + return nil; + } + + CGContextSetInterpolationQuality(context, kCGInterpolationHigh); + + CGContextDrawImage(context, rect, self.CGImage); + + CGImageRef imageRef = CGBitmapContextCreateImage(context); + UIImage *image = [[UIImage imageWithCGImage:imageRef scale:self.scale orientation:self.imageOrientation] imageWithRenderingMode:self.renderingMode]; + + CFRelease(imageRef); + CFRelease(context); + + return image; +} + +#pragma mark - Rounded Corners - + +- (UIImage *)imageWithCornerRadius:(CGFloat)cornerRadius +{ + return [self imageWithCornerRadius:cornerRadius inset:UIEdgeInsetsZero]; +} + +- (UIImage *)imageWithCornerRadius:(CGFloat)cornerRadius inset:(UIEdgeInsets)inset +{ + UIEdgeInsets correctedInset = inset; + + switch (self.imageOrientation) + { + case UIImageOrientationLeft: + case UIImageOrientationLeftMirrored: + correctedInset.top = inset.left; + correctedInset.bottom = inset.right; + correctedInset.left = inset.bottom; + correctedInset.right = inset.top; + break; + + case UIImageOrientationRight: + case UIImageOrientationRightMirrored: + correctedInset.top = inset.right; + correctedInset.bottom = inset.left; + correctedInset.left = inset.top; + correctedInset.right = inset.bottom; + break; + + case UIImageOrientationDown: + case UIImageOrientationDownMirrored: + correctedInset.top = inset.bottom; + correctedInset.bottom = inset.top; + correctedInset.left = inset.left; + correctedInset.right = inset.right; + break; + + default: + break; + } + + CGFloat imageScale = self.scale; + + CGRect clippedRect = CGRectMake(0, 0, self.size.width - correctedInset.left - correctedInset.right, self.size.height - correctedInset.top - correctedInset.bottom); + CGRect drawingRect = CGRectMake(-correctedInset.left, -correctedInset.top, self.size.width, self.size.height); + + clippedRect = CGRectApplyAffineTransform(clippedRect, CGAffineTransformMakeScale(imageScale, imageScale)); + drawingRect = CGRectApplyAffineTransform(drawingRect, CGAffineTransformMakeScale(imageScale, imageScale)); + + size_t bitsPerComponent = CGImageGetBitsPerComponent(self.CGImage); + CGColorSpaceRef colorSpace = CGImageGetColorSpace(self.CGImage); + CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(self.CGImage); + + if (bitmapInfo & kCGImageAlphaLast) + { + bitmapInfo &= ~(kCGImageAlphaLast); + bitmapInfo |= kCGImageAlphaNoneSkipLast; + } + + CGContextRef context = CGBitmapContextCreate(NULL, + CGRectGetWidth(clippedRect), + CGRectGetHeight(clippedRect), + bitsPerComponent, + 0, // CGImageGetBytesPerRow(self.CGImage) crashes on malformed UIImages (such as Crossy Road's). Passing 0 = automatic calculation, and is safer + colorSpace, + bitmapInfo); + + if (context == NULL) + { + return nil; + } + + UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:clippedRect cornerRadius:cornerRadius * imageScale]; + + CGContextAddPath(context, path.CGPath); + CGContextClip(context); + + CGContextDrawImage(context, drawingRect, self.CGImage); + + CGImageRef imageRef = CGBitmapContextCreateImage(context); + UIImage *image = [[UIImage imageWithCGImage:imageRef scale:imageScale orientation:self.imageOrientation] imageWithRenderingMode:self.renderingMode]; + + CFRelease(imageRef); + CFRelease(context); + + return image; +} + +@end + + +UIImageMetadataOrientation UIImageMetadataOrientationFromImageOrientation(UIImageOrientation imageOrientation) +{ + UIImageMetadataOrientation metadataOrientation = UIImageMetadataOrientationUp; + + switch (imageOrientation) + { + case UIImageOrientationUp: + metadataOrientation = UIImageMetadataOrientationUp; + break; + + case UIImageOrientationDown: + metadataOrientation = UIImageMetadataOrientationDown; + break; + + case UIImageOrientationLeft: + metadataOrientation = UIImageMetadataOrientationLeft; + break; + + case UIImageOrientationRight: + metadataOrientation = UIImageMetadataOrientationRight; + break; + + case UIImageOrientationUpMirrored: + metadataOrientation = UIImageMetadataOrientationUpMirrored; + break; + + case UIImageOrientationDownMirrored: + metadataOrientation = UIImageMetadataOrientationDownMirrored; + break; + + case UIImageOrientationLeftMirrored: + metadataOrientation = UIImageMetadataOrientationLeftMirrored; + break; + + case UIImageOrientationRightMirrored: + metadataOrientation = UIImageMetadataOrientationRightMirrored; + break; + } + + return metadataOrientation; +} + +UIImageOrientation UIImageOrientationFromMetadataOrientation(UIImageMetadataOrientation metadataOrientation) +{ + UIImageOrientation imageOrientation = UIImageOrientationUp; + + switch (metadataOrientation) + { + case UIImageMetadataOrientationUp: + imageOrientation = UIImageOrientationUp; + break; + + case UIImageMetadataOrientationDown: + imageOrientation = UIImageOrientationDown; + break; + + case UIImageMetadataOrientationLeft: + imageOrientation = UIImageOrientationLeft; + break; + + case UIImageMetadataOrientationRight: + imageOrientation = UIImageOrientationRight; + break; + + case UIImageMetadataOrientationUpMirrored: + imageOrientation = UIImageOrientationUpMirrored; + break; + + case UIImageMetadataOrientationDownMirrored: + imageOrientation = UIImageOrientationDownMirrored; + break; + + case UIImageMetadataOrientationLeftMirrored: + imageOrientation = UIImageOrientationLeftMirrored; + break; + + case UIImageMetadataOrientationRightMirrored: + imageOrientation = UIImageOrientationRightMirrored; + break; + } + + return imageOrientation; +} diff --git a/Pods/Roxas/Roxas/UIKit+ActivityIndicating.h b/Pods/Roxas/Roxas/UIKit+ActivityIndicating.h new file mode 100644 index 000000000..98fcbc7db --- /dev/null +++ b/Pods/Roxas/Roxas/UIKit+ActivityIndicating.h @@ -0,0 +1,35 @@ +// +// UIKit+ActivityIndicating.h +// Roxas +// +// Created by Riley Testut on 4/8/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +#import "RSTActivityIndicating.h" + +@import UIKit; + +NS_ASSUME_NONNULL_BEGIN + +@interface UIButton (ActivityIndicating) +@property (nonatomic, readonly) UIActivityIndicatorView *rst_activityIndicatorView NS_SWIFT_NAME(activityIndicatorView); +@end + +@interface UIBarButtonItem (ActivityIndicating) +@property (nonatomic, readonly) UIActivityIndicatorView *rst_activityIndicatorView NS_SWIFT_NAME(activityIndicatorView); +@end + +@interface UIImageView (ActivityIndicating) +@property (nonatomic, readonly) UIActivityIndicatorView *rst_activityIndicatorView NS_SWIFT_NAME(activityIndicatorView); +@end + +@interface UITextField (ActivityIndicating) +@property (nonatomic, readonly) UIActivityIndicatorView *rst_activityIndicatorView NS_SWIFT_NAME(activityIndicatorView); +@end + +@interface UIApplication (ActivityIndicating) +@end + +NS_ASSUME_NONNULL_END + diff --git a/Pods/Roxas/Roxas/UIKit+ActivityIndicating.m b/Pods/Roxas/Roxas/UIKit+ActivityIndicating.m new file mode 100644 index 000000000..7676435ab --- /dev/null +++ b/Pods/Roxas/Roxas/UIKit+ActivityIndicating.m @@ -0,0 +1,577 @@ +// +// UIKit+ActivityIndicating.m +// Roxas +// +// Created by Riley Testut on 4/2/18. +// Copyright © 2018 Riley Testut. All rights reserved. +// + +#import "UIKit+ActivityIndicating.h" + +typedef NSString *RSTActivityIndicatingHelperUserInfoKey NS_TYPED_EXTENSIBLE_ENUM; +RSTActivityIndicatingHelperUserInfoKey const RSTActivityIndicatingHelperUserInfoKeyTitle = @"RSTActivityIndicatingHelperUserInfoKeyTitle"; +RSTActivityIndicatingHelperUserInfoKey const RSTActivityIndicatingHelperUserInfoKeyImage = @"RSTActivityIndicatingHelperUserInfoKeyImage"; +RSTActivityIndicatingHelperUserInfoKey const RSTActivityIndicatingHelperUserInfoKeyEnabled = @"RSTActivityIndicatingHelperUserInfoKeyEnabled"; +RSTActivityIndicatingHelperUserInfoKey const RSTActivityIndicatingHelperUserInfoKeyCustomView = @"RSTActivityIndicatingHelperUserInfoKeyCustomView"; +RSTActivityIndicatingHelperUserInfoKey const RSTActivityIndicatingHelperUserInfoKeyWidthConstraint = @"RSTActivityIndicatingHelperUserInfoKeyWidthConstraint"; +RSTActivityIndicatingHelperUserInfoKey const RSTActivityIndicatingHelperUserInfoKeyViewMode = @"RSTActivityIndicatingHelperUserInfoKeyViewMode"; + +@import ObjectiveC; + +@protocol _RSTActivityIndicating + +- (void)startIndicatingActivity; +- (void)stopIndicatingActivity; + +@end + + +NS_ASSUME_NONNULL_BEGIN + +@interface RSTActivityIndicatingHelper : NSObject + +@property (nonatomic, readwrite) NSUInteger activityCount; + +@property (nonatomic, readonly) id<_RSTActivityIndicating> indicatingObject; + +@property (nonatomic, readonly) dispatch_queue_t activityCountQueue; + +@property (nonatomic, readonly) NSMutableDictionary *userInfo; + +@property (nonatomic, readonly) UIActivityIndicatorView *activityIndicatorView; + +- (instancetype)initWithIndicatingObject:(id<_RSTActivityIndicating>)indicatingObject NS_DESIGNATED_INITIALIZER; + +- (instancetype)init NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END + + +@implementation RSTActivityIndicatingHelper +@synthesize activityCount = _activityCount; +@synthesize indicatingActivity = _indicatingActivity; +@synthesize activityIndicatorView = _activityIndicatorView; + ++ (instancetype)activityIndicatingHelperForIndicatingObject:(id<_RSTActivityIndicating>)object +{ + @synchronized(object) + { + RSTActivityIndicatingHelper *helper = objc_getAssociatedObject(object, @selector(activityIndicatingHelperForIndicatingObject:)); + if (helper == nil) + { + helper = [[RSTActivityIndicatingHelper alloc] initWithIndicatingObject:object]; + + objc_setAssociatedObject(object, @selector(activityIndicatingHelperForIndicatingObject:), helper, OBJC_ASSOCIATION_RETAIN_NONATOMIC); + } + + return helper; + } +} + +- (instancetype)initWithIndicatingObject:(id<_RSTActivityIndicating>)indicatingObject +{ + self = [super init]; + if (self) + { + _indicatingObject = indicatingObject; + + _activityCountQueue = dispatch_queue_create("com.rileytestut.Roxas.activityCountQueue", DISPATCH_QUEUE_SERIAL); + + _userInfo = [NSMutableDictionary dictionary]; + } + + return self; +} + +- (void)incrementActivityCount +{ + dispatch_sync(self.activityCountQueue, ^{ + self.activityCount++; + + if (self.activityCount == 1) + { + dispatch_async(dispatch_get_main_queue(), ^{ + self.indicatingActivity = YES; + }); + } + }); +} + +- (void)decrementActivityCount +{ + dispatch_sync(self.activityCountQueue, ^{ + if (self.activityCount == 0) + { + return; + } + + self.activityCount--; + + if (self.activityCount == 0) + { + dispatch_async(dispatch_get_main_queue(), ^{ + self.indicatingActivity = NO; + }); + } + }); +} + +#pragma mark - Getters/Setters - + +- (UIActivityIndicatorView *)activityIndicatorView +{ + @synchronized(self) + { + if (_activityIndicatorView == nil) + { + if (@available(iOS 13, *)) + { + _activityIndicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleMedium]; + } + else + { + _activityIndicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; + } + + _activityIndicatorView.translatesAutoresizingMaskIntoConstraints = NO; + } + + return _activityIndicatorView; + } +} + +- (void)setIndicatingActivity:(BOOL)indicatingActivity +{ + // Always start/stop animation regardless of whether indicatingActivity is a new value. + // This is in case the animation has been started/stopped externally (such as when reusing table/collection view cells). + if (indicatingActivity) + { + [self.activityIndicatorView startAnimating]; + } + else + { + [self.activityIndicatorView stopAnimating]; + } + + if (indicatingActivity == _indicatingActivity) + { + return; + } + + _indicatingActivity = indicatingActivity; + + if (indicatingActivity) + { + [self.indicatingObject startIndicatingActivity]; + } + else + { + [self.indicatingObject stopIndicatingActivity]; + } +} + +@end + + +NS_ASSUME_NONNULL_BEGIN + +@interface UIButton (_ActivityIndicating) <_RSTActivityIndicating> +@property (nonatomic, readonly) RSTActivityIndicatingHelper *activityIndicatingHelper; +@end + +NS_ASSUME_NONNULL_END + + +@implementation UIButton (_ActivityIndicating) + +- (void)startIndicatingActivity +{ + NSString *title = [self titleForState:UIControlStateNormal]; + self.activityIndicatingHelper.userInfo[RSTActivityIndicatingHelperUserInfoKeyTitle] = title; + + UIImage *image = [self imageForState:UIControlStateNormal]; + self.activityIndicatingHelper.userInfo[RSTActivityIndicatingHelperUserInfoKeyImage] = image; + + BOOL enabled = [self isUserInteractionEnabled]; + self.activityIndicatingHelper.userInfo[RSTActivityIndicatingHelperUserInfoKeyEnabled] = @(enabled); + + if (!self.translatesAutoresizingMaskIntoConstraints) + { + NSLayoutConstraint *widthConstraint = [self.widthAnchor constraintEqualToConstant:CGRectGetWidth(self.bounds)]; + widthConstraint.active = YES; + self.activityIndicatingHelper.userInfo[RSTActivityIndicatingHelperUserInfoKeyWidthConstraint] = widthConstraint; + } + + [self setTitle:nil forState:UIControlStateNormal]; + [self setImage:nil forState:UIControlStateNormal]; + [self setUserInteractionEnabled:NO]; + + [self addSubview:self.activityIndicatingHelper.activityIndicatorView]; + + [NSLayoutConstraint activateConstraints:@[[self.activityIndicatingHelper.activityIndicatorView.centerXAnchor constraintEqualToAnchor:self.centerXAnchor], + [self.activityIndicatingHelper.activityIndicatorView.centerYAnchor constraintEqualToAnchor:self.centerYAnchor]]]; +} + +- (void)stopIndicatingActivity +{ + [self.activityIndicatingHelper.activityIndicatorView removeFromSuperview]; + + NSString *title = self.activityIndicatingHelper.userInfo[RSTActivityIndicatingHelperUserInfoKeyTitle]; + [self setTitle:title forState:UIControlStateNormal]; + + UIImage *image = self.activityIndicatingHelper.userInfo[RSTActivityIndicatingHelperUserInfoKeyImage]; + [self setImage:image forState:UIControlStateNormal]; + + BOOL enabled = [self.activityIndicatingHelper.userInfo[RSTActivityIndicatingHelperUserInfoKeyEnabled] boolValue]; + [self setUserInteractionEnabled:enabled]; + + NSLayoutConstraint *widthConstraint = self.activityIndicatingHelper.userInfo[RSTActivityIndicatingHelperUserInfoKeyWidthConstraint]; + widthConstraint.active = NO; + + self.activityIndicatingHelper.userInfo[RSTActivityIndicatingHelperUserInfoKeyTitle] = nil; + self.activityIndicatingHelper.userInfo[RSTActivityIndicatingHelperUserInfoKeyImage] = nil; + self.activityIndicatingHelper.userInfo[RSTActivityIndicatingHelperUserInfoKeyEnabled] = nil; + self.activityIndicatingHelper.userInfo[RSTActivityIndicatingHelperUserInfoKeyWidthConstraint] = nil; +} + +#pragma mark - - + +- (void)incrementActivityCount +{ + [self.activityIndicatingHelper incrementActivityCount]; +} + +- (void)decrementActivityCount +{ + [self.activityIndicatingHelper decrementActivityCount]; +} + +#pragma mark - Getters/Setters - + +- (void)setIndicatingActivity:(BOOL)indicatingActivity +{ + self.activityIndicatingHelper.indicatingActivity = indicatingActivity; +} + +- (BOOL)isIndicatingActivity +{ + return [self.activityIndicatingHelper isIndicatingActivity]; +} + +- (NSUInteger)activityCount +{ + return self.activityIndicatingHelper.activityCount; +} + +- (RSTActivityIndicatingHelper *)activityIndicatingHelper +{ + return [RSTActivityIndicatingHelper activityIndicatingHelperForIndicatingObject:self]; +} + +- (UIActivityIndicatorView *)rst_activityIndicatorView +{ + return self.activityIndicatingHelper.activityIndicatorView; +} + +@end + + +NS_ASSUME_NONNULL_BEGIN + +@interface UIBarButtonItem (_ActivityIndicating) <_RSTActivityIndicating> +@property (nonatomic, readonly) RSTActivityIndicatingHelper *activityIndicatingHelper; +@end + +NS_ASSUME_NONNULL_END + + +@implementation UIBarButtonItem (_ActivityIndicating) + +- (void)startIndicatingActivity +{ + UIView *customView = [[UIView alloc] init]; + customView.translatesAutoresizingMaskIntoConstraints = NO; + [customView addSubview:self.activityIndicatingHelper.activityIndicatorView]; + + [NSLayoutConstraint activateConstraints:@[[self.rst_activityIndicatorView.leadingAnchor constraintEqualToAnchor:customView.leadingAnchor constant:8], + [self.rst_activityIndicatorView.trailingAnchor constraintEqualToAnchor:customView.trailingAnchor constant:-8], + [self.rst_activityIndicatorView.topAnchor constraintEqualToAnchor:customView.topAnchor], + [self.rst_activityIndicatorView.bottomAnchor constraintEqualToAnchor:customView.bottomAnchor]]]; + + self.activityIndicatingHelper.userInfo[RSTActivityIndicatingHelperUserInfoKeyEnabled] = @(self.enabled); + self.activityIndicatingHelper.userInfo[RSTActivityIndicatingHelperUserInfoKeyCustomView] = self.customView; + + self.enabled = NO; + self.customView = customView; +} + +- (void)stopIndicatingActivity +{ + BOOL enabled = [self.activityIndicatingHelper.userInfo[RSTActivityIndicatingHelperUserInfoKeyEnabled] boolValue]; + self.enabled = enabled; + + UIView *customView = self.activityIndicatingHelper.userInfo[RSTActivityIndicatingHelperUserInfoKeyCustomView]; + self.customView = customView; + + self.activityIndicatingHelper.userInfo[RSTActivityIndicatingHelperUserInfoKeyEnabled] = nil; + self.activityIndicatingHelper.userInfo[RSTActivityIndicatingHelperUserInfoKeyCustomView] = nil; +} + +#pragma mark - - + +- (void)incrementActivityCount +{ + [self.activityIndicatingHelper incrementActivityCount]; +} + +- (void)decrementActivityCount +{ + [self.activityIndicatingHelper decrementActivityCount]; +} + +#pragma mark - Getters/Setters - + +- (void)setIndicatingActivity:(BOOL)indicatingActivity +{ + self.activityIndicatingHelper.indicatingActivity = indicatingActivity; +} + +- (BOOL)isIndicatingActivity +{ + return [self.activityIndicatingHelper isIndicatingActivity]; +} + +- (NSUInteger)activityCount +{ + return self.activityIndicatingHelper.activityCount; +} + +- (RSTActivityIndicatingHelper *)activityIndicatingHelper +{ + return [RSTActivityIndicatingHelper activityIndicatingHelperForIndicatingObject:self]; +} + +- (UIActivityIndicatorView *)rst_activityIndicatorView +{ + return self.activityIndicatingHelper.activityIndicatorView; +} + +@end + + +NS_ASSUME_NONNULL_BEGIN + +@interface UIImageView (_ActivityIndicating) <_RSTActivityIndicating> +@property (nonatomic, readonly) RSTActivityIndicatingHelper *activityIndicatingHelper; +@end + +NS_ASSUME_NONNULL_END + + +@implementation UIImageView (_ActivityIndicating) + +- (void)startIndicatingActivity +{ + [self addSubview:self.activityIndicatingHelper.activityIndicatorView]; + + [NSLayoutConstraint activateConstraints:@[[self.activityIndicatingHelper.activityIndicatorView.centerXAnchor constraintEqualToAnchor:self.centerXAnchor], + [self.activityIndicatingHelper.activityIndicatorView.centerYAnchor constraintEqualToAnchor:self.centerYAnchor]]]; +} + +- (void)stopIndicatingActivity +{ + [self.activityIndicatingHelper.activityIndicatorView removeFromSuperview]; +} + +#pragma mark - - + +- (void)incrementActivityCount +{ + [self.activityIndicatingHelper incrementActivityCount]; +} + +- (void)decrementActivityCount +{ + [self.activityIndicatingHelper decrementActivityCount]; +} + +#pragma mark - Getters/Setters - + +- (void)setIndicatingActivity:(BOOL)indicatingActivity +{ + self.activityIndicatingHelper.indicatingActivity = indicatingActivity; +} + +- (BOOL)isIndicatingActivity +{ + return [self.activityIndicatingHelper isIndicatingActivity]; +} + +- (NSUInteger)activityCount +{ + return self.activityIndicatingHelper.activityCount; +} + +- (RSTActivityIndicatingHelper *)activityIndicatingHelper +{ + return [RSTActivityIndicatingHelper activityIndicatingHelperForIndicatingObject:self]; +} + +- (UIActivityIndicatorView *)rst_activityIndicatorView +{ + return self.activityIndicatingHelper.activityIndicatorView; +} + +@end + + +NS_ASSUME_NONNULL_BEGIN + +@interface UITextField (_ActivityIndicating) <_RSTActivityIndicating> +@property (nonatomic, readonly) RSTActivityIndicatingHelper *activityIndicatingHelper; +@end + +NS_ASSUME_NONNULL_END + + +@implementation UITextField (_ActivityIndicating) + +- (void)startIndicatingActivity +{ + UIView *customView = self.rightView; + self.activityIndicatingHelper.userInfo[RSTActivityIndicatingHelperUserInfoKeyCustomView] = customView; + + UITextFieldViewMode viewMode = self.rightViewMode; + self.activityIndicatingHelper.userInfo[RSTActivityIndicatingHelperUserInfoKeyViewMode] = @(viewMode); + + BOOL enabled = [self isUserInteractionEnabled]; + self.activityIndicatingHelper.userInfo[RSTActivityIndicatingHelperUserInfoKeyEnabled] = @(enabled); + + self.rightView = self.activityIndicatingHelper.activityIndicatorView; + self.rightViewMode = UITextFieldViewModeAlways; + self.userInteractionEnabled = NO; + + // Layout twice to fix bug where setting self.rightView to the same UIActivityIndicatorView instance multiple times results in incorrect placement. + [self layoutIfNeeded]; + + [self setNeedsLayout]; + [self layoutIfNeeded]; +} + +- (void)stopIndicatingActivity +{ + UIView *customView = self.activityIndicatingHelper.userInfo[RSTActivityIndicatingHelperUserInfoKeyCustomView]; + self.rightView = customView; + + UITextFieldViewMode viewMode = [self.activityIndicatingHelper.userInfo[RSTActivityIndicatingHelperUserInfoKeyViewMode] integerValue]; + self.rightViewMode = viewMode; + + BOOL enabled = [self.activityIndicatingHelper.userInfo[RSTActivityIndicatingHelperUserInfoKeyEnabled] boolValue]; + self.userInteractionEnabled = enabled; + + self.activityIndicatingHelper.userInfo[RSTActivityIndicatingHelperUserInfoKeyCustomView] = nil; + self.activityIndicatingHelper.userInfo[RSTActivityIndicatingHelperUserInfoKeyViewMode] = nil; + self.activityIndicatingHelper.userInfo[RSTActivityIndicatingHelperUserInfoKeyEnabled] = nil; +} + +#pragma mark - - + +- (void)incrementActivityCount +{ + [self.activityIndicatingHelper incrementActivityCount]; +} + +- (void)decrementActivityCount +{ + [self.activityIndicatingHelper decrementActivityCount]; +} + +#pragma mark - Getters/Setters - + +- (void)setIndicatingActivity:(BOOL)indicatingActivity +{ + self.activityIndicatingHelper.indicatingActivity = indicatingActivity; +} + +- (BOOL)isIndicatingActivity +{ + return [self.activityIndicatingHelper isIndicatingActivity]; +} + +- (NSUInteger)activityCount +{ + return self.activityIndicatingHelper.activityCount; +} + +- (RSTActivityIndicatingHelper *)activityIndicatingHelper +{ + return [RSTActivityIndicatingHelper activityIndicatingHelperForIndicatingObject:self]; +} + +- (UIActivityIndicatorView *)rst_activityIndicatorView +{ + return self.activityIndicatingHelper.activityIndicatorView; +} + +@end + + +NS_ASSUME_NONNULL_BEGIN + +@interface UIApplication (_ActivityIndicating) <_RSTActivityIndicating> +@property (nonatomic, readonly) RSTActivityIndicatingHelper *activityIndicatingHelper; +@end + +NS_ASSUME_NONNULL_END + + +@implementation UIApplication (_ActivityIndicating) + +- (void)startIndicatingActivity +{ + self.networkActivityIndicatorVisible = YES; +} + +- (void)stopIndicatingActivity +{ + self.networkActivityIndicatorVisible = NO; +} + +#pragma mark - - + +- (void)incrementActivityCount +{ + [self.activityIndicatingHelper incrementActivityCount]; +} + +- (void)decrementActivityCount +{ + [self.activityIndicatingHelper decrementActivityCount]; +} + +#pragma mark - Getters/Setters - + +- (void)setIndicatingActivity:(BOOL)indicatingActivity +{ + self.activityIndicatingHelper.indicatingActivity = indicatingActivity; +} + +- (BOOL)isIndicatingActivity +{ + return [self.activityIndicatingHelper isIndicatingActivity]; +} + +- (NSUInteger)activityCount +{ + return self.activityIndicatingHelper.activityCount; +} + +- (RSTActivityIndicatingHelper *)activityIndicatingHelper +{ + return [RSTActivityIndicatingHelper activityIndicatingHelperForIndicatingObject:self]; +} + +@end + diff --git a/Pods/Roxas/Roxas/UISpringTimingParameters+Conveniences.h b/Pods/Roxas/Roxas/UISpringTimingParameters+Conveniences.h new file mode 100644 index 000000000..02f398081 --- /dev/null +++ b/Pods/Roxas/Roxas/UISpringTimingParameters+Conveniences.h @@ -0,0 +1,39 @@ +// +// UISpringTimingParameters+Conveniences.h +// Roxas +// +// Created by Riley Testut on 5/2/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +@import UIKit; + +NS_ASSUME_NONNULL_BEGIN + +typedef CGFloat RSTSpringStiffness NS_TYPED_EXTENSIBLE_ENUM; + +RST_EXTERN const RSTSpringStiffness RSTSpringStiffnessDefault NS_SWIFT_NAME(RSTSpringStiffness.default); +RST_EXTERN const RSTSpringStiffness RSTSpringStiffnessSystem NS_SWIFT_NAME(RSTSpringStiffness.system); + +@interface UISpringTimingParameters (Conveniences) + +- (instancetype)initWithMass:(CGFloat)mass stiffness:(RSTSpringStiffness)stiffness dampingRatio:(CGFloat)dampingRatio; +- (instancetype)initWithMass:(CGFloat)mass stiffness:(RSTSpringStiffness)stiffness dampingRatio:(CGFloat)dampingRatio initialVelocity:(CGVector)initialVelocity; + +- (instancetype)initWithStiffness:(RSTSpringStiffness)stiffness dampingRatio:(CGFloat)dampingRatio; +- (instancetype)initWithStiffness:(RSTSpringStiffness)stiffness dampingRatio:(CGFloat)dampingRatio initialVelocity:(CGVector)initialVelocity; + +@end + +NS_ASSUME_NONNULL_END + + +NS_ASSUME_NONNULL_BEGIN + +@interface UIViewPropertyAnimator (SpringConveniences) + +- (instancetype)initWithSpringTimingParameters:(UISpringTimingParameters *)timingParameters animations:(void (^ __nullable)(void))animations; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/UISpringTimingParameters+Conveniences.m b/Pods/Roxas/Roxas/UISpringTimingParameters+Conveniences.m new file mode 100644 index 000000000..d6fcdfabf --- /dev/null +++ b/Pods/Roxas/Roxas/UISpringTimingParameters+Conveniences.m @@ -0,0 +1,67 @@ +// +// UISpringTimingParameters+Conveniences.m +// Roxas +// +// Created by Riley Testut on 5/2/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +#import "UISpringTimingParameters+Conveniences.h" + +const RSTSpringStiffness RSTSpringStiffnessDefault = 750.0; + +// Retrieved via private APIs. https://twitter.com/rileytestut/statuses/754924747046080512 +const RSTSpringStiffness RSTSpringStiffnessSystem = 1000.0; + +@implementation UISpringTimingParameters (Conveniences) + +- (instancetype)initWithMass:(CGFloat)mass stiffness:(RSTSpringStiffness)stiffness dampingRatio:(CGFloat)dampingRatio +{ + return [self initWithMass:mass stiffness:stiffness dampingRatio:dampingRatio initialVelocity:CGVectorMake(0, 0)]; +} + +- (instancetype)initWithMass:(CGFloat)mass stiffness:(RSTSpringStiffness)stiffness dampingRatio:(CGFloat)dampingRatio initialVelocity:(CGVector)initialVelocity +{ + // The damping coefficient necessary to prevent oscillations and return to equilibrium in the minimum amount of time. + CGFloat criticalDamping = 2 * sqrt((double)mass * (double)stiffness); + + // The damping coefficient necessary to achieve the requested dampingRatio. + // The damping ratio is simply the ratio between the system's damping and its critical damping. + CGFloat damping = dampingRatio * criticalDamping; + + self = [self initWithMass:mass stiffness:stiffness damping:damping initialVelocity:CGVectorMake(0, 0)]; + return self; +} + +- (instancetype)initWithStiffness:(RSTSpringStiffness)stiffness dampingRatio:(CGFloat)dampingRatio +{ + return [self initWithStiffness:stiffness dampingRatio:dampingRatio initialVelocity:CGVectorMake(0, 0)]; +} + +- (instancetype)initWithStiffness:(RSTSpringStiffness)stiffness dampingRatio:(CGFloat)dampingRatio initialVelocity:(CGVector)initialVelocity +{ + CGFloat mass = 3.0; + + return [self initWithMass:mass stiffness:stiffness dampingRatio:dampingRatio initialVelocity:initialVelocity]; +} + +@end + + +@implementation UIViewPropertyAnimator (SpringConveniences) + +- (instancetype)initWithSpringTimingParameters:(UISpringTimingParameters *)timingParameters animations:(void (^)(void))animations +{ + self = [self initWithDuration:0 timingParameters:timingParameters]; + if (self) + { + if (animations) + { + [self addAnimations:animations]; + } + } + + return self; +} + +@end diff --git a/Pods/Roxas/Roxas/UITableView+CellContent.h b/Pods/Roxas/Roxas/UITableView+CellContent.h new file mode 100644 index 000000000..8bdc71147 --- /dev/null +++ b/Pods/Roxas/Roxas/UITableView+CellContent.h @@ -0,0 +1,18 @@ +// +// UITableView+CellContent.h +// Roxas +// +// Created by Riley Testut on 10/21/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +#import "RSTCellContentView.h" + +@import UIKit; + +NS_ASSUME_NONNULL_BEGIN + +@interface UITableView (CellContent) +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/UITableView+CellContent.m b/Pods/Roxas/Roxas/UITableView+CellContent.m new file mode 100644 index 000000000..ad8da18da --- /dev/null +++ b/Pods/Roxas/Roxas/UITableView+CellContent.m @@ -0,0 +1,86 @@ +// +// UITableView+CellContent.m +// Roxas +// +// Created by Riley Testut on 10/21/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +#import "UITableView+CellContent.h" +#import "RSTCellContentChange.h" + +@implementation UITableView (CellContent) + +- (void)addChange:(RSTCellContentChange *)change +{ + switch (change.type) + { + case NSFetchedResultsChangeInsert: + { + if (change.sectionIndex != RSTUnknownSectionIndex) + { + [self insertSections:[NSIndexSet indexSetWithIndex:change.sectionIndex] withRowAnimation:change.rowAnimation]; + } + else + { + [self insertRowsAtIndexPaths:@[change.destinationIndexPath] withRowAnimation:change.rowAnimation]; + } + + break; + } + + case NSFetchedResultsChangeDelete: + { + if (change.sectionIndex != RSTUnknownSectionIndex) + { + [self deleteSections:[NSIndexSet indexSetWithIndex:change.sectionIndex] withRowAnimation:change.rowAnimation]; + } + else + { + [self deleteRowsAtIndexPaths:@[change.currentIndexPath] withRowAnimation:change.rowAnimation]; + } + + break; + } + + case NSFetchedResultsChangeMove: + { + // According to documentation: + // Move is reported when an object changes in a manner that affects its position in the results. An update of the object is assumed in this case, no separate update message is sent to the delegate. + + // Therefore, we need to manually send another update message to items that moved after move is complete on the next run loop. + // (because it may crash if you try to update an item that is moving in the same batch updates...) + dispatch_async(dispatch_get_main_queue(), ^{ + [self reloadRowsAtIndexPaths:@[change.destinationIndexPath] withRowAnimation:change.rowAnimation]; + }); + + [self moveRowAtIndexPath:change.currentIndexPath toIndexPath:change.destinationIndexPath]; + break; + } + + case NSFetchedResultsChangeUpdate: + { + [self reloadRowsAtIndexPaths:@[change.currentIndexPath] withRowAnimation:change.rowAnimation]; + break; + } + } +} + +- (id)cellForItemAtIndexPath:(NSIndexPath *)indexPath +{ + return [self cellForRowAtIndexPath:indexPath]; +} + +- (id)dequeueReusableCellWithReuseIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath +{ + return [self dequeueReusableCellWithIdentifier:identifier forIndexPath:indexPath]; +} + +#pragma mark - Getters/Setters - + +- (Protocol *)dataSourceProtocol +{ + return @protocol(UITableViewDataSource); +} + +@end diff --git a/Pods/Roxas/Roxas/UITableViewCell+CellContent.h b/Pods/Roxas/Roxas/UITableViewCell+CellContent.h new file mode 100644 index 000000000..e5a0dc69d --- /dev/null +++ b/Pods/Roxas/Roxas/UITableViewCell+CellContent.h @@ -0,0 +1,18 @@ +// +// UITableViewCell+CellContent.h +// Roxas +// +// Created by Riley Testut on 2/20/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +#import "RSTCellContentCell.h" + +@import UIKit; + +NS_ASSUME_NONNULL_BEGIN + +@interface UITableViewCell (CellContent) +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/Roxas/Roxas/UITableViewCell+CellContent.m b/Pods/Roxas/Roxas/UITableViewCell+CellContent.m new file mode 100644 index 000000000..acd1bf41a --- /dev/null +++ b/Pods/Roxas/Roxas/UITableViewCell+CellContent.m @@ -0,0 +1,32 @@ +// +// UITableViewCell+CellContent.m +// Roxas +// +// Created by Riley Testut on 2/20/17. +// Copyright © 2017 Riley Testut. All rights reserved. +// + +#import "UITableViewCell+CellContent.h" + +@implementation UITableViewCell (CellContent) + ++ (nullable instancetype)instantiateWithNib:(UINib *)nib +{ + NSArray *contents = [nib instantiateWithOwner:nil options:nil]; + + UITableViewCell *cell = [contents firstObject]; + return cell; +} + ++ (UINib *)nib +{ + NSString *className = NSStringFromClass(self); + + // Handle Swift names that are prefixed with module name + NSArray *components = [className componentsSeparatedByString:@"."]; + + UINib *nib = [UINib nibWithNibName:components.lastObject bundle:[NSBundle bundleForClass:self]]; + return nib; +} + +@end diff --git a/Pods/Roxas/Roxas/UIView+AnimatedHide.h b/Pods/Roxas/Roxas/UIView+AnimatedHide.h new file mode 100644 index 000000000..c91e98b4e --- /dev/null +++ b/Pods/Roxas/Roxas/UIView+AnimatedHide.h @@ -0,0 +1,15 @@ +// +// UIView+AnimatedHide.h +// Roxas +// +// Created by Riley Testut on 8/27/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +@import UIKit; + +@interface UIView (AnimatedHide) + +- (void)setHidden:(BOOL)hidden animated:(BOOL)animated; + +@end diff --git a/Pods/Roxas/Roxas/UIView+AnimatedHide.m b/Pods/Roxas/Roxas/UIView+AnimatedHide.m new file mode 100644 index 000000000..0826db6da --- /dev/null +++ b/Pods/Roxas/Roxas/UIView+AnimatedHide.m @@ -0,0 +1,48 @@ +// +// UIView+AnimatedHide.m +// Roxas +// +// Created by Riley Testut on 8/27/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +#import "UIView+AnimatedHide.h" + +@implementation UIView (AnimatedHide) + +- (void)setHidden:(BOOL)hidden animated:(BOOL)animated +{ + if (!animated) + { + [self setHidden:hidden]; + return; + } + + if (self.hidden == hidden) + { + return; + } + + CGFloat alpha = self.alpha; + + if (hidden) + { + [UIView animateWithDuration:0.4 animations:^{ + self.alpha = 0.0; + } completion:^(BOOL finished) { + self.alpha = alpha; + self.hidden = YES; + }]; + } + else + { + self.alpha = 0.0; + self.hidden = NO; + + [UIView animateWithDuration:0.4 animations:^{ + self.alpha = alpha; + }]; + } +} + +@end diff --git a/Pods/Roxas/Roxas/UIViewController+TransitionState.h b/Pods/Roxas/Roxas/UIViewController+TransitionState.h new file mode 100644 index 000000000..bf166c24e --- /dev/null +++ b/Pods/Roxas/Roxas/UIViewController+TransitionState.h @@ -0,0 +1,17 @@ +// +// UIViewController+TransitionState.h +// Roxas +// +// Created by Riley Testut on 3/14/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +@import UIKit; + +@interface UIViewController (TransitionState) + +// Unlike isBeingPresented and isBeingDismissed, these actually work ಠ_ಠ +@property (nonatomic, readonly, getter=isAppearing) BOOL appearing; +@property (nonatomic, readonly, getter=isDisappearing) BOOL disappearing; + +@end diff --git a/Pods/Roxas/Roxas/UIViewController+TransitionState.m b/Pods/Roxas/Roxas/UIViewController+TransitionState.m new file mode 100644 index 000000000..25ff23160 --- /dev/null +++ b/Pods/Roxas/Roxas/UIViewController+TransitionState.m @@ -0,0 +1,51 @@ +// +// UIViewController+TransitionState.m +// Roxas +// +// Created by Riley Testut on 3/14/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +#import "UIViewController+TransitionState.h" + +@implementation UIViewController (TransitionState) + +- (BOOL)isAppearing +{ + id transitionCoordinator = self.transitionCoordinator; + UIViewController *toViewController = [transitionCoordinator viewControllerForKey:UITransitionContextToViewControllerKey]; + UIViewController *fromViewController = [transitionCoordinator viewControllerForKey:UITransitionContextFromViewControllerKey]; + + BOOL isAppearing = [toViewController isEqualToViewControllerOrAncestor:self]; + return isAppearing && ![fromViewController isKindOfClass:[UIAlertController class]]; +} + +- (BOOL)isDisappearing +{ + id transitionCoordinator = self.transitionCoordinator; + UIViewController *fromViewController = [transitionCoordinator viewControllerForKey:UITransitionContextFromViewControllerKey]; + UIViewController *toViewController = [transitionCoordinator viewControllerForKey:UITransitionContextToViewControllerKey]; + + BOOL isDisappearing = [fromViewController isEqualToViewControllerOrAncestor:self]; + return isDisappearing && ![toViewController isKindOfClass:[UIAlertController class]]; +} + +- (BOOL)isEqualToViewControllerOrAncestor:(UIViewController *)viewController +{ + BOOL isEqual = NO; + + while (viewController != nil) + { + if (self == viewController) + { + isEqual = YES; + break; + } + + viewController = viewController.parentViewController; + } + + return isEqual; +} + +@end diff --git a/Pods/Target Support Files/DSDeltaCore/DSDeltaCore-dummy.m b/Pods/Target Support Files/DSDeltaCore/DSDeltaCore-dummy.m deleted file mode 100644 index 699a532ef..000000000 --- a/Pods/Target Support Files/DSDeltaCore/DSDeltaCore-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_DSDeltaCore : NSObject -@end -@implementation PodsDummy_DSDeltaCore -@end diff --git a/Pods/Target Support Files/DSDeltaCore/DSDeltaCore-prefix.pch b/Pods/Target Support Files/DSDeltaCore/DSDeltaCore-prefix.pch deleted file mode 100644 index beb2a2441..000000000 --- a/Pods/Target Support Files/DSDeltaCore/DSDeltaCore-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/DSDeltaCore/DSDeltaCore-umbrella.h b/Pods/Target Support Files/DSDeltaCore/DSDeltaCore-umbrella.h deleted file mode 100644 index 45a7e786c..000000000 --- a/Pods/Target Support Files/DSDeltaCore/DSDeltaCore-umbrella.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - -#import "DSDeltaCore/Types/DSTypes.h" -#import "DSDeltaCore/Bridge/DSEmulatorBridge.h" - -FOUNDATION_EXPORT double DSDeltaCoreVersionNumber; -FOUNDATION_EXPORT const unsigned char DSDeltaCoreVersionString[]; - diff --git a/Pods/Target Support Files/DSDeltaCore/DSDeltaCore.debug.xcconfig b/Pods/Target Support Files/DSDeltaCore/DSDeltaCore.debug.xcconfig deleted file mode 100644 index d29fda880..000000000 --- a/Pods/Target Support Files/DSDeltaCore/DSDeltaCore.debug.xcconfig +++ /dev/null @@ -1,16 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/DSDeltaCore -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/DSDeltaCore" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DSDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -DHOST_DARWIN -DDESMUME_COCOA -DHAVE_OPENGL -DHAVE_LIBZ -DANDROID -fexceptions -ftree-vectorize -DCOMPRESS_MT -DIOS -DOBJ_C -marm -fvisibility=hidden -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Cores/DSDeltaCore -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" -USER_HEADER_SEARCH_PATHS = "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/DSDeltaCore/DSDeltaCore.modulemap b/Pods/Target Support Files/DSDeltaCore/DSDeltaCore.modulemap deleted file mode 100644 index 7838a3e65..000000000 --- a/Pods/Target Support Files/DSDeltaCore/DSDeltaCore.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -module DSDeltaCore { - umbrella header "DSDeltaCore-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/DSDeltaCore/DSDeltaCore.release.xcconfig b/Pods/Target Support Files/DSDeltaCore/DSDeltaCore.release.xcconfig deleted file mode 100644 index d29fda880..000000000 --- a/Pods/Target Support Files/DSDeltaCore/DSDeltaCore.release.xcconfig +++ /dev/null @@ -1,16 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/DSDeltaCore -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/DSDeltaCore" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DSDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -DHOST_DARWIN -DDESMUME_COCOA -DHAVE_OPENGL -DHAVE_LIBZ -DANDROID -fexceptions -ftree-vectorize -DCOMPRESS_MT -DIOS -DOBJ_C -marm -fvisibility=hidden -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Cores/DSDeltaCore -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" -USER_HEADER_SEARCH_PATHS = "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/DSDeltaCore/DSDeltaCore.xcconfig b/Pods/Target Support Files/DSDeltaCore/DSDeltaCore.xcconfig deleted file mode 100644 index 3dc488375..000000000 --- a/Pods/Target Support Files/DSDeltaCore/DSDeltaCore.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/DSDeltaCore -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/DSDeltaCore" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DSDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -DHOST_DARWIN -DDESMUME_COCOA -DHAVE_OPENGL -DHAVE_LIBZ -DANDROID -fexceptions -ftree-vectorize -DCOMPRESS_MT -DIOS -DOBJ_C -marm -fvisibility=hidden -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Cores/DSDeltaCore -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" -USER_HEADER_SEARCH_PATHS = "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/DSDeltaCore/ResourceBundle-DSDeltaCore-DSDeltaCore-Info.plist b/Pods/Target Support Files/DSDeltaCore/ResourceBundle-DSDeltaCore-DSDeltaCore-Info.plist deleted file mode 100644 index 99a40ffbf..000000000 --- a/Pods/Target Support Files/DSDeltaCore/ResourceBundle-DSDeltaCore-DSDeltaCore-Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - BNDL - CFBundleShortVersionString - 0.1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - NSPrincipalClass - - - diff --git a/Pods/Target Support Files/DeltaCore/DeltaCore-Info.plist b/Pods/Target Support Files/DeltaCore/DeltaCore-Info.plist deleted file mode 100644 index 161a9d30a..000000000 --- a/Pods/Target Support Files/DeltaCore/DeltaCore-Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 0.1.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/Pods/Target Support Files/DeltaCore/DeltaCore-dummy.m b/Pods/Target Support Files/DeltaCore/DeltaCore-dummy.m deleted file mode 100644 index 379c56d3b..000000000 --- a/Pods/Target Support Files/DeltaCore/DeltaCore-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_DeltaCore : NSObject -@end -@implementation PodsDummy_DeltaCore -@end diff --git a/Pods/Target Support Files/DeltaCore/DeltaCore-prefix.pch b/Pods/Target Support Files/DeltaCore/DeltaCore-prefix.pch deleted file mode 100644 index beb2a2441..000000000 --- a/Pods/Target Support Files/DeltaCore/DeltaCore-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/DeltaCore/DeltaCore-umbrella.h b/Pods/Target Support Files/DeltaCore/DeltaCore-umbrella.h deleted file mode 100644 index dc3d74f65..000000000 --- a/Pods/Target Support Files/DeltaCore/DeltaCore-umbrella.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - -#import "DeltaTypes.h" -#import "DLTAMuteSwitchMonitor.h" - -FOUNDATION_EXPORT double DeltaCoreVersionNumber; -FOUNDATION_EXPORT const unsigned char DeltaCoreVersionString[]; - diff --git a/Pods/Target Support Files/DeltaCore/DeltaCore.debug.xcconfig b/Pods/Target Support Files/DeltaCore/DeltaCore.debug.xcconfig deleted file mode 100644 index 0de664360..000000000 --- a/Pods/Target Support Files/DeltaCore/DeltaCore.debug.xcconfig +++ /dev/null @@ -1,16 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/DeltaCore" "${PODS_ROOT}/Headers/Public" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -DSTATIC_LIBRARY -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Cores/DeltaCore -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_ACTIVE_COMPILATION_CONDITIONS = STATIC_LIBRARY -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/DeltaCore/DeltaCore.modulemap b/Pods/Target Support Files/DeltaCore/DeltaCore.modulemap deleted file mode 100644 index 60b3ae2f4..000000000 --- a/Pods/Target Support Files/DeltaCore/DeltaCore.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -module DeltaCore { - umbrella header "DeltaCore-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/DeltaCore/DeltaCore.release.xcconfig b/Pods/Target Support Files/DeltaCore/DeltaCore.release.xcconfig deleted file mode 100644 index 0de664360..000000000 --- a/Pods/Target Support Files/DeltaCore/DeltaCore.release.xcconfig +++ /dev/null @@ -1,16 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/DeltaCore" "${PODS_ROOT}/Headers/Public" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -DSTATIC_LIBRARY -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Cores/DeltaCore -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_ACTIVE_COMPILATION_CONDITIONS = STATIC_LIBRARY -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/DeltaCore/DeltaCore.xcconfig b/Pods/Target Support Files/DeltaCore/DeltaCore.xcconfig deleted file mode 100644 index f8f7a90d6..000000000 --- a/Pods/Target Support Files/DeltaCore/DeltaCore.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/DeltaCore" "${PODS_ROOT}/Headers/Public" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -DSTATIC_LIBRARY -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Cores/DeltaCore -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_ACTIVE_COMPILATION_CONDITIONS = STATIC_LIBRARY -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/DeltaCore/ResourceBundle-DeltaCore-DeltaCore-Info.plist b/Pods/Target Support Files/DeltaCore/ResourceBundle-DeltaCore-DeltaCore-Info.plist deleted file mode 100644 index 99a40ffbf..000000000 --- a/Pods/Target Support Files/DeltaCore/ResourceBundle-DeltaCore-DeltaCore-Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - BNDL - CFBundleShortVersionString - 0.1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - NSPrincipalClass - - - diff --git a/Pods/Target Support Files/GBADeltaCore/GBADeltaCore-dummy.m b/Pods/Target Support Files/GBADeltaCore/GBADeltaCore-dummy.m deleted file mode 100644 index 08f051d1c..000000000 --- a/Pods/Target Support Files/GBADeltaCore/GBADeltaCore-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_GBADeltaCore : NSObject -@end -@implementation PodsDummy_GBADeltaCore -@end diff --git a/Pods/Target Support Files/GBADeltaCore/GBADeltaCore-prefix.pch b/Pods/Target Support Files/GBADeltaCore/GBADeltaCore-prefix.pch deleted file mode 100644 index beb2a2441..000000000 --- a/Pods/Target Support Files/GBADeltaCore/GBADeltaCore-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/GBADeltaCore/GBADeltaCore-umbrella.h b/Pods/Target Support Files/GBADeltaCore/GBADeltaCore-umbrella.h deleted file mode 100644 index 76702f25d..000000000 --- a/Pods/Target Support Files/GBADeltaCore/GBADeltaCore-umbrella.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - -#import "GBADeltaCore/Types/GBATypes.h" -#import "GBADeltaCore/Bridge/GBAEmulatorBridge.h" - -FOUNDATION_EXPORT double GBADeltaCoreVersionNumber; -FOUNDATION_EXPORT const unsigned char GBADeltaCoreVersionString[]; - diff --git a/Pods/Target Support Files/GBADeltaCore/GBADeltaCore.debug.xcconfig b/Pods/Target Support Files/GBADeltaCore/GBADeltaCore.debug.xcconfig deleted file mode 100644 index fabdd8667..000000000 --- a/Pods/Target Support Files/GBADeltaCore/GBADeltaCore.debug.xcconfig +++ /dev/null @@ -1,16 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GBADeltaCore -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/GBADeltaCore" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GBADeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/GBADeltaCore/SFML/include" "$(PODS_ROOT)/Headers/Private/GBADeltaCore/SFML/src" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Cores/GBADeltaCore -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" -USER_HEADER_SEARCH_PATHS = "$(PODS_ROOT)/Headers/Private/GBADeltaCore/visualboyadvance-m/fex" "$(PODS_ROOT)/Headers/Private/GBADeltaCore/visualboyadvance-m/src" -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/GBADeltaCore/GBADeltaCore.modulemap b/Pods/Target Support Files/GBADeltaCore/GBADeltaCore.modulemap deleted file mode 100644 index c0189f8f8..000000000 --- a/Pods/Target Support Files/GBADeltaCore/GBADeltaCore.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -module GBADeltaCore { - umbrella header "GBADeltaCore-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/GBADeltaCore/GBADeltaCore.release.xcconfig b/Pods/Target Support Files/GBADeltaCore/GBADeltaCore.release.xcconfig deleted file mode 100644 index fabdd8667..000000000 --- a/Pods/Target Support Files/GBADeltaCore/GBADeltaCore.release.xcconfig +++ /dev/null @@ -1,16 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GBADeltaCore -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/GBADeltaCore" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GBADeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/GBADeltaCore/SFML/include" "$(PODS_ROOT)/Headers/Private/GBADeltaCore/SFML/src" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Cores/GBADeltaCore -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" -USER_HEADER_SEARCH_PATHS = "$(PODS_ROOT)/Headers/Private/GBADeltaCore/visualboyadvance-m/fex" "$(PODS_ROOT)/Headers/Private/GBADeltaCore/visualboyadvance-m/src" -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/GBADeltaCore/GBADeltaCore.xcconfig b/Pods/Target Support Files/GBADeltaCore/GBADeltaCore.xcconfig deleted file mode 100644 index 277c7e609..000000000 --- a/Pods/Target Support Files/GBADeltaCore/GBADeltaCore.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GBADeltaCore -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/GBADeltaCore" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GBADeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/GBADeltaCore/SFML/include" "$(PODS_ROOT)/Headers/Private/GBADeltaCore/SFML/src" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Cores/GBADeltaCore -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" -USER_HEADER_SEARCH_PATHS = "$(PODS_ROOT)/Headers/Private/GBADeltaCore/visualboyadvance-m/fex" "$(PODS_ROOT)/Headers/Private/GBADeltaCore/visualboyadvance-m/src" -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/GBADeltaCore/ResourceBundle-GBADeltaCore-GBADeltaCore-Info.plist b/Pods/Target Support Files/GBADeltaCore/ResourceBundle-GBADeltaCore-GBADeltaCore-Info.plist deleted file mode 100644 index 99a40ffbf..000000000 --- a/Pods/Target Support Files/GBADeltaCore/ResourceBundle-GBADeltaCore-GBADeltaCore-Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - BNDL - CFBundleShortVersionString - 0.1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - NSPrincipalClass - - - diff --git a/Pods/Target Support Files/GBCDeltaCore/GBCDeltaCore-dummy.m b/Pods/Target Support Files/GBCDeltaCore/GBCDeltaCore-dummy.m deleted file mode 100644 index 4681e339b..000000000 --- a/Pods/Target Support Files/GBCDeltaCore/GBCDeltaCore-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_GBCDeltaCore : NSObject -@end -@implementation PodsDummy_GBCDeltaCore -@end diff --git a/Pods/Target Support Files/GBCDeltaCore/GBCDeltaCore-prefix.pch b/Pods/Target Support Files/GBCDeltaCore/GBCDeltaCore-prefix.pch deleted file mode 100644 index beb2a2441..000000000 --- a/Pods/Target Support Files/GBCDeltaCore/GBCDeltaCore-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/GBCDeltaCore/GBCDeltaCore-umbrella.h b/Pods/Target Support Files/GBCDeltaCore/GBCDeltaCore-umbrella.h deleted file mode 100644 index 84732ccca..000000000 --- a/Pods/Target Support Files/GBCDeltaCore/GBCDeltaCore-umbrella.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - -#import "GBCDeltaCore/Types/GBCTypes.h" -#import "GBCDeltaCore/Bridge/GBCEmulatorBridge.h" - -FOUNDATION_EXPORT double GBCDeltaCoreVersionNumber; -FOUNDATION_EXPORT const unsigned char GBCDeltaCoreVersionString[]; - diff --git a/Pods/Target Support Files/GBCDeltaCore/GBCDeltaCore.debug.xcconfig b/Pods/Target Support Files/GBCDeltaCore/GBCDeltaCore.debug.xcconfig deleted file mode 100644 index 7b0fc453a..000000000 --- a/Pods/Target Support Files/GBCDeltaCore/GBCDeltaCore.debug.xcconfig +++ /dev/null @@ -1,16 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GBCDeltaCore -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/GBCDeltaCore" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GBCDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -DHAVE_CSTDINT -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Cores/GBCDeltaCore -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" -USER_HEADER_SEARCH_PATHS = "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/GBCDeltaCore/GBCDeltaCore.modulemap b/Pods/Target Support Files/GBCDeltaCore/GBCDeltaCore.modulemap deleted file mode 100644 index 906919995..000000000 --- a/Pods/Target Support Files/GBCDeltaCore/GBCDeltaCore.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -module GBCDeltaCore { - umbrella header "GBCDeltaCore-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/GBCDeltaCore/GBCDeltaCore.release.xcconfig b/Pods/Target Support Files/GBCDeltaCore/GBCDeltaCore.release.xcconfig deleted file mode 100644 index 7b0fc453a..000000000 --- a/Pods/Target Support Files/GBCDeltaCore/GBCDeltaCore.release.xcconfig +++ /dev/null @@ -1,16 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GBCDeltaCore -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/GBCDeltaCore" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GBCDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -DHAVE_CSTDINT -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Cores/GBCDeltaCore -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" -USER_HEADER_SEARCH_PATHS = "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/GBCDeltaCore/GBCDeltaCore.xcconfig b/Pods/Target Support Files/GBCDeltaCore/GBCDeltaCore.xcconfig deleted file mode 100644 index ceb536b85..000000000 --- a/Pods/Target Support Files/GBCDeltaCore/GBCDeltaCore.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GBCDeltaCore -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/GBCDeltaCore" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GBCDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -DHAVE_CSTDINT -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Cores/GBCDeltaCore -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" -USER_HEADER_SEARCH_PATHS = "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/GBCDeltaCore/ResourceBundle-GBCDeltaCore-GBCDeltaCore-Info.plist b/Pods/Target Support Files/GBCDeltaCore/ResourceBundle-GBCDeltaCore-GBCDeltaCore-Info.plist deleted file mode 100644 index 99a40ffbf..000000000 --- a/Pods/Target Support Files/GBCDeltaCore/ResourceBundle-GBCDeltaCore-GBCDeltaCore-Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - BNDL - CFBundleShortVersionString - 0.1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - NSPrincipalClass - - - diff --git a/Pods/Target Support Files/MelonDSDeltaCore/MelonDSDeltaCore-dummy.m b/Pods/Target Support Files/MelonDSDeltaCore/MelonDSDeltaCore-dummy.m deleted file mode 100644 index bcb6cf57a..000000000 --- a/Pods/Target Support Files/MelonDSDeltaCore/MelonDSDeltaCore-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_MelonDSDeltaCore : NSObject -@end -@implementation PodsDummy_MelonDSDeltaCore -@end diff --git a/Pods/Target Support Files/MelonDSDeltaCore/MelonDSDeltaCore-prefix.pch b/Pods/Target Support Files/MelonDSDeltaCore/MelonDSDeltaCore-prefix.pch deleted file mode 100644 index beb2a2441..000000000 --- a/Pods/Target Support Files/MelonDSDeltaCore/MelonDSDeltaCore-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/MelonDSDeltaCore/MelonDSDeltaCore-umbrella.h b/Pods/Target Support Files/MelonDSDeltaCore/MelonDSDeltaCore-umbrella.h deleted file mode 100644 index 0cffb4fc6..000000000 --- a/Pods/Target Support Files/MelonDSDeltaCore/MelonDSDeltaCore-umbrella.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - -#import "MelonDSDeltaCore/Types/MelonDSTypes.h" -#import "MelonDSDeltaCore/Bridge/MelonDSEmulatorBridge.h" -#import "MelonDSDeltaCore/MelonDSDeltaCore.h" - -FOUNDATION_EXPORT double MelonDSDeltaCoreVersionNumber; -FOUNDATION_EXPORT const unsigned char MelonDSDeltaCoreVersionString[]; - diff --git a/Pods/Target Support Files/MelonDSDeltaCore/MelonDSDeltaCore.debug.xcconfig b/Pods/Target Support Files/MelonDSDeltaCore/MelonDSDeltaCore.debug.xcconfig deleted file mode 100644 index 20c8b4066..000000000 --- a/Pods/Target Support Files/MelonDSDeltaCore/MelonDSDeltaCore.debug.xcconfig +++ /dev/null @@ -1,17 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MelonDSDeltaCore -GCC_OPTIMIZATION_LEVEL = fast -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 STATIC_LIBRARY=1 JIT_ENABLED=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/MelonDSDeltaCore" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MelonDSDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/MelonDSDeltaCore/melonDS/src" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Cores/MelonDSDeltaCore -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" -USER_HEADER_SEARCH_PATHS = "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/MelonDSDeltaCore/MelonDSDeltaCore.modulemap b/Pods/Target Support Files/MelonDSDeltaCore/MelonDSDeltaCore.modulemap deleted file mode 100644 index d2b31b4b7..000000000 --- a/Pods/Target Support Files/MelonDSDeltaCore/MelonDSDeltaCore.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -module MelonDSDeltaCore { - umbrella header "MelonDSDeltaCore-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/MelonDSDeltaCore/MelonDSDeltaCore.release.xcconfig b/Pods/Target Support Files/MelonDSDeltaCore/MelonDSDeltaCore.release.xcconfig deleted file mode 100644 index 20c8b4066..000000000 --- a/Pods/Target Support Files/MelonDSDeltaCore/MelonDSDeltaCore.release.xcconfig +++ /dev/null @@ -1,17 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MelonDSDeltaCore -GCC_OPTIMIZATION_LEVEL = fast -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 STATIC_LIBRARY=1 JIT_ENABLED=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/MelonDSDeltaCore" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MelonDSDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/MelonDSDeltaCore/melonDS/src" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Cores/MelonDSDeltaCore -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" -USER_HEADER_SEARCH_PATHS = "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/MelonDSDeltaCore/MelonDSDeltaCore.xcconfig b/Pods/Target Support Files/MelonDSDeltaCore/MelonDSDeltaCore.xcconfig deleted file mode 100644 index 8a2f61132..000000000 --- a/Pods/Target Support Files/MelonDSDeltaCore/MelonDSDeltaCore.xcconfig +++ /dev/null @@ -1,15 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MelonDSDeltaCore -GCC_OPTIMIZATION_LEVEL = fast -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 STATIC_LIBRARY=1 JIT_ENABLED=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/MelonDSDeltaCore" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/MelonDSDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/MelonDSDeltaCore/melonDS/src" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Cores/MelonDSDeltaCore -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" -USER_HEADER_SEARCH_PATHS = "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/MelonDSDeltaCore/ResourceBundle-MelonDSDeltaCore-MelonDSDeltaCore-Info.plist b/Pods/Target Support Files/MelonDSDeltaCore/ResourceBundle-MelonDSDeltaCore-MelonDSDeltaCore-Info.plist deleted file mode 100644 index 99a40ffbf..000000000 --- a/Pods/Target Support Files/MelonDSDeltaCore/ResourceBundle-MelonDSDeltaCore-MelonDSDeltaCore-Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - BNDL - CFBundleShortVersionString - 0.1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - NSPrincipalClass - - - diff --git a/Pods/Target Support Files/MelonDSDeltaCore/ResourceBundle-melonDS-MelonDSDeltaCore-Info.plist b/Pods/Target Support Files/MelonDSDeltaCore/ResourceBundle-melonDS-MelonDSDeltaCore-Info.plist deleted file mode 100644 index 99a40ffbf..000000000 --- a/Pods/Target Support Files/MelonDSDeltaCore/ResourceBundle-melonDS-MelonDSDeltaCore-Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - BNDL - CFBundleShortVersionString - 0.1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - NSPrincipalClass - - - diff --git a/Pods/Target Support Files/N64DeltaCore/N64DeltaCore-dummy.m b/Pods/Target Support Files/N64DeltaCore/N64DeltaCore-dummy.m deleted file mode 100644 index ecae5cb66..000000000 --- a/Pods/Target Support Files/N64DeltaCore/N64DeltaCore-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_N64DeltaCore : NSObject -@end -@implementation PodsDummy_N64DeltaCore -@end diff --git a/Pods/Target Support Files/N64DeltaCore/N64DeltaCore-prefix.pch b/Pods/Target Support Files/N64DeltaCore/N64DeltaCore-prefix.pch deleted file mode 100644 index beb2a2441..000000000 --- a/Pods/Target Support Files/N64DeltaCore/N64DeltaCore-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/N64DeltaCore/N64DeltaCore-umbrella.h b/Pods/Target Support Files/N64DeltaCore/N64DeltaCore-umbrella.h deleted file mode 100644 index 1fa09e455..000000000 --- a/Pods/Target Support Files/N64DeltaCore/N64DeltaCore-umbrella.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - -#import "N64DeltaCore/Types/N64Types.h" -#import "N64DeltaCore/Bridge/N64EmulatorBridge.h" -#import "N64DeltaCore/N64DeltaCore.h" - -FOUNDATION_EXPORT double N64DeltaCoreVersionNumber; -FOUNDATION_EXPORT const unsigned char N64DeltaCoreVersionString[]; - diff --git a/Pods/Target Support Files/N64DeltaCore/N64DeltaCore.debug.xcconfig b/Pods/Target Support Files/N64DeltaCore/N64DeltaCore.debug.xcconfig deleted file mode 100644 index 7be08b38d..000000000 --- a/Pods/Target Support Files/N64DeltaCore/N64DeltaCore.debug.xcconfig +++ /dev/null @@ -1,20 +0,0 @@ -ALWAYS_SEARCH_USER_PATHS = YES -CLANG_ENABLE_MODULES = NO -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/N64DeltaCore -GCC_OPTIMIZATION_LEVEL = 3 -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 STATIC_LIBRARY=1 STATIC_LIBRARY=1 MUPENPLUSAPI TXFILTER_LIB OS_IOS GLESX GL_ERROR_DEBUG GL_DEBUG GLESX PNG_ARM_NEON_OPT=0 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/N64DeltaCore" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/N64DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/**" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/libMupen64Plus/SDL" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/**" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/libMupen64Plus/SDL" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -fno-strict-aliasing -DGCC -pthread -fPIC -D__unix__ -ffast-math -fno-strict-aliasing -DGCC -pthread -fPIC -D__unix__ -ffast-math -D__VEC4_OPT -fvisibility=hidden -OTHER_LDFLAGS = $(inherited) -Wl,-exported_symbol,_Video_PluginStartup,-exported_symbol,_Video_PluginShutdown,-exported_symbol,_Video_PluginGetVersion,-exported_symbol,_Video_RomOpen,-exported_symbol,_Video_RomClosed,-exported_symbol,_ConfigGetSharedDataFilepath,-exported_symbol,_ConfigGetUserConfigPath,-exported_symbol,_ConfigGetUserCachePath,-exported_symbol,_ConfigGetUserDataPath,-exported_symbol,_ConfigOpenSection,-exported_symbol,_ConfigDeleteSection,-exported_symbol,_ConfigSaveSection,-exported_symbol,_ConfigSaveFile,-exported_symbol,_ConfigSetDefaultInt,-exported_symbol,_ConfigSetDefaultFloat,-exported_symbol,_ConfigSetDefaultBool,-exported_symbol,_ConfigSetDefaultString,-exported_symbol,_ConfigGetParamInt,-exported_symbol,_ConfigGetParamFloat,-exported_symbol,_ConfigGetParamBool,-exported_symbol,_ConfigGetParamString,-exported_symbol,_ConfigExternalGetParameter,-exported_symbol,_ConfigExternalOpen,-exported_symbol,_ConfigExternalClose,-exported_symbol,_VidExt_Init,-exported_symbol,_VidExt_Quit,-exported_symbol,_VidExt_ListFullscreenModes,-exported_symbol,_VidExt_SetVideoMode,-exported_symbol,_VidExt_SetCaption,-exported_symbol,_VidExt_ToggleFullScreen,-exported_symbol,_VidExt_ResizeWindow,-exported_symbol,_VidExt_GL_GetProcAddress,-exported_symbol,_VidExt_GL_SetAttribute,-exported_symbol,_VidExt_GL_GetAttribute,-exported_symbol,_VidExt_GL_SwapBuffers,-exported_symbol,_ChangeWindow,-exported_symbol,_InitiateGFX,-exported_symbol,_MoveScreen,-exported_symbol,_ProcessDList,-exported_symbol,_ProcessRDPList,-exported_symbol,_ShowCFB,-exported_symbol,_UpdateScreen,-exported_symbol,_ViStatusChanged,-exported_symbol,_ViWidthChanged,-exported_symbol,_ReadScreen2,-exported_symbol,_SetRenderingCallback,-exported_symbol,_FBRead,-exported_symbol,_FBWrite,-exported_symbol,_FBGetFrameBufferInfo,-exported_symbol,_ResizeVideoOutput,-exported_symbol,_RSP_PluginStartup,-exported_symbol,_RSP_PluginShutdown,-exported_symbol,_RSP_PluginGetVersion,-exported_symbol,_DoRspCycles,-exported_symbol,_InitiateRSP,-exported_symbol,_RSP_RomClosed,-exported_symbol,_CoreGetAPIVersions,-exported_symbol,_ConfigGetParameter,-exported_symbol,_ConfigSetParameter,-exported_symbol,_CoreDoCommand -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Cores/N64DeltaCore -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" -USER_HEADER_SEARCH_PATHS = "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osd" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src" "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osd" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/N64DeltaCore-Video/**" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src" -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/N64DeltaCore/N64DeltaCore.modulemap b/Pods/Target Support Files/N64DeltaCore/N64DeltaCore.modulemap deleted file mode 100644 index 964334c43..000000000 --- a/Pods/Target Support Files/N64DeltaCore/N64DeltaCore.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -module N64DeltaCore { - umbrella header "N64DeltaCore-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/N64DeltaCore/N64DeltaCore.release.xcconfig b/Pods/Target Support Files/N64DeltaCore/N64DeltaCore.release.xcconfig deleted file mode 100644 index 7be08b38d..000000000 --- a/Pods/Target Support Files/N64DeltaCore/N64DeltaCore.release.xcconfig +++ /dev/null @@ -1,20 +0,0 @@ -ALWAYS_SEARCH_USER_PATHS = YES -CLANG_ENABLE_MODULES = NO -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/N64DeltaCore -GCC_OPTIMIZATION_LEVEL = 3 -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 STATIC_LIBRARY=1 STATIC_LIBRARY=1 MUPENPLUSAPI TXFILTER_LIB OS_IOS GLESX GL_ERROR_DEBUG GL_DEBUG GLESX PNG_ARM_NEON_OPT=0 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/N64DeltaCore" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/N64DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/**" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/libMupen64Plus/SDL" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/**" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/libMupen64Plus/SDL" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -fno-strict-aliasing -DGCC -pthread -fPIC -D__unix__ -ffast-math -fno-strict-aliasing -DGCC -pthread -fPIC -D__unix__ -ffast-math -D__VEC4_OPT -fvisibility=hidden -OTHER_LDFLAGS = $(inherited) -Wl,-exported_symbol,_Video_PluginStartup,-exported_symbol,_Video_PluginShutdown,-exported_symbol,_Video_PluginGetVersion,-exported_symbol,_Video_RomOpen,-exported_symbol,_Video_RomClosed,-exported_symbol,_ConfigGetSharedDataFilepath,-exported_symbol,_ConfigGetUserConfigPath,-exported_symbol,_ConfigGetUserCachePath,-exported_symbol,_ConfigGetUserDataPath,-exported_symbol,_ConfigOpenSection,-exported_symbol,_ConfigDeleteSection,-exported_symbol,_ConfigSaveSection,-exported_symbol,_ConfigSaveFile,-exported_symbol,_ConfigSetDefaultInt,-exported_symbol,_ConfigSetDefaultFloat,-exported_symbol,_ConfigSetDefaultBool,-exported_symbol,_ConfigSetDefaultString,-exported_symbol,_ConfigGetParamInt,-exported_symbol,_ConfigGetParamFloat,-exported_symbol,_ConfigGetParamBool,-exported_symbol,_ConfigGetParamString,-exported_symbol,_ConfigExternalGetParameter,-exported_symbol,_ConfigExternalOpen,-exported_symbol,_ConfigExternalClose,-exported_symbol,_VidExt_Init,-exported_symbol,_VidExt_Quit,-exported_symbol,_VidExt_ListFullscreenModes,-exported_symbol,_VidExt_SetVideoMode,-exported_symbol,_VidExt_SetCaption,-exported_symbol,_VidExt_ToggleFullScreen,-exported_symbol,_VidExt_ResizeWindow,-exported_symbol,_VidExt_GL_GetProcAddress,-exported_symbol,_VidExt_GL_SetAttribute,-exported_symbol,_VidExt_GL_GetAttribute,-exported_symbol,_VidExt_GL_SwapBuffers,-exported_symbol,_ChangeWindow,-exported_symbol,_InitiateGFX,-exported_symbol,_MoveScreen,-exported_symbol,_ProcessDList,-exported_symbol,_ProcessRDPList,-exported_symbol,_ShowCFB,-exported_symbol,_UpdateScreen,-exported_symbol,_ViStatusChanged,-exported_symbol,_ViWidthChanged,-exported_symbol,_ReadScreen2,-exported_symbol,_SetRenderingCallback,-exported_symbol,_FBRead,-exported_symbol,_FBWrite,-exported_symbol,_FBGetFrameBufferInfo,-exported_symbol,_ResizeVideoOutput,-exported_symbol,_RSP_PluginStartup,-exported_symbol,_RSP_PluginShutdown,-exported_symbol,_RSP_PluginGetVersion,-exported_symbol,_DoRspCycles,-exported_symbol,_InitiateRSP,-exported_symbol,_RSP_RomClosed,-exported_symbol,_CoreGetAPIVersions,-exported_symbol,_ConfigGetParameter,-exported_symbol,_ConfigSetParameter,-exported_symbol,_CoreDoCommand -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Cores/N64DeltaCore -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" -USER_HEADER_SEARCH_PATHS = "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osd" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src" "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osd" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/N64DeltaCore-Video/**" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src" -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/N64DeltaCore/N64DeltaCore.xcconfig b/Pods/Target Support Files/N64DeltaCore/N64DeltaCore.xcconfig deleted file mode 100644 index ecb008a9c..000000000 --- a/Pods/Target Support Files/N64DeltaCore/N64DeltaCore.xcconfig +++ /dev/null @@ -1,18 +0,0 @@ -ALWAYS_SEARCH_USER_PATHS = YES -CLANG_ENABLE_MODULES = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/N64DeltaCore -GCC_OPTIMIZATION_LEVEL = 3 -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 STATIC_LIBRARY=1 STATIC_LIBRARY=1 MUPENPLUSAPI TXFILTER_LIB OS_IOS GLESX GL_ERROR_DEBUG GL_DEBUG GLESX PNG_ARM_NEON_OPT=0 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/N64DeltaCore" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/N64DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/**" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/libMupen64Plus/SDL" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/**" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/libMupen64Plus/SDL" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -fno-strict-aliasing -DGCC -pthread -fPIC -D__unix__ -ffast-math -fno-strict-aliasing -DGCC -pthread -fPIC -D__unix__ -ffast-math -D__VEC4_OPT -fvisibility=hidden -OTHER_LDFLAGS = $(inherited) -Wl,-exported_symbol,_Video_PluginStartup,-exported_symbol,_Video_PluginShutdown,-exported_symbol,_Video_PluginGetVersion,-exported_symbol,_Video_RomOpen,-exported_symbol,_Video_RomClosed,-exported_symbol,_ConfigGetSharedDataFilepath,-exported_symbol,_ConfigGetUserConfigPath,-exported_symbol,_ConfigGetUserCachePath,-exported_symbol,_ConfigGetUserDataPath,-exported_symbol,_ConfigOpenSection,-exported_symbol,_ConfigDeleteSection,-exported_symbol,_ConfigSaveSection,-exported_symbol,_ConfigSaveFile,-exported_symbol,_ConfigSetDefaultInt,-exported_symbol,_ConfigSetDefaultFloat,-exported_symbol,_ConfigSetDefaultBool,-exported_symbol,_ConfigSetDefaultString,-exported_symbol,_ConfigGetParamInt,-exported_symbol,_ConfigGetParamFloat,-exported_symbol,_ConfigGetParamBool,-exported_symbol,_ConfigGetParamString,-exported_symbol,_ConfigExternalGetParameter,-exported_symbol,_ConfigExternalOpen,-exported_symbol,_ConfigExternalClose,-exported_symbol,_VidExt_Init,-exported_symbol,_VidExt_Quit,-exported_symbol,_VidExt_ListFullscreenModes,-exported_symbol,_VidExt_SetVideoMode,-exported_symbol,_VidExt_SetCaption,-exported_symbol,_VidExt_ToggleFullScreen,-exported_symbol,_VidExt_ResizeWindow,-exported_symbol,_VidExt_GL_GetProcAddress,-exported_symbol,_VidExt_GL_SetAttribute,-exported_symbol,_VidExt_GL_GetAttribute,-exported_symbol,_VidExt_GL_SwapBuffers,-exported_symbol,_ChangeWindow,-exported_symbol,_InitiateGFX,-exported_symbol,_MoveScreen,-exported_symbol,_ProcessDList,-exported_symbol,_ProcessRDPList,-exported_symbol,_ShowCFB,-exported_symbol,_UpdateScreen,-exported_symbol,_ViStatusChanged,-exported_symbol,_ViWidthChanged,-exported_symbol,_ReadScreen2,-exported_symbol,_SetRenderingCallback,-exported_symbol,_FBRead,-exported_symbol,_FBWrite,-exported_symbol,_FBGetFrameBufferInfo,-exported_symbol,_ResizeVideoOutput,-exported_symbol,_RSP_PluginStartup,-exported_symbol,_RSP_PluginShutdown,-exported_symbol,_RSP_PluginGetVersion,-exported_symbol,_DoRspCycles,-exported_symbol,_InitiateRSP,-exported_symbol,_RSP_RomClosed,-exported_symbol,_CoreGetAPIVersions,-exported_symbol,_ConfigGetParameter,-exported_symbol,_ConfigSetParameter,-exported_symbol,_CoreDoCommand -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Cores/N64DeltaCore -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" -USER_HEADER_SEARCH_PATHS = "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osd" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src" "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osd" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/N64DeltaCore-Video/**" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src" -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/N64DeltaCore/ResourceBundle-Mupen64Plus-N64DeltaCore-Info.plist b/Pods/Target Support Files/N64DeltaCore/ResourceBundle-Mupen64Plus-N64DeltaCore-Info.plist deleted file mode 100644 index 99a40ffbf..000000000 --- a/Pods/Target Support Files/N64DeltaCore/ResourceBundle-Mupen64Plus-N64DeltaCore-Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - BNDL - CFBundleShortVersionString - 0.1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - NSPrincipalClass - - - diff --git a/Pods/Target Support Files/N64DeltaCore/ResourceBundle-N64DeltaCore-N64DeltaCore-Info.plist b/Pods/Target Support Files/N64DeltaCore/ResourceBundle-N64DeltaCore-N64DeltaCore-Info.plist deleted file mode 100644 index 99a40ffbf..000000000 --- a/Pods/Target Support Files/N64DeltaCore/ResourceBundle-N64DeltaCore-N64DeltaCore-Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - BNDL - CFBundleShortVersionString - 0.1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - NSPrincipalClass - - - diff --git a/Pods/Target Support Files/NESDeltaCore/NESDeltaCore-dummy.m b/Pods/Target Support Files/NESDeltaCore/NESDeltaCore-dummy.m deleted file mode 100644 index 3c378cbe7..000000000 --- a/Pods/Target Support Files/NESDeltaCore/NESDeltaCore-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_NESDeltaCore : NSObject -@end -@implementation PodsDummy_NESDeltaCore -@end diff --git a/Pods/Target Support Files/NESDeltaCore/NESDeltaCore-prefix.pch b/Pods/Target Support Files/NESDeltaCore/NESDeltaCore-prefix.pch deleted file mode 100644 index beb2a2441..000000000 --- a/Pods/Target Support Files/NESDeltaCore/NESDeltaCore-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/NESDeltaCore/NESDeltaCore-umbrella.h b/Pods/Target Support Files/NESDeltaCore/NESDeltaCore-umbrella.h deleted file mode 100644 index b4e49e018..000000000 --- a/Pods/Target Support Files/NESDeltaCore/NESDeltaCore-umbrella.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - -#import "NestopiaJS/NESEmulatorBridge.hpp" - -FOUNDATION_EXPORT double NESDeltaCoreVersionNumber; -FOUNDATION_EXPORT const unsigned char NESDeltaCoreVersionString[]; - diff --git a/Pods/Target Support Files/NESDeltaCore/NESDeltaCore.debug.xcconfig b/Pods/Target Support Files/NESDeltaCore/NESDeltaCore.debug.xcconfig deleted file mode 100644 index 3898927bf..000000000 --- a/Pods/Target Support Files/NESDeltaCore/NESDeltaCore.debug.xcconfig +++ /dev/null @@ -1,17 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/NESDeltaCore -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/NESDeltaCore" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/NESDeltaCore" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Cores/NESDeltaCore -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_ACTIVE_COMPILATION_CONDITIONS = FRAMEWORK NATIVE -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" -USER_HEADER_SEARCH_PATHS = "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/NESDeltaCore/NESDeltaCore.modulemap b/Pods/Target Support Files/NESDeltaCore/NESDeltaCore.modulemap deleted file mode 100644 index b7b669b20..000000000 --- a/Pods/Target Support Files/NESDeltaCore/NESDeltaCore.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -module NESDeltaCore { - umbrella header "NESDeltaCore-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/NESDeltaCore/NESDeltaCore.release.xcconfig b/Pods/Target Support Files/NESDeltaCore/NESDeltaCore.release.xcconfig deleted file mode 100644 index 3898927bf..000000000 --- a/Pods/Target Support Files/NESDeltaCore/NESDeltaCore.release.xcconfig +++ /dev/null @@ -1,17 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/NESDeltaCore -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/NESDeltaCore" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/NESDeltaCore" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Cores/NESDeltaCore -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_ACTIVE_COMPILATION_CONDITIONS = FRAMEWORK NATIVE -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" -USER_HEADER_SEARCH_PATHS = "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/NESDeltaCore/NESDeltaCore.xcconfig b/Pods/Target Support Files/NESDeltaCore/NESDeltaCore.xcconfig deleted file mode 100644 index 41831164d..000000000 --- a/Pods/Target Support Files/NESDeltaCore/NESDeltaCore.xcconfig +++ /dev/null @@ -1,15 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/NESDeltaCore -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/NESDeltaCore" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/NESDeltaCore" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Cores/NESDeltaCore -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_ACTIVE_COMPILATION_CONDITIONS = FRAMEWORK NATIVE -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" -USER_HEADER_SEARCH_PATHS = "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/NESDeltaCore/ResourceBundle-NESDeltaCore-NESDeltaCore-Info.plist b/Pods/Target Support Files/NESDeltaCore/ResourceBundle-NESDeltaCore-NESDeltaCore-Info.plist deleted file mode 100644 index 99a40ffbf..000000000 --- a/Pods/Target Support Files/NESDeltaCore/ResourceBundle-NESDeltaCore-NESDeltaCore-Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - BNDL - CFBundleShortVersionString - 0.1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - NSPrincipalClass - - - diff --git a/Pods/Target Support Files/Pods-Delta/Pods-Delta-acknowledgements.markdown b/Pods/Target Support Files/Pods-Delta/Pods-Delta-acknowledgements.markdown index d6ff9d17f..301693a23 100644 --- a/Pods/Target Support Files/Pods-Delta/Pods-Delta-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-Delta/Pods-Delta-acknowledgements.markdown @@ -905,29 +905,4 @@ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -## ZIPFoundation - -MIT License - -Copyright (c) 2017 Thomas Zoechling - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods-Delta/Pods-Delta-acknowledgements.plist b/Pods/Target Support Files/Pods-Delta/Pods-Delta-acknowledgements.plist index bf6fc6f07..823b595ce 100644 --- a/Pods/Target Support Files/Pods-Delta/Pods-Delta-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-Delta/Pods-Delta-acknowledgements.plist @@ -983,37 +983,6 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Type PSGroupSpecifier - - FooterText - MIT License - -Copyright (c) 2017 Thomas Zoechling - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - License - MIT - Title - ZIPFoundation - Type - PSGroupSpecifier - FooterText Generated by CocoaPods - https://cocoapods.org diff --git a/Pods/Target Support Files/Pods-Delta/Pods-Delta-resources-Debug-input-files.xcfilelist b/Pods/Target Support Files/Pods-Delta/Pods-Delta-resources-Debug-input-files.xcfilelist new file mode 100644 index 000000000..43724c2e2 --- /dev/null +++ b/Pods/Target Support Files/Pods-Delta/Pods-Delta-resources-Debug-input-files.xcfilelist @@ -0,0 +1,6 @@ +${PODS_ROOT}/Target Support Files/Pods-Delta/Pods-Delta-resources.sh +${PODS_ROOT}/GoogleSignIn/Resources/GoogleSignIn.bundle +${PODS_ROOT}/../External/Harmony/Harmony/Model/Core Data/Harmony.xcdatamodeld +${PODS_ROOT}/../External/Harmony/Harmony/Model/Core Data/Migrations/HarmonyToHarmony2.xcmappingmodel +${PODS_ROOT}/../External/Roxas/Roxas/RSTCollectionViewCell.xib +${PODS_ROOT}/../External/Roxas/Roxas/RSTPlaceholderView.xib \ No newline at end of file diff --git a/Pods/Target Support Files/Pods-Delta/Pods-Delta-resources-Debug-output-files.xcfilelist b/Pods/Target Support Files/Pods-Delta/Pods-Delta-resources-Debug-output-files.xcfilelist new file mode 100644 index 000000000..82b5ddae8 --- /dev/null +++ b/Pods/Target Support Files/Pods-Delta/Pods-Delta-resources-Debug-output-files.xcfilelist @@ -0,0 +1,5 @@ +${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleSignIn.bundle +${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Harmony.momd +${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/HarmonyToHarmony2.cdm +${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RSTCollectionViewCell.nib +${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RSTPlaceholderView.nib \ No newline at end of file diff --git a/Pods/Target Support Files/Pods-Delta/Pods-Delta-resources-Release-input-files.xcfilelist b/Pods/Target Support Files/Pods-Delta/Pods-Delta-resources-Release-input-files.xcfilelist new file mode 100644 index 000000000..43724c2e2 --- /dev/null +++ b/Pods/Target Support Files/Pods-Delta/Pods-Delta-resources-Release-input-files.xcfilelist @@ -0,0 +1,6 @@ +${PODS_ROOT}/Target Support Files/Pods-Delta/Pods-Delta-resources.sh +${PODS_ROOT}/GoogleSignIn/Resources/GoogleSignIn.bundle +${PODS_ROOT}/../External/Harmony/Harmony/Model/Core Data/Harmony.xcdatamodeld +${PODS_ROOT}/../External/Harmony/Harmony/Model/Core Data/Migrations/HarmonyToHarmony2.xcmappingmodel +${PODS_ROOT}/../External/Roxas/Roxas/RSTCollectionViewCell.xib +${PODS_ROOT}/../External/Roxas/Roxas/RSTPlaceholderView.xib \ No newline at end of file diff --git a/Pods/Target Support Files/Pods-Delta/Pods-Delta-resources-Release-output-files.xcfilelist b/Pods/Target Support Files/Pods-Delta/Pods-Delta-resources-Release-output-files.xcfilelist new file mode 100644 index 000000000..82b5ddae8 --- /dev/null +++ b/Pods/Target Support Files/Pods-Delta/Pods-Delta-resources-Release-output-files.xcfilelist @@ -0,0 +1,5 @@ +${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/GoogleSignIn.bundle +${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Harmony.momd +${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/HarmonyToHarmony2.cdm +${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RSTCollectionViewCell.nib +${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RSTPlaceholderView.nib \ No newline at end of file diff --git a/Pods/Target Support Files/Pods-Delta/Pods-Delta-resources.sh b/Pods/Target Support Files/Pods-Delta/Pods-Delta-resources.sh index 7a855b7c6..76e629705 100755 --- a/Pods/Target Support Files/Pods-Delta/Pods-Delta-resources.sh +++ b/Pods/Target Support Files/Pods-Delta/Pods-Delta-resources.sh @@ -97,34 +97,18 @@ EOM esac } if [[ "$CONFIGURATION" == "Debug" ]]; then - install_resource "${PODS_CONFIGURATION_BUILD_DIR}/DSDeltaCore/DSDeltaCore.bundle" - install_resource "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.bundle" - install_resource "${PODS_CONFIGURATION_BUILD_DIR}/GBADeltaCore/GBADeltaCore.bundle" - install_resource "${PODS_CONFIGURATION_BUILD_DIR}/GBCDeltaCore/GBCDeltaCore.bundle" install_resource "${PODS_ROOT}/GoogleSignIn/Resources/GoogleSignIn.bundle" install_resource "${PODS_ROOT}/../External/Harmony/Harmony/Model/Core Data/Harmony.xcdatamodeld" install_resource "${PODS_ROOT}/../External/Harmony/Harmony/Model/Core Data/Migrations/HarmonyToHarmony2.xcmappingmodel" - install_resource "${PODS_CONFIGURATION_BUILD_DIR}/MelonDSDeltaCore/melonDS.bundle" - install_resource "${PODS_CONFIGURATION_BUILD_DIR}/N64DeltaCore/Mupen64Plus.bundle" - install_resource "${PODS_CONFIGURATION_BUILD_DIR}/NESDeltaCore/NESDeltaCore.bundle" install_resource "${PODS_ROOT}/../External/Roxas/Roxas/RSTCollectionViewCell.xib" install_resource "${PODS_ROOT}/../External/Roxas/Roxas/RSTPlaceholderView.xib" - install_resource "${PODS_CONFIGURATION_BUILD_DIR}/SNESDeltaCore/SNESDeltaCore.bundle" fi if [[ "$CONFIGURATION" == "Release" ]]; then - install_resource "${PODS_CONFIGURATION_BUILD_DIR}/DSDeltaCore/DSDeltaCore.bundle" - install_resource "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.bundle" - install_resource "${PODS_CONFIGURATION_BUILD_DIR}/GBADeltaCore/GBADeltaCore.bundle" - install_resource "${PODS_CONFIGURATION_BUILD_DIR}/GBCDeltaCore/GBCDeltaCore.bundle" install_resource "${PODS_ROOT}/GoogleSignIn/Resources/GoogleSignIn.bundle" install_resource "${PODS_ROOT}/../External/Harmony/Harmony/Model/Core Data/Harmony.xcdatamodeld" install_resource "${PODS_ROOT}/../External/Harmony/Harmony/Model/Core Data/Migrations/HarmonyToHarmony2.xcmappingmodel" - install_resource "${PODS_CONFIGURATION_BUILD_DIR}/MelonDSDeltaCore/melonDS.bundle" - install_resource "${PODS_CONFIGURATION_BUILD_DIR}/N64DeltaCore/Mupen64Plus.bundle" - install_resource "${PODS_CONFIGURATION_BUILD_DIR}/NESDeltaCore/NESDeltaCore.bundle" install_resource "${PODS_ROOT}/../External/Roxas/Roxas/RSTCollectionViewCell.xib" install_resource "${PODS_ROOT}/../External/Roxas/Roxas/RSTPlaceholderView.xib" - install_resource "${PODS_CONFIGURATION_BUILD_DIR}/SNESDeltaCore/SNESDeltaCore.bundle" fi mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" diff --git a/Pods/Target Support Files/Pods-Delta/Pods-Delta.debug.xcconfig b/Pods/Target Support Files/Pods-Delta/Pods-Delta.debug.xcconfig index b5e841db4..6e1674ccf 100644 --- a/Pods/Target Support Files/Pods-Delta/Pods-Delta.debug.xcconfig +++ b/Pods/Target Support Files/Pods-Delta/Pods-Delta.debug.xcconfig @@ -1,20 +1,16 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -ALWAYS_SEARCH_USER_PATHS = YES -CLANG_ENABLE_MODULES = NO CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Crashlytics/iOS" "${PODS_ROOT}/Fabric/iOS" "${PODS_ROOT}/GoogleSignIn/Frameworks" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 STATIC_LIBRARY=1 JIT_ENABLED=1 STATIC_LIBRARY=1 STATIC_LIBRARY=1 MUPENPLUSAPI TXFILTER_LIB OS_IOS GLESX GL_ERROR_DEBUG GL_DEBUG GLESX PNG_ARM_NEON_OPT=0 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DSDeltaCore" "${PODS_ROOT}/Headers/Public/DeltaCore" "${PODS_ROOT}/Headers/Public/GBADeltaCore" "${PODS_ROOT}/Headers/Public/GBCDeltaCore" "${PODS_ROOT}/Headers/Public/GTMSessionFetcher" "${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST" "${PODS_ROOT}/Headers/Public/GoogleToolboxForMac" "${PODS_ROOT}/Headers/Public/Harmony" "${PODS_ROOT}/Headers/Public/MelonDSDeltaCore" "${PODS_ROOT}/Headers/Public/N64DeltaCore" "${PODS_ROOT}/Headers/Public/NESDeltaCore" "${PODS_ROOT}/Headers/Public/Roxas" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/SMCalloutView" "${PODS_ROOT}/Headers/Public/SNESDeltaCore" "${PODS_ROOT}/Headers/Public/SQLite.swift" "${PODS_ROOT}/Headers/Public/SwiftyDropbox" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/GBADeltaCore/SFML/include" "$(PODS_ROOT)/Headers/Private/GBADeltaCore/SFML/src" "${PODS_CONFIGURATION_BUILD_DIR}" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/MelonDSDeltaCore/melonDS/src" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/**" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/libMupen64Plus/SDL" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/**" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/libMupen64Plus/SDL" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc" -LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/DSDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/GBADeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/GBCDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/Harmony" "${PODS_CONFIGURATION_BUILD_DIR}/MelonDSDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/N64DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/NESDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/Roxas" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SMCalloutView" "${PODS_CONFIGURATION_BUILD_DIR}/SNESDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DSDeltaCore/DSDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/GBADeltaCore/GBADeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/GBCDeltaCore/GBCDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Harmony/Harmony.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/MelonDSDeltaCore/MelonDSDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/N64DeltaCore/N64DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/NESDeltaCore/NESDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SNESDeltaCore/SNESDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift/SQLite.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox/SwiftyDropbox.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/SDWebImage/SDWebImage.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/SMCalloutView/SMCalloutView.modulemap" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/DSDeltaCore" -isystem "${PODS_ROOT}/Headers/Public/GBADeltaCore" -isystem "${PODS_ROOT}/Headers/Public/GBCDeltaCore" -isystem "${PODS_ROOT}/Headers/Public/Harmony" -isystem "${PODS_ROOT}/Headers/Public/MelonDSDeltaCore" -isystem "${PODS_ROOT}/Headers/Public/N64DeltaCore" -isystem "${PODS_ROOT}/Headers/Public/NESDeltaCore" -isystem "${PODS_ROOT}/Headers/Public/SNESDeltaCore" -iframework "${PODS_ROOT}/Crashlytics/iOS" -iframework "${PODS_ROOT}/Fabric/iOS" -iframework "${PODS_ROOT}/GoogleSignIn/Frameworks" -DHOST_DARWIN -DDESMUME_COCOA -DHAVE_OPENGL -DHAVE_LIBZ -DANDROID -fexceptions -ftree-vectorize -DCOMPRESS_MT -DIOS -DOBJ_C -marm -fvisibility=hidden -DSTATIC_LIBRARY -DHAVE_CSTDINT -fno-strict-aliasing -DGCC -pthread -fPIC -D__unix__ -ffast-math -fno-strict-aliasing -DGCC -pthread -fPIC -D__unix__ -ffast-math -D__VEC4_OPT -fvisibility=hidden -funsigned-char -ffast-math -finline -fno-builtin -fno-common -fomit-frame-pointer -funroll-loops -fstrict-aliasing -DHAVE_STDINT_H -DARM -OTHER_LDFLAGS = $(inherited) -ObjC -Wl,-exported_symbol,_Video_PluginStartup,-exported_symbol,_Video_PluginShutdown,-exported_symbol,_Video_PluginGetVersion,-exported_symbol,_Video_RomOpen,-exported_symbol,_Video_RomClosed,-exported_symbol,_ConfigGetSharedDataFilepath,-exported_symbol,_ConfigGetUserConfigPath,-exported_symbol,_ConfigGetUserCachePath,-exported_symbol,_ConfigGetUserDataPath,-exported_symbol,_ConfigOpenSection,-exported_symbol,_ConfigDeleteSection,-exported_symbol,_ConfigSaveSection,-exported_symbol,_ConfigSaveFile,-exported_symbol,_ConfigSetDefaultInt,-exported_symbol,_ConfigSetDefaultFloat,-exported_symbol,_ConfigSetDefaultBool,-exported_symbol,_ConfigSetDefaultString,-exported_symbol,_ConfigGetParamInt,-exported_symbol,_ConfigGetParamFloat,-exported_symbol,_ConfigGetParamBool,-exported_symbol,_ConfigGetParamString,-exported_symbol,_ConfigExternalGetParameter,-exported_symbol,_ConfigExternalOpen,-exported_symbol,_ConfigExternalClose,-exported_symbol,_VidExt_Init,-exported_symbol,_VidExt_Quit,-exported_symbol,_VidExt_ListFullscreenModes,-exported_symbol,_VidExt_SetVideoMode,-exported_symbol,_VidExt_SetCaption,-exported_symbol,_VidExt_ToggleFullScreen,-exported_symbol,_VidExt_ResizeWindow,-exported_symbol,_VidExt_GL_GetProcAddress,-exported_symbol,_VidExt_GL_SetAttribute,-exported_symbol,_VidExt_GL_GetAttribute,-exported_symbol,_VidExt_GL_SwapBuffers,-exported_symbol,_ChangeWindow,-exported_symbol,_InitiateGFX,-exported_symbol,_MoveScreen,-exported_symbol,_ProcessDList,-exported_symbol,_ProcessRDPList,-exported_symbol,_ShowCFB,-exported_symbol,_UpdateScreen,-exported_symbol,_ViStatusChanged,-exported_symbol,_ViWidthChanged,-exported_symbol,_ReadScreen2,-exported_symbol,_SetRenderingCallback,-exported_symbol,_FBRead,-exported_symbol,_FBWrite,-exported_symbol,_FBGetFrameBufferInfo,-exported_symbol,_ResizeVideoOutput,-exported_symbol,_RSP_PluginStartup,-exported_symbol,_RSP_PluginShutdown,-exported_symbol,_RSP_PluginGetVersion,-exported_symbol,_DoRspCycles,-exported_symbol,_InitiateRSP,-exported_symbol,_RSP_RomClosed,-exported_symbol,_CoreGetAPIVersions,-exported_symbol,_ConfigGetParameter,-exported_symbol,_ConfigSetParameter,-exported_symbol,_CoreDoCommand -l"Alamofire" -l"DSDeltaCore" -l"DeltaCore" -l"GBADeltaCore" -l"GBCDeltaCore" -l"GTMSessionFetcher" -l"GoogleAPIClientForREST" -l"GoogleToolboxForMac" -l"Harmony" -l"MelonDSDeltaCore" -l"N64DeltaCore" -l"NESDeltaCore" -l"Roxas" -l"SDWebImage" -l"SMCalloutView" -l"SNESDeltaCore" -l"SQLite.swift" -l"SwiftyDropbox" -l"ZIPFoundation" -l"c++" -l"sqlite3" -l"z" -framework "CoreGraphics" -framework "CoreText" -framework "Crashlytics" -framework "Fabric" -framework "Foundation" -framework "GoogleSignIn" -framework "ImageIO" -framework "LocalAuthentication" -framework "SafariServices" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -framework "WebKit" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DSDeltaCore/DSDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/GBADeltaCore/GBADeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/GBCDeltaCore/GBCDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Harmony/Harmony.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/MelonDSDeltaCore/MelonDSDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/N64DeltaCore/N64DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/NESDeltaCore/NESDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SNESDeltaCore/SNESDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift/SQLite.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox/SwiftyDropbox.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/SDWebImage/SDWebImage.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/SMCalloutView/SMCalloutView.modulemap" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GTMSessionFetcher" "${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST" "${PODS_ROOT}/Headers/Public/GoogleToolboxForMac" "${PODS_ROOT}/Headers/Public/Harmony" "${PODS_ROOT}/Headers/Public/Roxas" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/SMCalloutView" "${PODS_ROOT}/Headers/Public/SQLite.swift" "${PODS_ROOT}/Headers/Public/SwiftyDropbox" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/Harmony" "${PODS_CONFIGURATION_BUILD_DIR}/Roxas" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SMCalloutView" "${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox" +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Harmony/Harmony.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift/SQLite.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox/SwiftyDropbox.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/SDWebImage/SDWebImage.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/SMCalloutView/SMCalloutView.modulemap" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Harmony" -iframework "${PODS_ROOT}/Crashlytics/iOS" -iframework "${PODS_ROOT}/Fabric/iOS" -iframework "${PODS_ROOT}/GoogleSignIn/Frameworks" +OTHER_LDFLAGS = $(inherited) -ObjC -l"Alamofire" -l"GTMSessionFetcher" -l"GoogleAPIClientForREST" -l"GoogleToolboxForMac" -l"Harmony" -l"Roxas" -l"SDWebImage" -l"SMCalloutView" -l"SQLite.swift" -l"SwiftyDropbox" -l"c++" -l"sqlite3" -l"z" -framework "CoreGraphics" -framework "CoreText" -framework "Crashlytics" -framework "Fabric" -framework "Foundation" -framework "GoogleSignIn" -framework "ImageIO" -framework "LocalAuthentication" -framework "SafariServices" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -framework "WebKit" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Harmony/Harmony.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift/SQLite.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox/SwiftyDropbox.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/SDWebImage/SDWebImage.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/SMCalloutView/SMCalloutView.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -SWIFT_ACTIVE_COMPILATION_CONDITIONS = STATIC_LIBRARY FRAMEWORK NATIVE -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/DSDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/GBADeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/GBCDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/Harmony" "${PODS_CONFIGURATION_BUILD_DIR}/MelonDSDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/N64DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/NESDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/SNESDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" -USER_HEADER_SEARCH_PATHS = "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" "$(PODS_ROOT)/Headers/Private/GBADeltaCore/visualboyadvance-m/fex" "$(PODS_ROOT)/Headers/Private/GBADeltaCore/visualboyadvance-m/src" "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osd" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src" "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osd" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/N64DeltaCore-Video/**" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src" "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" "$(PODS_ROOT)/Headers/Private/SNESDeltaCore/snes9x" +SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Harmony" "${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox" USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/Pods-Delta/Pods-Delta.release.xcconfig b/Pods/Target Support Files/Pods-Delta/Pods-Delta.release.xcconfig index b5e841db4..6e1674ccf 100644 --- a/Pods/Target Support Files/Pods-Delta/Pods-Delta.release.xcconfig +++ b/Pods/Target Support Files/Pods-Delta/Pods-Delta.release.xcconfig @@ -1,20 +1,16 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES -ALWAYS_SEARCH_USER_PATHS = YES -CLANG_ENABLE_MODULES = NO CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Crashlytics/iOS" "${PODS_ROOT}/Fabric/iOS" "${PODS_ROOT}/GoogleSignIn/Frameworks" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 STATIC_LIBRARY=1 JIT_ENABLED=1 STATIC_LIBRARY=1 STATIC_LIBRARY=1 MUPENPLUSAPI TXFILTER_LIB OS_IOS GLESX GL_ERROR_DEBUG GL_DEBUG GLESX PNG_ARM_NEON_OPT=0 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DSDeltaCore" "${PODS_ROOT}/Headers/Public/DeltaCore" "${PODS_ROOT}/Headers/Public/GBADeltaCore" "${PODS_ROOT}/Headers/Public/GBCDeltaCore" "${PODS_ROOT}/Headers/Public/GTMSessionFetcher" "${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST" "${PODS_ROOT}/Headers/Public/GoogleToolboxForMac" "${PODS_ROOT}/Headers/Public/Harmony" "${PODS_ROOT}/Headers/Public/MelonDSDeltaCore" "${PODS_ROOT}/Headers/Public/N64DeltaCore" "${PODS_ROOT}/Headers/Public/NESDeltaCore" "${PODS_ROOT}/Headers/Public/Roxas" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/SMCalloutView" "${PODS_ROOT}/Headers/Public/SNESDeltaCore" "${PODS_ROOT}/Headers/Public/SQLite.swift" "${PODS_ROOT}/Headers/Public/SwiftyDropbox" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/DSDeltaCore/desmume/desmume/src/libretro-common/include" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/GBADeltaCore/SFML/include" "$(PODS_ROOT)/Headers/Private/GBADeltaCore/SFML/src" "${PODS_CONFIGURATION_BUILD_DIR}" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/MelonDSDeltaCore/melonDS/src" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/**" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/libMupen64Plus/SDL" "${PODS_CONFIGURATION_BUILD_DIR}" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/subprojects/**" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/libMupen64Plus/SDL" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src/inc" -LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/DSDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/GBADeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/GBCDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/Harmony" "${PODS_CONFIGURATION_BUILD_DIR}/MelonDSDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/N64DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/NESDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/Roxas" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SMCalloutView" "${PODS_CONFIGURATION_BUILD_DIR}/SNESDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DSDeltaCore/DSDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/GBADeltaCore/GBADeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/GBCDeltaCore/GBCDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Harmony/Harmony.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/MelonDSDeltaCore/MelonDSDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/N64DeltaCore/N64DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/NESDeltaCore/NESDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SNESDeltaCore/SNESDeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift/SQLite.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox/SwiftyDropbox.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/SDWebImage/SDWebImage.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/SMCalloutView/SMCalloutView.modulemap" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/DSDeltaCore" -isystem "${PODS_ROOT}/Headers/Public/GBADeltaCore" -isystem "${PODS_ROOT}/Headers/Public/GBCDeltaCore" -isystem "${PODS_ROOT}/Headers/Public/Harmony" -isystem "${PODS_ROOT}/Headers/Public/MelonDSDeltaCore" -isystem "${PODS_ROOT}/Headers/Public/N64DeltaCore" -isystem "${PODS_ROOT}/Headers/Public/NESDeltaCore" -isystem "${PODS_ROOT}/Headers/Public/SNESDeltaCore" -iframework "${PODS_ROOT}/Crashlytics/iOS" -iframework "${PODS_ROOT}/Fabric/iOS" -iframework "${PODS_ROOT}/GoogleSignIn/Frameworks" -DHOST_DARWIN -DDESMUME_COCOA -DHAVE_OPENGL -DHAVE_LIBZ -DANDROID -fexceptions -ftree-vectorize -DCOMPRESS_MT -DIOS -DOBJ_C -marm -fvisibility=hidden -DSTATIC_LIBRARY -DHAVE_CSTDINT -fno-strict-aliasing -DGCC -pthread -fPIC -D__unix__ -ffast-math -fno-strict-aliasing -DGCC -pthread -fPIC -D__unix__ -ffast-math -D__VEC4_OPT -fvisibility=hidden -funsigned-char -ffast-math -finline -fno-builtin -fno-common -fomit-frame-pointer -funroll-loops -fstrict-aliasing -DHAVE_STDINT_H -DARM -OTHER_LDFLAGS = $(inherited) -ObjC -Wl,-exported_symbol,_Video_PluginStartup,-exported_symbol,_Video_PluginShutdown,-exported_symbol,_Video_PluginGetVersion,-exported_symbol,_Video_RomOpen,-exported_symbol,_Video_RomClosed,-exported_symbol,_ConfigGetSharedDataFilepath,-exported_symbol,_ConfigGetUserConfigPath,-exported_symbol,_ConfigGetUserCachePath,-exported_symbol,_ConfigGetUserDataPath,-exported_symbol,_ConfigOpenSection,-exported_symbol,_ConfigDeleteSection,-exported_symbol,_ConfigSaveSection,-exported_symbol,_ConfigSaveFile,-exported_symbol,_ConfigSetDefaultInt,-exported_symbol,_ConfigSetDefaultFloat,-exported_symbol,_ConfigSetDefaultBool,-exported_symbol,_ConfigSetDefaultString,-exported_symbol,_ConfigGetParamInt,-exported_symbol,_ConfigGetParamFloat,-exported_symbol,_ConfigGetParamBool,-exported_symbol,_ConfigGetParamString,-exported_symbol,_ConfigExternalGetParameter,-exported_symbol,_ConfigExternalOpen,-exported_symbol,_ConfigExternalClose,-exported_symbol,_VidExt_Init,-exported_symbol,_VidExt_Quit,-exported_symbol,_VidExt_ListFullscreenModes,-exported_symbol,_VidExt_SetVideoMode,-exported_symbol,_VidExt_SetCaption,-exported_symbol,_VidExt_ToggleFullScreen,-exported_symbol,_VidExt_ResizeWindow,-exported_symbol,_VidExt_GL_GetProcAddress,-exported_symbol,_VidExt_GL_SetAttribute,-exported_symbol,_VidExt_GL_GetAttribute,-exported_symbol,_VidExt_GL_SwapBuffers,-exported_symbol,_ChangeWindow,-exported_symbol,_InitiateGFX,-exported_symbol,_MoveScreen,-exported_symbol,_ProcessDList,-exported_symbol,_ProcessRDPList,-exported_symbol,_ShowCFB,-exported_symbol,_UpdateScreen,-exported_symbol,_ViStatusChanged,-exported_symbol,_ViWidthChanged,-exported_symbol,_ReadScreen2,-exported_symbol,_SetRenderingCallback,-exported_symbol,_FBRead,-exported_symbol,_FBWrite,-exported_symbol,_FBGetFrameBufferInfo,-exported_symbol,_ResizeVideoOutput,-exported_symbol,_RSP_PluginStartup,-exported_symbol,_RSP_PluginShutdown,-exported_symbol,_RSP_PluginGetVersion,-exported_symbol,_DoRspCycles,-exported_symbol,_InitiateRSP,-exported_symbol,_RSP_RomClosed,-exported_symbol,_CoreGetAPIVersions,-exported_symbol,_ConfigGetParameter,-exported_symbol,_ConfigSetParameter,-exported_symbol,_CoreDoCommand -l"Alamofire" -l"DSDeltaCore" -l"DeltaCore" -l"GBADeltaCore" -l"GBCDeltaCore" -l"GTMSessionFetcher" -l"GoogleAPIClientForREST" -l"GoogleToolboxForMac" -l"Harmony" -l"MelonDSDeltaCore" -l"N64DeltaCore" -l"NESDeltaCore" -l"Roxas" -l"SDWebImage" -l"SMCalloutView" -l"SNESDeltaCore" -l"SQLite.swift" -l"SwiftyDropbox" -l"ZIPFoundation" -l"c++" -l"sqlite3" -l"z" -framework "CoreGraphics" -framework "CoreText" -framework "Crashlytics" -framework "Fabric" -framework "Foundation" -framework "GoogleSignIn" -framework "ImageIO" -framework "LocalAuthentication" -framework "SafariServices" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -framework "WebKit" -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DSDeltaCore/DSDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/GBADeltaCore/GBADeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/GBCDeltaCore/GBCDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Harmony/Harmony.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/MelonDSDeltaCore/MelonDSDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/N64DeltaCore/N64DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/NESDeltaCore/NESDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SNESDeltaCore/SNESDeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift/SQLite.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox/SwiftyDropbox.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/SDWebImage/SDWebImage.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/SMCalloutView/SMCalloutView.modulemap" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/GTMSessionFetcher" "${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST" "${PODS_ROOT}/Headers/Public/GoogleToolboxForMac" "${PODS_ROOT}/Headers/Public/Harmony" "${PODS_ROOT}/Headers/Public/Roxas" "${PODS_ROOT}/Headers/Public/SDWebImage" "${PODS_ROOT}/Headers/Public/SMCalloutView" "${PODS_ROOT}/Headers/Public/SQLite.swift" "${PODS_ROOT}/Headers/Public/SwiftyDropbox" +LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/GTMSessionFetcher" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleAPIClientForREST" "${PODS_CONFIGURATION_BUILD_DIR}/GoogleToolboxForMac" "${PODS_CONFIGURATION_BUILD_DIR}/Harmony" "${PODS_CONFIGURATION_BUILD_DIR}/Roxas" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_CONFIGURATION_BUILD_DIR}/SMCalloutView" "${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox" +OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Harmony/Harmony.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift/SQLite.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox/SwiftyDropbox.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/SDWebImage/SDWebImage.modulemap" -fmodule-map-file="${PODS_ROOT}/Headers/Public/SMCalloutView/SMCalloutView.modulemap" -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Harmony" -iframework "${PODS_ROOT}/Crashlytics/iOS" -iframework "${PODS_ROOT}/Fabric/iOS" -iframework "${PODS_ROOT}/GoogleSignIn/Frameworks" +OTHER_LDFLAGS = $(inherited) -ObjC -l"Alamofire" -l"GTMSessionFetcher" -l"GoogleAPIClientForREST" -l"GoogleToolboxForMac" -l"Harmony" -l"Roxas" -l"SDWebImage" -l"SMCalloutView" -l"SQLite.swift" -l"SwiftyDropbox" -l"c++" -l"sqlite3" -l"z" -framework "CoreGraphics" -framework "CoreText" -framework "Crashlytics" -framework "Fabric" -framework "Foundation" -framework "GoogleSignIn" -framework "ImageIO" -framework "LocalAuthentication" -framework "SafariServices" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -framework "WebKit" +OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/Harmony/Harmony.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift/SQLite.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox/SwiftyDropbox.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GTMSessionFetcher/GTMSessionFetcher.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleAPIClientForREST/GoogleAPIClientForREST.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/GoogleToolboxForMac/GoogleToolboxForMac.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/Roxas/Roxas.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/SDWebImage/SDWebImage.modulemap" -Xcc -fmodule-map-file="${PODS_ROOT}/Headers/Public/SMCalloutView/SMCalloutView.modulemap" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. PODS_ROOT = ${SRCROOT}/Pods PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -SWIFT_ACTIVE_COMPILATION_CONDITIONS = STATIC_LIBRARY FRAMEWORK NATIVE -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/DSDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/GBADeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/GBCDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/Harmony" "${PODS_CONFIGURATION_BUILD_DIR}/MelonDSDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/N64DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/NESDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/SNESDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" -USER_HEADER_SEARCH_PATHS = "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" "$(PODS_ROOT)/Headers/Private/GBADeltaCore/visualboyadvance-m/fex" "$(PODS_ROOT)/Headers/Private/GBADeltaCore/visualboyadvance-m/src" "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osd" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src" "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/api" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src/osd" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/N64DeltaCore-Video/**" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/GLideN64/src" "$(PODS_ROOT)/Headers/Private/N64DeltaCore/Mupen64Plus/mupen64plus-core/src" "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" "$(PODS_ROOT)/Headers/Private/SNESDeltaCore/snes9x" +SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/Harmony" "${PODS_CONFIGURATION_BUILD_DIR}/SQLite.swift" "${PODS_CONFIGURATION_BUILD_DIR}/SwiftyDropbox" USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/SNESDeltaCore/ResourceBundle-SNESDeltaCore-SNESDeltaCore-Info.plist b/Pods/Target Support Files/SNESDeltaCore/ResourceBundle-SNESDeltaCore-SNESDeltaCore-Info.plist deleted file mode 100644 index 99a40ffbf..000000000 --- a/Pods/Target Support Files/SNESDeltaCore/ResourceBundle-SNESDeltaCore-SNESDeltaCore-Info.plist +++ /dev/null @@ -1,24 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleIdentifier - ${PRODUCT_BUNDLE_IDENTIFIER} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - BNDL - CFBundleShortVersionString - 0.1.0 - CFBundleSignature - ???? - CFBundleVersion - 1 - NSPrincipalClass - - - diff --git a/Pods/Target Support Files/SNESDeltaCore/SNESDeltaCore-dummy.m b/Pods/Target Support Files/SNESDeltaCore/SNESDeltaCore-dummy.m deleted file mode 100644 index cd523d045..000000000 --- a/Pods/Target Support Files/SNESDeltaCore/SNESDeltaCore-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_SNESDeltaCore : NSObject -@end -@implementation PodsDummy_SNESDeltaCore -@end diff --git a/Pods/Target Support Files/SNESDeltaCore/SNESDeltaCore-prefix.pch b/Pods/Target Support Files/SNESDeltaCore/SNESDeltaCore-prefix.pch deleted file mode 100644 index beb2a2441..000000000 --- a/Pods/Target Support Files/SNESDeltaCore/SNESDeltaCore-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/SNESDeltaCore/SNESDeltaCore-umbrella.h b/Pods/Target Support Files/SNESDeltaCore/SNESDeltaCore-umbrella.h deleted file mode 100644 index dd5025269..000000000 --- a/Pods/Target Support Files/SNESDeltaCore/SNESDeltaCore-umbrella.h +++ /dev/null @@ -1,18 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - -#import "SNESDeltaCore/Types/SNESTypes.h" -#import "SNESDeltaCore/Bridge/SNESEmulatorBridge.h" - -FOUNDATION_EXPORT double SNESDeltaCoreVersionNumber; -FOUNDATION_EXPORT const unsigned char SNESDeltaCoreVersionString[]; - diff --git a/Pods/Target Support Files/SNESDeltaCore/SNESDeltaCore.debug.xcconfig b/Pods/Target Support Files/SNESDeltaCore/SNESDeltaCore.debug.xcconfig deleted file mode 100644 index 28bc8658d..000000000 --- a/Pods/Target Support Files/SNESDeltaCore/SNESDeltaCore.debug.xcconfig +++ /dev/null @@ -1,16 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SNESDeltaCore -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SNESDeltaCore" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SNESDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -funsigned-char -ffast-math -finline -fno-builtin -fno-common -fomit-frame-pointer -funroll-loops -fstrict-aliasing -DHAVE_STDINT_H -DARM -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Cores/SNESDeltaCore -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" -USER_HEADER_SEARCH_PATHS = "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" "$(PODS_ROOT)/Headers/Private/SNESDeltaCore/snes9x" -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/SNESDeltaCore/SNESDeltaCore.modulemap b/Pods/Target Support Files/SNESDeltaCore/SNESDeltaCore.modulemap deleted file mode 100644 index 4750def2e..000000000 --- a/Pods/Target Support Files/SNESDeltaCore/SNESDeltaCore.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -module SNESDeltaCore { - umbrella header "SNESDeltaCore-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/SNESDeltaCore/SNESDeltaCore.release.xcconfig b/Pods/Target Support Files/SNESDeltaCore/SNESDeltaCore.release.xcconfig deleted file mode 100644 index 28bc8658d..000000000 --- a/Pods/Target Support Files/SNESDeltaCore/SNESDeltaCore.release.xcconfig +++ /dev/null @@ -1,16 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SNESDeltaCore -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SNESDeltaCore" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SNESDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -funsigned-char -ffast-math -finline -fno-builtin -fno-common -fomit-frame-pointer -funroll-loops -fstrict-aliasing -DHAVE_STDINT_H -DARM -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Cores/SNESDeltaCore -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" -USER_HEADER_SEARCH_PATHS = "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" "$(PODS_ROOT)/Headers/Private/SNESDeltaCore/snes9x" -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/SNESDeltaCore/SNESDeltaCore.xcconfig b/Pods/Target Support Files/SNESDeltaCore/SNESDeltaCore.xcconfig deleted file mode 100644 index 126b750d9..000000000 --- a/Pods/Target Support Files/SNESDeltaCore/SNESDeltaCore.xcconfig +++ /dev/null @@ -1,14 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/SNESDeltaCore -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SNESDeltaCore" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/SNESDeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}" -OTHER_CFLAGS = $(inherited) -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -funsigned-char -ffast-math -finline -fno-builtin -fno-common -fomit-frame-pointer -funroll-loops -fstrict-aliasing -DHAVE_STDINT_H -DARM -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/DeltaCore.modulemap" -Xcc -fmodule-map-file="${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation/ZIPFoundation.modulemap" -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/../Cores/SNESDeltaCore -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -SWIFT_INCLUDE_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore" "${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation" -USER_HEADER_SEARCH_PATHS = "${PODS_CONFIGURATION_BUILD_DIR}/DeltaCore/Swift Compatibility Header" "$(PODS_ROOT)/Headers/Private/SNESDeltaCore/snes9x" -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/ZIPFoundation/ZIPFoundation-dummy.m b/Pods/Target Support Files/ZIPFoundation/ZIPFoundation-dummy.m deleted file mode 100644 index f29e0714f..000000000 --- a/Pods/Target Support Files/ZIPFoundation/ZIPFoundation-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_ZIPFoundation : NSObject -@end -@implementation PodsDummy_ZIPFoundation -@end diff --git a/Pods/Target Support Files/ZIPFoundation/ZIPFoundation-prefix.pch b/Pods/Target Support Files/ZIPFoundation/ZIPFoundation-prefix.pch deleted file mode 100644 index beb2a2441..000000000 --- a/Pods/Target Support Files/ZIPFoundation/ZIPFoundation-prefix.pch +++ /dev/null @@ -1,12 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - diff --git a/Pods/Target Support Files/ZIPFoundation/ZIPFoundation-umbrella.h b/Pods/Target Support Files/ZIPFoundation/ZIPFoundation-umbrella.h deleted file mode 100644 index 442597c6c..000000000 --- a/Pods/Target Support Files/ZIPFoundation/ZIPFoundation-umbrella.h +++ /dev/null @@ -1,16 +0,0 @@ -#ifdef __OBJC__ -#import -#else -#ifndef FOUNDATION_EXPORT -#if defined(__cplusplus) -#define FOUNDATION_EXPORT extern "C" -#else -#define FOUNDATION_EXPORT extern -#endif -#endif -#endif - - -FOUNDATION_EXPORT double ZIPFoundationVersionNumber; -FOUNDATION_EXPORT const unsigned char ZIPFoundationVersionString[]; - diff --git a/Pods/Target Support Files/ZIPFoundation/ZIPFoundation.debug.xcconfig b/Pods/Target Support Files/ZIPFoundation/ZIPFoundation.debug.xcconfig deleted file mode 100644 index 7939a7c26..000000000 --- a/Pods/Target Support Files/ZIPFoundation/ZIPFoundation.debug.xcconfig +++ /dev/null @@ -1,12 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/ZIPFoundation -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/ZIPFoundation/ZIPFoundation.modulemap b/Pods/Target Support Files/ZIPFoundation/ZIPFoundation.modulemap deleted file mode 100644 index 0325bc477..000000000 --- a/Pods/Target Support Files/ZIPFoundation/ZIPFoundation.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -module ZIPFoundation { - umbrella header "ZIPFoundation-umbrella.h" - - export * - module * { export * } -} diff --git a/Pods/Target Support Files/ZIPFoundation/ZIPFoundation.release.xcconfig b/Pods/Target Support Files/ZIPFoundation/ZIPFoundation.release.xcconfig deleted file mode 100644 index 7939a7c26..000000000 --- a/Pods/Target Support Files/ZIPFoundation/ZIPFoundation.release.xcconfig +++ /dev/null @@ -1,12 +0,0 @@ -CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/ZIPFoundation -PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/Target Support Files/ZIPFoundation/ZIPFoundation.xcconfig b/Pods/Target Support Files/ZIPFoundation/ZIPFoundation.xcconfig deleted file mode 100644 index aba4a6f24..000000000 --- a/Pods/Target Support Files/ZIPFoundation/ZIPFoundation.xcconfig +++ /dev/null @@ -1,10 +0,0 @@ -CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/ZIPFoundation -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS -suppress-warnings -import-underlying-module -Xcc -fmodule-map-file="${SRCROOT}/${MODULEMAP_FILE}" -PODS_BUILD_DIR = ${BUILD_DIR} -PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) -PODS_ROOT = ${SRCROOT} -PODS_TARGET_SRCROOT = ${PODS_ROOT}/ZIPFoundation -PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} -SKIP_INSTALL = YES -USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES diff --git a/Pods/ZIPFoundation/LICENSE b/Pods/ZIPFoundation/LICENSE deleted file mode 100644 index e961fa92f..000000000 --- a/Pods/ZIPFoundation/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2017 Thomas Zoechling - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/Pods/ZIPFoundation/README.md b/Pods/ZIPFoundation/README.md deleted file mode 100644 index 4f7d6af8e..000000000 --- a/Pods/ZIPFoundation/README.md +++ /dev/null @@ -1,295 +0,0 @@ - - -[![Swift Package Manager compatible](https://img.shields.io/badge/SPM-compatible-brightgreen.svg)](https://github.com/apple/swift-package-manager) -[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) -[![CocoaPods Compatible](https://img.shields.io/cocoapods/v/ZIPFoundation.svg)](https://cocoapods.org/pods/ZIPFoundation) -[![Platform](https://img.shields.io/badge/Platforms-macOS%20|%20iOS%20|%20tvOS%20|%20watchOS%20|%20Linux-lightgrey.svg)](https://github.com/weichsel/ZIPFoundation) -[![Twitter](https://img.shields.io/badge/twitter-@weichsel-blue.svg?style=flat)](http://twitter.com/weichsel) - -ZIP Foundation is a library to create, read and modify ZIP archive files. -It is written in Swift and based on [Apple's libcompression](https://developer.apple.com/documentation/compression/data_compression) for high performance and energy efficiency. -To learn more about the performance characteristics of the framework, you can read [this blog post](https://thomas.zoechling.me/journal/2017/07/ZIPFoundation.html). - -- [Features](#features) -- [Requirements](#requirements) -- [Installation](#installation) -- [Usage](#usage) - - [Zipping Files and Directories](#zipping-files-and-directories) - - [Unzipping Archives](#unzipping-archives) -- [Advanced Usage](#advanced-usage) - - [Accessing individual Entries](#accessing-individual-entries) - - [Creating Archives](#creating-archives) - - [Adding and Removing Entries](#adding-and-removing-entries) - - [Closure based Reading and Writing](#closure-based-reading-and-writing) - - [In-Memory Archives](#in-memory-archives) - - [Progress Tracking and Cancellation](#progress-tracking-and-cancellation) -- [Credits](#credits) -- [License](#license) - -## Features - -- [x] Modern Swift API -- [x] High Performance Compression and Decompression -- [x] Deterministic Memory Consumption -- [x] Linux compatibility -- [x] No 3rd party dependencies (on Apple platforms, zlib on Linux) -- [x] Comprehensive Unit and Performance Test Coverage -- [x] Complete Documentation - -## Requirements - -- iOS 9.0+ / macOS 10.11+ / tvOS 9.0+ / watchOS 2.0+ -- Or Linux with zlib development package -- Xcode 10.0 -- Swift 4.0 - -## Installation - -### Swift Package Manager -The Swift Package Manager is a dependency manager integrated with the Swift build system. To learn how to use the Swift Package Manager for your project, please read the [official documentation](https://github.com/apple/swift-package-manager/blob/master/Documentation/Usage.md). -To add ZIP Foundation as a dependency, you have to add it to the `dependencies` of your `Package.swift` file and refer to that dependency in your `target`. - -```swift -// swift-tools-version:5.0 -import PackageDescription -let package = Package( - name: "", - dependencies: [ - .package(url: "https://github.com/weichsel/ZIPFoundation/", .upToNextMajor(from: "0.9.0")) - ], - targets: [ - .target( - name: "", - dependencies: ["ZIPFoundation"]), - ] -) -``` - -After adding the dependency, you can fetch the library with: - -```bash -$ swift package resolve -``` - -### Carthage - -[Carthage](https://github.com/Carthage/Carthage) is a decentralized dependency manager. -Installation instructions can be found in the project's [README file](https://github.com/Carthage/Carthage#installing-carthage). - -To integrate ZIPFoundation into your Xcode project using Carthage, you have to add it to your `Cartfile`: - -```ogdl -github "weichsel/ZIPFoundation" ~> 0.9 -``` - -After adding ZIPFoundation to the `Cartfile`, you have to fetch the sources by running: - -```bash -carthage update --no-build -``` - -The fetched project has to be integrated into your workspace by dragging `ZIPFoundation.xcodeproj` to Xcode's Project Navigator. (See [official Carhage docs](https://github.com/Carthage/Carthage#adding-frameworks-to-an-application).) - -### CocoaPods - -CocoaPods is a dependency manager for Objective-C and Swift. -To learn more about setting up your project for CocoaPods, please refer to the [official documentation](https://cocoapods.org/#install). -To integrate ZIP Foundation into your Xcode project using CocoaPods, you have to add it to your project's `Podfile`: - -```ruby -source 'https://github.com/CocoaPods/Specs.git' -platform :ios, '10.0' -use_frameworks! -target '' do - pod 'ZIPFoundation', '~> 0.9' -end -``` - -Afterwards, run the following command: - -```bash -$ pod install -``` - -## Usage -ZIP Foundation provides two high level methods to zip and unzip items. Both are implemented as extension of `FileManager`. -The functionality of those methods is modeled after the behavior of the Archive Utility in macOS. - -### Zipping Files and Directories -To zip a single file you simply pass a file URL representing the item you want to zip and a destination URL to `FileManager.zipItem(at sourceURL: URL, to destinationURL: URL)`: - -```swift -let fileManager = FileManager() -let currentWorkingPath = fileManager.currentDirectoryPath -var sourceURL = URL(fileURLWithPath: currentWorkingPath) -sourceURL.appendPathComponent("file.txt") -var destinationURL = URL(fileURLWithPath: currentWorkingPath) -destinationURL.appendPathComponent("archive.zip") -do { - try fileManager.zipItem(at: sourceURL, to: destinationURL) -} catch { - print("Creation of ZIP archive failed with error:\(error)") -} -``` - -By default, archives are created without any compression. To create compressed ZIP archives, the optional `compressionMethod` parameter has to be set to `.deflate`. -The same method also accepts URLs that represent directory items. In that case, `zipItem` adds the directory content of `sourceURL` to the archive. -By default, a root directory entry named after the `lastPathComponent` of the `sourceURL` is added to the destination archive. If you don't want to preserve the parent directory of the source in your archive, you can pass `shouldKeepParent: false`. - -### Unzipping Archives -To unzip existing archives, you can use `FileManager.unzipItem(at sourceURL: URL, to destinationURL: URL)`. -This recursively extracts all entries within the archive to the destination URL: - -```swift -let fileManager = FileManager() -let currentWorkingPath = fileManager.currentDirectoryPath -var sourceURL = URL(fileURLWithPath: currentWorkingPath) -sourceURL.appendPathComponent("archive.zip") -var destinationURL = URL(fileURLWithPath: currentWorkingPath) -destinationURL.appendPathComponent("directory") -do { - try fileManager.createDirectory(at: destinationURL, withIntermediateDirectories: true, attributes: nil) - try fileManager.unzipItem(at: sourceURL, to: destinationURL) -} catch { - print("Extraction of ZIP archive failed with error:\(error)") -} -``` - -## Advanced Usage -ZIP Foundation also allows you to individually access specific entries without the need to extract the whole archive. Additionally it comes with the ability to incrementally update archive contents. - -### Accessing individual Entries -To gain access to specific ZIP entries, you have to initialize an `Archive` object with a file URL that represents an existing archive. After doing that, entries can be retrieved via their relative path. `Archive` conforms to `Sequence` and therefore supports subscripting: - -```swift -let fileManager = FileManager() -let currentWorkingPath = fileManager.currentDirectoryPath -var archiveURL = URL(fileURLWithPath: currentWorkingPath) -archiveURL.appendPathComponent("archive.zip") -guard let archive = Archive(url: archiveURL, accessMode: .read) else { - return -} -guard let entry = archive["file.txt"] else { - return -} -var destinationURL = URL(fileURLWithPath: currentWorkingPath) -destinationURL.appendPathComponent("out.txt") -do { - try archive.extract(entry, to: destinationURL) -} catch { - print("Extracting entry from archive failed with error:\(error)") -} -``` - -The `extract` method accepts optional parameters that allow you to control compression and memory consumption. -You can find detailed information about that parameters in the method's documentation. - -### Creating Archives -To create a new `Archive`, pass in a non-existing file URL and `AccessMode.create`. - -```swift -let currentWorkingPath = fileManager.currentDirectoryPath -var archiveURL = URL(fileURLWithPath: currentWorkingPath) -archiveURL.appendPathComponent("newArchive.zip") -guard let archive = Archive(url: archiveURL, accessMode: .create) else { - return -} -``` - -### Adding and Removing Entries -You can add or remove entries to/from archives that have been opened with `.create` or `.update` `AccessMode`. -To add an entry from an existing file, you can pass a relative path and a base URL to `addEntry`. The relative path identifies the -entry within the ZIP archive. The relative path and the base URL must form an absolute file URL that points to the file you want to add to -the archive: - -```swift -let fileManager = FileManager() -let currentWorkingPath = fileManager.currentDirectoryPath -var archiveURL = URL(fileURLWithPath: currentWorkingPath) -archiveURL.appendPathComponent("archive.zip") -guard let archive = Archive(url: archiveURL, accessMode: .update) else { - return -} -var fileURL = URL(fileURLWithPath: currentWorkingPath) -fileURL.appendPathComponent("file.txt") -do { - try archive.addEntry(with: fileURL.lastPathComponent, relativeTo: fileURL.deletingLastPathComponent()) -} catch { - print("Adding entry to ZIP archive failed with error:\(error)") -} -``` - -The `addEntry` method accepts several optional parameters that allow you to control compression, memory consumption and file attributes. -You can find detailed information about that parameters in the method's documentation. - -To remove an entry, you need a reference to an entry within an archive that you can pass to `removeEntry`: - -```swift -guard let entry = archive["file.txt"] else { - return -} -do { - try archive.remove(entry) -} catch { - print("Removing entry from ZIP archive failed with error:\(error)") -} -``` - -### Closure based Reading and Writing -ZIP Foundation also allows you to consume ZIP entry contents without writing them to the file system. -The `extract` method accepts a closure of type `Consumer`. This closure is called during extraction until the contents of an entry are exhausted: - -```swift -try archive.extract(entry, consumer: { (data) in - print(data.count) -}) -``` -The `data` passed into the closure contains chunks of the current entry. You can control the chunk size of the entry by providing the optional `bufferSize` parameter. - -You can also add entries from an in-memory data source. To do this you have to provide a closure of type `Provider` to the `addEntry` method: - -```swift -guard let data = "abcdefghijkl".data(using: .utf8) else { return } -try? archive.addEntry(with: "fromMemory.txt", type: .file, uncompressedSize: 12, bufferSize: 4, provider: { (position, size) -> Data in - // This will be called until `data` is exhausted (3x in this case). - return data.subdata(in: position.. Data in - return data.subdata(in: position..=5.0) - -extension Archive { - /// Returns a `Data` object containing a representation of the receiver. - public var data: Data? { return memoryFile?.data } - - static func configureMemoryBacking(for data: Data, mode: AccessMode) - -> (UnsafeMutablePointer, MemoryFile)? { - let posixMode: String - switch mode { - case .read: posixMode = "rb" - case .create: posixMode = "wb+" - case .update: posixMode = "rb+" - } - let memoryFile = MemoryFile(data: data) - guard let archiveFile = memoryFile.open(mode: posixMode) else { return nil } - - if mode == .create { - let endOfCentralDirectoryRecord = EndOfCentralDirectoryRecord(numberOfDisk: 0, numberOfDiskStart: 0, - totalNumberOfEntriesOnDisk: 0, - totalNumberOfEntriesInCentralDirectory: 0, - sizeOfCentralDirectory: 0, - offsetToStartOfCentralDirectory: 0, - zipFileCommentLength: 0, - zipFileCommentData: Data()) - _ = endOfCentralDirectoryRecord.data.withUnsafeBytes { (buffer: UnsafeRawBufferPointer) in - fwrite(buffer.baseAddress, buffer.count, 1, archiveFile) // Errors handled during read - } - } - return (archiveFile, memoryFile) - } -} - -class MemoryFile { - private(set) var data: Data - private var offset = 0 - - init(data: Data = Data()) { - self.data = data - } - - func open(mode: String) -> UnsafeMutablePointer? { - let cookie = Unmanaged.passRetained(self) - let writable = mode.count > 0 && (mode.first! != "r" || mode.last! == "+") - let append = mode.count > 0 && mode.first! == "a" - #if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) - let result = writable - ? funopen(cookie.toOpaque(), readStub, writeStub, seekStub, closeStub) - : funopen(cookie.toOpaque(), readStub, nil, seekStub, closeStub) - #else - let stubs = cookie_io_functions_t(read: readStub, write: writeStub, seek: seekStub, close: closeStub) - let result = fopencookie(cookie.toOpaque(), mode, stubs) - #endif - if append { - fseek(result, 0, SEEK_END) - } - return result - } -} - -private extension MemoryFile { - func readData(buffer: UnsafeMutableRawBufferPointer) -> Int { - let size = min(buffer.count, data.count-offset) - let start = data.startIndex - data.copyBytes(to: buffer.bindMemory(to: UInt8.self), from: start+offset.. Int { - let start = data.startIndex - if offset < data.count && offset+buffer.count > data.count { - data.removeSubrange(start+offset.. data.count { - data.append(Data(count: offset-data.count)) - } - if offset == data.count { - data.append(buffer.bindMemory(to: UInt8.self)) - } else { - let start = data.startIndex // May have changed in earlier mutation - data.replaceSubrange(start+offset.. Int { - var result = -1 - if whence == SEEK_SET { - result = offset - } else if whence == SEEK_CUR { - result = self.offset + offset - } else if whence == SEEK_END { - result = data.count + offset - } - self.offset = result - return self.offset - } -} - -private func fileFromCookie(cookie: UnsafeRawPointer) -> MemoryFile { - return Unmanaged.fromOpaque(cookie).takeUnretainedValue() -} - -private func closeStub(_ cookie: UnsafeMutableRawPointer?) -> Int32 { - if let cookie = cookie { - Unmanaged.fromOpaque(cookie).release() - } - return 0 -} - -#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) -private func readStub(_ cookie: UnsafeMutableRawPointer?, - _ bytePtr: UnsafeMutablePointer?, - _ count: Int32) -> Int32 { - guard let cookie = cookie, let bytePtr = bytePtr else { return 0 } - return Int32(fileFromCookie(cookie: cookie).readData( - buffer: UnsafeMutableRawBufferPointer(start: bytePtr, count: Int(count)))) -} - -private func writeStub(_ cookie: UnsafeMutableRawPointer?, - _ bytePtr: UnsafePointer?, - _ count: Int32) -> Int32 { - guard let cookie = cookie, let bytePtr = bytePtr else { return 0 } - return Int32(fileFromCookie(cookie: cookie).writeData( - buffer: UnsafeRawBufferPointer(start: bytePtr, count: Int(count)))) -} - -private func seekStub(_ cookie: UnsafeMutableRawPointer?, - _ offset: fpos_t, - _ whence: Int32) -> fpos_t { - guard let cookie = cookie else { return 0 } - return fpos_t(fileFromCookie(cookie: cookie).seek(offset: Int(offset), whence: whence)) -} - -#else -private func readStub(_ cookie: UnsafeMutableRawPointer?, - _ bytePtr: UnsafeMutablePointer?, - _ count: Int) -> Int { - guard let cookie = cookie, let bytePtr = bytePtr else { return 0 } - return fileFromCookie(cookie: cookie).readData( - buffer: UnsafeMutableRawBufferPointer(start: bytePtr, count: count)) -} - -private func writeStub(_ cookie: UnsafeMutableRawPointer?, - _ bytePtr: UnsafePointer?, - _ count: Int) -> Int { - guard let cookie = cookie, let bytePtr = bytePtr else { return 0 } - return fileFromCookie(cookie: cookie).writeData( - buffer: UnsafeRawBufferPointer(start: bytePtr, count: count)) -} - -private func seekStub(_ cookie: UnsafeMutableRawPointer?, - _ offset: UnsafeMutablePointer?, - _ whence: Int32) -> Int32 { - guard let cookie = cookie, let offset = offset else { return 0 } - let result = fileFromCookie(cookie: cookie).seek(offset: Int(offset.pointee), whence: whence) - if result >= 0 { - offset.pointee = result - return 0 - } else { - return -1 - } -} -#endif -#endif diff --git a/Pods/ZIPFoundation/Sources/ZIPFoundation/Archive+Reading.swift b/Pods/ZIPFoundation/Sources/ZIPFoundation/Archive+Reading.swift deleted file mode 100644 index 9a748b905..000000000 --- a/Pods/ZIPFoundation/Sources/ZIPFoundation/Archive+Reading.swift +++ /dev/null @@ -1,133 +0,0 @@ -// -// Archive+Reading.swift -// ZIPFoundation -// -// Copyright © 2017-2020 Thomas Zoechling, https://www.peakstep.com and the ZIP Foundation project authors. -// Released under the MIT License. -// -// See https://github.com/weichsel/ZIPFoundation/blob/master/LICENSE for license information. -// - -import Foundation - -extension Archive { - /// Read a ZIP `Entry` from the receiver and write it to `url`. - /// - /// - Parameters: - /// - entry: The ZIP `Entry` to read. - /// - url: The destination file URL. - /// - bufferSize: The maximum size of the read buffer and the decompression buffer (if needed). - /// - skipCRC32: Optional flag to skip calculation of the CRC32 checksum to improve performance. - /// - progress: A progress object that can be used to track or cancel the extract operation. - /// - Returns: The checksum of the processed content or 0 if the `skipCRC32` flag was set to `true`. - /// - Throws: An error if the destination file cannot be written or the entry contains malformed content. - public func extract(_ entry: Entry, to url: URL, bufferSize: UInt32 = defaultReadChunkSize, skipCRC32: Bool = false, - progress: Progress? = nil) throws -> CRC32 { - let fileManager = FileManager() - var checksum = CRC32(0) - switch entry.type { - case .file: - guard !fileManager.itemExists(at: url) else { - throw CocoaError(.fileWriteFileExists, userInfo: [NSFilePathErrorKey: url.path]) - } - try fileManager.createParentDirectoryStructure(for: url) - let destinationRepresentation = fileManager.fileSystemRepresentation(withPath: url.path) - guard let destinationFile: UnsafeMutablePointer = fopen(destinationRepresentation, "wb+") else { - throw CocoaError(.fileNoSuchFile) - } - defer { fclose(destinationFile) } - let consumer = { _ = try Data.write(chunk: $0, to: destinationFile) } - checksum = try self.extract(entry, bufferSize: bufferSize, skipCRC32: skipCRC32, - progress: progress, consumer: consumer) - case .directory: - let consumer = { (_: Data) in - try fileManager.createDirectory(at: url, withIntermediateDirectories: true, attributes: nil) - } - checksum = try self.extract(entry, bufferSize: bufferSize, skipCRC32: skipCRC32, - progress: progress, consumer: consumer) - case .symlink: - guard !fileManager.itemExists(at: url) else { - throw CocoaError(.fileWriteFileExists, userInfo: [NSFilePathErrorKey: url.path]) - } - let consumer = { (data: Data) in - guard let linkPath = String(data: data, encoding: .utf8) else { throw ArchiveError.invalidEntryPath } - try fileManager.createParentDirectoryStructure(for: url) - try fileManager.createSymbolicLink(atPath: url.path, withDestinationPath: linkPath) - } - checksum = try self.extract(entry, bufferSize: bufferSize, skipCRC32: skipCRC32, - progress: progress, consumer: consumer) - } - let attributes = FileManager.attributes(from: entry) - try fileManager.setAttributes(attributes, ofItemAtPath: url.path) - return checksum - } - - /// Read a ZIP `Entry` from the receiver and forward its contents to a `Consumer` closure. - /// - /// - Parameters: - /// - entry: The ZIP `Entry` to read. - /// - bufferSize: The maximum size of the read buffer and the decompression buffer (if needed). - /// - skipCRC32: Optional flag to skip calculation of the CRC32 checksum to improve performance. - /// - progress: A progress object that can be used to track or cancel the extract operation. - /// - consumer: A closure that consumes contents of `Entry` as `Data` chunks. - /// - Returns: The checksum of the processed content or 0 if the `skipCRC32` flag was set to `true`.. - /// - Throws: An error if the destination file cannot be written or the entry contains malformed content. - public func extract(_ entry: Entry, bufferSize: UInt32 = defaultReadChunkSize, skipCRC32: Bool = false, - progress: Progress? = nil, consumer: Consumer) throws -> CRC32 { - var checksum = CRC32(0) - let localFileHeader = entry.localFileHeader - fseek(self.archiveFile, entry.dataOffset, SEEK_SET) - progress?.totalUnitCount = self.totalUnitCountForReading(entry) - switch entry.type { - case .file: - guard let compressionMethod = CompressionMethod(rawValue: localFileHeader.compressionMethod) else { - throw ArchiveError.invalidCompressionMethod - } - switch compressionMethod { - case .none: checksum = try self.readUncompressed(entry: entry, bufferSize: bufferSize, - skipCRC32: skipCRC32, progress: progress, with: consumer) - case .deflate: checksum = try self.readCompressed(entry: entry, bufferSize: bufferSize, - skipCRC32: skipCRC32, progress: progress, with: consumer) - } - case .directory: - try consumer(Data()) - progress?.completedUnitCount = self.totalUnitCountForReading(entry) - case .symlink: - let localFileHeader = entry.localFileHeader - let size = Int(localFileHeader.compressedSize) - let data = try Data.readChunk(of: size, from: self.archiveFile) - checksum = data.crc32(checksum: 0) - try consumer(data) - progress?.completedUnitCount = self.totalUnitCountForReading(entry) - } - return checksum - } - - // MARK: - Helpers - - private func readUncompressed(entry: Entry, bufferSize: UInt32, skipCRC32: Bool, - progress: Progress? = nil, with consumer: Consumer) throws -> CRC32 { - let size = Int(entry.centralDirectoryStructure.uncompressedSize) - return try Data.consumePart(of: size, chunkSize: Int(bufferSize), skipCRC32: skipCRC32, - provider: { (_, chunkSize) -> Data in - return try Data.readChunk(of: Int(chunkSize), from: self.archiveFile) - }, consumer: { (data) in - if progress?.isCancelled == true { throw ArchiveError.cancelledOperation } - try consumer(data) - progress?.completedUnitCount += Int64(data.count) - }) - } - - private func readCompressed(entry: Entry, bufferSize: UInt32, skipCRC32: Bool, - progress: Progress? = nil, with consumer: Consumer) throws -> CRC32 { - let size = Int(entry.centralDirectoryStructure.compressedSize) - return try Data.decompress(size: size, bufferSize: Int(bufferSize), skipCRC32: skipCRC32, - provider: { (_, chunkSize) -> Data in - return try Data.readChunk(of: chunkSize, from: self.archiveFile) - }, consumer: { (data) in - if progress?.isCancelled == true { throw ArchiveError.cancelledOperation } - try consumer(data) - progress?.completedUnitCount += Int64(data.count) - }) - } -} diff --git a/Pods/ZIPFoundation/Sources/ZIPFoundation/Archive+Writing.swift b/Pods/ZIPFoundation/Sources/ZIPFoundation/Archive+Writing.swift deleted file mode 100644 index 2f115a2d0..000000000 --- a/Pods/ZIPFoundation/Sources/ZIPFoundation/Archive+Writing.swift +++ /dev/null @@ -1,353 +0,0 @@ -// -// Archive+Writing.swift -// ZIPFoundation -// -// Copyright © 2017-2020 Thomas Zoechling, https://www.peakstep.com and the ZIP Foundation project authors. -// Released under the MIT License. -// -// See https://github.com/weichsel/ZIPFoundation/blob/master/LICENSE for license information. -// - -import Foundation - -extension Archive { - private enum ModifyOperation: Int { - case remove = -1 - case add = 1 - } - - /// Write files, directories or symlinks to the receiver. - /// - /// - Parameters: - /// - path: The path that is used to identify an `Entry` within the `Archive` file. - /// - baseURL: The base URL of the `Entry` to add. - /// The `baseURL` combined with `path` must form a fully qualified file URL. - /// - compressionMethod: Indicates the `CompressionMethod` that should be applied to `Entry`. - /// By default, no compression will be applied. - /// - bufferSize: The maximum size of the write buffer and the compression buffer (if needed). - /// - progress: A progress object that can be used to track or cancel the add operation. - /// - Throws: An error if the source file cannot be read or the receiver is not writable. - public func addEntry(with path: String, relativeTo baseURL: URL, compressionMethod: CompressionMethod = .none, - bufferSize: UInt32 = defaultWriteChunkSize, progress: Progress? = nil) throws { - let fileManager = FileManager() - let entryURL = baseURL.appendingPathComponent(path) - guard fileManager.itemExists(at: entryURL) else { - throw CocoaError(.fileReadNoSuchFile, userInfo: [NSFilePathErrorKey: entryURL.path]) - } - let type = try FileManager.typeForItem(at: entryURL) - // symlinks do not need to be readable - guard type == .symlink || fileManager.isReadableFile(atPath: entryURL.path) else { - throw CocoaError(.fileReadNoPermission, userInfo: [NSFilePathErrorKey: url.path]) - } - let modDate = try FileManager.fileModificationDateTimeForItem(at: entryURL) - let uncompressedSize = type == .directory ? 0 : try FileManager.fileSizeForItem(at: entryURL) - let permissions = try FileManager.permissionsForItem(at: entryURL) - var provider: Provider - switch type { - case .file: - let entryFileSystemRepresentation = fileManager.fileSystemRepresentation(withPath: entryURL.path) - guard let entryFile: UnsafeMutablePointer = fopen(entryFileSystemRepresentation, "rb") else { - throw CocoaError(.fileNoSuchFile) - } - defer { fclose(entryFile) } - provider = { _, _ in return try Data.readChunk(of: Int(bufferSize), from: entryFile) } - try self.addEntry(with: path, type: type, uncompressedSize: uncompressedSize, - modificationDate: modDate, permissions: permissions, - compressionMethod: compressionMethod, bufferSize: bufferSize, - progress: progress, provider: provider) - case .directory: - provider = { _, _ in return Data() } - try self.addEntry(with: path.hasSuffix("/") ? path : path + "/", - type: type, uncompressedSize: uncompressedSize, - modificationDate: modDate, permissions: permissions, - compressionMethod: compressionMethod, bufferSize: bufferSize, - progress: progress, provider: provider) - case .symlink: - provider = { _, _ -> Data in - let linkDestination = try fileManager.destinationOfSymbolicLink(atPath: entryURL.path) - let linkFileSystemRepresentation = fileManager.fileSystemRepresentation(withPath: linkDestination) - let linkLength = Int(strlen(linkFileSystemRepresentation)) - let linkBuffer = UnsafeBufferPointer(start: linkFileSystemRepresentation, count: linkLength) - return Data(buffer: linkBuffer) - } - try self.addEntry(with: path, type: type, uncompressedSize: uncompressedSize, - modificationDate: modDate, permissions: permissions, - compressionMethod: compressionMethod, bufferSize: bufferSize, - progress: progress, provider: provider) - } - } - - /// Write files, directories or symlinks to the receiver. - /// - /// - Parameters: - /// - path: The path that is used to identify an `Entry` within the `Archive` file. - /// - type: Indicates the `Entry.EntryType` of the added content. - /// - uncompressedSize: The uncompressed size of the data that is going to be added with `provider`. - /// - modificationDate: A `Date` describing the file modification date of the `Entry`. - /// Default is the current `Date`. - /// - permissions: POSIX file permissions for the `Entry`. - /// Default is `0`o`644` for files and symlinks and `0`o`755` for directories. - /// - compressionMethod: Indicates the `CompressionMethod` that should be applied to `Entry`. - /// By default, no compression will be applied. - /// - bufferSize: The maximum size of the write buffer and the compression buffer (if needed). - /// - progress: A progress object that can be used to track or cancel the add operation. - /// - provider: A closure that accepts a position and a chunk size. Returns a `Data` chunk. - /// - Throws: An error if the source data is invalid or the receiver is not writable. - public func addEntry(with path: String, type: Entry.EntryType, uncompressedSize: UInt32, - modificationDate: Date = Date(), permissions: UInt16? = nil, - compressionMethod: CompressionMethod = .none, bufferSize: UInt32 = defaultWriteChunkSize, - progress: Progress? = nil, provider: Provider) throws { - guard self.accessMode != .read else { throw ArchiveError.unwritableArchive } - progress?.totalUnitCount = type == .directory ? defaultDirectoryUnitCount : Int64(uncompressedSize) - var endOfCentralDirRecord = self.endOfCentralDirectoryRecord - var startOfCD = Int(endOfCentralDirRecord.offsetToStartOfCentralDirectory) - var existingCentralDirData = Data() - fseek(self.archiveFile, startOfCD, SEEK_SET) - existingCentralDirData = try Data.readChunk(of: Int(endOfCentralDirRecord.sizeOfCentralDirectory), - from: self.archiveFile) - fseek(self.archiveFile, startOfCD, SEEK_SET) - let localFileHeaderStart = ftell(self.archiveFile) - let modDateTime = modificationDate.fileModificationDateTime - defer { fflush(self.archiveFile) } - do { - var localFileHeader = try self.writeLocalFileHeader(path: path, compressionMethod: compressionMethod, - size: (uncompressedSize, 0), checksum: 0, - modificationDateTime: modDateTime) - let (written, checksum) = try self.writeEntry(localFileHeader: localFileHeader, type: type, - compressionMethod: compressionMethod, bufferSize: bufferSize, - progress: progress, provider: provider) - startOfCD = ftell(self.archiveFile) - fseek(self.archiveFile, localFileHeaderStart, SEEK_SET) - // Write the local file header a second time. Now with compressedSize (if applicable) and a valid checksum. - localFileHeader = try self.writeLocalFileHeader(path: path, compressionMethod: compressionMethod, - size: (uncompressedSize, written), - checksum: checksum, modificationDateTime: modDateTime) - fseek(self.archiveFile, startOfCD, SEEK_SET) - _ = try Data.write(chunk: existingCentralDirData, to: self.archiveFile) - let permissions = permissions ?? (type == .directory ? defaultDirectoryPermissions :defaultFilePermissions) - let externalAttributes = FileManager.externalFileAttributesForEntry(of: type, permissions: permissions) - let offset = UInt32(localFileHeaderStart) - let centralDir = try self.writeCentralDirectoryStructure(localFileHeader: localFileHeader, - relativeOffset: offset, - externalFileAttributes: externalAttributes) - if startOfCD > UINT32_MAX { throw ArchiveError.invalidStartOfCentralDirectoryOffset } - endOfCentralDirRecord = try self.writeEndOfCentralDirectory(centralDirectoryStructure: centralDir, - startOfCentralDirectory: UInt32(startOfCD), - operation: .add) - self.endOfCentralDirectoryRecord = endOfCentralDirRecord - } catch ArchiveError.cancelledOperation { - try rollback(localFileHeaderStart, existingCentralDirData, endOfCentralDirRecord) - throw ArchiveError.cancelledOperation - } - } - - /// Remove a ZIP `Entry` from the receiver. - /// - /// - Parameters: - /// - entry: The `Entry` to remove. - /// - bufferSize: The maximum size for the read and write buffers used during removal. - /// - progress: A progress object that can be used to track or cancel the remove operation. - /// - Throws: An error if the `Entry` is malformed or the receiver is not writable. - public func remove(_ entry: Entry, bufferSize: UInt32 = defaultReadChunkSize, progress: Progress? = nil) throws { - let manager = FileManager() - let tempDir = self.uniqueTemporaryDirectoryURL() - defer { try? manager.removeItem(at: tempDir) } - let uniqueString = ProcessInfo.processInfo.globallyUniqueString - let tempArchiveURL = tempDir.appendingPathComponent(uniqueString) - do { try manager.createParentDirectoryStructure(for: tempArchiveURL) } catch { - throw ArchiveError.unwritableArchive } - guard let tempArchive = Archive(url: tempArchiveURL, accessMode: .create) else { - throw ArchiveError.unwritableArchive - } - progress?.totalUnitCount = self.totalUnitCountForRemoving(entry) - var centralDirectoryData = Data() - var offset = 0 - for currentEntry in self { - let centralDirectoryStructure = currentEntry.centralDirectoryStructure - if currentEntry != entry { - let entryStart = Int(currentEntry.centralDirectoryStructure.relativeOffsetOfLocalHeader) - fseek(self.archiveFile, entryStart, SEEK_SET) - let provider: Provider = { (_, chunkSize) -> Data in - return try Data.readChunk(of: Int(chunkSize), from: self.archiveFile) - } - let consumer: Consumer = { - if progress?.isCancelled == true { throw ArchiveError.cancelledOperation } - _ = try Data.write(chunk: $0, to: tempArchive.archiveFile) - progress?.completedUnitCount += Int64($0.count) - } - _ = try Data.consumePart(of: Int(currentEntry.localSize), chunkSize: Int(bufferSize), - provider: provider, consumer: consumer) - let centralDir = CentralDirectoryStructure(centralDirectoryStructure: centralDirectoryStructure, - offset: UInt32(offset)) - centralDirectoryData.append(centralDir.data) - } else { offset = currentEntry.localSize } - } - let startOfCentralDirectory = ftell(tempArchive.archiveFile) - _ = try Data.write(chunk: centralDirectoryData, to: tempArchive.archiveFile) - tempArchive.endOfCentralDirectoryRecord = self.endOfCentralDirectoryRecord - let endOfCentralDirectoryRecord = try - tempArchive.writeEndOfCentralDirectory(centralDirectoryStructure: entry.centralDirectoryStructure, - startOfCentralDirectory: UInt32(startOfCentralDirectory), - operation: .remove) - tempArchive.endOfCentralDirectoryRecord = endOfCentralDirectoryRecord - self.endOfCentralDirectoryRecord = endOfCentralDirectoryRecord - fflush(tempArchive.archiveFile) - try self.replaceCurrentArchiveWithArchive(at: tempArchive.url) - } - - // MARK: - Helpers - - func uniqueTemporaryDirectoryURL() -> URL { - #if swift(>=5.0) || os(macOS) || os(iOS) || os(watchOS) || os(tvOS) - if let tempDir = try? FileManager().url(for: .itemReplacementDirectory, in: .userDomainMask, - appropriateFor: self.url, create: true) { - return tempDir - } - #endif - - return URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent( - ProcessInfo.processInfo.globallyUniqueString) - } - - func replaceCurrentArchiveWithArchive(at URL: URL) throws { - fclose(self.archiveFile) - let fileManager = FileManager() - #if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) - do { - _ = try fileManager.replaceItemAt(self.url, withItemAt: URL) - } catch { - _ = try fileManager.removeItem(at: self.url) - _ = try fileManager.moveItem(at: URL, to: self.url) - } - #else - _ = try fileManager.removeItem(at: self.url) - _ = try fileManager.moveItem(at: URL, to: self.url) - #endif - let fileSystemRepresentation = fileManager.fileSystemRepresentation(withPath: self.url.path) - self.archiveFile = fopen(fileSystemRepresentation, "rb+") - } - - private func writeLocalFileHeader(path: String, compressionMethod: CompressionMethod, - size: (uncompressed: UInt32, compressed: UInt32), - checksum: CRC32, - modificationDateTime: (UInt16, UInt16)) throws -> LocalFileHeader { - // We always set Bit 11 in generalPurposeBitFlag, which indicates an UTF-8 encoded path. - guard let fileNameData = path.data(using: .utf8) else { throw ArchiveError.invalidEntryPath } - - let localFileHeader = LocalFileHeader(versionNeededToExtract: UInt16(20), generalPurposeBitFlag: UInt16(2048), - compressionMethod: compressionMethod.rawValue, - lastModFileTime: modificationDateTime.1, - lastModFileDate: modificationDateTime.0, crc32: checksum, - compressedSize: size.compressed, uncompressedSize: size.uncompressed, - fileNameLength: UInt16(fileNameData.count), extraFieldLength: UInt16(0), - fileNameData: fileNameData, extraFieldData: Data()) - _ = try Data.write(chunk: localFileHeader.data, to: self.archiveFile) - return localFileHeader - } - - private func writeEntry(localFileHeader: LocalFileHeader, type: Entry.EntryType, - compressionMethod: CompressionMethod, bufferSize: UInt32, progress: Progress? = nil, - provider: Provider) throws -> (sizeWritten: UInt32, crc32: CRC32) { - var checksum = CRC32(0) - var sizeWritten = UInt32(0) - switch type { - case .file: - switch compressionMethod { - case .none: - (sizeWritten, checksum) = try self.writeUncompressed(size: localFileHeader.uncompressedSize, - bufferSize: bufferSize, - progress: progress, provider: provider) - case .deflate: - (sizeWritten, checksum) = try self.writeCompressed(size: localFileHeader.uncompressedSize, - bufferSize: bufferSize, - progress: progress, provider: provider) - } - case .directory: - _ = try provider(0, 0) - if let progress = progress { progress.completedUnitCount = progress.totalUnitCount } - case .symlink: - (sizeWritten, checksum) = try self.writeSymbolicLink(size: localFileHeader.uncompressedSize, - provider: provider) - if let progress = progress { progress.completedUnitCount = progress.totalUnitCount } - } - return (sizeWritten, checksum) - } - - private func writeUncompressed(size: UInt32, bufferSize: UInt32, progress: Progress? = nil, - provider: Provider) throws -> (sizeWritten: UInt32, checksum: CRC32) { - var position = 0 - var sizeWritten = 0 - var checksum = CRC32(0) - while position < size { - if progress?.isCancelled == true { throw ArchiveError.cancelledOperation } - let readSize = (Int(size) - position) >= bufferSize ? Int(bufferSize) : (Int(size) - position) - let entryChunk = try provider(Int(position), Int(readSize)) - checksum = entryChunk.crc32(checksum: checksum) - sizeWritten += try Data.write(chunk: entryChunk, to: self.archiveFile) - position += Int(bufferSize) - progress?.completedUnitCount = Int64(sizeWritten) - } - return (UInt32(sizeWritten), checksum) - } - - private func writeCompressed(size: UInt32, bufferSize: UInt32, progress: Progress? = nil, - provider: Provider) throws -> (sizeWritten: UInt32, checksum: CRC32) { - var sizeWritten = 0 - let consumer: Consumer = { data in sizeWritten += try Data.write(chunk: data, to: self.archiveFile) } - let checksum = try Data.compress(size: Int(size), bufferSize: Int(bufferSize), - provider: { (position, size) -> Data in - if progress?.isCancelled == true { throw ArchiveError.cancelledOperation } - let data = try provider(position, size) - progress?.completedUnitCount += Int64(data.count) - return data - }, consumer: consumer) - return(UInt32(sizeWritten), checksum) - } - - private func writeSymbolicLink(size: UInt32, provider: Provider) throws -> (sizeWritten: UInt32, checksum: CRC32) { - let linkData = try provider(0, Int(size)) - let checksum = linkData.crc32(checksum: 0) - let sizeWritten = try Data.write(chunk: linkData, to: self.archiveFile) - return (UInt32(sizeWritten), checksum) - } - - private func writeCentralDirectoryStructure(localFileHeader: LocalFileHeader, relativeOffset: UInt32, - externalFileAttributes: UInt32) throws -> CentralDirectoryStructure { - let centralDirectory = CentralDirectoryStructure(localFileHeader: localFileHeader, - fileAttributes: externalFileAttributes, - relativeOffset: relativeOffset) - _ = try Data.write(chunk: centralDirectory.data, to: self.archiveFile) - return centralDirectory - } - - private func writeEndOfCentralDirectory(centralDirectoryStructure: CentralDirectoryStructure, - startOfCentralDirectory: UInt32, - operation: ModifyOperation) throws -> EndOfCentralDirectoryRecord { - var record = self.endOfCentralDirectoryRecord - let countChange = operation.rawValue - var dataLength = centralDirectoryStructure.extraFieldLength - dataLength += centralDirectoryStructure.fileNameLength - dataLength += centralDirectoryStructure.fileCommentLength - let centralDirectoryDataLengthChange = operation.rawValue * (Int(dataLength) + CentralDirectoryStructure.size) - var updatedSizeOfCentralDirectory = Int(record.sizeOfCentralDirectory) - updatedSizeOfCentralDirectory += centralDirectoryDataLengthChange - let numberOfEntriesOnDisk = UInt16(Int(record.totalNumberOfEntriesOnDisk) + countChange) - let numberOfEntriesInCentralDirectory = UInt16(Int(record.totalNumberOfEntriesInCentralDirectory) + countChange) - record = EndOfCentralDirectoryRecord(record: record, numberOfEntriesOnDisk: numberOfEntriesOnDisk, - numberOfEntriesInCentralDirectory: numberOfEntriesInCentralDirectory, - updatedSizeOfCentralDirectory: UInt32(updatedSizeOfCentralDirectory), - startOfCentralDirectory: startOfCentralDirectory) - _ = try Data.write(chunk: record.data, to: self.archiveFile) - return record - } - - private func rollback(_ localFileHeaderStart: Int, - _ existingCentralDirectoryData: Data, - _ endOfCentralDirRecord: EndOfCentralDirectoryRecord) throws { - fflush(self.archiveFile) - ftruncate(fileno(self.archiveFile), off_t(localFileHeaderStart)) - fseek(self.archiveFile, localFileHeaderStart, SEEK_SET) - _ = try Data.write(chunk: existingCentralDirectoryData, to: self.archiveFile) - _ = try Data.write(chunk: endOfCentralDirRecord.data, to: self.archiveFile) - } -} diff --git a/Pods/ZIPFoundation/Sources/ZIPFoundation/Archive.swift b/Pods/ZIPFoundation/Sources/ZIPFoundation/Archive.swift deleted file mode 100644 index 9fc3cc297..000000000 --- a/Pods/ZIPFoundation/Sources/ZIPFoundation/Archive.swift +++ /dev/null @@ -1,398 +0,0 @@ -// -// Archive.swift -// ZIPFoundation -// -// Copyright © 2017-2020 Thomas Zoechling, https://www.peakstep.com and the ZIP Foundation project authors. -// Released under the MIT License. -// -// See https://github.com/weichsel/ZIPFoundation/blob/master/LICENSE for license information. -// - -import Foundation - -/// The default chunk size when reading entry data from an archive. -public let defaultReadChunkSize = UInt32(16*1024) -/// The default chunk size when writing entry data to an archive. -public let defaultWriteChunkSize = defaultReadChunkSize -/// The default permissions for newly added entries. -public let defaultFilePermissions = UInt16(0o644) -public let defaultDirectoryPermissions = UInt16(0o755) -let defaultPOSIXBufferSize = defaultReadChunkSize -let defaultDirectoryUnitCount = Int64(1) -let minDirectoryEndOffset = 22 -let maxDirectoryEndOffset = 66000 -let endOfCentralDirectoryStructSignature = 0x06054b50 -let localFileHeaderStructSignature = 0x04034b50 -let dataDescriptorStructSignature = 0x08074b50 -let centralDirectoryStructSignature = 0x02014b50 - -/// The compression method of an `Entry` in a ZIP `Archive`. -public enum CompressionMethod: UInt16 { - /// Indicates that an `Entry` has no compression applied to its contents. - case none = 0 - /// Indicates that contents of an `Entry` have been compressed with a zlib compatible Deflate algorithm. - case deflate = 8 -} - -/// A sequence of uncompressed or compressed ZIP entries. -/// -/// You use an `Archive` to create, read or update ZIP files. -/// To read an existing ZIP file, you have to pass in an existing file `URL` and `AccessMode.read`: -/// -/// var archiveURL = URL(fileURLWithPath: "/path/file.zip") -/// var archive = Archive(url: archiveURL, accessMode: .read) -/// -/// An `Archive` is a sequence of entries. You can -/// iterate over an archive using a `for`-`in` loop to get access to individual `Entry` objects: -/// -/// for entry in archive { -/// print(entry.path) -/// } -/// -/// Each `Entry` in an `Archive` is represented by its `path`. You can -/// use `path` to retrieve the corresponding `Entry` from an `Archive` via subscripting: -/// -/// let entry = archive['/path/file.txt'] -/// -/// To create a new `Archive`, pass in a non-existing file URL and `AccessMode.create`. To modify an -/// existing `Archive` use `AccessMode.update`: -/// -/// var archiveURL = URL(fileURLWithPath: "/path/file.zip") -/// var archive = Archive(url: archiveURL, accessMode: .update) -/// try archive?.addEntry("test.txt", relativeTo: baseURL, compressionMethod: .deflate) -public final class Archive: Sequence { - typealias LocalFileHeader = Entry.LocalFileHeader - typealias DataDescriptor = Entry.DataDescriptor - typealias CentralDirectoryStructure = Entry.CentralDirectoryStructure - - /// An error that occurs during reading, creating or updating a ZIP file. - public enum ArchiveError: Error { - /// Thrown when an archive file is either damaged or inaccessible. - case unreadableArchive - /// Thrown when an archive is either opened with AccessMode.read or the destination file is unwritable. - case unwritableArchive - /// Thrown when the path of an `Entry` cannot be stored in an archive. - case invalidEntryPath - /// Thrown when an `Entry` can't be stored in the archive with the proposed compression method. - case invalidCompressionMethod - /// Thrown when the start of the central directory exceeds `UINT32_MAX` - case invalidStartOfCentralDirectoryOffset - /// Thrown when an archive does not contain the required End of Central Directory Record. - case missingEndOfCentralDirectoryRecord - /// Thrown when an extract, add or remove operation was canceled. - case cancelledOperation - } - - /// The access mode for an `Archive`. - public enum AccessMode: UInt { - /// Indicates that a newly instantiated `Archive` should create its backing file. - case create - /// Indicates that a newly instantiated `Archive` should read from an existing backing file. - case read - /// Indicates that a newly instantiated `Archive` should update an existing backing file. - case update - } - - struct EndOfCentralDirectoryRecord: DataSerializable { - let endOfCentralDirectorySignature = UInt32(endOfCentralDirectoryStructSignature) - let numberOfDisk: UInt16 - let numberOfDiskStart: UInt16 - let totalNumberOfEntriesOnDisk: UInt16 - let totalNumberOfEntriesInCentralDirectory: UInt16 - let sizeOfCentralDirectory: UInt32 - let offsetToStartOfCentralDirectory: UInt32 - let zipFileCommentLength: UInt16 - let zipFileCommentData: Data - static let size = 22 - } - - private var preferredEncoding: String.Encoding? - /// URL of an Archive's backing file. - public let url: URL - /// Access mode for an archive file. - public let accessMode: AccessMode - var archiveFile: UnsafeMutablePointer - var endOfCentralDirectoryRecord: EndOfCentralDirectoryRecord - - /// Initializes a new ZIP `Archive`. - /// - /// You can use this initalizer to create new archive files or to read and update existing ones. - /// The `mode` parameter indicates the intended usage of the archive: `.read`, `.create` or `.update`. - /// - Parameters: - /// - url: File URL to the receivers backing file. - /// - mode: Access mode of the receiver. - /// - preferredEncoding: Encoding for entry paths. Overrides the encoding specified in the archive. - /// This encoding is only used when _decoding_ paths from the receiver. - /// Paths of entries added with `addEntry` are always UTF-8 encoded. - /// - Returns: An archive initialized with a backing file at the passed in file URL and the given access mode - /// or `nil` if the following criteria are not met: - /// - Note: - /// - The file URL _must_ point to an existing file for `AccessMode.read`. - /// - The file URL _must_ point to a non-existing file for `AccessMode.create`. - /// - The file URL _must_ point to an existing file for `AccessMode.update`. - public init?(url: URL, accessMode mode: AccessMode, preferredEncoding: String.Encoding? = nil) { - self.url = url - self.accessMode = mode - self.preferredEncoding = preferredEncoding - guard let (archiveFile, endOfCentralDirectoryRecord) = Archive.configureFileBacking(for: url, mode: mode) else { - return nil - } - self.archiveFile = archiveFile - self.endOfCentralDirectoryRecord = endOfCentralDirectoryRecord - setvbuf(self.archiveFile, nil, _IOFBF, Int(defaultPOSIXBufferSize)) - } - - #if swift(>=5.0) - var memoryFile: MemoryFile? - - /// Initializes a new in-memory ZIP `Archive`. - /// - /// You can use this initalizer to create new in-memory archive files or to read and update existing ones. - /// - /// - Parameters: - /// - data: `Data` object used as backing for in-memory archives. - /// - mode: Access mode of the receiver. - /// - preferredEncoding: Encoding for entry paths. Overrides the encoding specified in the archive. - /// This encoding is only used when _decoding_ paths from the receiver. - /// Paths of entries added with `addEntry` are always UTF-8 encoded. - /// - Returns: An in-memory archive initialized with passed in backing data. - /// - Note: - /// - The backing `data` _must_ contain a valid ZIP archive for `AccessMode.read` and `AccessMode.update`. - /// - The backing `data` _must_ be empty (or omitted) for `AccessMode.create`. - public init?(data: Data = Data(), accessMode mode: AccessMode, preferredEncoding: String.Encoding? = nil) { - guard let url = URL(string: "memory:"), - let (archiveFile, memoryFile) = Archive.configureMemoryBacking(for: data, mode: mode) else { - return nil - } - - self.url = url - self.accessMode = mode - self.preferredEncoding = preferredEncoding - self.archiveFile = archiveFile - self.memoryFile = memoryFile - guard let endOfCentralDirectoryRecord = Archive.scanForEndOfCentralDirectoryRecord(in: archiveFile) - else { - fclose(self.archiveFile) - return nil - } - self.endOfCentralDirectoryRecord = endOfCentralDirectoryRecord - } - #endif - - deinit { - fclose(self.archiveFile) - } - - public func makeIterator() -> AnyIterator { - let endOfCentralDirectoryRecord = self.endOfCentralDirectoryRecord - var directoryIndex = Int(endOfCentralDirectoryRecord.offsetToStartOfCentralDirectory) - var index = 0 - return AnyIterator { - guard index < Int(endOfCentralDirectoryRecord.totalNumberOfEntriesInCentralDirectory) else { return nil } - guard let centralDirStruct: CentralDirectoryStructure = Data.readStruct(from: self.archiveFile, - at: directoryIndex) else { - return nil - } - let offset = Int(centralDirStruct.relativeOffsetOfLocalHeader) - guard let localFileHeader: LocalFileHeader = Data.readStruct(from: self.archiveFile, - at: offset) else { return nil } - var dataDescriptor: DataDescriptor? - if centralDirStruct.usesDataDescriptor { - let additionalSize = Int(localFileHeader.fileNameLength + localFileHeader.extraFieldLength) - let isCompressed = centralDirStruct.compressionMethod != CompressionMethod.none.rawValue - let dataSize = isCompressed ? centralDirStruct.compressedSize : centralDirStruct.uncompressedSize - let descriptorPosition = offset + LocalFileHeader.size + additionalSize + Int(dataSize) - dataDescriptor = Data.readStruct(from: self.archiveFile, at: descriptorPosition) - } - defer { - directoryIndex += CentralDirectoryStructure.size - directoryIndex += Int(centralDirStruct.fileNameLength) - directoryIndex += Int(centralDirStruct.extraFieldLength) - directoryIndex += Int(centralDirStruct.fileCommentLength) - index += 1 - } - return Entry(centralDirectoryStructure: centralDirStruct, - localFileHeader: localFileHeader, dataDescriptor: dataDescriptor) - } - } - - /// Retrieve the ZIP `Entry` with the given `path` from the receiver. - /// - /// - Note: The ZIP file format specification does not enforce unique paths for entries. - /// Therefore an archive can contain multiple entries with the same path. This method - /// always returns the first `Entry` with the given `path`. - /// - /// - Parameter path: A relative file path identifiying the corresponding `Entry`. - /// - Returns: An `Entry` with the given `path`. Otherwise, `nil`. - public subscript(path: String) -> Entry? { - if let encoding = preferredEncoding { - return self.filter { $0.path(using: encoding) == path }.first - } - return self.filter { $0.path == path }.first - } - - // MARK: - Helpers - - private static func configureFileBacking(for url: URL, mode: AccessMode) - -> (UnsafeMutablePointer, EndOfCentralDirectoryRecord)? { - let fileManager = FileManager() - switch mode { - case .read: - let fileSystemRepresentation = fileManager.fileSystemRepresentation(withPath: url.path) - guard let archiveFile = fopen(fileSystemRepresentation, "rb"), - let endOfCentralDirectoryRecord = Archive.scanForEndOfCentralDirectoryRecord(in: archiveFile) else { - return nil - } - return (archiveFile, endOfCentralDirectoryRecord) - case .create: - let endOfCentralDirectoryRecord = EndOfCentralDirectoryRecord(numberOfDisk: 0, numberOfDiskStart: 0, - totalNumberOfEntriesOnDisk: 0, - totalNumberOfEntriesInCentralDirectory: 0, - sizeOfCentralDirectory: 0, - offsetToStartOfCentralDirectory: 0, - zipFileCommentLength: 0, - zipFileCommentData: Data()) - do { - try endOfCentralDirectoryRecord.data.write(to: url, options: .withoutOverwriting) - } catch { return nil } - fallthrough - case .update: - let fileSystemRepresentation = fileManager.fileSystemRepresentation(withPath: url.path) - guard let archiveFile = fopen(fileSystemRepresentation, "rb+"), - let endOfCentralDirectoryRecord = Archive.scanForEndOfCentralDirectoryRecord(in: archiveFile) else { - return nil - } - fseek(archiveFile, 0, SEEK_SET) - return (archiveFile, endOfCentralDirectoryRecord) - } - } - - private static func scanForEndOfCentralDirectoryRecord(in file: UnsafeMutablePointer) - -> EndOfCentralDirectoryRecord? { - var directoryEnd = 0 - var index = minDirectoryEndOffset - fseek(file, 0, SEEK_END) - let archiveLength = ftell(file) - while directoryEnd == 0 && index < maxDirectoryEndOffset && index <= archiveLength { - fseek(file, archiveLength - index, SEEK_SET) - var potentialDirectoryEndTag: UInt32 = UInt32() - fread(&potentialDirectoryEndTag, 1, MemoryLayout.size, file) - if potentialDirectoryEndTag == UInt32(endOfCentralDirectoryStructSignature) { - directoryEnd = archiveLength - index - return Data.readStruct(from: file, at: directoryEnd) - } - index += 1 - } - return nil - } -} - -extension Archive { - /// The number of the work units that have to be performed when - /// removing `entry` from the receiver. - /// - /// - Parameter entry: The entry that will be removed. - /// - Returns: The number of the work units. - public func totalUnitCountForRemoving(_ entry: Entry) -> Int64 { - return Int64(self.endOfCentralDirectoryRecord.offsetToStartOfCentralDirectory - - UInt32(entry.localSize)) - } - - func makeProgressForRemoving(_ entry: Entry) -> Progress { - return Progress(totalUnitCount: self.totalUnitCountForRemoving(entry)) - } - - /// The number of the work units that have to be performed when - /// reading `entry` from the receiver. - /// - /// - Parameter entry: The entry that will be read. - /// - Returns: The number of the work units. - public func totalUnitCountForReading(_ entry: Entry) -> Int64 { - switch entry.type { - case .file, .symlink: - return Int64(entry.uncompressedSize) - case .directory: - return defaultDirectoryUnitCount - } - } - - func makeProgressForReading(_ entry: Entry) -> Progress { - return Progress(totalUnitCount: self.totalUnitCountForReading(entry)) - } - - /// The number of the work units that have to be performed when - /// adding the file at `url` to the receiver. - /// - Parameter entry: The entry that will be removed. - /// - Returns: The number of the work units. - public func totalUnitCountForAddingItem(at url: URL) -> Int64 { - var count = Int64(0) - do { - let type = try FileManager.typeForItem(at: url) - switch type { - case .file, .symlink: - count = Int64(try FileManager.fileSizeForItem(at: url)) - case .directory: - count = defaultDirectoryUnitCount - } - } catch { count = -1 } - return count - } - - func makeProgressForAddingItem(at url: URL) -> Progress { - return Progress(totalUnitCount: self.totalUnitCountForAddingItem(at: url)) - } -} - -extension Archive.EndOfCentralDirectoryRecord { - var data: Data { - var endOfCDSignature = self.endOfCentralDirectorySignature - var numberOfDisk = self.numberOfDisk - var numberOfDiskStart = self.numberOfDiskStart - var totalNumberOfEntriesOnDisk = self.totalNumberOfEntriesOnDisk - var totalNumberOfEntriesInCD = self.totalNumberOfEntriesInCentralDirectory - var sizeOfCentralDirectory = self.sizeOfCentralDirectory - var offsetToStartOfCD = self.offsetToStartOfCentralDirectory - var zipFileCommentLength = self.zipFileCommentLength - var data = Data() - withUnsafePointer(to: &endOfCDSignature, { data.append(UnsafeBufferPointer(start: $0, count: 1))}) - withUnsafePointer(to: &numberOfDisk, { data.append(UnsafeBufferPointer(start: $0, count: 1))}) - withUnsafePointer(to: &numberOfDiskStart, { data.append(UnsafeBufferPointer(start: $0, count: 1))}) - withUnsafePointer(to: &totalNumberOfEntriesOnDisk, { data.append(UnsafeBufferPointer(start: $0, count: 1))}) - withUnsafePointer(to: &totalNumberOfEntriesInCD, { data.append(UnsafeBufferPointer(start: $0, count: 1))}) - withUnsafePointer(to: &sizeOfCentralDirectory, { data.append(UnsafeBufferPointer(start: $0, count: 1))}) - withUnsafePointer(to: &offsetToStartOfCD, { data.append(UnsafeBufferPointer(start: $0, count: 1))}) - withUnsafePointer(to: &zipFileCommentLength, { data.append(UnsafeBufferPointer(start: $0, count: 1))}) - data.append(self.zipFileCommentData) - return data - } - - init?(data: Data, additionalDataProvider provider: (Int) throws -> Data) { - guard data.count == Archive.EndOfCentralDirectoryRecord.size else { return nil } - guard data.scanValue(start: 0) == endOfCentralDirectorySignature else { return nil } - self.numberOfDisk = data.scanValue(start: 4) - self.numberOfDiskStart = data.scanValue(start: 6) - self.totalNumberOfEntriesOnDisk = data.scanValue(start: 8) - self.totalNumberOfEntriesInCentralDirectory = data.scanValue(start: 10) - self.sizeOfCentralDirectory = data.scanValue(start: 12) - self.offsetToStartOfCentralDirectory = data.scanValue(start: 16) - self.zipFileCommentLength = data.scanValue(start: 20) - guard let commentData = try? provider(Int(self.zipFileCommentLength)) else { return nil } - guard commentData.count == Int(self.zipFileCommentLength) else { return nil } - self.zipFileCommentData = commentData - } - - init(record: Archive.EndOfCentralDirectoryRecord, - numberOfEntriesOnDisk: UInt16, - numberOfEntriesInCentralDirectory: UInt16, - updatedSizeOfCentralDirectory: UInt32, - startOfCentralDirectory: UInt32) { - numberOfDisk = record.numberOfDisk - numberOfDiskStart = record.numberOfDiskStart - totalNumberOfEntriesOnDisk = numberOfEntriesOnDisk - totalNumberOfEntriesInCentralDirectory = numberOfEntriesInCentralDirectory - sizeOfCentralDirectory = updatedSizeOfCentralDirectory - offsetToStartOfCentralDirectory = startOfCentralDirectory - zipFileCommentLength = record.zipFileCommentLength - zipFileCommentData = record.zipFileCommentData - } -} diff --git a/Pods/ZIPFoundation/Sources/ZIPFoundation/Data+Compression.swift b/Pods/ZIPFoundation/Sources/ZIPFoundation/Data+Compression.swift deleted file mode 100644 index ce3558f04..000000000 --- a/Pods/ZIPFoundation/Sources/ZIPFoundation/Data+Compression.swift +++ /dev/null @@ -1,349 +0,0 @@ -// -// Data+Compression.swift -// ZIPFoundation -// -// Copyright © 2017-2020 Thomas Zoechling, https://www.peakstep.com and the ZIP Foundation project authors. -// Released under the MIT License. -// -// See https://github.com/weichsel/ZIPFoundation/blob/master/LICENSE for license information. -// - -import Foundation - -/// An unsigned 32-Bit Integer representing a checksum. -public typealias CRC32 = UInt32 -/// A custom handler that consumes a `Data` object containing partial entry data. -/// - Parameters: -/// - data: A chunk of `Data` to consume. -/// - Throws: Can throw to indicate errors during data consumption. -public typealias Consumer = (_ data: Data) throws -> Void -/// A custom handler that receives a position and a size that can be used to provide data from an arbitrary source. -/// - Parameters: -/// - position: The current read position. -/// - size: The size of the chunk to provide. -/// - Returns: A chunk of `Data`. -/// - Throws: Can throw to indicate errors in the data source. -public typealias Provider = (_ position: Int, _ size: Int) throws -> Data - -/// The lookup table used to calculate `CRC32` checksums. -public let crcTable: [UInt32] = [ - 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, - 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, - 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, - 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, - 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, - 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, - 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, - 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, - 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, - 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, - 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, - 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, - 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, - 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, - 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e, - 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01, - 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, - 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, - 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, - 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, - 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, - 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, - 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, - 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, - 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, - 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, - 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, - 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, - 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344, - 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, - 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, - 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, - 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, - 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, - 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, - 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, - 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, - 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, - 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, - 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, - 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, - 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, - 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, - 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, - 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, - 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, - 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, - 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, - 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, - 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, - 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, - 0x2d02ef8d] - -extension Data { - enum CompressionError: Error { - case invalidStream - case corruptedData - } - - /// Calculate the `CRC32` checksum of the receiver. - /// - /// - Parameter checksum: The starting seed. - /// - Returns: The checksum calcualted from the bytes of the receiver and the starting seed. - public func crc32(checksum: CRC32) -> CRC32 { - // The typecast is necessary on 32-bit platforms because of - // https://bugs.swift.org/browse/SR-1774 - let mask = 0xffffffff as UInt32 - let bufferSize = self.count/MemoryLayout.size - var result = checksum ^ mask - #if swift(>=5.0) - crcTable.withUnsafeBufferPointer { crcTablePointer in - self.withUnsafeBytes { bufferPointer in - let bytePointer = bufferPointer.bindMemory(to: UInt8.self) - for bufferIndex in 0..> 8) ^ crcTablePointer[index] - } - } - } - #else - self.withUnsafeBytes { (bytes) in - let bins = stride(from: 0, to: bufferSize, by: 256) - for bin in bins { - for binIndex in 0..<256 { - let byteIndex = bin + binIndex - guard byteIndex < bufferSize else { break } - - let byte = bytes[byteIndex] - let index = Int((result ^ UInt32(byte)) & 0xff) - result = (result >> 8) ^ crcTable[index] - } - } - } - #endif - return result ^ mask - } - - /// Compress the output of `provider` and pass it to `consumer`. - /// - Parameters: - /// - size: The uncompressed size of the data to be compressed. - /// - bufferSize: The maximum size of the compression buffer. - /// - provider: A closure that accepts a position and a chunk size. Returns a `Data` chunk. - /// - consumer: A closure that processes the result of the compress operation. - /// - Returns: The checksum of the processed content. - public static func compress(size: Int, bufferSize: Int, provider: Provider, consumer: Consumer) throws -> CRC32 { - #if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) - return try self.process(operation: COMPRESSION_STREAM_ENCODE, size: size, bufferSize: bufferSize, - provider: provider, consumer: consumer) - #else - return try self.encode(size: size, bufferSize: bufferSize, provider: provider, consumer: consumer) - #endif - } - - /// Decompress the output of `provider` and pass it to `consumer`. - /// - Parameters: - /// - size: The compressed size of the data to be decompressed. - /// - bufferSize: The maximum size of the decompression buffer. - /// - skipCRC32: Optional flag to skip calculation of the CRC32 checksum to improve performance. - /// - provider: A closure that accepts a position and a chunk size. Returns a `Data` chunk. - /// - consumer: A closure that processes the result of the decompress operation. - /// - Returns: The checksum of the processed content. - public static func decompress(size: Int, bufferSize: Int, skipCRC32: Bool, - provider: Provider, consumer: Consumer) throws -> CRC32 { - #if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) - return try self.process(operation: COMPRESSION_STREAM_DECODE, size: size, bufferSize: bufferSize, - skipCRC32: skipCRC32, provider: provider, consumer: consumer) - #else - return try self.decode(bufferSize: bufferSize, skipCRC32: skipCRC32, provider: provider, consumer: consumer) - #endif - } -} - -// MARK: - Apple Platforms - -#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) -import Compression - -extension Data { - static func process(operation: compression_stream_operation, size: Int, bufferSize: Int, skipCRC32: Bool = false, - provider: Provider, consumer: Consumer) throws -> CRC32 { - var crc32 = CRC32(0) - let destPointer = UnsafeMutablePointer.allocate(capacity: bufferSize) - defer { destPointer.deallocate() } - let streamPointer = UnsafeMutablePointer.allocate(capacity: 1) - defer { streamPointer.deallocate() } - var stream = streamPointer.pointee - var status = compression_stream_init(&stream, operation, COMPRESSION_ZLIB) - guard status != COMPRESSION_STATUS_ERROR else { throw CompressionError.invalidStream } - defer { compression_stream_destroy(&stream) } - stream.src_size = 0 - stream.dst_ptr = destPointer - stream.dst_size = bufferSize - var position = 0 - var sourceData: Data? - repeat { - if stream.src_size == 0 { - do { - sourceData = try provider(position, Swift.min((size - position), bufferSize)) - if let sourceData = sourceData { - position += sourceData.count - stream.src_size = sourceData.count - } - } catch { throw error } - } - if let sourceData = sourceData { - sourceData.withUnsafeBytes { (rawBufferPointer) in - if let baseAddress = rawBufferPointer.baseAddress { - let pointer = baseAddress.assumingMemoryBound(to: UInt8.self) - stream.src_ptr = pointer.advanced(by: sourceData.count - stream.src_size) - let flags = sourceData.count < bufferSize ? Int32(COMPRESSION_STREAM_FINALIZE.rawValue) : 0 - status = compression_stream_process(&stream, flags) - } - } - if operation == COMPRESSION_STREAM_ENCODE && !skipCRC32 { crc32 = sourceData.crc32(checksum: crc32) } - } - switch status { - case COMPRESSION_STATUS_OK, COMPRESSION_STATUS_END: - let outputData = Data(bytesNoCopy: destPointer, count: bufferSize - stream.dst_size, deallocator: .none) - try consumer(outputData) - if operation == COMPRESSION_STREAM_DECODE && !skipCRC32 { crc32 = outputData.crc32(checksum: crc32) } - stream.dst_ptr = destPointer - stream.dst_size = bufferSize - default: throw CompressionError.corruptedData - } - } while status == COMPRESSION_STATUS_OK - return crc32 - } -} - -// MARK: - Linux - -#else -import CZlib - -extension Data { - static func encode(size: Int, bufferSize: Int, provider: Provider, consumer: Consumer) throws -> CRC32 { - var stream = z_stream() - let streamSize = Int32(MemoryLayout.size) - var result = deflateInit2_(&stream, Z_DEFAULT_COMPRESSION, - Z_DEFLATED, -MAX_WBITS, 9, Z_DEFAULT_STRATEGY, ZLIB_VERSION, streamSize) - defer { deflateEnd(&stream) } - guard result == Z_OK else { throw CompressionError.invalidStream } - var flush = Z_NO_FLUSH - var position = 0 - var zipCRC32 = CRC32(0) - repeat { - let readSize = Swift.min((size - position), bufferSize) - var inputChunk = try provider(position, readSize) - zipCRC32 = inputChunk.crc32(checksum: zipCRC32) - stream.avail_in = UInt32(inputChunk.count) - try inputChunk.withUnsafeMutableBytes { (rawBufferPointer) in - if let baseAddress = rawBufferPointer.baseAddress { - let pointer = baseAddress.assumingMemoryBound(to: UInt8.self) - stream.next_in = pointer - flush = position + bufferSize >= size ? Z_FINISH : Z_NO_FLUSH - } else if rawBufferPointer.count > 0 { - throw CompressionError.corruptedData - } else { - stream.next_in = nil - flush = Z_FINISH - } - var outputChunk = Data(count: bufferSize) - repeat { - stream.avail_out = UInt32(bufferSize) - try outputChunk.withUnsafeMutableBytes { (rawBufferPointer) in - guard let baseAddress = rawBufferPointer.baseAddress, rawBufferPointer.count > 0 else { - throw CompressionError.corruptedData - } - let pointer = baseAddress.assumingMemoryBound(to: UInt8.self) - stream.next_out = pointer - result = deflate(&stream, flush) - } - guard result >= Z_OK else { throw CompressionError.corruptedData } - - outputChunk.count = bufferSize - Int(stream.avail_out) - try consumer(outputChunk) - } while stream.avail_out == 0 - } - position += readSize - } while flush != Z_FINISH - return zipCRC32 - } - - static func decode(bufferSize: Int, skipCRC32: Bool, provider: Provider, consumer: Consumer) throws -> CRC32 { - var stream = z_stream() - let streamSize = Int32(MemoryLayout.size) - var result = inflateInit2_(&stream, -MAX_WBITS, ZLIB_VERSION, streamSize) - defer { inflateEnd(&stream) } - guard result == Z_OK else { throw CompressionError.invalidStream } - var unzipCRC32 = CRC32(0) - var position = 0 - repeat { - stream.avail_in = UInt32(bufferSize) - var chunk = try provider(position, bufferSize) - position += chunk.count - try chunk.withUnsafeMutableBytes { (rawBufferPointer) in - if let baseAddress = rawBufferPointer.baseAddress, rawBufferPointer.count > 0 { - let pointer = baseAddress.assumingMemoryBound(to: UInt8.self) - stream.next_in = pointer - repeat { - var outputData = Data(count: bufferSize) - stream.avail_out = UInt32(bufferSize) - try outputData.withUnsafeMutableBytes { (rawBufferPointer) in - if let baseAddress = rawBufferPointer.baseAddress, rawBufferPointer.count > 0 { - let pointer = baseAddress.assumingMemoryBound(to: UInt8.self) - stream.next_out = pointer - } else { - throw CompressionError.corruptedData - } - result = inflate(&stream, Z_NO_FLUSH) - guard result != Z_NEED_DICT && - result != Z_DATA_ERROR && - result != Z_MEM_ERROR else { - throw CompressionError.corruptedData - } - } - let remainingLength = UInt32(bufferSize) - stream.avail_out - outputData.count = Int(remainingLength) - try consumer(outputData) - if !skipCRC32 { unzipCRC32 = outputData.crc32(checksum: unzipCRC32) } - } while stream.avail_out == 0 - } - } - } while result != Z_STREAM_END - return unzipCRC32 - } -} - -#endif - -#if !swift(>=5.0) - -// Since Swift 5.0, `Data.withUnsafeBytes()` passes an `UnsafeRawBufferPointer` instead of an `UnsafePointer` -// into `body`. -// We provide a compatible method for targets that use Swift 4.x so that we can use the new version -// across all language versions. - -internal extension Data { - func withUnsafeBytes(_ body: (UnsafeRawBufferPointer) throws -> T) rethrows -> T { - let count = self.count - return try withUnsafeBytes { (pointer: UnsafePointer) throws -> T in - try body(UnsafeRawBufferPointer(start: pointer, count: count)) - } - } - - #if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) - #else - mutating func withUnsafeMutableBytes(_ body: (UnsafeMutableRawBufferPointer) throws -> T) rethrows -> T { - let count = self.count - guard count > 0 else { - return try body(UnsafeMutableRawBufferPointer(start: nil, count: count)) - } - return try withUnsafeMutableBytes { (pointer: UnsafeMutablePointer) throws -> T in - try body(UnsafeMutableRawBufferPointer(start: pointer, count: count)) - } - } - #endif -} -#endif diff --git a/Pods/ZIPFoundation/Sources/ZIPFoundation/Data+Serialization.swift b/Pods/ZIPFoundation/Sources/ZIPFoundation/Data+Serialization.swift deleted file mode 100644 index bbe25ed74..000000000 --- a/Pods/ZIPFoundation/Sources/ZIPFoundation/Data+Serialization.swift +++ /dev/null @@ -1,98 +0,0 @@ -// -// Data+Serialization.swift -// ZIPFoundation -// -// Copyright © 2017-2020 Thomas Zoechling, https://www.peakstep.com and the ZIP Foundation project authors. -// Released under the MIT License. -// -// See https://github.com/weichsel/ZIPFoundation/blob/master/LICENSE for license information. -// - -import Foundation - -protocol DataSerializable { - static var size: Int { get } - init?(data: Data, additionalDataProvider: (Int) throws -> Data) - var data: Data { get } -} - -extension Data { - enum DataError: Error { - case unreadableFile - case unwritableFile - } - - func scanValue(start: Int) -> T { - let subdata = self.subdata(in: start...size) - #if swift(>=5.0) - return subdata.withUnsafeBytes { $0.load(as: T.self) } - #else - return subdata.withUnsafeBytes { $0.pointee } - #endif - } - - static func readStruct(from file: UnsafeMutablePointer, at offset: Int) -> T? where T: DataSerializable { - fseek(file, offset, SEEK_SET) - guard let data = try? self.readChunk(of: T.size, from: file) else { - return nil - } - let structure = T(data: data, additionalDataProvider: { (additionalDataSize) -> Data in - return try self.readChunk(of: additionalDataSize, from: file) - }) - return structure - } - - static func consumePart(of size: Int, chunkSize: Int, skipCRC32: Bool = false, - provider: Provider, consumer: Consumer) throws -> CRC32 { - let readInOneChunk = (size < chunkSize) - var chunkSize = readInOneChunk ? size : chunkSize - var checksum = CRC32(0) - var bytesRead = 0 - while bytesRead < size { - let remainingSize = size - bytesRead - chunkSize = remainingSize < chunkSize ? remainingSize : chunkSize - let data = try provider(bytesRead, chunkSize) - try consumer(data) - if !skipCRC32 { - checksum = data.crc32(checksum: checksum) - } - bytesRead += chunkSize - } - return checksum - } - - static func readChunk(of size: Int, from file: UnsafeMutablePointer) throws -> Data { - let alignment = MemoryLayout.alignment - #if swift(>=4.1) - let bytes = UnsafeMutableRawPointer.allocate(byteCount: size, alignment: alignment) - #else - let bytes = UnsafeMutableRawPointer.allocate(bytes: size, alignedTo: alignment) - #endif - let bytesRead = fread(bytes, 1, size, file) - let error = ferror(file) - if error > 0 { - throw DataError.unreadableFile - } - #if swift(>=4.1) - return Data(bytesNoCopy: bytes, count: bytesRead, deallocator: .custom({ buf, _ in buf.deallocate() })) - #else - let deallocator = Deallocator.custom({ buf, _ in buf.deallocate(bytes: size, alignedTo: 1) }) - return Data(bytesNoCopy: bytes, count: bytesRead, deallocator: deallocator) - #endif - } - - static func write(chunk: Data, to file: UnsafeMutablePointer) throws -> Int { - var sizeWritten = 0 - chunk.withUnsafeBytes { (rawBufferPointer) in - if let baseAddress = rawBufferPointer.baseAddress, rawBufferPointer.count > 0 { - let pointer = baseAddress.assumingMemoryBound(to: UInt8.self) - sizeWritten = fwrite(pointer, 1, chunk.count, file) - } - } - let error = ferror(file) - if error > 0 { - throw DataError.unwritableFile - } - return sizeWritten - } -} diff --git a/Pods/ZIPFoundation/Sources/ZIPFoundation/Entry.swift b/Pods/ZIPFoundation/Sources/ZIPFoundation/Entry.swift deleted file mode 100644 index 11bc1d888..000000000 --- a/Pods/ZIPFoundation/Sources/ZIPFoundation/Entry.swift +++ /dev/null @@ -1,400 +0,0 @@ -// -// Entry.swift -// ZIPFoundation -// -// Copyright © 2017-2020 Thomas Zoechling, https://www.peakstep.com and the ZIP Foundation project authors. -// Released under the MIT License. -// -// See https://github.com/weichsel/ZIPFoundation/blob/master/LICENSE for license information. -// - -import Foundation -import CoreFoundation - -/// A value that represents a file, a directory or a symbolic link within a ZIP `Archive`. -/// -/// You can retrieve instances of `Entry` from an `Archive` via subscripting or iteration. -/// Entries are identified by their `path`. -public struct Entry: Equatable { - /// The type of an `Entry` in a ZIP `Archive`. - public enum EntryType: Int { - /// Indicates a regular file. - case file - /// Indicates a directory. - case directory - /// Indicates a symbolic link. - case symlink - - init(mode: mode_t) { - switch mode & S_IFMT { - case S_IFDIR: - self = .directory - case S_IFLNK: - self = .symlink - default: - self = .file - } - } - } - - enum OSType: UInt { - case msdos = 0 - case unix = 3 - case osx = 19 - case unused = 20 - } - - struct LocalFileHeader: DataSerializable { - let localFileHeaderSignature = UInt32(localFileHeaderStructSignature) - let versionNeededToExtract: UInt16 - let generalPurposeBitFlag: UInt16 - let compressionMethod: UInt16 - let lastModFileTime: UInt16 - let lastModFileDate: UInt16 - let crc32: UInt32 - let compressedSize: UInt32 - let uncompressedSize: UInt32 - let fileNameLength: UInt16 - let extraFieldLength: UInt16 - static let size = 30 - let fileNameData: Data - let extraFieldData: Data - } - - struct DataDescriptor: DataSerializable { - let data: Data - let dataDescriptorSignature = UInt32(dataDescriptorStructSignature) - let crc32: UInt32 - let compressedSize: UInt32 - let uncompressedSize: UInt32 - static let size = 16 - } - - struct CentralDirectoryStructure: DataSerializable { - let centralDirectorySignature = UInt32(centralDirectoryStructSignature) - let versionMadeBy: UInt16 - let versionNeededToExtract: UInt16 - let generalPurposeBitFlag: UInt16 - let compressionMethod: UInt16 - let lastModFileTime: UInt16 - let lastModFileDate: UInt16 - let crc32: UInt32 - let compressedSize: UInt32 - let uncompressedSize: UInt32 - let fileNameLength: UInt16 - let extraFieldLength: UInt16 - let fileCommentLength: UInt16 - let diskNumberStart: UInt16 - let internalFileAttributes: UInt16 - let externalFileAttributes: UInt32 - let relativeOffsetOfLocalHeader: UInt32 - static let size = 46 - let fileNameData: Data - let extraFieldData: Data - let fileCommentData: Data - var usesDataDescriptor: Bool { return (self.generalPurposeBitFlag & (1 << 3 )) != 0 } - var usesUTF8PathEncoding: Bool { return (self.generalPurposeBitFlag & (1 << 11 )) != 0 } - var isEncrypted: Bool { return (self.generalPurposeBitFlag & (1 << 0)) != 0 } - var isZIP64: Bool { return self.versionNeededToExtract >= 45 } - } - /// Returns the `path` of the receiver within a ZIP `Archive` using a given encoding. - /// - /// - Parameters: - /// - encoding: `String.Encoding` - public func path(using encoding: String.Encoding) -> String { - return String(data: self.centralDirectoryStructure.fileNameData, encoding: encoding) ?? "" - } - /// The `path` of the receiver within a ZIP `Archive`. - public var path: String { - let dosLatinUS = 0x400 - let dosLatinUSEncoding = CFStringEncoding(dosLatinUS) - let dosLatinUSStringEncoding = CFStringConvertEncodingToNSStringEncoding(dosLatinUSEncoding) - let codepage437 = String.Encoding(rawValue: dosLatinUSStringEncoding) - let encoding = self.centralDirectoryStructure.usesUTF8PathEncoding ? .utf8 : codepage437 - return self.path(using: encoding) - } - /// The file attributes of the receiver as key/value pairs. - /// - /// Contains the modification date and file permissions. - public var fileAttributes: [FileAttributeKey: Any] { - return FileManager.attributes(from: self) - } - /// The `CRC32` checksum of the receiver. - /// - /// - Note: Always returns `0` for entries of type `EntryType.directory`. - public var checksum: CRC32 { - var checksum = self.centralDirectoryStructure.crc32 - if self.centralDirectoryStructure.usesDataDescriptor { - guard let dataDescriptor = self.dataDescriptor else { return 0 } - checksum = dataDescriptor.crc32 - } - return checksum - } - /// The `EntryType` of the receiver. - public var type: EntryType { - // OS Type is stored in the upper byte of versionMadeBy - let osTypeRaw = self.centralDirectoryStructure.versionMadeBy >> 8 - let osType = OSType(rawValue: UInt(osTypeRaw)) ?? .unused - var isDirectory = self.path.hasSuffix("/") - switch osType { - case .unix, .osx: - let mode = mode_t(self.centralDirectoryStructure.externalFileAttributes >> 16) & S_IFMT - switch mode { - case S_IFREG: - return .file - case S_IFDIR: - return .directory - case S_IFLNK: - return .symlink - default: - return .file - } - case .msdos: - isDirectory = isDirectory || ((centralDirectoryStructure.externalFileAttributes >> 4) == 0x01) - fallthrough // For all other OSes we can only guess based on the directory suffix char - default: return isDirectory ? .directory : .file - } - } - /// The size of the receiver's compressed data. - public var compressedSize: Int { - return Int(dataDescriptor?.compressedSize ?? localFileHeader.compressedSize) - } - /// The size of the receiver's uncompressed data. - public var uncompressedSize: Int { - return Int(dataDescriptor?.uncompressedSize ?? localFileHeader.uncompressedSize) - } - /// The combined size of the local header, the data and the optional data descriptor. - var localSize: Int { - let localFileHeader = self.localFileHeader - var extraDataLength = Int(localFileHeader.fileNameLength) - extraDataLength += Int(localFileHeader.extraFieldLength) - var size = LocalFileHeader.size + extraDataLength - let isCompressed = localFileHeader.compressionMethod != CompressionMethod.none.rawValue - size += isCompressed ? self.compressedSize : self.uncompressedSize - size += self.dataDescriptor != nil ? DataDescriptor.size : 0 - return size - } - var dataOffset: Int { - var dataOffset = Int(self.centralDirectoryStructure.relativeOffsetOfLocalHeader) - dataOffset += LocalFileHeader.size - dataOffset += Int(self.localFileHeader.fileNameLength) - dataOffset += Int(self.localFileHeader.extraFieldLength) - return dataOffset - } - let centralDirectoryStructure: CentralDirectoryStructure - let localFileHeader: LocalFileHeader - let dataDescriptor: DataDescriptor? - - public static func == (lhs: Entry, rhs: Entry) -> Bool { - return lhs.path == rhs.path - && lhs.localFileHeader.crc32 == rhs.localFileHeader.crc32 - && lhs.centralDirectoryStructure.relativeOffsetOfLocalHeader - == rhs.centralDirectoryStructure.relativeOffsetOfLocalHeader - } - - init?(centralDirectoryStructure: CentralDirectoryStructure, - localFileHeader: LocalFileHeader, - dataDescriptor: DataDescriptor?) { - // We currently don't support ZIP64 or encrypted archives - guard !centralDirectoryStructure.isZIP64 else { return nil } - guard !centralDirectoryStructure.isEncrypted else { return nil } - self.centralDirectoryStructure = centralDirectoryStructure - self.localFileHeader = localFileHeader - self.dataDescriptor = dataDescriptor - } -} - -extension Entry.LocalFileHeader { - var data: Data { - var localFileHeaderSignature = self.localFileHeaderSignature - var versionNeededToExtract = self.versionNeededToExtract - var generalPurposeBitFlag = self.generalPurposeBitFlag - var compressionMethod = self.compressionMethod - var lastModFileTime = self.lastModFileTime - var lastModFileDate = self.lastModFileDate - var crc32 = self.crc32 - var compressedSize = self.compressedSize - var uncompressedSize = self.uncompressedSize - var fileNameLength = self.fileNameLength - var extraFieldLength = self.extraFieldLength - var data = Data() - withUnsafePointer(to: &localFileHeaderSignature, { data.append(UnsafeBufferPointer(start: $0, count: 1))}) - withUnsafePointer(to: &versionNeededToExtract, { data.append(UnsafeBufferPointer(start: $0, count: 1))}) - withUnsafePointer(to: &generalPurposeBitFlag, { data.append(UnsafeBufferPointer(start: $0, count: 1))}) - withUnsafePointer(to: &compressionMethod, { data.append(UnsafeBufferPointer(start: $0, count: 1))}) - withUnsafePointer(to: &lastModFileTime, { data.append(UnsafeBufferPointer(start: $0, count: 1))}) - withUnsafePointer(to: &lastModFileDate, { data.append(UnsafeBufferPointer(start: $0, count: 1))}) - withUnsafePointer(to: &crc32, { data.append(UnsafeBufferPointer(start: $0, count: 1))}) - withUnsafePointer(to: &compressedSize, { data.append(UnsafeBufferPointer(start: $0, count: 1))}) - withUnsafePointer(to: &uncompressedSize, { data.append(UnsafeBufferPointer(start: $0, count: 1))}) - withUnsafePointer(to: &fileNameLength, { data.append(UnsafeBufferPointer(start: $0, count: 1))}) - withUnsafePointer(to: &extraFieldLength, { data.append(UnsafeBufferPointer(start: $0, count: 1))}) - data.append(self.fileNameData) - data.append(self.extraFieldData) - return data - } - - init?(data: Data, additionalDataProvider provider: (Int) throws -> Data) { - guard data.count == Entry.LocalFileHeader.size else { return nil } - guard data.scanValue(start: 0) == localFileHeaderSignature else { return nil } - self.versionNeededToExtract = data.scanValue(start: 4) - self.generalPurposeBitFlag = data.scanValue(start: 6) - self.compressionMethod = data.scanValue(start: 8) - self.lastModFileTime = data.scanValue(start: 10) - self.lastModFileDate = data.scanValue(start: 12) - self.crc32 = data.scanValue(start: 14) - self.compressedSize = data.scanValue(start: 18) - self.uncompressedSize = data.scanValue(start: 22) - self.fileNameLength = data.scanValue(start: 26) - self.extraFieldLength = data.scanValue(start: 28) - let additionalDataLength = Int(self.fileNameLength + self.extraFieldLength) - guard let additionalData = try? provider(additionalDataLength) else { return nil } - guard additionalData.count == additionalDataLength else { return nil } - var subRangeStart = 0 - var subRangeEnd = Int(self.fileNameLength) - self.fileNameData = additionalData.subdata(in: subRangeStart.. Data) { - guard data.count == Entry.CentralDirectoryStructure.size else { return nil } - guard data.scanValue(start: 0) == centralDirectorySignature else { return nil } - self.versionMadeBy = data.scanValue(start: 4) - self.versionNeededToExtract = data.scanValue(start: 6) - self.generalPurposeBitFlag = data.scanValue(start: 8) - self.compressionMethod = data.scanValue(start: 10) - self.lastModFileTime = data.scanValue(start: 12) - self.lastModFileDate = data.scanValue(start: 14) - self.crc32 = data.scanValue(start: 16) - self.compressedSize = data.scanValue(start: 20) - self.uncompressedSize = data.scanValue(start: 24) - self.fileNameLength = data.scanValue(start: 28) - self.extraFieldLength = data.scanValue(start: 30) - self.fileCommentLength = data.scanValue(start: 32) - self.diskNumberStart = data.scanValue(start: 34) - self.internalFileAttributes = data.scanValue(start: 36) - self.externalFileAttributes = data.scanValue(start: 38) - self.relativeOffsetOfLocalHeader = data.scanValue(start: 42) - let additionalDataLength = Int(self.fileNameLength + self.extraFieldLength + self.fileCommentLength) - guard let additionalData = try? provider(additionalDataLength) else { return nil } - guard additionalData.count == additionalDataLength else { return nil } - var subRangeStart = 0 - var subRangeEnd = Int(self.fileNameLength) - self.fileNameData = additionalData.subdata(in: subRangeStart.. Data) { - guard data.count == Entry.DataDescriptor.size else { return nil } - let signature: UInt32 = data.scanValue(start: 0) - // The DataDescriptor signature is not mandatory so we have to re-arrange the input data if it is missing. - var readOffset = 0 - if signature == self.dataDescriptorSignature { readOffset = 4 } - self.crc32 = data.scanValue(start: readOffset + 0) - self.compressedSize = data.scanValue(start: readOffset + 4) - self.uncompressedSize = data.scanValue(start: readOffset + 8) - // Our add(_ entry:) methods always maintain compressed & uncompressed - // sizes and so we don't need a data descriptor for newly added entries. - // Data descriptors of already existing entries are manually preserved - // when copying those entries to the tempArchive during remove(_ entry:). - self.data = Data() - } -} diff --git a/Pods/ZIPFoundation/Sources/ZIPFoundation/FileManager+ZIP.swift b/Pods/ZIPFoundation/Sources/ZIPFoundation/FileManager+ZIP.swift deleted file mode 100644 index 770366b64..000000000 --- a/Pods/ZIPFoundation/Sources/ZIPFoundation/FileManager+ZIP.swift +++ /dev/null @@ -1,326 +0,0 @@ -// -// FileManager+ZIP.swift -// ZIPFoundation -// -// Copyright © 2017-2020 Thomas Zoechling, https://www.peakstep.com and the ZIP Foundation project authors. -// Released under the MIT License. -// -// See https://github.com/weichsel/ZIPFoundation/blob/master/LICENSE for license information. -// - -import Foundation - -extension FileManager { - typealias CentralDirectoryStructure = Entry.CentralDirectoryStructure - - /// Zips the file or direcory contents at the specified source URL to the destination URL. - /// - /// If the item at the source URL is a directory, the directory itself will be - /// represented within the ZIP `Archive`. Calling this method with a directory URL - /// `file:///path/directory/` will create an archive with a `directory/` entry at the root level. - /// You can override this behavior by passing `false` for `shouldKeepParent`. In that case, the contents - /// of the source directory will be placed at the root of the archive. - /// - Parameters: - /// - sourceURL: The file URL pointing to an existing file or directory. - /// - destinationURL: The file URL that identifies the destination of the zip operation. - /// - shouldKeepParent: Indicates that the directory name of a source item should be used as root element - /// within the archive. Default is `true`. - /// - compressionMethod: Indicates the `CompressionMethod` that should be applied. - /// By default, `zipItem` will create uncompressed archives. - /// - progress: A progress object that can be used to track or cancel the zip operation. - /// - Throws: Throws an error if the source item does not exist or the destination URL is not writable. - public func zipItem(at sourceURL: URL, to destinationURL: URL, - shouldKeepParent: Bool = true, compressionMethod: CompressionMethod = .none, - progress: Progress? = nil) throws { - let fileManager = FileManager() - guard fileManager.itemExists(at: sourceURL) else { - throw CocoaError(.fileReadNoSuchFile, userInfo: [NSFilePathErrorKey: sourceURL.path]) - } - guard !fileManager.itemExists(at: destinationURL) else { - throw CocoaError(.fileWriteFileExists, userInfo: [NSFilePathErrorKey: destinationURL.path]) - } - guard let archive = Archive(url: destinationURL, accessMode: .create) else { - throw Archive.ArchiveError.unwritableArchive - } - let isDirectory = try FileManager.typeForItem(at: sourceURL) == .directory - if isDirectory { - let subPaths = try self.subpathsOfDirectory(atPath: sourceURL.path) - var totalUnitCount = Int64(0) - if let progress = progress { - totalUnitCount = subPaths.reduce(Int64(0), { - let itemURL = sourceURL.appendingPathComponent($1) - let itemSize = archive.totalUnitCountForAddingItem(at: itemURL) - return $0 + itemSize - }) - progress.totalUnitCount = totalUnitCount - } - - // If the caller wants to keep the parent directory, we use the lastPathComponent of the source URL - // as common base for all entries (similar to macOS' Archive Utility.app) - let directoryPrefix = sourceURL.lastPathComponent - for entryPath in subPaths { - let finalEntryPath = shouldKeepParent ? directoryPrefix + "/" + entryPath : entryPath - let finalBaseURL = shouldKeepParent ? sourceURL.deletingLastPathComponent() : sourceURL - if let progress = progress { - let itemURL = sourceURL.appendingPathComponent(entryPath) - let entryProgress = archive.makeProgressForAddingItem(at: itemURL) - progress.addChild(entryProgress, withPendingUnitCount: entryProgress.totalUnitCount) - try archive.addEntry(with: finalEntryPath, relativeTo: finalBaseURL, - compressionMethod: compressionMethod, progress: entryProgress) - } else { - try archive.addEntry(with: finalEntryPath, relativeTo: finalBaseURL, - compressionMethod: compressionMethod) - } - } - } else { - progress?.totalUnitCount = archive.totalUnitCountForAddingItem(at: sourceURL) - let baseURL = sourceURL.deletingLastPathComponent() - try archive.addEntry(with: sourceURL.lastPathComponent, relativeTo: baseURL, - compressionMethod: compressionMethod, progress: progress) - } - } - - /// Unzips the contents at the specified source URL to the destination URL. - /// - /// - Parameters: - /// - sourceURL: The file URL pointing to an existing ZIP file. - /// - destinationURL: The file URL that identifies the destination directory of the unzip operation. - /// - skipCRC32: Optional flag to skip calculation of the CRC32 checksum to improve performance. - /// - progress: A progress object that can be used to track or cancel the unzip operation. - /// - preferredEncoding: Encoding for entry paths. Overrides the encoding specified in the archive. - /// - Throws: Throws an error if the source item does not exist or the destination URL is not writable. - public func unzipItem(at sourceURL: URL, to destinationURL: URL, skipCRC32: Bool = false, - progress: Progress? = nil, preferredEncoding: String.Encoding? = nil) throws { - let fileManager = FileManager() - guard fileManager.itemExists(at: sourceURL) else { - throw CocoaError(.fileReadNoSuchFile, userInfo: [NSFilePathErrorKey: sourceURL.path]) - } - guard let archive = Archive(url: sourceURL, accessMode: .read, preferredEncoding: preferredEncoding) else { - throw Archive.ArchiveError.unreadableArchive - } - // Defer extraction of symlinks until all files & directories have been created. - // This is necessary because we can't create links to files that haven't been created yet. - let sortedEntries = archive.sorted { (left, right) -> Bool in - switch (left.type, right.type) { - case (.directory, .file): return true - case (.directory, .symlink): return true - case (.file, .symlink): return true - default: return false - } - } - var totalUnitCount = Int64(0) - if let progress = progress { - totalUnitCount = sortedEntries.reduce(0, { $0 + archive.totalUnitCountForReading($1) }) - progress.totalUnitCount = totalUnitCount - } - - for entry in sortedEntries { - let path = preferredEncoding == nil ? entry.path : entry.path(using: preferredEncoding!) - let destinationEntryURL = destinationURL.appendingPathComponent(path) - guard destinationEntryURL.isContained(in: destinationURL) else { - throw CocoaError(.fileReadInvalidFileName, - userInfo: [NSFilePathErrorKey: destinationEntryURL.path]) - } - if let progress = progress { - let entryProgress = archive.makeProgressForReading(entry) - progress.addChild(entryProgress, withPendingUnitCount: entryProgress.totalUnitCount) - _ = try archive.extract(entry, to: destinationEntryURL, skipCRC32: skipCRC32, progress: entryProgress) - } else { - _ = try archive.extract(entry, to: destinationEntryURL, skipCRC32: skipCRC32) - } - } - } - - // MARK: - Helpers - - func itemExists(at url: URL) -> Bool { - // Use `URL.checkResourceIsReachable()` instead of `FileManager.fileExists()` here - // because we don't want implicit symlink resolution. - // As per documentation, `FileManager.fileExists()` traverses symlinks and therefore a broken symlink - // would throw a `.fileReadNoSuchFile` false positive error. - // For ZIP files it may be intended to archive "broken" symlinks because they might be - // resolvable again when extracting the archive to a different destination. - return (try? url.checkResourceIsReachable()) == true - } - - func createParentDirectoryStructure(for url: URL) throws { - let parentDirectoryURL = url.deletingLastPathComponent() - try self.createDirectory(at: parentDirectoryURL, withIntermediateDirectories: true, attributes: nil) - } - - class func attributes(from entry: Entry) -> [FileAttributeKey: Any] { - let centralDirectoryStructure = entry.centralDirectoryStructure - let entryType = entry.type - let fileTime = centralDirectoryStructure.lastModFileTime - let fileDate = centralDirectoryStructure.lastModFileDate - let defaultPermissions = entryType == .directory ? defaultDirectoryPermissions : defaultFilePermissions - var attributes = [.posixPermissions: defaultPermissions] as [FileAttributeKey: Any] - // Certain keys are not yet supported in swift-corelibs - #if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) - attributes[.modificationDate] = Date(dateTime: (fileDate, fileTime)) - #endif - let versionMadeBy = centralDirectoryStructure.versionMadeBy - guard let osType = Entry.OSType(rawValue: UInt(versionMadeBy >> 8)) else { return attributes } - - let externalFileAttributes = centralDirectoryStructure.externalFileAttributes - let permissions = self.permissions(for: externalFileAttributes, osType: osType, entryType: entryType) - attributes[.posixPermissions] = NSNumber(value: permissions) - return attributes - } - - class func permissions(for externalFileAttributes: UInt32, osType: Entry.OSType, - entryType: Entry.EntryType) -> UInt16 { - switch osType { - case .unix, .osx: - let permissions = mode_t(externalFileAttributes >> 16) & (~S_IFMT) - let defaultPermissions = entryType == .directory ? defaultDirectoryPermissions : defaultFilePermissions - return permissions == 0 ? defaultPermissions : UInt16(permissions) - default: - return entryType == .directory ? defaultDirectoryPermissions : defaultFilePermissions - } - } - - class func externalFileAttributesForEntry(of type: Entry.EntryType, permissions: UInt16) -> UInt32 { - var typeInt: UInt16 - switch type { - case .file: - typeInt = UInt16(S_IFREG) - case .directory: - typeInt = UInt16(S_IFDIR) - case .symlink: - typeInt = UInt16(S_IFLNK) - } - var externalFileAttributes = UInt32(typeInt|UInt16(permissions)) - externalFileAttributes = (externalFileAttributes << 16) - return externalFileAttributes - } - - class func permissionsForItem(at URL: URL) throws -> UInt16 { - let fileManager = FileManager() - let entryFileSystemRepresentation = fileManager.fileSystemRepresentation(withPath: URL.path) - var fileStat = stat() - lstat(entryFileSystemRepresentation, &fileStat) - let permissions = fileStat.st_mode - return UInt16(permissions) - } - - class func fileModificationDateTimeForItem(at url: URL) throws -> Date { - let fileManager = FileManager() - guard fileManager.itemExists(at: url) else { - throw CocoaError(.fileReadNoSuchFile, userInfo: [NSFilePathErrorKey: url.path]) - } - let entryFileSystemRepresentation = fileManager.fileSystemRepresentation(withPath: url.path) - var fileStat = stat() - lstat(entryFileSystemRepresentation, &fileStat) - #if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) - let modTimeSpec = fileStat.st_mtimespec - #else - let modTimeSpec = fileStat.st_mtim - #endif - - let timeStamp = TimeInterval(modTimeSpec.tv_sec) + TimeInterval(modTimeSpec.tv_nsec)/1000000000.0 - let modDate = Date(timeIntervalSince1970: timeStamp) - return modDate - } - - class func fileSizeForItem(at url: URL) throws -> UInt32 { - let fileManager = FileManager() - guard fileManager.itemExists(at: url) else { - throw CocoaError(.fileReadNoSuchFile, userInfo: [NSFilePathErrorKey: url.path]) - } - let entryFileSystemRepresentation = fileManager.fileSystemRepresentation(withPath: url.path) - var fileStat = stat() - lstat(entryFileSystemRepresentation, &fileStat) - return UInt32(fileStat.st_size) - } - - class func typeForItem(at url: URL) throws -> Entry.EntryType { - let fileManager = FileManager() - guard url.isFileURL, fileManager.itemExists(at: url) else { - throw CocoaError(.fileReadNoSuchFile, userInfo: [NSFilePathErrorKey: url.path]) - } - let entryFileSystemRepresentation = fileManager.fileSystemRepresentation(withPath: url.path) - var fileStat = stat() - lstat(entryFileSystemRepresentation, &fileStat) - return Entry.EntryType(mode: fileStat.st_mode) - } -} - -extension Date { - init(dateTime: (UInt16, UInt16)) { - var msdosDateTime = Int(dateTime.0) - msdosDateTime <<= 16 - msdosDateTime |= Int(dateTime.1) - var unixTime = tm() - unixTime.tm_sec = Int32((msdosDateTime&31)*2) - unixTime.tm_min = Int32((msdosDateTime>>5)&63) - unixTime.tm_hour = Int32((Int(dateTime.1)>>11)&31) - unixTime.tm_mday = Int32((msdosDateTime>>16)&31) - unixTime.tm_mon = Int32((msdosDateTime>>21)&15) - unixTime.tm_mon -= 1 // UNIX time struct month entries are zero based. - unixTime.tm_year = Int32(1980+(msdosDateTime>>25)) - unixTime.tm_year -= 1900 // UNIX time structs count in "years since 1900". - let time = timegm(&unixTime) - self = Date(timeIntervalSince1970: TimeInterval(time)) - } - - var fileModificationDateTime: (UInt16, UInt16) { - return (self.fileModificationDate, self.fileModificationTime) - } - - var fileModificationDate: UInt16 { - var time = time_t(self.timeIntervalSince1970) - guard let unixTime = gmtime(&time) else { - return 0 - } - var year = unixTime.pointee.tm_year + 1900 // UNIX time structs count in "years since 1900". - // ZIP uses the MSDOS date format which has a valid range of 1980 - 2099. - year = year >= 1980 ? year : 1980 - year = year <= 2099 ? year : 2099 - let month = unixTime.pointee.tm_mon + 1 // UNIX time struct month entries are zero based. - let day = unixTime.pointee.tm_mday - return (UInt16)(day + ((month) * 32) + ((year - 1980) * 512)) - } - - var fileModificationTime: UInt16 { - var time = time_t(self.timeIntervalSince1970) - guard let unixTime = gmtime(&time) else { - return 0 - } - let hour = unixTime.pointee.tm_hour - let minute = unixTime.pointee.tm_min - let second = unixTime.pointee.tm_sec - return (UInt16)((second/2) + (minute * 32) + (hour * 2048)) - } -} - -#if swift(>=4.2) -#else - -#if os(macOS) || os(iOS) || os(watchOS) || os(tvOS) -#else - -// The swift-corelibs-foundation version of NSError.swift was missing a convenience method to create -// error objects from error codes. (https://github.com/apple/swift-corelibs-foundation/pull/1420) -// We have to provide an implementation for non-Darwin platforms using Swift versions < 4.2. - -public extension CocoaError { - public static func error(_ code: CocoaError.Code, userInfo: [AnyHashable: Any]? = nil, url: URL? = nil) -> Error { - var info: [String: Any] = userInfo as? [String: Any] ?? [:] - if let url = url { - info[NSURLErrorKey] = url - } - return NSError(domain: NSCocoaErrorDomain, code: code.rawValue, userInfo: info) - } -} - -#endif -#endif - -public extension URL { - func isContained(in parentDirectoryURL: URL) -> Bool { - // Ensure this URL is contained in the passed in URL - let parentDirectoryURL = URL(fileURLWithPath: parentDirectoryURL.path, isDirectory: true).standardized - return self.standardized.absoluteString.hasPrefix(parentDirectoryURL.absoluteString) - } -} diff --git a/Project.swift b/Project.swift new file mode 100644 index 000000000..8d5f229d8 --- /dev/null +++ b/Project.swift @@ -0,0 +1,40 @@ +import ProjectDescription + +let project = Project(name: "Delta", + packages: [], + targets: [ + Target(name: "Delta", + platform: .iOS, + product: .app, + bundleId: "com.rileytestut.Delta", + infoPlist: "Info.plist", + sources: ["Sources/**"], + resources: [ + /* Path to resouces can be defined here */ + "Resources/**", + ], + headers: Headers(private: [ + "Sources/Extensions/NSFetchedResultsController+Conveniences.h", + "Sources/Database/Model/Misc/ControllerSkinConfigurations.h" + ]), + actions: [ + .post(path: "Phases/fabric.sh", name: "Fabric"), + ], + dependencies: [ + /* Target dependencies can be defined here */ + .sdk(name: "CoreMotion.framework", status: .required), + .sdk(name: "libz.tbd"), + .cocoapods(path: "."), + .project(target: "DeltaCore", path: "Cores/DeltaCore"), + .project(target: "MelonDSDeltaCore", path: "Cores/MelonDSDeltaCore"), + .project(target: "Mupen64PlusDeltaCore", path: "Cores/Mupen64PlusDeltaCore"), + .project(target: "DeSmuMEDeltaCore", path: "Cores/DeSmuMEDeltaCore") + ], + settings: Settings(base: [ + "DEVELOPMENT_TEAM": "6XVY5G3U44", + "IPHONEOS_DEPLOYMENT_TARGET": "12.2", + "OTHER_SWIFT_FLAGS": "$(inherited) -Xfrontend -debug-time-function-bodies", + "SWIFT_OBJC_BRIDGING_HEADER": "Sources/Bridging-Header.h", + "CODE_SIGN_STYLE": "Automatic", + ])), + ]) diff --git a/Delta/Base.lproj/GamesDatabase.storyboard b/Resources/Base.lproj/GamesDatabase.storyboard similarity index 100% rename from Delta/Base.lproj/GamesDatabase.storyboard rename to Resources/Base.lproj/GamesDatabase.storyboard diff --git a/Delta/Base.lproj/LaunchScreen.storyboard b/Resources/Base.lproj/LaunchScreen.storyboard similarity index 100% rename from Delta/Base.lproj/LaunchScreen.storyboard rename to Resources/Base.lproj/LaunchScreen.storyboard diff --git a/Delta/Base.lproj/Main.storyboard b/Resources/Base.lproj/Main.storyboard similarity index 100% rename from Delta/Base.lproj/Main.storyboard rename to Resources/Base.lproj/Main.storyboard diff --git a/Delta/Base.lproj/PauseMenu.storyboard b/Resources/Base.lproj/PauseMenu.storyboard similarity index 100% rename from Delta/Base.lproj/PauseMenu.storyboard rename to Resources/Base.lproj/PauseMenu.storyboard diff --git a/Delta/Base.lproj/PausePresentationControllerContentView.xib b/Resources/Base.lproj/PausePresentationControllerContentView.xib similarity index 100% rename from Delta/Base.lproj/PausePresentationControllerContentView.xib rename to Resources/Base.lproj/PausePresentationControllerContentView.xib diff --git a/Delta/Base.lproj/Settings.storyboard b/Resources/Base.lproj/Settings.storyboard similarity index 99% rename from Delta/Base.lproj/Settings.storyboard rename to Resources/Base.lproj/Settings.storyboard index 38fd67d5f..0917d3540 100644 --- a/Delta/Base.lproj/Settings.storyboard +++ b/Resources/Base.lproj/Settings.storyboard @@ -1,9 +1,9 @@ - + - + @@ -20,7 +20,7 @@ diff --git a/Delta/Syncing/SyncResultsViewController.storyboard b/Resources/Base.lproj/SyncResultsViewController.storyboard similarity index 100% rename from Delta/Syncing/SyncResultsViewController.storyboard rename to Resources/Base.lproj/SyncResultsViewController.storyboard diff --git a/Delta/Supporting Files/GoogleService-Info.plist b/Resources/GoogleService-Info.plist similarity index 100% rename from Delta/Supporting Files/GoogleService-Info.plist rename to Resources/GoogleService-Info.plist diff --git a/Delta/AppDelegate.swift b/Sources/AppDelegate.swift similarity index 100% rename from Delta/AppDelegate.swift rename to Sources/AppDelegate.swift diff --git a/Delta/Supporting Files/Delta-Bridging-Header.h b/Sources/Bridging-Header.h similarity index 100% rename from Delta/Supporting Files/Delta-Bridging-Header.h rename to Sources/Bridging-Header.h diff --git a/Delta/Components/Action.swift b/Sources/Components/Action.swift similarity index 100% rename from Delta/Components/Action.swift rename to Sources/Components/Action.swift diff --git a/Delta/Components/Box.swift b/Sources/Components/Box.swift similarity index 100% rename from Delta/Components/Box.swift rename to Sources/Components/Box.swift diff --git a/Delta/Components/Collection View/GridCollectionViewCell.swift b/Sources/Components/Collection View/GridCollectionViewCell.swift similarity index 100% rename from Delta/Components/Collection View/GridCollectionViewCell.swift rename to Sources/Components/Collection View/GridCollectionViewCell.swift diff --git a/Delta/Components/Collection View/GridCollectionViewLayout.swift b/Sources/Components/Collection View/GridCollectionViewLayout.swift similarity index 100% rename from Delta/Components/Collection View/GridCollectionViewLayout.swift rename to Sources/Components/Collection View/GridCollectionViewLayout.swift diff --git a/Delta/Components/Loading/LoadControllerSkinImageOperation.swift b/Sources/Components/Loading/LoadControllerSkinImageOperation.swift similarity index 100% rename from Delta/Components/Loading/LoadControllerSkinImageOperation.swift rename to Sources/Components/Loading/LoadControllerSkinImageOperation.swift diff --git a/Delta/Components/Loading/LoadImageURLOperation.swift b/Sources/Components/Loading/LoadImageURLOperation.swift similarity index 100% rename from Delta/Components/Loading/LoadImageURLOperation.swift rename to Sources/Components/Loading/LoadImageURLOperation.swift diff --git a/Delta/Components/Popover Menu/PopoverMenuButton.swift b/Sources/Components/Popover Menu/PopoverMenuButton.swift similarity index 100% rename from Delta/Components/Popover Menu/PopoverMenuButton.swift rename to Sources/Components/Popover Menu/PopoverMenuButton.swift diff --git a/Delta/Components/Popover Menu/PopoverMenuController.swift b/Sources/Components/Popover Menu/PopoverMenuController.swift similarity index 100% rename from Delta/Components/Popover Menu/PopoverMenuController.swift rename to Sources/Components/Popover Menu/PopoverMenuController.swift diff --git a/Delta/Components/Popover Menu/PopoverMenuViewController.swift b/Sources/Components/Popover Menu/PopoverMenuViewController.swift similarity index 100% rename from Delta/Components/Popover Menu/PopoverMenuViewController.swift rename to Sources/Components/Popover Menu/PopoverMenuViewController.swift diff --git a/Delta/Components/Table View/BadgedTableViewCell.swift b/Sources/Components/Table View/BadgedTableViewCell.swift similarity index 100% rename from Delta/Components/Table View/BadgedTableViewCell.swift rename to Sources/Components/Table View/BadgedTableViewCell.swift diff --git a/Delta/Components/Table View/GameTableViewCell.swift b/Sources/Components/Table View/GameTableViewCell.swift similarity index 100% rename from Delta/Components/Table View/GameTableViewCell.swift rename to Sources/Components/Table View/GameTableViewCell.swift diff --git a/Delta/Components/Table View/GameTableViewCell.xib b/Sources/Components/Table View/GameTableViewCell.xib similarity index 100% rename from Delta/Components/Table View/GameTableViewCell.xib rename to Sources/Components/Table View/GameTableViewCell.xib diff --git a/Delta/Database/DatabaseManager.swift b/Sources/Database/DatabaseManager.swift similarity index 100% rename from Delta/Database/DatabaseManager.swift rename to Sources/Database/DatabaseManager.swift diff --git a/Delta/Database/Model/Delta.xcdatamodeld/.xccurrentversion b/Sources/Database/Model/Delta.xcdatamodeld/.xccurrentversion similarity index 100% rename from Delta/Database/Model/Delta.xcdatamodeld/.xccurrentversion rename to Sources/Database/Model/Delta.xcdatamodeld/.xccurrentversion diff --git a/Delta/Database/Model/Delta.xcdatamodeld/Delta 2.xcdatamodel/contents b/Sources/Database/Model/Delta.xcdatamodeld/Delta 2.xcdatamodel/contents similarity index 100% rename from Delta/Database/Model/Delta.xcdatamodeld/Delta 2.xcdatamodel/contents rename to Sources/Database/Model/Delta.xcdatamodeld/Delta 2.xcdatamodel/contents diff --git a/Delta/Database/Model/Delta.xcdatamodeld/Delta 3.xcdatamodel/contents b/Sources/Database/Model/Delta.xcdatamodeld/Delta 3.xcdatamodel/contents similarity index 100% rename from Delta/Database/Model/Delta.xcdatamodeld/Delta 3.xcdatamodel/contents rename to Sources/Database/Model/Delta.xcdatamodeld/Delta 3.xcdatamodel/contents diff --git a/Delta/Database/Model/Delta.xcdatamodeld/Delta 4.xcdatamodel/contents b/Sources/Database/Model/Delta.xcdatamodeld/Delta 4.xcdatamodel/contents similarity index 100% rename from Delta/Database/Model/Delta.xcdatamodeld/Delta 4.xcdatamodel/contents rename to Sources/Database/Model/Delta.xcdatamodeld/Delta 4.xcdatamodel/contents diff --git a/Delta/Database/Model/Delta.xcdatamodeld/Delta 5.xcdatamodel/contents b/Sources/Database/Model/Delta.xcdatamodeld/Delta 5.xcdatamodel/contents similarity index 100% rename from Delta/Database/Model/Delta.xcdatamodeld/Delta 5.xcdatamodel/contents rename to Sources/Database/Model/Delta.xcdatamodeld/Delta 5.xcdatamodel/contents diff --git a/Delta/Database/Model/Delta.xcdatamodeld/Delta 6.xcdatamodel/contents b/Sources/Database/Model/Delta.xcdatamodeld/Delta 6.xcdatamodel/contents similarity index 100% rename from Delta/Database/Model/Delta.xcdatamodeld/Delta 6.xcdatamodel/contents rename to Sources/Database/Model/Delta.xcdatamodeld/Delta 6.xcdatamodel/contents diff --git a/Delta/Database/Model/Delta.xcdatamodeld/Delta.xcdatamodel/contents b/Sources/Database/Model/Delta.xcdatamodeld/Delta.xcdatamodel/contents similarity index 100% rename from Delta/Database/Model/Delta.xcdatamodeld/Delta.xcdatamodel/contents rename to Sources/Database/Model/Delta.xcdatamodeld/Delta.xcdatamodel/contents diff --git a/Delta/Database/Model/Human/Cheat.swift b/Sources/Database/Model/Human/Cheat.swift similarity index 100% rename from Delta/Database/Model/Human/Cheat.swift rename to Sources/Database/Model/Human/Cheat.swift diff --git a/Delta/Database/Model/Human/ControllerSkin.swift b/Sources/Database/Model/Human/ControllerSkin.swift similarity index 100% rename from Delta/Database/Model/Human/ControllerSkin.swift rename to Sources/Database/Model/Human/ControllerSkin.swift diff --git a/Delta/Database/Model/Human/Game.swift b/Sources/Database/Model/Human/Game.swift similarity index 100% rename from Delta/Database/Model/Human/Game.swift rename to Sources/Database/Model/Human/Game.swift diff --git a/Delta/Database/Model/Human/GameCollection.swift b/Sources/Database/Model/Human/GameCollection.swift similarity index 100% rename from Delta/Database/Model/Human/GameCollection.swift rename to Sources/Database/Model/Human/GameCollection.swift diff --git a/Delta/Database/Model/Human/GameControllerInputMapping.swift b/Sources/Database/Model/Human/GameControllerInputMapping.swift similarity index 100% rename from Delta/Database/Model/Human/GameControllerInputMapping.swift rename to Sources/Database/Model/Human/GameControllerInputMapping.swift diff --git a/Delta/Database/Model/Human/GameSave.swift b/Sources/Database/Model/Human/GameSave.swift similarity index 100% rename from Delta/Database/Model/Human/GameSave.swift rename to Sources/Database/Model/Human/GameSave.swift diff --git a/Sources/Database/Model/Human/SaveState.swift b/Sources/Database/Model/Human/SaveState.swift new file mode 100644 index 000000000..7f4807056 --- /dev/null +++ b/Sources/Database/Model/Human/SaveState.swift @@ -0,0 +1,164 @@ +// +// SaveState.swift +// Delta +// +// Created by Riley Testut on 1/31/16. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +import Foundation + +import DeltaCore +import Harmony + +import struct DeSmuMEDeltaCore.DeSmuME + +@objc public enum SaveStateType: Int16 +{ + case auto + case quick + case general + case locked +} + +@objc(SaveState) +public class SaveState: _SaveState, SaveStateProtocol +{ + public static let localizedDateFormatter: DateFormatter = { + let dateFormatter = DateFormatter() + dateFormatter.timeStyle = .short + dateFormatter.dateStyle = .short + return dateFormatter + }() + + public var fileURL: URL { + let fileURL = DatabaseManager.saveStatesDirectoryURL(for: self.game!).appendingPathComponent(self.filename) + return fileURL + } + + public var imageFileURL: URL { + let imageFilename = (self.filename as NSString).deletingPathExtension + ".png" + let imageFileURL = DatabaseManager.saveStatesDirectoryURL(for: self.game!).appendingPathComponent(imageFilename) + return imageFileURL + } + + public var gameType: GameType { + return self.game!.type + } + + public var localizedName: String { + let localizedName = self.name ?? SaveState.localizedDateFormatter.string(from: self.modifiedDate) + return localizedName + } + + @NSManaged private var primitiveFilename: String + @NSManaged private var primitiveIdentifier: String + @NSManaged private var primitiveCreationDate: Date + @NSManaged private var primitiveModifiedDate: Date + + public override func awakeFromInsert() + { + super.awakeFromInsert() + + let identifier = UUID().uuidString + let date = Date() + + self.primitiveIdentifier = identifier + self.primitiveFilename = identifier + self.primitiveCreationDate = date + self.primitiveModifiedDate = date + } + + public override func prepareForDeletion() + { + super.prepareForDeletion() + + // In rare cases, game may actually be nil if game is corrupted, so we ensure it is non-nil first + guard self.game != nil else { return } + + guard let managedObjectContext = self.managedObjectContext else { return } + + // If a save state with the same identifier is also currently being inserted, Core Data is more than likely resolving a conflict by deleting the previous instance + // In this case, we make sure we DON'T delete the save state file + misc other Core Data relationships, or else we'll just lose all that data + guard !managedObjectContext.insertedObjects.contains(where: { ($0 as? SaveState)?.identifier == self.identifier }) else { return } + + guard FileManager.default.fileExists(atPath: self.fileURL.path) else { return } + + do + { + try FileManager.default.removeItem(at: self.fileURL) + try FileManager.default.removeItem(at: self.imageFileURL) + } + catch + { + print(error) + } + } + + class func fetchRequest(for game: Game, type: SaveStateType) -> NSFetchRequest + { + let predicate = NSPredicate(format: "%K == %@ AND %K == %d", #keyPath(SaveState.game), game, #keyPath(SaveState.type), type.rawValue) + + let fetchRequest: NSFetchRequest = SaveState.fetchRequest() + fetchRequest.predicate = predicate + + return fetchRequest + } +} + +extension SaveState: Syncable +{ + public static var syncablePrimaryKey: AnyKeyPath { + return \SaveState.identifier + } + + public var syncableKeys: Set { + return [\SaveState.creationDate, \SaveState.filename, \SaveState.modifiedDate, \SaveState.name, \SaveState.type, \SaveState.coreIdentifier] + } + + public var syncableFiles: Set { + return [File(identifier: "saveState", fileURL: self.fileURL), File(identifier: "thumbnail", fileURL: self.imageFileURL)] + } + + public var syncableRelationships: Set { + return [\SaveState.game] + } + + public var isSyncingEnabled: Bool { + // self.game may be nil if being downloaded, so don't enforce it. + // guard let identifier = self.game?.identifier else { return false } + + let isSyncingEnabled = (self.type != .auto && self.type != .quick) && (self.game?.identifier != Game.melonDSBIOSIdentifier && self.game?.identifier != Game.melonDSDSiBIOSIdentifier) + return isSyncingEnabled + } + + public var syncableMetadata: [HarmonyMetadataKey : String] { + guard let game = self.game else { return [:] } + return [.gameID: game.identifier, .gameName: game.name, .coreID: self.coreIdentifier].compactMapValues { $0 } + } + + public var syncableLocalizedName: String? { + return self.localizedName + } + + public func awakeFromSync(_ record: AnyRecord) + { + guard self.coreIdentifier == nil else { return } + guard let game = self.game, let system = System(gameType: game.type) else { return } + + if let coreIdentifier = record.remoteMetadata?[.coreID] + { + // SaveState was synced to older version of Delta and lost its coreIdentifier, + // but it remains in the remote metadata so we can reassign it. + self.coreIdentifier = coreIdentifier + } + else + { + switch system + { + case .ds: self.coreIdentifier = DeSmuME.core.identifier // Assume DS save state with nil coreIdentifier is from DeSmuME core. + default: self.coreIdentifier = system.deltaCore.identifier + } + } + } +} diff --git a/Delta/Database/Model/Machine/_Cheat.swift b/Sources/Database/Model/Machine/_Cheat.swift similarity index 100% rename from Delta/Database/Model/Machine/_Cheat.swift rename to Sources/Database/Model/Machine/_Cheat.swift diff --git a/Delta/Database/Model/Machine/_ControllerSkin.swift b/Sources/Database/Model/Machine/_ControllerSkin.swift similarity index 100% rename from Delta/Database/Model/Machine/_ControllerSkin.swift rename to Sources/Database/Model/Machine/_ControllerSkin.swift diff --git a/Delta/Database/Model/Machine/_Game.swift b/Sources/Database/Model/Machine/_Game.swift similarity index 100% rename from Delta/Database/Model/Machine/_Game.swift rename to Sources/Database/Model/Machine/_Game.swift diff --git a/Delta/Database/Model/Machine/_GameCollection.swift b/Sources/Database/Model/Machine/_GameCollection.swift similarity index 100% rename from Delta/Database/Model/Machine/_GameCollection.swift rename to Sources/Database/Model/Machine/_GameCollection.swift diff --git a/Delta/Database/Model/Machine/_GameControllerInputMapping.swift b/Sources/Database/Model/Machine/_GameControllerInputMapping.swift similarity index 100% rename from Delta/Database/Model/Machine/_GameControllerInputMapping.swift rename to Sources/Database/Model/Machine/_GameControllerInputMapping.swift diff --git a/Delta/Database/Model/Machine/_GameSave.swift b/Sources/Database/Model/Machine/_GameSave.swift similarity index 100% rename from Delta/Database/Model/Machine/_GameSave.swift rename to Sources/Database/Model/Machine/_GameSave.swift diff --git a/Delta/Database/Model/Machine/_SaveState.swift b/Sources/Database/Model/Machine/_SaveState.swift similarity index 100% rename from Delta/Database/Model/Machine/_SaveState.swift rename to Sources/Database/Model/Machine/_SaveState.swift diff --git a/Delta/Database/Model/Migrations/Delta2ToDelta3.xcmappingmodel/xcmapping.xml b/Sources/Database/Model/Migrations/Delta2ToDelta3.xcmappingmodel/xcmapping.xml similarity index 100% rename from Delta/Database/Model/Migrations/Delta2ToDelta3.xcmappingmodel/xcmapping.xml rename to Sources/Database/Model/Migrations/Delta2ToDelta3.xcmappingmodel/xcmapping.xml diff --git a/Delta/Database/Model/Migrations/Delta3ToDelta4.xcmappingmodel/xcmapping.xml b/Sources/Database/Model/Migrations/Delta3ToDelta4.xcmappingmodel/xcmapping.xml similarity index 100% rename from Delta/Database/Model/Migrations/Delta3ToDelta4.xcmappingmodel/xcmapping.xml rename to Sources/Database/Model/Migrations/Delta3ToDelta4.xcmappingmodel/xcmapping.xml diff --git a/Delta/Database/Model/Migrations/Delta4ToDelta5.xcmappingmodel/xcmapping.xml b/Sources/Database/Model/Migrations/Delta4ToDelta5.xcmappingmodel/xcmapping.xml similarity index 100% rename from Delta/Database/Model/Migrations/Delta4ToDelta5.xcmappingmodel/xcmapping.xml rename to Sources/Database/Model/Migrations/Delta4ToDelta5.xcmappingmodel/xcmapping.xml diff --git a/Delta/Database/Model/Migrations/Delta5ToDelta6.xcmappingmodel/xcmapping.xml b/Sources/Database/Model/Migrations/Delta5ToDelta6.xcmappingmodel/xcmapping.xml similarity index 100% rename from Delta/Database/Model/Migrations/Delta5ToDelta6.xcmappingmodel/xcmapping.xml rename to Sources/Database/Model/Migrations/Delta5ToDelta6.xcmappingmodel/xcmapping.xml diff --git a/Delta/Database/Model/Migrations/DeltaToDelta2.xcmappingmodel/xcmapping.xml b/Sources/Database/Model/Migrations/DeltaToDelta2.xcmappingmodel/xcmapping.xml similarity index 100% rename from Delta/Database/Model/Migrations/DeltaToDelta2.xcmappingmodel/xcmapping.xml rename to Sources/Database/Model/Migrations/DeltaToDelta2.xcmappingmodel/xcmapping.xml diff --git a/Delta/Database/Model/Migrations/Policies/GameControllerInputMappingMigrationPolicy.swift b/Sources/Database/Model/Migrations/Policies/GameControllerInputMappingMigrationPolicy.swift similarity index 100% rename from Delta/Database/Model/Migrations/Policies/GameControllerInputMappingMigrationPolicy.swift rename to Sources/Database/Model/Migrations/Policies/GameControllerInputMappingMigrationPolicy.swift diff --git a/Delta/Database/Model/Migrations/Policies/SaveStateMigrationPolicy.swift b/Sources/Database/Model/Migrations/Policies/SaveStateMigrationPolicy.swift similarity index 88% rename from Delta/Database/Model/Migrations/Policies/SaveStateMigrationPolicy.swift rename to Sources/Database/Model/Migrations/Policies/SaveStateMigrationPolicy.swift index 5bf53ffa3..74436b5a8 100644 --- a/Delta/Database/Model/Migrations/Policies/SaveStateMigrationPolicy.swift +++ b/Sources/Database/Model/Migrations/Policies/SaveStateMigrationPolicy.swift @@ -10,7 +10,7 @@ import UIKit import DeltaCore -import struct DSDeltaCore.DS +import struct DeSmuMEDeltaCore.DeSmuME @objc(SaveStateToSaveStateMigrationPolicy) class SaveStateToSaveStateMigrationPolicy: NSEntityMigrationPolicy @@ -38,7 +38,7 @@ extension SaveStateToSaveStateMigrationPolicy switch system { - case .ds: return DS.core.identifier // Assume any existing save state is from DeSmuME. + case .ds: return DeSmuME.core.identifier // Assume any existing save state is from DeSmuME. default: return system.deltaCore.identifier } } diff --git a/Delta/Database/Model/Misc/ControllerSkinConfigurations.h b/Sources/Database/Model/Misc/ControllerSkinConfigurations.h similarity index 100% rename from Delta/Database/Model/Misc/ControllerSkinConfigurations.h rename to Sources/Database/Model/Misc/ControllerSkinConfigurations.h diff --git a/Delta/Database/Model/PreviousHarmony.xcdatamodeld/Harmony.xcdatamodel/contents b/Sources/Database/Model/PreviousHarmony.xcdatamodeld/Harmony.xcdatamodel/contents similarity index 100% rename from Delta/Database/Model/PreviousHarmony.xcdatamodeld/Harmony.xcdatamodel/contents rename to Sources/Database/Model/PreviousHarmony.xcdatamodeld/Harmony.xcdatamodel/contents diff --git a/Delta/Database/Model/Transformers/GameControllerInputMappingTransformer.swift b/Sources/Database/Model/Transformers/GameControllerInputMappingTransformer.swift similarity index 100% rename from Delta/Database/Model/Transformers/GameControllerInputMappingTransformer.swift rename to Sources/Database/Model/Transformers/GameControllerInputMappingTransformer.swift diff --git a/Delta/Database/Model/mogenerator/templates/human.swift.motemplate b/Sources/Database/Model/mogenerator/templates/human.swift.motemplate similarity index 100% rename from Delta/Database/Model/mogenerator/templates/human.swift.motemplate rename to Sources/Database/Model/mogenerator/templates/human.swift.motemplate diff --git a/Delta/Database/Model/mogenerator/templates/machine.swift.motemplate b/Sources/Database/Model/mogenerator/templates/machine.swift.motemplate similarity index 100% rename from Delta/Database/Model/mogenerator/templates/machine.swift.motemplate rename to Sources/Database/Model/mogenerator/templates/machine.swift.motemplate diff --git a/Delta/Database/OpenVGDB/GameMetadata.swift b/Sources/Database/OpenVGDB/GameMetadata.swift similarity index 100% rename from Delta/Database/OpenVGDB/GameMetadata.swift rename to Sources/Database/OpenVGDB/GameMetadata.swift diff --git a/Delta/Database/OpenVGDB/GamesDatabase.swift b/Sources/Database/OpenVGDB/GamesDatabase.swift similarity index 100% rename from Delta/Database/OpenVGDB/GamesDatabase.swift rename to Sources/Database/OpenVGDB/GamesDatabase.swift diff --git a/Delta/Database/OpenVGDB/GamesDatabaseBrowserViewController.swift b/Sources/Database/OpenVGDB/GamesDatabaseBrowserViewController.swift similarity index 100% rename from Delta/Database/OpenVGDB/GamesDatabaseBrowserViewController.swift rename to Sources/Database/OpenVGDB/GamesDatabaseBrowserViewController.swift diff --git a/Delta/Deep Linking/CopyDeepLinkActivity.swift b/Sources/Deep Linking/CopyDeepLinkActivity.swift similarity index 100% rename from Delta/Deep Linking/CopyDeepLinkActivity.swift rename to Sources/Deep Linking/CopyDeepLinkActivity.swift diff --git a/Delta/Deep Linking/DeepLink.swift b/Sources/Deep Linking/DeepLink.swift similarity index 100% rename from Delta/Deep Linking/DeepLink.swift rename to Sources/Deep Linking/DeepLink.swift diff --git a/Delta/Deep Linking/DeepLinkController.swift b/Sources/Deep Linking/DeepLinkController.swift similarity index 100% rename from Delta/Deep Linking/DeepLinkController.swift rename to Sources/Deep Linking/DeepLinkController.swift diff --git a/Delta/Emulation/ActionInput.swift b/Sources/Emulation/ActionInput.swift similarity index 100% rename from Delta/Emulation/ActionInput.swift rename to Sources/Emulation/ActionInput.swift diff --git a/Sources/Emulation/GameViewController.swift b/Sources/Emulation/GameViewController.swift new file mode 100644 index 000000000..39a28a485 --- /dev/null +++ b/Sources/Emulation/GameViewController.swift @@ -0,0 +1,1232 @@ +// +// GameViewController.swift +// Delta +// +// Created by Riley Testut on 5/5/15. +// Copyright © 2016 Riley Testut. All rights reserved. +// + +import UIKit + +import DeltaCore +import GBADeltaCore + +import struct DeSmuMEDeltaCore.DeSmuME + +import Roxas + +private var kvoContext = 0 + +private extension DeltaCore.ControllerSkin +{ + func hasTouchScreen(for traits: DeltaCore.ControllerSkin.Traits) -> Bool + { + let hasTouchScreen = self.items(for: traits)?.contains(where: { $0.kind == .touchScreen }) ?? false + return hasTouchScreen + } +} + +private extension GameViewController +{ + struct PausedSaveState: SaveStateProtocol + { + var fileURL: URL + var gameType: GameType + + var isSaved = false + + init(fileURL: URL, gameType: GameType) + { + self.fileURL = fileURL + self.gameType = gameType + } + } + + struct DefaultInputMapping: GameControllerInputMappingProtocol + { + let gameController: GameController + + var gameControllerInputType: GameControllerInputType { + return self.gameController.inputType + } + + func input(forControllerInput controllerInput: Input) -> Input? + { + if let mappedInput = self.gameController.defaultInputMapping?.input(forControllerInput: controllerInput) + { + return mappedInput + } + + // Only intercept controller skin inputs. + guard controllerInput.type == .controller(.controllerSkin) else { return nil } + + let actionInput = ActionInput(stringValue: controllerInput.stringValue) + return actionInput + } + } + + struct SustainInputsMapping: GameControllerInputMappingProtocol + { + let gameController: GameController + + var gameControllerInputType: GameControllerInputType { + return self.gameController.inputType + } + + func input(forControllerInput controllerInput: Input) -> Input? + { + if let mappedInput = self.gameController.defaultInputMapping?.input(forControllerInput: controllerInput), mappedInput == StandardGameControllerInput.menu + { + return mappedInput + } + + return controllerInput + } + } +} + +class GameViewController: DeltaCore.GameViewController +{ + /// Assumed to be Delta.Game instance + override var game: GameProtocol? { + willSet { + self.emulatorCore?.removeObserver(self, forKeyPath: #keyPath(EmulatorCore.state), context: &kvoContext) + + let game = self.game as? Game + NotificationCenter.default.removeObserver(self, name: .NSManagedObjectContextDidSave, object: game?.managedObjectContext) + } + didSet { + self.emulatorCore?.addObserver(self, forKeyPath: #keyPath(EmulatorCore.state), options: [.old], context: &kvoContext) + + let game = self.game as? Game + NotificationCenter.default.addObserver(self, selector: #selector(GameViewController.managedObjectContextDidChange(with:)), name: .NSManagedObjectContextObjectsDidChange, object: game?.managedObjectContext) + + self.emulatorCore?.saveHandler = { [weak self] _ in self?.updateGameSave() } + + if oldValue?.fileURL != game?.fileURL + { + self.shouldResetSustainedInputs = true + } + + self.updateControllers() + + self.presentedGyroAlert = false + } + } + + //MARK: - Private Properties - + private var pauseViewController: PauseViewController? + private var pausingGameController: GameController? + + // Prevents the same save state from being saved multiple times + private var pausedSaveState: PausedSaveState? { + didSet + { + if let saveState = oldValue, self.pausedSaveState == nil + { + do + { + try FileManager.default.removeItem(at: saveState.fileURL) + } + catch + { + print(error) + } + } + } + } + + private var _deepLinkResumingSaveState: SaveStateProtocol? { + didSet { + guard let saveState = oldValue, _deepLinkResumingSaveState == nil else { return } + + do + { + try FileManager.default.removeItem(at: saveState.fileURL) + } + catch + { + print(error) + } + } + } + + private var _isLoadingSaveState = false + + // Sustain Buttons + private var isSelectingSustainedButtons = false + private var sustainInputsMapping: SustainInputsMapping? + private var shouldResetSustainedInputs = false + + private var sustainButtonsContentView: UIView! + private var sustainButtonsBlurView: UIVisualEffectView! + private var sustainButtonsBackgroundView: RSTPlaceholderView! + private var inputsToSustain = [AnyInput: Double]() + + private var isGyroActive = false + private var presentedGyroAlert = false + + override var shouldAutorotate: Bool { + return !self.isGyroActive + } + + override var preferredScreenEdgesDeferringSystemGestures: UIRectEdge { + return .all + } + + required init() + { + super.init() + + self.initialize() + } + + required init?(coder aDecoder: NSCoder) + { + super.init(coder: aDecoder) + + self.initialize() + } + + private func initialize() + { + self.delegate = self + + NotificationCenter.default.addObserver(self, selector: #selector(GameViewController.updateControllers), name: .externalGameControllerDidConnect, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(GameViewController.updateControllers), name: .externalGameControllerDidDisconnect, object: nil) + + NotificationCenter.default.addObserver(self, selector: #selector(GameViewController.didEnterBackground(with:)), name: UIApplication.didEnterBackgroundNotification, object: UIApplication.shared) + + NotificationCenter.default.addObserver(self, selector: #selector(GameViewController.settingsDidChange(with:)), name: .settingsDidChange, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(GameViewController.deepLinkControllerLaunchGame(with:)), name: .deepLinkControllerLaunchGame, object: nil) + + NotificationCenter.default.addObserver(self, selector: #selector(GameViewController.didActivateGyro(with:)), name: GBA.didActivateGyroNotification, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(GameViewController.didDeactivateGyro(with:)), name: GBA.didDeactivateGyroNotification, object: nil) + + NotificationCenter.default.addObserver(self, selector: #selector(GameViewController.emulationDidQuit(with:)), name: EmulatorCore.emulationDidQuitNotification, object: nil) + } + + deinit + { + self.emulatorCore?.removeObserver(self, forKeyPath: #keyPath(EmulatorCore.state), context: &kvoContext) + } + + // MARK: - GameControllerReceiver - + override func gameController(_ gameController: GameController, didActivate input: Input, value: Double) + { + super.gameController(gameController, didActivate: input, value: value) + + if self.isSelectingSustainedButtons + { + guard let pausingGameController = self.pausingGameController, gameController == pausingGameController else { return } + + if input != StandardGameControllerInput.menu + { + self.inputsToSustain[AnyInput(input)] = value + } + } + else if let emulatorCore = self.emulatorCore, emulatorCore.state == .running + { + guard let actionInput = ActionInput(input: input) else { return } + + switch actionInput + { + case .quickSave: self.performQuickSaveAction() + case .quickLoad: self.performQuickLoadAction() + case .fastForward: self.performFastForwardAction(activate: true) + case .toggleFastForward: + let isFastForwarding = (emulatorCore.rate != emulatorCore.deltaCore.supportedRates.lowerBound) + self.performFastForwardAction(activate: !isFastForwarding) + } + } + } + + override func gameController(_ gameController: GameController, didDeactivate input: Input) + { + super.gameController(gameController, didDeactivate: input) + + if self.isSelectingSustainedButtons + { + if input.isContinuous + { + self.inputsToSustain[AnyInput(input)] = nil + } + } + else + { + guard let actionInput = ActionInput(input: input) else { return } + + switch actionInput + { + case .quickSave: break + case .quickLoad: break + case .fastForward: self.performFastForwardAction(activate: false) + case .toggleFastForward: break + } + } + } +} + + +//MARK: - UIViewController - +/// UIViewController +extension GameViewController +{ + override func viewDidLoad() + { + super.viewDidLoad() + + // Lays out self.gameView, so we can pin self.sustainButtonsContentView to it without resulting in a temporary "cannot satisfy constraints". + self.view.layoutIfNeeded() + + self.controllerView.translucentControllerSkinOpacity = Settings.translucentControllerSkinOpacity + + self.sustainButtonsContentView = UIView(frame: CGRect(x: 0, y: 0, width: self.gameView.bounds.width, height: self.gameView.bounds.height)) + self.sustainButtonsContentView.translatesAutoresizingMaskIntoConstraints = false + self.sustainButtonsContentView.isHidden = true + self.view.insertSubview(self.sustainButtonsContentView, aboveSubview: self.gameView) + + let blurEffect = UIBlurEffect(style: .dark) + let vibrancyEffect = UIVibrancyEffect(blurEffect: blurEffect) + + self.sustainButtonsBlurView = UIVisualEffectView(effect: blurEffect) + self.sustainButtonsBlurView.frame = CGRect(x: 0, y: 0, width: self.sustainButtonsContentView.bounds.width, height: self.sustainButtonsContentView.bounds.height) + self.sustainButtonsBlurView.autoresizingMask = [.flexibleWidth, .flexibleHeight] + self.sustainButtonsContentView.addSubview(self.sustainButtonsBlurView) + + let vibrancyView = UIVisualEffectView(effect: vibrancyEffect) + vibrancyView.frame = CGRect(x: 0, y: 0, width: self.sustainButtonsBlurView.contentView.bounds.width, height: self.sustainButtonsBlurView.contentView.bounds.height) + vibrancyView.autoresizingMask = [.flexibleWidth, .flexibleHeight] + self.sustainButtonsBlurView.contentView.addSubview(vibrancyView) + + self.sustainButtonsBackgroundView = RSTPlaceholderView(frame: CGRect(x: 0, y: 0, width: vibrancyView.contentView.bounds.width, height: vibrancyView.contentView.bounds.height)) + self.sustainButtonsBackgroundView.autoresizingMask = [.flexibleWidth, .flexibleHeight] + self.sustainButtonsBackgroundView.textLabel.text = NSLocalizedString("Select Buttons to Hold Down", comment: "") + self.sustainButtonsBackgroundView.textLabel.numberOfLines = 1 + self.sustainButtonsBackgroundView.textLabel.minimumScaleFactor = 0.5 + self.sustainButtonsBackgroundView.textLabel.adjustsFontSizeToFitWidth = true + self.sustainButtonsBackgroundView.detailTextLabel.text = NSLocalizedString("Press the Menu button when finished.", comment: "") + self.sustainButtonsBackgroundView.alpha = 0.0 + vibrancyView.contentView.addSubview(self.sustainButtonsBackgroundView) + + // Auto Layout + self.sustainButtonsContentView.leadingAnchor.constraint(equalTo: self.gameView.leadingAnchor).isActive = true + self.sustainButtonsContentView.trailingAnchor.constraint(equalTo: self.gameView.trailingAnchor).isActive = true + self.sustainButtonsContentView.topAnchor.constraint(equalTo: self.gameView.topAnchor).isActive = true + self.sustainButtonsContentView.bottomAnchor.constraint(equalTo: self.gameView.bottomAnchor).isActive = true + + self.updateControllers() + } + + override func viewDidAppear(_ animated: Bool) + { + super.viewDidAppear(animated) + + if self.emulatorCore?.deltaCore == DeSmuME.core, UserDefaults.standard.desmumeDeprecatedAlertCount < 3 + { + let toastView = RSTToastView(text: NSLocalizedString("DeSmuME Core Deprecated", comment: ""), detailText: NSLocalizedString("Switch to the melonDS core in Settings for latest improvements.", comment: "")) + self.show(toastView, duration: 5.0) + + UserDefaults.standard.desmumeDeprecatedAlertCount += 1 + } + } + + override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) + { + super.viewWillTransition(to: size, with: coordinator) + + coordinator.animate(alongsideTransition: { (context) in + self.updateControllerSkin() + }, completion: nil) + } + + // MARK: - Segues + /// KVO + + override func prepare(for segue: UIStoryboardSegue, sender: Any?) + { + guard let identifier = segue.identifier else { return } + + switch identifier + { + case "showGamesViewController": + let gamesViewController = (segue.destination as! UINavigationController).topViewController as! GamesViewController + + if let emulatorCore = self.emulatorCore + { + gamesViewController.theme = .translucent + gamesViewController.activeEmulatorCore = emulatorCore + + self.updateAutoSaveState() + } + else + { + gamesViewController.theme = .opaque + } + + case "pause": + + if let game = self.game + { + let fileURL = FileManager.default.uniqueTemporaryURL() + self.pausedSaveState = PausedSaveState(fileURL: fileURL, gameType: game.type) + + self.emulatorCore?.saveSaveState(to: fileURL) + } + + guard let gameController = sender as? GameController else { + fatalError("sender for pauseSegue must be the game controller that pressed the Menu button") + } + + self.pausingGameController = gameController + + let pauseViewController = segue.destination as! PauseViewController + pauseViewController.pauseText = (self.game as? Game)?.name ?? NSLocalizedString("Delta", comment: "") + pauseViewController.emulatorCore = self.emulatorCore + pauseViewController.saveStatesViewControllerDelegate = self + pauseViewController.cheatsViewControllerDelegate = self + + pauseViewController.fastForwardItem?.isSelected = (self.emulatorCore?.rate != self.emulatorCore?.deltaCore.supportedRates.lowerBound) + pauseViewController.fastForwardItem?.action = { [unowned self] item in + self.performFastForwardAction(activate: item.isSelected) + } + + pauseViewController.sustainButtonsItem?.isSelected = gameController.sustainedInputs.count > 0 + pauseViewController.sustainButtonsItem?.action = { [unowned self, unowned pauseViewController] item in + + for input in gameController.sustainedInputs.keys + { + gameController.unsustain(input) + } + + if item.isSelected + { + self.showSustainButtonView() + pauseViewController.dismiss() + } + + // Re-set gameController as pausingGameController. + self.pausingGameController = gameController + } + + switch self.game?.type + { + case .n64? where !UIDevice.current.hasA9ProcessorOrBetter: + // A8 processors and earlier aren't powerful enough to run N64 games faster than 1x speed. + pauseViewController.fastForwardItem = nil + + case .ds? where self.emulatorCore?.deltaCore == DeSmuME.core: + // Cheats are not supported by DeSmuME core. + pauseViewController.cheatCodesItem = nil + + case .ds? where !UIDevice.current.hasA9ProcessorOrBetter: + // A8 processors and earlier aren't powerful enough to run DS games faster than 1x speed. + pauseViewController.fastForwardItem = nil + + default: break + } + + self.pauseViewController = pauseViewController + + default: break + } + } + + @IBAction private func unwindFromPauseViewController(_ segue: UIStoryboardSegue) + { + self.pauseViewController = nil + self.pausingGameController = nil + + guard let identifier = segue.identifier else { return } + + switch identifier + { + case "unwindFromPauseMenu": + + self.pausedSaveState = nil + + DispatchQueue.main.async { + + if self._isLoadingSaveState + { + // If loading save state, resume emulation immediately (since the game view needs to be updated ASAP) + + if self.resumeEmulation() + { + // Temporarily disable audioManager to prevent delayed audio bug when using 3D Touch Peek & Pop + self.emulatorCore?.audioManager.isEnabled = false + + // Re-enable after delay + + DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { + self.emulatorCore?.audioManager.isEnabled = true + } + } + } + else + { + // Otherwise, wait for the transition to complete before resuming emulation + self.transitionCoordinator?.animate(alongsideTransition: nil, completion: { (context) in + self.resumeEmulation() + }) + } + + self._isLoadingSaveState = false + } + + case "unwindToGames": + DispatchQueue.main.async { + self.transitionCoordinator?.animate(alongsideTransition: nil, completion: { (context) in + self.performSegue(withIdentifier: "showGamesViewController", sender: nil) + }) + } + + default: break + } + } + + @IBAction private func unwindFromGamesViewController(with segue: UIStoryboardSegue) + { + self.pausedSaveState = nil + + if let emulatorCore = self.emulatorCore, emulatorCore.state == .paused + { + emulatorCore.resume() + } + } + + // MARK: - KVO + /// KVO + override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) + { + guard context == &kvoContext else { return super.observeValue(forKeyPath: keyPath, of: object, change: change, context: context) } + + guard let rawValue = change?[.oldKey] as? Int, let previousState = EmulatorCore.State(rawValue: rawValue) else { return } + + if let saveState = _deepLinkResumingSaveState, let emulatorCore = self.emulatorCore, emulatorCore.state == .running + { + emulatorCore.pause() + + do + { + try emulatorCore.load(saveState) + } + catch + { + print(error) + } + + _deepLinkResumingSaveState = nil + emulatorCore.resume() + } + + if previousState == .stopped + { + self.emulatorCore?.updateCheats() + } + + if self.emulatorCore?.state == .running + { + DatabaseManager.shared.performBackgroundTask { (context) in + guard let game = self.game as? Game else { return } + + let backgroundGame = context.object(with: game.objectID) as! Game + backgroundGame.playedDate = Date() + + context.saveWithErrorLogging() + } + } + } +} + +//MARK: - Controllers - +private extension GameViewController +{ + @objc func updateControllers() + { + let isExternalGameControllerConnected = ExternalGameControllerManager.shared.connectedControllers.contains(where: { $0.playerIndex != nil }) + if !isExternalGameControllerConnected && Settings.localControllerPlayerIndex == nil + { + Settings.localControllerPlayerIndex = 0 + } + + // If Settings.localControllerPlayerIndex is non-nil, and there isn't a connected controller with same playerIndex, show controller view. + if let index = Settings.localControllerPlayerIndex, !ExternalGameControllerManager.shared.connectedControllers.contains(where: { $0.playerIndex == index }) + { + self.controllerView.playerIndex = index + self.controllerView.isHidden = false + } + else + { + if let game = self.game, + let traits = self.controllerView.controllerSkinTraits, + let controllerSkin = DeltaCore.ControllerSkin.standardControllerSkin(for: game.type), + controllerSkin.hasTouchScreen(for: traits) + { + self.controllerView.isHidden = false + self.controllerView.playerIndex = 0 + } + else + { + self.controllerView.isHidden = true + self.controllerView.playerIndex = nil + } + + Settings.localControllerPlayerIndex = nil + } + + self.view.setNeedsLayout() + self.view.layoutIfNeeded() + + // Roundabout way of combining arrays to prevent rare runtime crash in + operator :( + var controllers = [GameController]() + controllers.append(self.controllerView) + controllers.append(contentsOf: ExternalGameControllerManager.shared.connectedControllers) + + if let emulatorCore = self.emulatorCore, let game = self.game + { + for gameController in controllers + { + if gameController.playerIndex != nil + { + let inputMapping: GameControllerInputMappingProtocol + + if let mapping = GameControllerInputMapping.inputMapping(for: gameController, gameType: game.type, in: DatabaseManager.shared.viewContext) + { + inputMapping = mapping + } + else + { + inputMapping = DefaultInputMapping(gameController: gameController) + } + + gameController.addReceiver(self, inputMapping: inputMapping) + gameController.addReceiver(emulatorCore, inputMapping: inputMapping) + } + else + { + gameController.removeReceiver(self) + gameController.removeReceiver(emulatorCore) + } + } + } + + if self.shouldResetSustainedInputs + { + for controller in controllers + { + for input in controller.sustainedInputs.keys + { + controller.unsustain(input) + } + } + + self.shouldResetSustainedInputs = false + } + + self.controllerView.isButtonHapticFeedbackEnabled = Settings.isButtonHapticFeedbackEnabled + self.controllerView.isThumbstickHapticFeedbackEnabled = Settings.isThumbstickHapticFeedbackEnabled + + self.updateControllerSkin() + } + + func updateControllerSkin() + { + guard let game = self.game as? Game, let window = self.view.window else { return } + + let traits = DeltaCore.ControllerSkin.Traits.defaults(for: window) + + if Settings.localControllerPlayerIndex != nil + { + let controllerSkin = Settings.preferredControllerSkin(for: game, traits: traits) + self.controllerView.controllerSkin = controllerSkin + } + else if let controllerSkin = DeltaCore.ControllerSkin.standardControllerSkin(for: game.type), controllerSkin.hasTouchScreen(for: traits) + { + var touchControllerSkin = TouchControllerSkin(controllerSkin: controllerSkin) + touchControllerSkin.layoutGuide = self.view.safeAreaLayoutGuide + + switch traits.orientation + { + case .portrait: touchControllerSkin.screenLayoutAxis = .vertical + case .landscape: touchControllerSkin.screenLayoutAxis = .horizontal + } + + self.controllerView.controllerSkin = touchControllerSkin + } + + self.view.setNeedsLayout() + } +} + +//MARK: - Game Saves - +/// Game Saves +private extension GameViewController +{ + func updateGameSave() + { + guard let game = self.game as? Game else { return } + + DatabaseManager.shared.performBackgroundTask { (context) in + do + { + let game = context.object(with: game.objectID) as! Game + + let hash = try RSTHasher.sha1HashOfFile(at: game.gameSaveURL) + let previousHash = game.gameSaveURL.extendedAttribute(name: "com.rileytestut.delta.sha1Hash") + + guard hash != previousHash else { return } + + if let gameSave = game.gameSave + { + gameSave.modifiedDate = Date() + } + else + { + let gameSave = GameSave(context: context) + gameSave.identifier = game.identifier + game.gameSave = gameSave + } + + try context.save() + try game.gameSaveURL.setExtendedAttribute(name: "com.rileytestut.delta.sha1Hash", value: hash) + } + catch CocoaError.fileNoSuchFile + { + // Ignore + } + catch + { + print("Error updating game save.", error) + } + } + } +} + +//MARK: - Save States - +/// Save States +extension GameViewController: SaveStatesViewControllerDelegate +{ + private func updateAutoSaveState() + { + // Ensures game is non-nil and also a Game subclass + guard let game = self.game as? Game else { return } + + guard let emulatorCore = self.emulatorCore, emulatorCore.state != .stopped else { return } + + // If pausedSaveState exists and has already been saved, don't update auto save state + // This prevents us from filling our auto save state slots with the same save state + let savedPausedSaveState = self.pausedSaveState?.isSaved ?? false + guard !savedPausedSaveState else { return } + + self.pausedSaveState?.isSaved = true + + // Must be done synchronously + let backgroundContext = DatabaseManager.shared.newBackgroundContext() + backgroundContext.performAndWait { + + let game = backgroundContext.object(with: game.objectID) as! Game + + let fetchRequest = SaveState.fetchRequest(for: game, type: .auto) + fetchRequest.sortDescriptors = [NSSortDescriptor(key: #keyPath(SaveState.creationDate), ascending: true)] + + do + { + let saveStates = try fetchRequest.execute() + + if let saveState = saveStates.first, saveStates.count >= 2 + { + // If there are two or more auto save states, update the oldest one + self.update(saveState, with: self.pausedSaveState) + + // Tiny hack: SaveStatesViewController sorts save states by creation date, so we update the creation date too + // Simpler than deleting old save states ¯\_(ツ)_/¯ + saveState.creationDate = saveState.modifiedDate + } + else + { + // Otherwise, create a new one + let saveState = SaveState.insertIntoManagedObjectContext(backgroundContext) + saveState.type = .auto + saveState.game = game + + self.update(saveState, with: self.pausedSaveState) + } + } + catch + { + print(error) + } + + backgroundContext.saveWithErrorLogging() + } + } + + private func update(_ saveState: SaveState, with replacementSaveState: SaveStateProtocol? = nil) + { + let isRunning = (self.emulatorCore?.state == .running) + + if isRunning + { + self.pauseEmulation() + } + + if let replacementSaveState = replacementSaveState + { + do + { + if FileManager.default.fileExists(atPath: saveState.fileURL.path) + { + // Don't use replaceItem(), since that removes the original file as well + try FileManager.default.removeItem(at: saveState.fileURL) + } + + try FileManager.default.copyItem(at: replacementSaveState.fileURL, to: saveState.fileURL) + } + catch + { + print(error) + } + } + else + { + self.emulatorCore?.saveSaveState(to: saveState.fileURL) + } + + if let snapshot = self.emulatorCore?.videoManager.snapshot(), let data = snapshot.pngData() + { + do + { + try data.write(to: saveState.imageFileURL, options: [.atomicWrite]) + } + catch + { + print(error) + } + } + + saveState.modifiedDate = Date() + saveState.coreIdentifier = self.emulatorCore?.deltaCore.identifier + + if isRunning + { + self.resumeEmulation() + } + } + + private func load(_ saveState: SaveStateProtocol) + { + let isRunning = (self.emulatorCore?.state == .running) + + if isRunning + { + self.pauseEmulation() + } + + // If we're loading the auto save state, we need to create a temporary copy of saveState. + // Then, we update the auto save state, but load our copy so everything works out. + var temporarySaveState: SaveStateProtocol? = nil + + if let autoSaveState = saveState as? SaveState, autoSaveState.type == .auto + { + let temporaryURL = FileManager.default.uniqueTemporaryURL() + + do + { + try FileManager.default.moveItem(at: saveState.fileURL, to: temporaryURL) + temporarySaveState = DeltaCore.SaveState(fileURL: temporaryURL, gameType: saveState.gameType) + } + catch + { + print(error) + } + } + + self.updateAutoSaveState() + + do + { + if let temporarySaveState = temporarySaveState + { + try self.emulatorCore?.load(temporarySaveState) + try FileManager.default.removeItem(at: temporarySaveState.fileURL) + } + else + { + try self.emulatorCore?.load(saveState) + } + } + catch EmulatorCore.SaveStateError.doesNotExist + { + print("Save State does not exist.") + } + catch let error as NSError + { + print(error) + } + + if isRunning + { + self.resumeEmulation() + } + } + + //MARK: - SaveStatesViewControllerDelegate + + func saveStatesViewController(_ saveStatesViewController: SaveStatesViewController, updateSaveState saveState: SaveState) + { + let updatingExistingSaveState = FileManager.default.fileExists(atPath: saveState.fileURL.path) + + self.update(saveState) + + // Dismiss if updating an existing save state. + // If creating a new one, don't dismiss. + if updatingExistingSaveState + { + self.pauseViewController?.dismiss() + } + } + + func saveStatesViewController(_ saveStatesViewController: SaveStatesViewController, loadSaveState saveState: SaveStateProtocol) + { + self._isLoadingSaveState = true + + self.load(saveState) + + self.pauseViewController?.dismiss() + } +} + +//MARK: - Cheats - +/// Cheats +extension GameViewController: CheatsViewControllerDelegate +{ + func cheatsViewController(_ cheatsViewController: CheatsViewController, activateCheat cheat: Cheat) + { + self.emulatorCore?.activateCheatWithErrorLogging(cheat) + } + + func cheatsViewController(_ cheatsViewController: CheatsViewController, deactivateCheat cheat: Cheat) + { + self.emulatorCore?.deactivate(cheat) + } +} + +//MARK: - Sustain Buttons - +private extension GameViewController +{ + func showSustainButtonView() + { + guard let gameController = self.pausingGameController else { return } + + self.isSelectingSustainedButtons = true + + let sustainInputsMapping = SustainInputsMapping(gameController: gameController) + gameController.addReceiver(self, inputMapping: sustainInputsMapping) + + let blurEffect = self.sustainButtonsBlurView.effect + self.sustainButtonsBlurView.effect = nil + + self.sustainButtonsContentView.isHidden = false + + UIView.animate(withDuration: 0.4) { + self.sustainButtonsBlurView.effect = blurEffect + self.sustainButtonsBackgroundView.alpha = 1.0 + } + } + + func hideSustainButtonView() + { + guard let gameController = self.pausingGameController else { return } + + self.isSelectingSustainedButtons = false + + self.updateControllers() + self.sustainInputsMapping = nil + + // Activate all sustained inputs, since they will now be mapped to game inputs. + for (input, value) in self.inputsToSustain + { + gameController.sustain(input, value: value) + } + + let blurEffect = self.sustainButtonsBlurView.effect + + UIView.animate(withDuration: 0.4, animations: { + self.sustainButtonsBlurView.effect = nil + self.sustainButtonsBackgroundView.alpha = 0.0 + }) { (finished) in + self.sustainButtonsContentView.isHidden = true + self.sustainButtonsBlurView.effect = blurEffect + } + + self.inputsToSustain = [:] + } +} + +//MARK: - Action Inputs - +/// Action Inputs +extension GameViewController +{ + func performQuickSaveAction() + { + guard let game = self.game as? Game else { return } + + let backgroundContext = DatabaseManager.shared.newBackgroundContext() + backgroundContext.performAndWait { + + let game = backgroundContext.object(with: game.objectID) as! Game + let fetchRequest = SaveState.fetchRequest(for: game, type: .quick) + + do + { + if let quickSaveState = try fetchRequest.execute().first + { + self.update(quickSaveState) + } + else + { + let saveState = SaveState(context: backgroundContext) + saveState.type = .quick + saveState.game = game + + self.update(saveState) + } + } + catch + { + print(error) + } + + backgroundContext.saveWithErrorLogging() + } + } + + func performQuickLoadAction() + { + guard let game = self.game as? Game else { return } + + let fetchRequest = SaveState.fetchRequest(for: game, type: .quick) + + do + { + if let quickSaveState = try DatabaseManager.shared.viewContext.fetch(fetchRequest).first + { + self.load(quickSaveState) + } + } + catch + { + print(error) + } + } + + func performFastForwardAction(activate: Bool) + { + guard let emulatorCore = self.emulatorCore else { return } + + if activate + { + emulatorCore.rate = emulatorCore.deltaCore.supportedRates.upperBound + } + else + { + emulatorCore.rate = emulatorCore.deltaCore.supportedRates.lowerBound + } + } +} + +//MARK: - GameViewControllerDelegate - +/// GameViewControllerDelegate +extension GameViewController: GameViewControllerDelegate +{ + func gameViewController(_ gameViewController: DeltaCore.GameViewController, handleMenuInputFrom gameController: GameController) + { + if let pausingGameController = self.pausingGameController + { + guard pausingGameController == gameController else { return } + } + + if self.isSelectingSustainedButtons + { + self.hideSustainButtonView() + } + + if let pauseViewController = self.pauseViewController, !self.isSelectingSustainedButtons + { + pauseViewController.dismiss() + } + else if self.presentedViewController == nil + { + self.pauseEmulation() + self.performSegue(withIdentifier: "pause", sender: gameController) + } + } + + func gameViewControllerShouldResumeEmulation(_ gameViewController: DeltaCore.GameViewController) -> Bool + { + var result = false + + rst_dispatch_sync_on_main_thread { + result = (self.presentedViewController == nil || self.presentedViewController?.isDisappearing == true) && !self.isSelectingSustainedButtons && self.view.window != nil + } + + return result + } +} + +private extension GameViewController +{ + func show(_ toastView: RSTToastView, duration: TimeInterval = 3.0) + { + toastView.textLabel.textAlignment = .center + toastView.presentationEdge = .top + toastView.show(in: self.view, duration: duration) + } +} + +//MARK: - Notifications - +private extension GameViewController +{ + @objc func didEnterBackground(with notification: Notification) + { + self.updateAutoSaveState() + } + + @objc func managedObjectContextDidChange(with notification: Notification) + { + guard let deletedObjects = notification.userInfo?[NSDeletedObjectsKey] as? Set else { return } + guard let game = self.game as? Game else { return } + + if deletedObjects.contains(game) + { + self.emulatorCore?.gameViews.forEach { $0.inputImage = nil } + self.game = nil + } + } + + @objc func settingsDidChange(with notification: Notification) + { + guard let settingsName = notification.userInfo?[Settings.NotificationUserInfoKey.name] as? Settings.Name else { return } + + switch settingsName + { + case .localControllerPlayerIndex, .isButtonHapticFeedbackEnabled, .isThumbstickHapticFeedbackEnabled: + self.updateControllers() + + case .preferredControllerSkin: + guard + let system = notification.userInfo?[Settings.NotificationUserInfoKey.system] as? System, + let traits = notification.userInfo?[Settings.NotificationUserInfoKey.traits] as? DeltaCore.ControllerSkin.Traits + else { return } + + if system.gameType == self.game?.type && traits.orientation == self.controllerView.controllerSkinTraits?.orientation + { + self.updateControllerSkin() + } + + case .translucentControllerSkinOpacity: self.controllerView.translucentControllerSkinOpacity = Settings.translucentControllerSkinOpacity + + case .syncingService: break + } + } + + @objc func deepLinkControllerLaunchGame(with notification: Notification) + { + guard let game = notification.userInfo?[DeepLink.Key.game] as? Game else { return } + + let previousGame = self.game + self.game = game + + if let pausedSaveState = self.pausedSaveState, game == (previousGame as? Game) + { + // Launching current game via deep link, so we store a copy of the paused save state to resume when emulator core is started. + + do + { + let temporaryURL = FileManager.default.uniqueTemporaryURL() + try FileManager.default.copyItem(at: pausedSaveState.fileURL, to: temporaryURL) + + _deepLinkResumingSaveState = DeltaCore.SaveState(fileURL: temporaryURL, gameType: game.type) + } + catch + { + print(error) + } + } + + if let pauseViewController = self.pauseViewController + { + let segue = UIStoryboardSegue(identifier: "unwindFromPauseMenu", source: pauseViewController, destination: self) + self.unwindFromPauseViewController(segue) + } + else if + let navigationController = self.presentedViewController as? UINavigationController, + let pageViewController = navigationController.topViewController?.children.first as? UIPageViewController, + let gameCollectionViewController = pageViewController.viewControllers?.first as? GameCollectionViewController + { + let segue = UIStoryboardSegue(identifier: "unwindFromGames", source: gameCollectionViewController, destination: self) + self.unwindFromGamesViewController(with: segue) + } + + self.dismiss(animated: true, completion: nil) + } + + @objc func didActivateGyro(with notification: Notification) + { + self.isGyroActive = true + + guard !self.presentedGyroAlert else { return } + + self.presentedGyroAlert = true + + func presentToastView() + { + let toastView = RSTToastView(text: NSLocalizedString("Autorotation Disabled", comment: ""), detailText: NSLocalizedString("Pause game to change orientation.", comment: "")) + self.show(toastView) + } + + DispatchQueue.main.async { + if let transitionCoordinator = self.transitionCoordinator + { + transitionCoordinator.animate(alongsideTransition: nil) { (context) in + presentToastView() + } + } + else + { + presentToastView() + } + } + } + + @objc func didDeactivateGyro(with notification: Notification) + { + self.isGyroActive = false + } + + @objc func emulationDidQuit(with notification: Notification) + { + DispatchQueue.main.async { + guard self.presentedViewController == nil else { return } + + // Wait for emulation to stop completely before performing segue. + var token: NSKeyValueObservation? + token = self.emulatorCore?.observe(\.state, options: [.initial]) { (emulatorCore, change) in + guard emulatorCore.state == .stopped else { return } + + DispatchQueue.main.async { + self.game = nil + self.performSegue(withIdentifier: "showGamesViewController", sender: nil) + } + + token?.invalidate() + } + } + } +} + +private extension UserDefaults +{ + @NSManaged var desmumeDeprecatedAlertCount: Int +} diff --git a/Delta/Emulation/PreviewGameViewController.swift b/Sources/Emulation/PreviewGameViewController.swift similarity index 100% rename from Delta/Emulation/PreviewGameViewController.swift rename to Sources/Emulation/PreviewGameViewController.swift diff --git a/Delta/Extensions/Bundle+SwizzleBundleID.swift b/Sources/Extensions/Bundle+SwizzleBundleID.swift similarity index 100% rename from Delta/Extensions/Bundle+SwizzleBundleID.swift rename to Sources/Extensions/Bundle+SwizzleBundleID.swift diff --git a/Delta/Extensions/ControllerSkin+Configuring.swift b/Sources/Extensions/ControllerSkin+Configuring.swift similarity index 100% rename from Delta/Extensions/ControllerSkin+Configuring.swift rename to Sources/Extensions/ControllerSkin+Configuring.swift diff --git a/Delta/Extensions/EmulatorCore+Cheats.swift b/Sources/Extensions/EmulatorCore+Cheats.swift similarity index 100% rename from Delta/Extensions/EmulatorCore+Cheats.swift rename to Sources/Extensions/EmulatorCore+Cheats.swift diff --git a/Delta/Extensions/HarmonyMetadataKey+Keys.swift b/Sources/Extensions/HarmonyMetadataKey+Keys.swift similarity index 100% rename from Delta/Extensions/HarmonyMetadataKey+Keys.swift rename to Sources/Extensions/HarmonyMetadataKey+Keys.swift diff --git a/Delta/Extensions/Input+Display.swift b/Sources/Extensions/Input+Display.swift similarity index 100% rename from Delta/Extensions/Input+Display.swift rename to Sources/Extensions/Input+Display.swift diff --git a/Delta/Extensions/NSFetchedResultsController+Conveniences.h b/Sources/Extensions/NSFetchedResultsController+Conveniences.h similarity index 100% rename from Delta/Extensions/NSFetchedResultsController+Conveniences.h rename to Sources/Extensions/NSFetchedResultsController+Conveniences.h diff --git a/Delta/Extensions/NSFetchedResultsController+Conveniences.m b/Sources/Extensions/NSFetchedResultsController+Conveniences.m similarity index 100% rename from Delta/Extensions/NSFetchedResultsController+Conveniences.m rename to Sources/Extensions/NSFetchedResultsController+Conveniences.m diff --git a/Delta/Extensions/NSManagedObject+Conveniences.swift b/Sources/Extensions/NSManagedObject+Conveniences.swift similarity index 100% rename from Delta/Extensions/NSManagedObject+Conveniences.swift rename to Sources/Extensions/NSManagedObject+Conveniences.swift diff --git a/Delta/Extensions/NSManagedObjectContext+Conveniences.swift b/Sources/Extensions/NSManagedObjectContext+Conveniences.swift similarity index 100% rename from Delta/Extensions/NSManagedObjectContext+Conveniences.swift rename to Sources/Extensions/NSManagedObjectContext+Conveniences.swift diff --git a/Delta/Extensions/UIAlertController+Error.swift b/Sources/Extensions/UIAlertController+Error.swift similarity index 100% rename from Delta/Extensions/UIAlertController+Error.swift rename to Sources/Extensions/UIAlertController+Error.swift diff --git a/Delta/Extensions/UIAlertController+Importing.swift b/Sources/Extensions/UIAlertController+Importing.swift similarity index 100% rename from Delta/Extensions/UIAlertController+Importing.swift rename to Sources/Extensions/UIAlertController+Importing.swift diff --git a/Delta/Extensions/UIColor+Delta.swift b/Sources/Extensions/UIColor+Delta.swift similarity index 100% rename from Delta/Extensions/UIColor+Delta.swift rename to Sources/Extensions/UIColor+Delta.swift diff --git a/Delta/Extensions/UIDevice+Processor.swift b/Sources/Extensions/UIDevice+Processor.swift similarity index 100% rename from Delta/Extensions/UIDevice+Processor.swift rename to Sources/Extensions/UIDevice+Processor.swift diff --git a/Delta/Extensions/UIImage+SymbolFallback.swift b/Sources/Extensions/UIImage+SymbolFallback.swift similarity index 100% rename from Delta/Extensions/UIImage+SymbolFallback.swift rename to Sources/Extensions/UIImage+SymbolFallback.swift diff --git a/Delta/Extensions/UILabel+FontSize.swift b/Sources/Extensions/UILabel+FontSize.swift similarity index 100% rename from Delta/Extensions/UILabel+FontSize.swift rename to Sources/Extensions/UILabel+FontSize.swift diff --git a/Delta/Extensions/UIView+ParentViewController.swift b/Sources/Extensions/UIView+ParentViewController.swift similarity index 100% rename from Delta/Extensions/UIView+ParentViewController.swift rename to Sources/Extensions/UIView+ParentViewController.swift diff --git a/Delta/Extensions/UIViewControllerContextTransitioning+Conveniences.swift b/Sources/Extensions/UIViewControllerContextTransitioning+Conveniences.swift similarity index 100% rename from Delta/Extensions/UIViewControllerContextTransitioning+Conveniences.swift rename to Sources/Extensions/UIViewControllerContextTransitioning+Conveniences.swift diff --git a/Delta/Extensions/URL+ExtendedAttributes.swift b/Sources/Extensions/URL+ExtendedAttributes.swift similarity index 100% rename from Delta/Extensions/URL+ExtendedAttributes.swift rename to Sources/Extensions/URL+ExtendedAttributes.swift diff --git a/Delta/Game Selection/GameCollectionViewController.swift b/Sources/Game Selection/GameCollectionViewController.swift similarity index 100% rename from Delta/Game Selection/GameCollectionViewController.swift rename to Sources/Game Selection/GameCollectionViewController.swift diff --git a/Delta/Game Selection/GamesViewController.swift b/Sources/Game Selection/GamesViewController.swift similarity index 100% rename from Delta/Game Selection/GamesViewController.swift rename to Sources/Game Selection/GamesViewController.swift diff --git a/Delta/Game Selection/Segues/GamesPresentationController.swift b/Sources/Game Selection/Segues/GamesPresentationController.swift similarity index 100% rename from Delta/Game Selection/Segues/GamesPresentationController.swift rename to Sources/Game Selection/Segues/GamesPresentationController.swift diff --git a/Delta/Game Selection/Segues/GamesStoryboardSegue.swift b/Sources/Game Selection/Segues/GamesStoryboardSegue.swift similarity index 100% rename from Delta/Game Selection/Segues/GamesStoryboardSegue.swift rename to Sources/Game Selection/Segues/GamesStoryboardSegue.swift diff --git a/Delta/Game Selection/Segues/InitialGamesStoryboardSegue.swift b/Sources/Game Selection/Segues/InitialGamesStoryboardSegue.swift similarity index 100% rename from Delta/Game Selection/Segues/InitialGamesStoryboardSegue.swift rename to Sources/Game Selection/Segues/InitialGamesStoryboardSegue.swift diff --git a/Delta/Game Selection/Segues/SaveStatesStoryboardSegue.swift b/Sources/Game Selection/Segues/SaveStatesStoryboardSegue.swift similarity index 100% rename from Delta/Game Selection/Segues/SaveStatesStoryboardSegue.swift rename to Sources/Game Selection/Segues/SaveStatesStoryboardSegue.swift diff --git a/Delta/Importing/Import Options/ClipboardImportOption.swift b/Sources/Importing/Import Options/ClipboardImportOption.swift similarity index 100% rename from Delta/Importing/Import Options/ClipboardImportOption.swift rename to Sources/Importing/Import Options/ClipboardImportOption.swift diff --git a/Delta/Importing/Import Options/GamesDatabaseImportOption.swift b/Sources/Importing/Import Options/GamesDatabaseImportOption.swift similarity index 100% rename from Delta/Importing/Import Options/GamesDatabaseImportOption.swift rename to Sources/Importing/Import Options/GamesDatabaseImportOption.swift diff --git a/Delta/Importing/Import Options/PhotoLibraryImportOption.swift b/Sources/Importing/Import Options/PhotoLibraryImportOption.swift similarity index 100% rename from Delta/Importing/Import Options/PhotoLibraryImportOption.swift rename to Sources/Importing/Import Options/PhotoLibraryImportOption.swift diff --git a/Delta/Importing/Import Options/iTunesImportOption.swift b/Sources/Importing/Import Options/iTunesImportOption.swift similarity index 100% rename from Delta/Importing/Import Options/iTunesImportOption.swift rename to Sources/Importing/Import Options/iTunesImportOption.swift diff --git a/Delta/Importing/ImportController.swift b/Sources/Importing/ImportController.swift similarity index 100% rename from Delta/Importing/ImportController.swift rename to Sources/Importing/ImportController.swift diff --git a/Delta/Importing/ImportOption.swift b/Sources/Importing/ImportOption.swift similarity index 100% rename from Delta/Importing/ImportOption.swift rename to Sources/Importing/ImportOption.swift diff --git a/Delta/Launch/LaunchViewController.swift b/Sources/Launch/LaunchViewController.swift similarity index 100% rename from Delta/Launch/LaunchViewController.swift rename to Sources/Launch/LaunchViewController.swift diff --git a/Delta/Pause Menu/Cheats/CheatTableViewCell.swift b/Sources/Pause Menu/Cheats/CheatTableViewCell.swift similarity index 100% rename from Delta/Pause Menu/Cheats/CheatTableViewCell.swift rename to Sources/Pause Menu/Cheats/CheatTableViewCell.swift diff --git a/Delta/Pause Menu/Cheats/CheatTextView.swift b/Sources/Pause Menu/Cheats/CheatTextView.swift similarity index 100% rename from Delta/Pause Menu/Cheats/CheatTextView.swift rename to Sources/Pause Menu/Cheats/CheatTextView.swift diff --git a/Delta/Pause Menu/Cheats/CheatValidator.swift b/Sources/Pause Menu/Cheats/CheatValidator.swift similarity index 100% rename from Delta/Pause Menu/Cheats/CheatValidator.swift rename to Sources/Pause Menu/Cheats/CheatValidator.swift diff --git a/Delta/Pause Menu/Cheats/CheatsViewController.swift b/Sources/Pause Menu/Cheats/CheatsViewController.swift similarity index 100% rename from Delta/Pause Menu/Cheats/CheatsViewController.swift rename to Sources/Pause Menu/Cheats/CheatsViewController.swift diff --git a/Delta/Pause Menu/Cheats/EditCheatViewController.swift b/Sources/Pause Menu/Cheats/EditCheatViewController.swift similarity index 100% rename from Delta/Pause Menu/Cheats/EditCheatViewController.swift rename to Sources/Pause Menu/Cheats/EditCheatViewController.swift diff --git a/Delta/Pause Menu/GridMenuViewController.swift b/Sources/Pause Menu/GridMenuViewController.swift similarity index 100% rename from Delta/Pause Menu/GridMenuViewController.swift rename to Sources/Pause Menu/GridMenuViewController.swift diff --git a/Delta/Pause Menu/MenuItem.swift b/Sources/Pause Menu/MenuItem.swift similarity index 100% rename from Delta/Pause Menu/MenuItem.swift rename to Sources/Pause Menu/MenuItem.swift diff --git a/Delta/Pause Menu/PauseViewController.swift b/Sources/Pause Menu/PauseViewController.swift similarity index 100% rename from Delta/Pause Menu/PauseViewController.swift rename to Sources/Pause Menu/PauseViewController.swift diff --git a/Delta/Pause Menu/Presentation Controller/PausePresentationController.swift b/Sources/Pause Menu/Presentation Controller/PausePresentationController.swift similarity index 100% rename from Delta/Pause Menu/Presentation Controller/PausePresentationController.swift rename to Sources/Pause Menu/Presentation Controller/PausePresentationController.swift diff --git a/Delta/Pause Menu/Save States/SaveStatesCollectionHeaderView.swift b/Sources/Pause Menu/Save States/SaveStatesCollectionHeaderView.swift similarity index 100% rename from Delta/Pause Menu/Save States/SaveStatesCollectionHeaderView.swift rename to Sources/Pause Menu/Save States/SaveStatesCollectionHeaderView.swift diff --git a/Delta/Pause Menu/Save States/SaveStatesViewController.swift b/Sources/Pause Menu/Save States/SaveStatesViewController.swift similarity index 100% rename from Delta/Pause Menu/Save States/SaveStatesViewController.swift rename to Sources/Pause Menu/Save States/SaveStatesViewController.swift diff --git a/Delta/Pause Menu/Segues/PauseStoryboardSegue.swift b/Sources/Pause Menu/Segues/PauseStoryboardSegue.swift similarity index 100% rename from Delta/Pause Menu/Segues/PauseStoryboardSegue.swift rename to Sources/Pause Menu/Segues/PauseStoryboardSegue.swift diff --git a/Delta/Pause Menu/Segues/PauseTransitionCoordinator.swift b/Sources/Pause Menu/Segues/PauseTransitionCoordinator.swift similarity index 100% rename from Delta/Pause Menu/Segues/PauseTransitionCoordinator.swift rename to Sources/Pause Menu/Segues/PauseTransitionCoordinator.swift diff --git a/Delta/Settings/App Icon Shortcuts/AppIconShortcutsViewController.swift b/Sources/Settings/App Icon Shortcuts/AppIconShortcutsViewController.swift similarity index 100% rename from Delta/Settings/App Icon Shortcuts/AppIconShortcutsViewController.swift rename to Sources/Settings/App Icon Shortcuts/AppIconShortcutsViewController.swift diff --git a/Delta/Settings/Controller Skins/ControllerSkinTableViewCell.swift b/Sources/Settings/Controller Skins/ControllerSkinTableViewCell.swift similarity index 100% rename from Delta/Settings/Controller Skins/ControllerSkinTableViewCell.swift rename to Sources/Settings/Controller Skins/ControllerSkinTableViewCell.swift diff --git a/Delta/Settings/Controller Skins/ControllerSkinsViewController.swift b/Sources/Settings/Controller Skins/ControllerSkinsViewController.swift similarity index 100% rename from Delta/Settings/Controller Skins/ControllerSkinsViewController.swift rename to Sources/Settings/Controller Skins/ControllerSkinsViewController.swift diff --git a/Delta/Settings/Controller Skins/PreferredControllerSkinsViewController.swift b/Sources/Settings/Controller Skins/PreferredControllerSkinsViewController.swift similarity index 100% rename from Delta/Settings/Controller Skins/PreferredControllerSkinsViewController.swift rename to Sources/Settings/Controller Skins/PreferredControllerSkinsViewController.swift diff --git a/Delta/Settings/Controllers/ControllerInputsViewController.swift b/Sources/Settings/Controllers/ControllerInputsViewController.swift similarity index 100% rename from Delta/Settings/Controllers/ControllerInputsViewController.swift rename to Sources/Settings/Controllers/ControllerInputsViewController.swift diff --git a/Delta/Settings/Controllers/ControllersSettingsViewController.swift b/Sources/Settings/Controllers/ControllersSettingsViewController.swift similarity index 100% rename from Delta/Settings/Controllers/ControllersSettingsViewController.swift rename to Sources/Settings/Controllers/ControllersSettingsViewController.swift diff --git a/Delta/Settings/Controllers/InputCalloutView.swift b/Sources/Settings/Controllers/InputCalloutView.swift similarity index 100% rename from Delta/Settings/Controllers/InputCalloutView.swift rename to Sources/Settings/Controllers/InputCalloutView.swift diff --git a/Delta/Settings/Cores/MelonDSCoreSettingsViewController.swift b/Sources/Settings/Cores/MelonDSCoreSettingsViewController.swift similarity index 98% rename from Delta/Settings/Cores/MelonDSCoreSettingsViewController.swift rename to Sources/Settings/Cores/MelonDSCoreSettingsViewController.swift index 7da3a225f..e8f5bf600 100644 --- a/Delta/Settings/Cores/MelonDSCoreSettingsViewController.swift +++ b/Sources/Settings/Cores/MelonDSCoreSettingsViewController.swift @@ -13,7 +13,7 @@ import MobileCoreServices import DeltaCore import MelonDSDeltaCore -import struct DSDeltaCore.DS +import struct DeSmuMEDeltaCore.DeSmuME import Roxas @@ -155,10 +155,10 @@ private extension MelonDSCoreSettingsViewController { let alertController = UIAlertController(title: NSLocalizedString("Change Emulator Core", comment: ""), message: NSLocalizedString("Save states are not compatible between different emulator cores. Make sure to use in-game saves in order to keep using your save data.\n\nYour existing save states will not be deleted and will be available whenever you switch cores again.", comment: ""), preferredStyle: .actionSheet) - var desmumeActionTitle = DS.core.metadata?.name.value ?? DS.core.name + var desmumeActionTitle = DeSmuME.core.metadata?.name.value ?? DeSmuME.core.name var melonDSActionTitle = MelonDS.core.metadata?.name.value ?? MelonDS.core.name - if Settings.preferredCore(for: .ds) == DS.core + if Settings.preferredCore(for: .ds) == DeSmuME.core { desmumeActionTitle += " ✓" } @@ -168,7 +168,7 @@ private extension MelonDSCoreSettingsViewController } alertController.addAction(UIAlertAction(title: desmumeActionTitle, style: .default, handler: { (action) in - Settings.setPreferredCore(DS.core, for: .ds) + Settings.setPreferredCore(DeSmuME.core, for: .ds) self.tableView.reloadData() })) diff --git a/Delta/Settings/LicensesViewController.swift b/Sources/Settings/LicensesViewController.swift similarity index 100% rename from Delta/Settings/LicensesViewController.swift rename to Sources/Settings/LicensesViewController.swift diff --git a/Delta/Settings/Settings.swift b/Sources/Settings/Settings.swift similarity index 99% rename from Delta/Settings/Settings.swift rename to Sources/Settings/Settings.swift index 7e462f75d..aa813ffd5 100644 --- a/Delta/Settings/Settings.swift +++ b/Sources/Settings/Settings.swift @@ -10,7 +10,7 @@ import Foundation import DeltaCore -import struct DSDeltaCore.DS +import struct DeSmuMEDeltaCore.DeSmuME import Roxas @@ -60,7 +60,7 @@ struct Settings #keyPath(UserDefaults.isButtonHapticFeedbackEnabled): true, #keyPath(UserDefaults.isThumbstickHapticFeedbackEnabled): true, #keyPath(UserDefaults.sortSaveStatesByOldestFirst): true, - Settings.preferredCoreSettingsKey(for: .ds): DS.core.identifier] as [String : Any] + Settings.preferredCoreSettingsKey(for: .ds): DeSmuME.core.identifier] as [String : Any] UserDefaults.standard.register(defaults: defaults) } } diff --git a/Delta/Settings/SettingsViewController.swift b/Sources/Settings/SettingsViewController.swift similarity index 100% rename from Delta/Settings/SettingsViewController.swift rename to Sources/Settings/SettingsViewController.swift diff --git a/Delta/Settings/Syncing/GameSyncStatusViewController.swift b/Sources/Settings/Syncing/GameSyncStatusViewController.swift similarity index 100% rename from Delta/Settings/Syncing/GameSyncStatusViewController.swift rename to Sources/Settings/Syncing/GameSyncStatusViewController.swift diff --git a/Delta/Settings/Syncing/RecordSyncStatusViewController.swift b/Sources/Settings/Syncing/RecordSyncStatusViewController.swift similarity index 100% rename from Delta/Settings/Syncing/RecordSyncStatusViewController.swift rename to Sources/Settings/Syncing/RecordSyncStatusViewController.swift diff --git a/Delta/Settings/Syncing/RecordVersionsViewController.swift b/Sources/Settings/Syncing/RecordVersionsViewController.swift similarity index 100% rename from Delta/Settings/Syncing/RecordVersionsViewController.swift rename to Sources/Settings/Syncing/RecordVersionsViewController.swift diff --git a/Delta/Settings/Syncing/SyncStatusViewController.swift b/Sources/Settings/Syncing/SyncStatusViewController.swift similarity index 100% rename from Delta/Settings/Syncing/SyncStatusViewController.swift rename to Sources/Settings/Syncing/SyncStatusViewController.swift diff --git a/Delta/Settings/Syncing/SyncingServicesViewController.swift b/Sources/Settings/Syncing/SyncingServicesViewController.swift similarity index 100% rename from Delta/Settings/Syncing/SyncingServicesViewController.swift rename to Sources/Settings/Syncing/SyncingServicesViewController.swift diff --git a/Delta/Syncing/SyncManager.swift b/Sources/Syncing/SyncManager.swift similarity index 100% rename from Delta/Syncing/SyncManager.swift rename to Sources/Syncing/SyncManager.swift diff --git a/Delta/Syncing/SyncResultViewController.swift b/Sources/Syncing/SyncResultViewController.swift similarity index 100% rename from Delta/Syncing/SyncResultViewController.swift rename to Sources/Syncing/SyncResultViewController.swift diff --git a/Delta/Systems/DeltaCoreProtocol+Delta.swift b/Sources/Systems/DeltaCoreProtocol+Delta.swift similarity index 93% rename from Delta/Systems/DeltaCoreProtocol+Delta.swift rename to Sources/Systems/DeltaCoreProtocol+Delta.swift index bad62a568..67294becf 100644 --- a/Delta/Systems/DeltaCoreProtocol+Delta.swift +++ b/Sources/Systems/DeltaCoreProtocol+Delta.swift @@ -12,11 +12,11 @@ import NESDeltaCore import SNESDeltaCore import GBCDeltaCore import GBADeltaCore -import N64DeltaCore +import Mupen64PlusDeltaCore import MelonDSDeltaCore // Legacy Cores -import struct DSDeltaCore.DS +import struct DeSmuMEDeltaCore.DeSmuME @dynamicMemberLookup struct DeltaCoreMetadata @@ -66,8 +66,8 @@ extension DeltaCoreProtocol case SNES.core: return 1...4 case GBC.core: return 1...4 case GBA.core: return 1...3 - case N64.core: return 1...3 - case DS.core: return 1...3 + case Mupen64Plus.core: return 1...3 + case DeSmuME.core: return 1...3 case MelonDS.core: return 1...2 default: return 1...2 } @@ -76,7 +76,7 @@ extension DeltaCoreProtocol var metadata: DeltaCoreMetadata? { switch self { - case DS.core: + case DeSmuME.core: return DeltaCoreMetadata([.name: .init(value: NSLocalizedString("DeSmuME (Legacy)", comment: ""), url: URL(string: "http://desmume.org")), .developer: .init(value: NSLocalizedString("DeSmuME team", comment: ""), url: URL(string: "https://wiki.desmume.org/index.php?title=DeSmuME:About")), .source: .init(value: NSLocalizedString("GitHub", comment: ""), url: URL(string: "https://github.com/TASVideos/desmume"))]) diff --git a/Delta/Systems/System.swift b/Sources/Systems/System.swift similarity index 93% rename from Delta/Systems/System.swift rename to Sources/Systems/System.swift index 7d65ce18f..1f2311340 100644 --- a/Delta/Systems/System.swift +++ b/Sources/Systems/System.swift @@ -12,11 +12,11 @@ import SNESDeltaCore import GBADeltaCore import GBCDeltaCore import NESDeltaCore -import N64DeltaCore +import Mupen64PlusDeltaCore import MelonDSDeltaCore // Legacy Cores -import struct DSDeltaCore.DS +import struct DeSmuMEDeltaCore.DeSmuME enum System: CaseIterable { @@ -33,7 +33,7 @@ enum System: CaseIterable } static var allCores: [DeltaCoreProtocol] { - return [NES.core, SNES.core, N64.core, GBC.core, GBA.core, DS.core, MelonDS.core] + return [NES.core, SNES.core, Mupen64Plus.core, GBC.core, GBA.core, DeSmuME.core, MelonDS.core] } } @@ -83,7 +83,7 @@ extension System { case .nes: return NES.core case .snes: return SNES.core - case .n64: return N64.core + case .n64: return Mupen64Plus.core case .gbc: return GBC.core case .gba: return GBA.core case .ds: return Settings.preferredCore(for: .ds) ?? MelonDS.core diff --git a/Delta/Theming/Theme.swift b/Sources/Theming/Theme.swift similarity index 100% rename from Delta/Theming/Theme.swift rename to Sources/Theming/Theme.swift