[
  {
    "path": ".gitignore",
    "content": "#########################\n# .gitignore file for Xcode4 / OS X Source projects\n#\n# NB: if you are storing \"built\" products, this WILL NOT WORK,\n#   and you should use a different .gitignore (or none at all)\n# This file is for SOURCE projects, where there are many extra\n#   files that we want to exclude\n#\n# For updates, see: http://stackoverflow.com/questions/49478/git-ignore-file-for-xcode-projects\n#########################\n\n#####\n# OS X temporary files that should never be committed\n\n.DS_Store\n*.swp\nprofile\n*.ipa\n*.mobileprovision\nPayload/\nTLocationPlugin.framework/\n\n####\n# Xcode temporary files that should never be committed\n#\n# NB: NIB/XIB files still exist even on Storyboard projects, so we want this...\n\n*~.nib\n\n\n####\n# Xcode build files -\n#\n# NB: slash on the end, so we only remove the FOLDER, not any files that were badly named \"DerivedData\"\n\nDerivedData/\n\n# NB: slash on the end, so we only remove the FOLDER, not any files that were badly named \"build\"\n\nbuild/\n\n\n#####\n# Xcode private settings (window sizes, bookmarks, breakpoints, custom executables, smart groups)\n#\n# This is complicated:\n#\n# SOMETIMES you need to put this file in version control.\n# Apple designed it poorly - if you use \"custom executables\", they are\n#  saved in this file.\n# 99% of projects do NOT use those, so they do NOT want to version control this file.\n#  ..but if you're in the 1%, comment out the line \"*.pbxuser\"\n\n*.pbxuser\n*.mode1v3\n*.mode2v3\n*.perspectivev3\n#    NB: also, whitelist the default ones, some projects need to use these\n!default.pbxuser\n!default.mode1v3\n!default.mode2v3\n!default.perspectivev3\n\n\n####\n# Xcode 4 - semi-personal settings, often included in workspaces\n#\n# You can safely ignore the xcuserdata files - but do NOT ignore the files next to them\n#\n\nxcuserdata\n\n####\n# XCode 4 workspaces - more detailed\n#\n# Workspaces are important! They are a core feature of Xcode - don't exclude them :)\n#\n# Workspace layout is quite spammy. For reference:\n#\n# (root)/\n#   (project-name).xcodeproj/\n#     project.pbxproj\n#     project.xcworkspace/\n#       contents.xcworkspacedata\n#       xcuserdata/\n#         (your name)/xcuserdatad/\n#     xcuserdata/\n#       (your name)/xcuserdatad/\n#\n#\n#\n# Xcode 4 workspaces - SHARED\n#\n# This is UNDOCUMENTED (google: \"developer.apple.com xcshareddata\" - 0 results\n# But if you're going to kill personal workspaces, at least keep the shared ones...\n#\n#\n!xcshareddata\n\n####\n# XCode 4 build-schemes\n#\n# PRIVATE ones are stored inside xcuserdata\n!xcschemes\n\n####\n# Xcode 4 - Deprecated classes\n#\n# Allegedly, if you manually \"deprecate\" your classes, they get moved here.\n#\n# We're using source-control, so this is a \"feature\" that we do not want!\n\n*.moved-aside\n\n\n####\n# UNKNOWN: recommended by others, but I can't discover what these files are\n#\n# ...none. Everything is now explained.\n\n*.svn\n*.xccheckout\n!Podfile.lock\nPods/\n*.xcscmblueprint\n.idea/\n.vscode/\n.atom/\ninfer-out/\n*.ast.sh"
  },
  {
    "path": "README.md",
    "content": "### TLocationPlugin\n\n> iOS 版本企业微信等软件虚拟定位，仅为个人学习 hook 以及移植非越狱手机实验（防hook 以及验证签名的App没有针对性处理）\n\n### 功能\n\n- [x] 设置定位信息\n\n- [x] 保存当前地点定位信息\n\n- [x] 地图搜索地点保存定位信息\n\n- [x] 多个定位地点缓存\n\n- [x] 设置是否 toast 提示定位信息\n\n- [x] 更改 App 图标（iOS 13 暂未处理）\n\n## 使用方法\n\n- 依赖 `python3`处理 APP 图标, `pip3 install -r requirements.txt`\n\n- 编译内部修改版本的`yololib`， 并将生成的 `yololib` 文件移动到`/usr/local/bin/`目录下(或者其他 PATH 目录内，可命令行执行 yololib 命令即可)\n\n- 使用 [frida-ios-dump](https://github.com/AloneMonkey/frida-ios-dump)从越狱手机中 dump 出 ipa 文件，改名为`appname_origin.ipa` (`appname`为解压 App 后Payload 中.app 的名称，如企业微信为 wework_origin.ipa)\n\n- 修改 `RunScript`文件夹中`env.sh`的环境变量`APP_NAME`和`BINARY_NAME`，`APP_NAME`是 App ipa 文件名(去除 `_origin.ipa`部分) ，`BINARY_NAME`是.app 中主二进制 target 名称(如企业微信都为 wework)\n\n- Xcode运行 `RunScript` target (`Generic iOS Device`)\n\n- 生成的文件为`appname_new.ipa`(如企业微信为 wework_new.ipa)\n\n- 生成的 ipa 没有签名，可以使用 [fastlane](https://github.com/fastlane/fastlane) 进行重签名，重签名之后就可以安装到未越狱手机上了\n\n- 安装之后，点击五次 App 的 Window (最好点击 NavigationBar)，会打开定位设置界面\n\n## 示例\n\n- 设置定位界面\n\n<img src=\"./img/1.jpeg\" alt=\"选择虚拟定位\" style=\"zoom:20%;\" />\n\n- 添加位置界面\n\n<img src=\"./img/2.jpeg\" alt=\"添加位置\" style=\"zoom:20%;\" />\n\n- 设置界面\n\n<img src=\"./img/3.jpeg\" alt=\"设置\" style=\"zoom:20%;\" />\n\n- 使用界面\n\n<img src=\"./img/4.jpeg\" alt=\"App使用\" style=\"zoom:20%;\" />\n\n\n\n"
  },
  {
    "path": "RunScript/build_all.sh",
    "content": "#!/usr/bin/env zsh --login\n\nset -ex\n\nCUR_DIR=$(realpath $(dirname \"$0\"))\n\nsource \"$CUR_DIR/env.sh\"\n\nUNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/${CONFIGURATION}-universal\n\n# make sure the output directory exists\nmkdir -p \"${UNIVERSAL_OUTPUTFOLDER}\"\n\n# Step 1. Build Device and Simulator versions\nxcodebuild -target \"${FRAMEWORK_NAME}\" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphoneos  BUILD_DIR=\"${BUILD_DIR}\" BUILD_ROOT=\"${BUILD_ROOT}\" clean build\nxcodebuild -target \"${FRAMEWORK_NAME}\" ONLY_ACTIVE_ARCH=NO -configuration ${CONFIGURATION} -sdk iphonesimulator BUILD_DIR=\"${BUILD_DIR}\" BUILD_ROOT=\"${BUILD_ROOT}\" clean build\n\n# Step 2. Copy the framework structure (from iphoneos build) to the universal folder\ncp -R \"${BUILD_DIR}/${CONFIGURATION}-iphoneos/${FRAMEWORK_NAME}.framework\" \"${UNIVERSAL_OUTPUTFOLDER}/\"\n\n# Step 3. Copy Swift modules from iphonesimulator build (if it exists) to the copied framework directory\nSIMULATOR_SWIFT_MODULES_DIR=\"${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${FRAMEWORK_NAME}.framework/Modules/${FRAMEWORK_NAME}.swiftmodule/.\"\nif [ -d \"${SIMULATOR_SWIFT_MODULES_DIR}\" ]; then\n    cp -R \"${SIMULATOR_SWIFT_MODULES_DIR}\" \"${UNIVERSAL_OUTPUTFOLDER}/${FRAMEWORK_NAME}.framework/Modules/${FRAMEWORK_NAME}.swiftmodule\"\nfi\n\n# Step 4. Create universal binary file using lipo and place the combined executable in the copied framework directory\nSIMULATOR_FRAMEWORK_PATH=\"${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${FRAMEWORK_NAME}.framework/${FRAMEWORK_NAME}\"\nlipo -create -output \"${UNIVERSAL_OUTPUTFOLDER}/${FRAMEWORK_NAME}.framework/${FRAMEWORK_NAME}\"      \\\n    \"${BUILD_DIR}/${CONFIGURATION}-iphoneos/${FRAMEWORK_NAME}.framework/${FRAMEWORK_NAME}\"          \n#    \"${BUILD_DIR}/${CONFIGURATION}-iphonesimulator/${FRAMEWORK_NAME}.framework/${FRAMEWORK_NAME}\"   \\\n    \n\n# Step 5. Convenience step to copy the framework to the project's directory\ncp -R \"${UNIVERSAL_OUTPUTFOLDER}/${FRAMEWORK_NAME}.framework\" \"${PROJECT_DIR}\"\n\n# Step 6. strip\nstrip -ur \"${PROJECT_DIR}/${FRAMEWORK_NAME}.framework/${FRAMEWORK_NAME}\"\n\n# Step 7. show nm\nnm \"${PROJECT_DIR}/${FRAMEWORK_NAME}.framework/${FRAMEWORK_NAME}\"\n\n# Step 8. Convenience step to open the project's directory in Finder\nrm -rf build\n\nset +ex\n"
  },
  {
    "path": "RunScript/devices_arm_info.sh",
    "content": "#!/usr/bin/env zsh --login\n\n# arm64 Support\nexport ARM64_DEVICES=\\\n'\n\"iPhone6,1\",\n\"iPhone6,2\",\n\"iPhone7,1\",\n\"iPhone7,2\",\n\"iPhone8,1\",\n\"iPhone8,2\",\n\"iPhone8,4\",\n\"iPhone9,1\",\n\"iPhone9,2\",\n\"iPhone9,3\",\n\"iPhone9,4\",\n\"iPhone10,1\",\n\"iPhone10,2\",\n\"iPhone10,3\",\n\"iPhone10,4\",\n\"iPhone10,5\",\n\"iPhone10,6\",\n\"iPhone11,2\",\n\"iPhone11,4\",\n\"iPhone11,6\",\n\"iPhone11,8\",\n\"iPad4,1\",\n\"iPad4,2\",\n\"iPad4,3\",\n\"iPad4,4\",\n\"iPad4,5\",\n\"iPad4,6\",\n\"iPad4,7\",\n\"iPad4,8\",\n\"iPad4,9\",\n\"iPad5,1\",\n\"iPad5,2\",\n\"iPad5,3\",\n\"iPad5,4\",\n\"iPad6,3\",\n\"iPad6,4\",\n\"iPad6,7\",\n\"iPad6,8\",\n\"iPad6,11\",\n\"iPad6,12\",\n\"iPad7,1\",\n\"iPad7,2\",\n\"iPad7,3\",\n\"iPad7,4\",\n\"iPad7,5\",\n\"iPad7,6\",\n\"iPad8,1\",\n\"iPad8,2\",\n\"iPad8,3\",\n\"iPad8,4\",\n\"iPad8,5\",\n\"iPad8,6\",\n\"iPad8,7\",\n\"iPad8,8\",\n\"iPad11,1\",\n\"iPad11,2\",\n\"iPad11,3\",\n\"iPad11,4\",\n\"iPod7,1\",\n'\n\n# armv7 Support\nexport ARMV7_DEVICES=\\\n'\n\"iPhone2,1\",\n\"iPhone3,1\",\n\"iPhone3,2\",\n\"iPhone3,3\",\n\"iPhone4,1\",\n\"iPhone5,1\",\n\"iPhone5,2\",\n\"iPhone5,3\",\n\"iPhone5,4\",\n\"iPad1,1\",\n\"iPad1,2\",\n\"iPad2,1\",\n\"iPad2,2\",\n\"iPad2,3\",\n\"iPad2,4\",\n\"iPad2,5\",\n\"iPad2,6\",\n\"iPad2,7\",\n\"iPad3,1\",\n\"iPad3,2\",\n\"iPad3,3\",\n\"iPad3,4\",\n\"iPad3,5\",\n\"iPad3,6\",\n\"iPod3,1\",\n\"iPod4,1\",\n\"iPod5,1\",\n'\n"
  },
  {
    "path": "RunScript/env.sh",
    "content": "#!/usr/bin/env zsh --login\n\n# Base Dir\nBASEDIR=$(realpath \"${PROJECT_DIR}\")\n\n# 注入 framework 名称\nexport FRAMEWORK_NAME=\"TLocationPlugin\"\n\n# App 包名\nexport APP_NAME=\"wework\"\n\n# 二进制文件名称\nexport BINARY_NAME=\"wework\"\n\n# Payload Path\nexport PAYLOAD_PATH=\"${BASEDIR}/Payload\"\n\n# App 包根目录\nexport APP_CONTENT_PATH=\"${PAYLOAD_PATH}/${BINARY_NAME}.app\"\n\n# 默认 App icon 图片名称\nexport PRIMARY_ICON_NAME=\"\"\n"
  },
  {
    "path": "RunScript/inject.sh",
    "content": "#!/usr/bin/env zsh --login\n\nset -ex\n\nCUR_DIR=$(realpath $(dirname \"$0\"))\n\nsource \"$CUR_DIR/devices_arm_info.sh\"\nsource \"$CUR_DIR/env.sh\"\n\n\nORIGIN_APP_NAME=\"${APP_NAME}_origin.ipa\"\nNEW_APP_NAME=\"${APP_NAME}_new.ipa\"\n\n# clean\nrm -rf \"$PAYLOAD_PATH\"\n\n# unzip & copy Framework\nunzip \"${ORIGIN_APP_NAME}\"\nFRAMEWORKS_PATH=\"${APP_CONTENT_PATH}/Frameworks\"\nif [ ! -d \"${FRAMEWORKS_PATH}\" ]; then\n    mkdir -p \"${FRAMEWORKS_PATH}\"\nfi\ncp -rf \"${FRAMEWORK_NAME}.framework\" \"${FRAMEWORKS_PATH}\"\n\n# inject\npushd . > /dev/null\n\ncd \"${APP_CONTENT_PATH}\"\n\n# 修改支持的机型\n#BINARY_INFO=`file ${BINARY_NAME}`\n#SUPPORTED_DEVICE_LIST=\"\"\n#echo $ARM64_DEVICES\n#echo $ARMV7_DEVICES\n#\n#if [[ \"${BINARY_INFO}\" =~ \"arm64\" ]]; then\n#    SUPPORTED_DEVICE_LIST=\"${SUPPORTED_DEVICE_LIST}${ARM64_DEVICES}\"\n#fi\n#\n#if [[ \"${BINARY_INFO}\" =~ \"armv7\" ]]; then\n#    SUPPORTED_DEVICE_LIST=\"${SUPPORTED_DEVICE_LIST}${ARMV7_DEVICES}\"\n#fi\n\nPLIST_FILE_PATH=\"${APP_CONTENT_PATH}/Info.plist\"\nplutil -remove UISupportedDevices Info.plist\n#plutil -replace UISupportedDevices -json \"[${SUPPORTED_DEVICE_LIST}]\" \"${PLIST_FILE_PATH}\"\n#plutil -p \"${PLIST_FILE_PATH}\"\n\n# 注入动态库\nyololib \"${BINARY_NAME}\" \"Frameworks/${FRAMEWORK_NAME}.framework/${FRAMEWORK_NAME}\"\n\n# 注入图标\npython3 \"${CUR_DIR}/inject_app_icon.py\"\n\npopd > /dev/null\n\n\n# clean\nrm -f \"${NEW_APP_NAME}\"\n\n# zip\nzip -r \"${NEW_APP_NAME}\" ./Payload\n\n# clean\nrm -rf \"$PAYLOAD_PATH\"\n\nset +ex\n\n# sign\necho \"new app: ${NEW_APP_NAME}; \\nyou should sign it, recommend fastlane\"\n\nfastlane sigh resign -i \"your_dev_cert\" -p \"your_mobileprovision_file\" ${NEW_APP_NAME}.ipa\n\n"
  },
  {
    "path": "RunScript/inject_app_icon.py",
    "content": "# /usr/local/bin/python3\n# -*- coding: utf-8 -*-\n\nimport os\nimport sys\nimport glob\nimport shutil\nimport pprint\n\nfrom PIL import Image\n\niPhone = True\niPad = False\n\nif sys.version_info < (3, 4):\n    import biplist\n    def read_plist(path):\n        return biplist.readPlist(path)\n\n    def write_plist(info, path):\n        biplist.writePlist(info, path, binary=False)\n\nelse:\n    import plistlib\n    def read_plist(path):\n        with open(path, 'rb') as f:\n            return plistlib.load(f)\n\n    def write_plist(info, path):\n        with open(path, 'wb') as fp:\n            plistlib.dump(info, fp)\n\nsrc_root = os.path.dirname(os.path.realpath(__file__))\ninput_dir = os.path.join(src_root, \"logos\")\noutput_dir = os.path.join(src_root, \"icons\")\n\niPhone_size_scall = [\n    (20, 2),\n    (20, 3),\n    (29, 2),\n    (29, 3),\n    (40, 2),\n    (40, 3),\n    (60, 2),\n    (60, 3),\n]\n\niPad_size_scall = [\n    (20, 1),\n    (20, 2),\n    (29, 1),\n    (29, 2),\n    (40, 1),\n    (40, 2),\n    (76, 1),\n    (76, 2),\n    (83.5, 2),\n]\n\n\ndef convertImage(imageFile, outdir, size, scale, is_iPhone):\n    image = Image.open(imageFile)\n    try:\n        basename = os.path.basename(imageFile)\n        name = os.path.splitext(basename)[0]\n        scale_string = \"\" if scale == 1 else \"@%dx\" % scale\n        suffix = \"\" if is_iPhone else \"~ipad\"\n        new_name = \"{name}{size}x{size}{scale_string}{suffix}.png\".format(\n            name=name,\n            size=size,\n            scale_string=scale_string,\n            suffix=suffix,\n        )\n        size_of_scale = int(size*scale)\n        resize = (size_of_scale, size_of_scale)\n        new_image = image.resize(resize, Image.BILINEAR)\n        new_image.save(os.path.join(output_dir, new_name))\n    except Exception as e:\n        print(e)\n\n\ndef createCFBundleIconFiles(name, is_iPhone):\n    CFBundleIconFiles = set()\n    size_scale_array = iPhone_size_scall if is_iPhone else iPad_size_scall\n    for (size, scale) in size_scale_array:\n        file_name = \"{name}{size}x{size}\".format(\n            name=name,\n            size=size,\n        )\n        CFBundleIconFiles.add(file_name)\n    CFBundleIconFilesArray = list(CFBundleIconFiles)\n    CFBundleIconFilesArray.sort()\n    return CFBundleIconFilesArray\n\n\ndef createCFBundleAlternateIconSingle(name, is_iPhone):\n    CFBundleIconFiles = createCFBundleIconFiles(name, is_iPhone)\n    info_dict = {\"UIPrerenderedIcon\": False}\n    info_dict[\"CFBundleIconFiles\"] = CFBundleIconFiles\n    return info_dict\n\n\ndef createPrimaryIconInfo(primaryIconName, is_iPhone):\n    CFBundlePrimaryIcon = {}\n    CFBundlePrimaryIcon[\"CFBundleIconName\"] = primaryIconName\n    CFBundleIconFiles = createCFBundleIconFiles(primaryIconName, is_iPhone)\n    CFBundlePrimaryIcon[\"CFBundleIconFiles\"] = CFBundleIconFiles\n    return CFBundlePrimaryIcon\n\n\ndef createCFBundleAlternateIcons(names, is_iPhone):\n    CFBundleAlternateIcons = {\n        \"UINewsstandBindingType\": \"UINewsstandBindingTypeMagazine\",\n        \"UINewsstandBindingEdge\": \"UINewsstandBindingEdgeLeft\",\n    }\n    for name in names:\n        CFBundleAlternateIcons[name] = createCFBundleAlternateIconSingle(name, is_iPhone)\n    return CFBundleAlternateIcons\n\n\ndef createNewIconInfo(names, newPrimaryIcon, oldPrimaryInfo, is_iPhone):\n    key = \"CFBundleIcons\" if is_iPhone else \"CFBundleIcons~ipad\"\n    icons = {}\n    icons[\"CFBundleAlternateIcons\"] = createCFBundleAlternateIcons(names, is_iPhone)\n    if newPrimaryIcon == None or newPrimaryIcon == \"\":\n        if oldPrimaryInfo != None:\n            icons[\"CFBundlePrimaryIcon\"] = oldPrimaryInfo\n    else:\n        icons[\"CFBundlePrimaryIcon\"] = createPrimaryIconInfo(newPrimaryIcon, is_iPhone)\n\n    return icons\n\n\ndef moveIconsToDirectory(origin_dir_path, dest_dir_path):\n    imageRe = os.path.join(origin_dir_path, \"*.png\")\n    for imageFile in glob.glob(imageRe):\n        basename = os.path.basename(imageFile)\n        dest_file_path = os.path.join(dest_dir_path, basename)\n        shutil.move(imageFile, dest_file_path)\n\n\ndef setIcon(plist_info, newIconNames, newPrimaryIcon, is_iPhone):\n    key = \"CFBundleIcons\" if is_iPhone else \"CFBundleIcons~ipad\"\n    primaryIconKey = \"CFBundlePrimaryIcon\"\n\n    if not plist_info.__contains__(key) or not plist_info[key].__contains__(primaryIconKey):\n        return\n    \n    oldPrimaryInfo = plist_info[key][primaryIconKey]\n    newIconInfo = createNewIconInfo(newIconNames, newPrimaryIcon, oldPrimaryInfo, is_iPhone)\n    plist_info[key] = newIconInfo\n\n\n\nif __name__ == '__main__':\n    \"\"\"Create Dir\"\"\"\n    if os.path.exists(output_dir):\n        if os.path.isfile(output_dir):\n            os.remove(output_dir)\n        elif os.path.isdir(output_dir):\n            shutil.rmtree(output_dir, ignore_errors=True)\n    os.makedirs(output_dir, exist_ok=False)\n\n    \"\"\"Convert icons\"\"\"\n    imageRe = os.path.join(input_dir, \"*.png\")\n    iconNames = []\n    for imageFile in glob.glob(imageRe):\n        basename = os.path.basename(imageFile)\n        name = os.path.splitext(basename)[0]\n        iconNames.append(name)\n        for (size, scale) in iPhone_size_scall:\n            convertImage(imageFile, output_dir, size, scale, iPhone)\n        for (size, scale) in iPad_size_scall:\n            convertImage(imageFile, output_dir, size, scale, iPad)\n\n\n    \"\"\"Add icons to App\"\"\"\n    app_content_path = os.getenv(\"APP_CONTENT_PATH\")\n\n    if app_content_path == None:\n        raise ValueError(\"No `APP_CONTENT_PATH` Environment Variable\")\n    if not os.path.exists(app_content_path):\n        raise ValueError(\"%s not Exists\" % app_content_path)\n\n    print(\"Move App icons: `%s` => `%s`\" % (output_dir, app_content_path))\n    moveIconsToDirectory(output_dir, app_content_path)\n    print(\"Add App Icon Success\")\n\n    \"\"\"Edit Info.plist\"\"\"\n    primaryIconName = os.getenv(\"PRIMARY_ICON_NAME\")\n    plistFilePath = os.path.join(app_content_path, \"Info.plist\")\n\n    if not os.path.exists(plistFilePath):\n        raise ValueError(\"%s not Exists\" % plistFilePath)\n\n    print(\"Edit Info.plist: \", plistFilePath)\n    plistInfo = read_plist(plistFilePath)\n\n\n    \"\"\"set icons\"\"\"\n    setIcon(plistInfo, iconNames, primaryIconName, iPhone)\n    setIcon(plistInfo, iconNames, primaryIconName, iPad)\n\n    os.remove(plistFilePath)\n    write_plist(plistInfo, plistFilePath)\n\n    pp = pprint.PrettyPrinter(indent=4)\n    pp.pprint(plistInfo)\n\n    print(\"Edit Info.plist Success\")\n"
  },
  {
    "path": "TLocationPlugin/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>$(DEVELOPMENT_LANGUAGE)</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleVersion</key>\n\t<string>$(CURRENT_PROJECT_VERSION)</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "TLocationPlugin/NSObject+TLocationPlugin.h",
    "content": "//\n//  NSObject+TLocationPlugin.h\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/4.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\nNS_ASSUME_NONNULL_BEGIN\n\n@interface NSObject (TLocationPlugin)\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "TLocationPlugin/NSObject+TLocationPlugin.m",
    "content": "//\n//  NSObject+TLocationPlugin.m\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/4.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import <CoreLocation/CoreLocation.h>\n#import \"NSObject+TLocationPlugin.h\"\n#import \"TSafeRuntimeCFunc.h\"\n#import \"TLocationManager.h\"\n#import \"UIWindow+TLocationPluginToast.h\"\n#import <objc/runtime.h>\n#import <dlfcn.h>\n\n@implementation NSObject (TLocationPlugin)\n\n+ (void)load {\n    // Selector Name\n    const char *old_location_sel_name = sel_getName(@selector(locationManager:didUpdateToLocation:fromLocation:));\n    const char *new_location_sel_name = sel_getName(@selector(locationManager:didUpdateLocations:));\n    \n    /// 替换所有方法\n    int all_classes_count;\n    Class *all_classes = NULL;\n    all_classes_count = objc_getClassList(NULL, 0);\n    if (all_classes_count > 0 ) {\n        all_classes = (__unsafe_unretained Class *)malloc(sizeof(Class) * all_classes_count);\n        objc_getClassList(all_classes, all_classes_count);\n        for (int i = 0; i < all_classes_count; i++) {\n            Class cls = all_classes[i];\n            unsigned int methods_count;\n            Method *methods = class_copyMethodList(cls, &methods_count);\n            for (int i = 0; i < methods_count; i++) {\n                const char *selName = sel_getName(method_getName(methods[i]));\n                // 是定位函数\n                if (strcmp(selName, old_location_sel_name) == 0 ||\n                    strcmp(selName, new_location_sel_name) == 0) {\n                    [self replaceCLLocationsFunctionToClass:cls];\n                    break;\n                }\n            }\n            free(methods);\n        }\n        free(all_classes);\n    }\n}\n\n+ (void)replaceCLLocationsFunctionToClass:(Class)cls {\n    if ([cls instancesRespondToSelector:@selector(locationManager:didUpdateToLocation:fromLocation:)]) {\n        t_exchange_instance_method(cls,\n                                   @selector(locationManager:didUpdateToLocation:fromLocation:),\n                                   @selector(__t_locationManager:didUpdateToLocation:fromLocation:));\n    }\n    \n    if ([cls instancesRespondToSelector:@selector(locationManager:didUpdateLocations:)]) {\n        t_exchange_instance_method(cls,\n                                   @selector(locationManager:didUpdateLocations:),\n                                   @selector(__t_locationManager:didUpdateLocations:));\n    }\n}\n\n- (void)__t_locationManager:(CLLocationManager *)manager\n        didUpdateToLocation:(CLLocation *)newLocation\n               fromLocation:(CLLocation *)oldLocation API_AVAILABLE(macos(10.6)) {\n    BOOL useHook = TLocationManager.shared.usingHookLocation && TLocationManager.shared.hasCachedLocation;\n    // 不使用或者暂时暂停使用，调用原方法\n    if (!useHook || TLocationManager.shared.isSuspend) {\n        [self t_showTostForCLLocation:newLocation];\n        [self __t_locationManager:manager didUpdateToLocation:newLocation fromLocation:oldLocation];\n        return;\n    }\n    \n    /// CLLocation 使用WGS84坐标\n    CLLocation *t_newLocation = [[CLLocation alloc] initWithCoordinate:TLocationManager.shared.randomWGS84Coordinate\n                                                              altitude:newLocation.altitude\n                                                    horizontalAccuracy:newLocation.horizontalAccuracy\n                                                      verticalAccuracy:newLocation.verticalAccuracy\n                                                                course:newLocation.course\n                                                                 speed:newLocation.speed\n                                                             timestamp:newLocation.timestamp];\n    \n    [self t_showTostForCLLocation:t_newLocation];\n    [self __t_locationManager:manager didUpdateToLocation:t_newLocation fromLocation:oldLocation];\n}\n\n- (void)__t_locationManager:(CLLocationManager *)manager\n         didUpdateLocations:(NSArray<CLLocation *> *)locations {\n    BOOL useHook = TLocationManager.shared.usingHookLocation && TLocationManager.shared.hasCachedLocation;\n    // 不使用或者暂时暂停使用，调用原方法\n    if (!useHook || TLocationManager.shared.isSuspend) {\n        [self t_showTostForCLLocations:locations];\n        [self __t_locationManager:manager didUpdateLocations:locations];\n        return;\n    }\n    \n    NSMutableArray<CLLocation *> *t_locations = [NSMutableArray<CLLocation *> array];\n    for (CLLocation *location in locations) {\n        /// CLLocation 使用WGS84坐标\n        CLLocation *t_location = [[CLLocation alloc] initWithCoordinate:TLocationManager.shared.randomWGS84Coordinate\n                                                               altitude:location.altitude\n                                                     horizontalAccuracy:location.horizontalAccuracy\n                                                       verticalAccuracy:location.verticalAccuracy\n                                                                 course:location.course\n                                                                  speed:location.speed\n                                                              timestamp:location.timestamp];\n        [t_locations addObject:t_location];\n    }\n    \n    [self t_showTostForCLLocations:t_locations];\n    [self __t_locationManager:manager didUpdateLocations:t_locations];\n}\n\n- (void)t_showTostForCLLocations:(NSArray<CLLocation *> *)locations {\n    if (TLocationManager.shared.usingToast) {\n        [UIWindow t_showTostForCLLocations:locations];\n    }\n}\n\n- (void)t_showTostForCLLocation:(CLLocation *)location {\n    if (TLocationManager.shared.usingToast) {\n        [UIWindow t_showTostForCLLocation:location];\n    }\n}\n\n@end\n\n"
  },
  {
    "path": "TLocationPlugin/Others/TLocationManager.h",
    "content": "//\n//  TLocationManager.h\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/4.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n#import <CoreLocation/CoreLocation.h>\n#import \"TLocationModel.h\"\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface TLocationManager : NSObject\n\n@property (class, nonatomic, assign, readonly) TLocationManager *shared;\n\n/// 是否暂时暂停 HOOK（库内使用）\n@property (nonatomic, assign, getter=isSuspend) BOOL suspend;\n\n/// 当前使用的名称\n@property (nonatomic, copy  ) NSString *locationName;\n/// 当前使用的纬度\n@property (nonatomic, assign) CLLocationDegrees latitude;\n/// 当前使用的经度\n@property (nonatomic, assign) CLLocationDegrees longitude;\n/// 扩散范围, 默认为 10\n@property (nonatomic, assign) NSInteger range;\n/// 是否使用\n@property (nonatomic, assign) BOOL usingHookLocation;\n/// 是否开启 toast 提示\n@property (nonatomic, assign) BOOL usingToast;\n\n/// 缓存的所有位置数据, setter 方法不自动保存, 保存调用 `- saveCacheDataArray`\n@property (nonatomic, copy, nullable) NSArray<TLocationModel *> *cacheDataArray;\n\n@property (nonatomic, assign, readonly) NSUInteger cacheDataArrayHash;\n\n/// 是否有缓存数据, 都为 0 判断为无数据\n@property (nonatomic, assign, readonly) BOOL hasCachedLocation;\n/// 取随机纬度 (根据当前纬度以及扩散范围生成)\n@property (nonatomic, assign, readonly) CLLocationDegrees randomLatitude;\n/// 取随机经度 (根据当前经度以及扩散范围生成)\n@property (nonatomic, assign, readonly) CLLocationDegrees randomLongitude;\n/// 取随机坐标国测局编码 (根据当前经度,纬度以及扩散范围生成)\n@property (nonatomic, assign, readonly) CLLocationCoordinate2D randomGCJ02Coordinate;\n/// 取随机坐标 (根据当前经度,纬度以及扩散范围生成)\n@property (nonatomic, assign, readonly) CLLocationCoordinate2D randomWGS84Coordinate;\n\n- (void)saveCacheDataArray;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "TLocationPlugin/Others/TLocationManager.m",
    "content": "//\n//  TLocationManager.m\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/4.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import \"TLocationManager.h\"\n#import \"TLocationPluginLocationConverter.h\"\n\n@implementation TLocationManager {\n    NSString                    *_locationName;\n    CLLocationDegrees           _latitude;\n    CLLocationDegrees           _longitude;\n    NSInteger                   _range;\n    BOOL                        _usingHookLocation;\n    BOOL                        _usingToast;\n    NSArray<TLocationModel *>   * _cacheDataArray;\n}\n\n@synthesize locationName        = _locationName;\n@synthesize latitude            = _latitude;\n@synthesize longitude           = _longitude;\n@synthesize range               = _range;\n@synthesize usingHookLocation   = _usingHookLocation;\n@synthesize usingToast          = _usingToast;\n@synthesize cacheDataArray      = _cacheDataArray;\n\n\n#pragma mark - Singletion\n#pragma mark -\n\nstatic TLocationManager *_instance;\n+ (TLocationManager *)shared {\n    static dispatch_once_t onceToken;\n    dispatch_once(&onceToken, ^{\n#if __has_feature(objc_arc)\n        _instance = [[self alloc] init];\n        NSString *path = _instance.cacheDataArrayArchivePath;\n        if ([[NSFileManager defaultManager] fileExistsAtPath:path]) {\n            _instance->_cacheDataArray = [NSKeyedUnarchiver unarchiveObjectWithFile:path];\n        }\n#else\n        _instance = [[[self alloc] init] autorelease];\n#endif\n    });\n    return _instance;\n}\n\n+ (instancetype)allocWithZone:(struct _NSZone *)zone {\n    static dispatch_once_t onceToken;\n    dispatch_once(&onceToken, ^{\n        _instance = [super allocWithZone:zone];\n    });\n    return _instance;\n}\n\n- (instancetype)init {\n    self = [super init];\n    static dispatch_once_t onceToken;\n    dispatch_once(&onceToken, ^{\n        if (self) {}\n    });\n    return self;\n}\n\n- (instancetype)copyWithZone:(NSZone *)zone {\n    return _instance;\n}\n\n- (instancetype)mutableCopyWithZone:(NSZone *)zone {\n    return _instance;\n}\n\n#if !__has_feature(objc_arc)\n- (instancetype)retain { return self; }\n- (NSUInteger)retainCount { return NSUIntegerMax; }\n- (oneway void)release {}\n- (instancetype)autorelease{ return self; }\n#endif\n\n#pragma mark - locationName\nstatic NSString * const _t_locationNameKey = @\"_T_CacheKeyTypeLocationName\";\n- (NSString *)locationName {\n    static dispatch_once_t onceToken;\n    dispatch_once(&onceToken, ^{\n        self->_locationName = [[NSUserDefaults standardUserDefaults] stringForKey:_t_locationNameKey];\n    });\n    return self->_locationName;\n}\n- (void)setLocationName:(NSString *)locationName {\n    self->_locationName = locationName;\n    [[NSUserDefaults standardUserDefaults] setObject:locationName forKey:_t_locationNameKey];\n    [[NSUserDefaults standardUserDefaults] synchronize];\n}\n\n#pragma mark - latitude\nstatic NSString * const _t_latitudeKey = @\"_T_CacheKeyTypeLatitude\";\n- (CLLocationDegrees)latitude {\n    static dispatch_once_t onceToken;\n    dispatch_once(&onceToken, ^{\n        self->_latitude = [[NSUserDefaults standardUserDefaults] doubleForKey:_t_latitudeKey];\n    });\n    return self->_latitude;\n}\n- (void)setLatitude:(CLLocationDegrees)latitude {\n    self->_latitude = latitude;\n    [[NSUserDefaults standardUserDefaults] setDouble:latitude forKey:_t_latitudeKey];\n    [[NSUserDefaults standardUserDefaults] synchronize];\n}\n\n#pragma mark - longitude\nstatic NSString * const _t_longitudeKey = @\"_T_CacheKeyTypeLongitude\";\n- (CLLocationDegrees)longitude {\n    static dispatch_once_t onceToken;\n    dispatch_once(&onceToken, ^{\n        self->_longitude = [[NSUserDefaults standardUserDefaults] doubleForKey:_t_longitudeKey];\n    });\n    return self->_longitude;\n}\n- (void)setLongitude:(CLLocationDegrees)longitude {\n    self->_longitude = longitude;\n    [[NSUserDefaults standardUserDefaults] setDouble:longitude forKey:_t_longitudeKey];\n    [[NSUserDefaults standardUserDefaults] synchronize];\n}\n\n#pragma mark - range\nstatic NSString * const _t_rangeKey = @\"_T_CacheKeyTypeRange\";\n- (NSInteger)range {\n    static dispatch_once_t onceToken;\n    dispatch_once(&onceToken, ^{\n        self->_range = [[NSUserDefaults standardUserDefaults] integerForKey:_t_rangeKey];\n        if (self->_range <= 0) {\n            self->_range = 10;\n        }\n    });\n    \n    return self->_range;\n}\n- (void)setRange:(NSInteger)range {\n    self->_range = range;\n    if (self->_range <= 0) {\n        self->_range = 10;\n    }\n    [[NSUserDefaults standardUserDefaults] setInteger:self->_range forKey:_t_rangeKey];\n    [[NSUserDefaults standardUserDefaults] synchronize];\n}\n\n\n#pragma mark - usingHookLocation\nstatic NSString * const _t_usingHookLocationKey = @\"_T_CacheKeyTypeUsingHookLocation\";\n- (BOOL)usingHookLocation {\n    static dispatch_once_t onceToken;\n    dispatch_once(&onceToken, ^{\n        self->_usingHookLocation = [[NSUserDefaults standardUserDefaults] boolForKey:_t_usingHookLocationKey];\n    });\n    return self->_usingHookLocation;\n}\n- (void)setUsingHookLocation:(BOOL)usingHookLocation {\n    self->_usingHookLocation = usingHookLocation;\n    [[NSUserDefaults standardUserDefaults] setBool:usingHookLocation forKey:_t_usingHookLocationKey];\n    [[NSUserDefaults standardUserDefaults] synchronize];\n}\n\n#pragma mark - usingToast\nstatic NSString * const _t_usingToastKey = @\"_T_CacheKeyTypeUsingToast\";\n- (BOOL)usingToast {\n    static dispatch_once_t onceToken;\n    dispatch_once(&onceToken, ^{\n        self->_usingToast = [[NSUserDefaults standardUserDefaults] boolForKey:_t_usingToastKey];\n    });\n    return self->_usingToast;\n}\n- (void)setUsingToast:(BOOL)usingToast {\n    self->_usingToast = usingToast;\n    [[NSUserDefaults standardUserDefaults] setBool:usingToast forKey:_t_usingToastKey];\n    [[NSUserDefaults standardUserDefaults] synchronize];\n}\n\n#pragma mark - cacheDataArray\n- (NSString *)cacheDataArrayArchivePath {\n    static NSString *_t_cacheDataArrayArchivePath = nil;\n    static dispatch_once_t onceToken;\n    dispatch_once(&onceToken, ^{\n        NSArray<NSString *> *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);\n        NSString *documentDirPath = [paths lastObject];\n        _t_cacheDataArrayArchivePath = [documentDirPath stringByAppendingPathComponent:@\"_T_CacheKeyTypeDataArray.archiver\"];\n    });\n    return _t_cacheDataArrayArchivePath;\n}\n\n- (NSArray<TLocationModel *> *)cacheDataArray {\n    return self->_cacheDataArray;\n}\n\n- (void)setCacheDataArray:(NSArray<TLocationModel *> *)cacheDataArray {\n    self->_cacheDataArray = cacheDataArray;\n}\n\n- (NSUInteger)cacheDataArrayHash {\n    NSUInteger hash = 0;\n    for (TLocationModel *model in self->_cacheDataArray) {\n        // 左移确保返回 hash 与顺序相关\n        hash = (hash << 1) ^ model.hash;\n    }\n    return hash;\n}\n\n- (void)saveCacheDataArray {\n    NSString *path = self.cacheDataArrayArchivePath;\n    if ([[NSFileManager defaultManager] fileExistsAtPath:path]) {\n        [[NSFileManager defaultManager] removeItemAtPath:path error:nil];\n    }\n    if (self->_cacheDataArray != nil) {\n        [NSKeyedArchiver archiveRootObject:self->_cacheDataArray toFile:self.cacheDataArrayArchivePath];\n    }\n}\n\n- (BOOL)hasCachedLocation {\n    return self.longitude != 0 && self.latitude != 0;\n}\n\n#pragma mark - Random Values\n- (CLLocationDegrees)randomLatitude {\n    return [self rangeDegressForDegrees:self.latitude];\n}\n\n- (CLLocationDegrees)randomLongitude {\n    return [self rangeDegressForDegrees:self.longitude];\n}\n\n- (CLLocationCoordinate2D)randomGCJ02CoordinateCoordinate {\n    /// 地图点击的坐标默认就是国测局坐标\n    return CLLocationCoordinate2DMake(self.randomLatitude, self.randomLongitude);\n}\n\n- (CLLocationCoordinate2D)randomWGS84Coordinate {\n    return [TLocationPluginLocationConverter gcj02ToWgs84:self.randomGCJ02CoordinateCoordinate];\n}\n\n\n/// 取 15/16 位有效数字\n- (CLLocationDegrees)rangeDegressForDegrees:(CLLocationDegrees)degrees {\n    NSInteger randomRange = arc4random() % self.range;\n    \n    /// 从小数点后第五位开始加/减 randomRange\n    CLLocationDegrees randomDegrees = randomRange * 0.00001;\n    CLLocationDegrees newDegrees;\n    \n    /// 随机加减\n    if (arc4random() % 2 == 0) {\n        newDegrees = degrees + randomDegrees;\n    } else {\n        newDegrees = degrees - randomDegrees;\n    }\n    \n    /// 转换为 String 处理\n    NSString *newDegreesString = @(newDegrees).stringValue;\n    NSRange decimalPointRange = [newDegreesString rangeOfString:@\".\"];\n    if (decimalPointRange.location == NSNotFound) {\n        newDegreesString = [newDegreesString stringByAppendingString:@\".\"];\n    } else {\n        /// + 后 5 位\n        NSUInteger toIndex = decimalPointRange.location + decimalPointRange.length + 5;\n        if (toIndex <= newDegreesString.length) {\n            newDegreesString = [newDegreesString substringToIndex:toIndex];\n        } else {\n            /// 不进行截取操作\n            /// 但是应该不可能到这里吧, 除非数据本来长度就很小而且 randomRange 是 10 的倍数\n        }\n    }\n    \n    /// 去除首尾 `空格`\n    static NSCharacterSet *trimmingSet = nil;\n    static dispatch_once_t onceToken;\n    dispatch_once(&onceToken, ^{\n        trimmingSet = [NSCharacterSet characterSetWithCharactersInString:@\" \"];\n    });\n    [newDegreesString stringByTrimmingCharactersInSet:trimmingSet];\n    /// 16 位有效数字 + 1 位小数点 + (负号 ? 1 : 0)\n    NSUInteger toLenght = 16 + 1 + ([newDegreesString hasPrefix:@\"-\"] ? 1 : 0);\n    while (newDegreesString.length < toLenght) {\n        newDegreesString = [newDegreesString stringByAppendingFormat:@\"%d\", arc4random() % 10];\n    };\n    \n    /// 转换为 double (CLLocationDegrees)\n    newDegrees = newDegreesString.doubleValue;\n    \n    return newDegrees;\n}\n\n@end\n"
  },
  {
    "path": "TLocationPlugin/Others/TLocationModel.h",
    "content": "//\n//  TLocationModel.h\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/4.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n#import <CoreLocation/CoreLocation.h>\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface TLocationModel : NSObject <NSCoding, NSCopying>\n\n/// 名称\n@property (nonatomic, copy) NSString *name;\n\n/// 纬度\n@property (nonatomic, assign) CLLocationDegrees latitude;\n\n/// 经度\n@property (nonatomic, assign) CLLocationDegrees longitude;\n\n/// 是否是当前选择的数据\n@property (nonatomic, assign) BOOL isSelect;\n\n+ (instancetype)modelWithName:(NSString *)name\n                     latitude:(CLLocationDegrees)latitude\n                    longitude:(CLLocationDegrees)longitude;\n\n+ (instancetype)modelWithSubLocality:(nullable NSString *)subLocality\n                                name:(NSString *)name\n                            latitude:(CLLocationDegrees)latitude\n                           longitude:(CLLocationDegrees)longitude;\n\n- (NSString *)locationText;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "TLocationPlugin/Others/TLocationModel.m",
    "content": "//\n//  TLocationModel.m\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/4.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import \"TLocationModel.h\"\n\n@implementation TLocationModel\n\n- (NSUInteger)hash {\n    return self.name.hash ^ @(self.latitude).hash ^ @(self.longitude).hash ^ @(self.isSelect).hash;\n}\n\n+ (instancetype)modelWithName:(NSString *)name\n                     latitude:(CLLocationDegrees)latitude\n                    longitude:(CLLocationDegrees)longitude {\n    return [self modelWithSubLocality:nil\n                                 name:name\n                             latitude:latitude\n                            longitude:longitude];\n}\n\n+ (instancetype)modelWithSubLocality:(nullable NSString *)subLocality\n                                name:(NSString *)name\n                            latitude:(CLLocationDegrees)latitude\n                           longitude:(CLLocationDegrees)longitude {\n    return [[self alloc] initWithSubLocality:subLocality\n                                        name:name\n                                    latitude:latitude\n                                   longitude:longitude];\n}\n\n- (instancetype)initWithSubLocality:(nullable NSString *)subLocality\n                               name:(NSString *)name\n                           latitude:(CLLocationDegrees)latitude\n                          longitude:(CLLocationDegrees)longitude {\n    self = [super init];\n    if (self) {\n        if (subLocality) {\n            self.name = [NSString stringWithFormat:@\"%@ %@\", subLocality, name];\n        } else {\n            self.name = name;\n        }\n        self.latitude = latitude;\n        self.longitude = longitude;\n    }\n    return self;\n}\n\n- (NSString *)locationText {\n    return [NSString stringWithFormat:@\"纬度: %@\\n经度: %@\", @(self.latitude).stringValue, @(self.longitude).stringValue];\n}\n\n- (void)encodeWithCoder:(nonnull NSCoder *)aCoder {\n    [aCoder encodeObject:self.name forKey:@\"name\"];\n    [aCoder encodeDouble:self.latitude forKey:@\"latitude\"];\n    [aCoder encodeDouble:self.longitude forKey:@\"longitude\"];\n    [aCoder encodeBool:self.isSelect forKey:@\"isSelect\"];\n}\n\n- (nullable instancetype)initWithCoder:(nonnull NSCoder *)aDecoder {\n    self = [super init];\n    if (self) {\n        self.name = [aDecoder decodeObjectForKey:@\"name\"];\n        self.latitude = [aDecoder decodeDoubleForKey:@\"latitude\"];\n        self.longitude = [aDecoder decodeDoubleForKey:@\"longitude\"];\n        self.isSelect = [aDecoder decodeBoolForKey:@\"isSelect\"];\n    }\n    return self;\n}\n\n- (nonnull id)copyWithZone:(nullable NSZone *)zone {\n    TLocationModel *model = [[self.class allocWithZone:zone] init];\n    model.name = self.name;\n    model.latitude = self.latitude;\n    model.longitude = self.longitude;\n    return model;\n}\n\n@end\n"
  },
  {
    "path": "TLocationPlugin/Others/TLocationPluginLocationConverter.h",
    "content": "//\n//  JZLocationConverter.h\n//  JZCLLocationMangerDome\n//\n//  Created by jack zhou on 13-8-22.\n//  Copyright (c) 2013年 JZ. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n#import <CoreLocation/CoreLocation.h>\n\nNS_ASSUME_NONNULL_BEGIN\n\n/// 防止重名, 定义为 TLocationPluginLocationConverter\n@interface TLocationPluginLocationConverter : NSObject\n\n\n/// 世界标准地理坐标(WGS-84) 转换成 中国国测局地理坐标 (GCJ-02) <火星坐标>\n/// @param location 世界标准地理坐标(WGS-84)\n/// @return 中国国测局地理坐标 (GCJ-02) <火星坐标>\n+ (CLLocationCoordinate2D)wgs84ToGcj02:(CLLocationCoordinate2D)location;\n\n\n/// 中国国测局地理坐标 (GCJ-02) 转换成 世界标准地理坐标 (WGS-84)\n/// 此接口有1－2米左右的误差，需要精确定位情景慎用\n/// @param location 中国国测局地理坐标 (GCJ-02)\n/// @return 世界标准地理坐标 (WGS-84)\n+ (CLLocationCoordinate2D)gcj02ToWgs84:(CLLocationCoordinate2D)location;\n\n\n/// 世界标准地理坐标(WGS-84) 转换成 百度地理坐标 (BD-09)\n/// @param location 世界标准地理坐标(WGS-84)\n/// @return 百度地理坐标 (BD-09)\n+ (CLLocationCoordinate2D)wgs84ToBd09:(CLLocationCoordinate2D)location;\n\n\n/// 中国国测局地理坐标 (GCJ-02) <火星坐标> 转换成 百度地理坐标 (BD-09)\n/// @param location 中国国测局地理坐标 (GCJ-02) <火星坐标>\n/// @return 百度地理坐标 (BD-09)\n+ (CLLocationCoordinate2D)gcj02ToBd09:(CLLocationCoordinate2D)location;\n\n\n/// 百度地理坐标 (BD-09) 转换成 中国国测局地理坐标 (GCJ-02) <火星坐标>\n/// @param location 百度地理坐标 (BD-09)\n/// @return 中国国测局地理坐标 (GCJ-02) <火星坐标>\n+ (CLLocationCoordinate2D)bd09ToGcj02:(CLLocationCoordinate2D)location;\n\n\n/// 百度地理坐标 (BD-09) 转换成 世界标准地理坐标 (WGS-84)\n/// @param location 百度地理坐标 (BD-09)\n/// @return 世界标准地理坐标 (WGS-84)\n+ (CLLocationCoordinate2D)bd09ToWgs84:(CLLocationCoordinate2D)location;\n\n@end\n\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "TLocationPlugin/Others/TLocationPluginLocationConverter.m",
    "content": "//\n//  JZLocationConverter.m\n//  JZCLLocationMangerDome\n//\n//  Created by jack zhou on 13-8-22.\n//  Copyright (c) 2013年 JZ. All rights reserved.\n//\n\n#import \"TLocationPluginLocationConverter.h\"\n#import <CoreLocation/CoreLocation.h>\n\n#define LAT_OFFSET_0(x,y) -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * sqrt(fabs(x))\n#define LAT_OFFSET_1 (20.0 * sin(6.0 * x * M_PI) + 20.0 * sin(2.0 * x * M_PI)) * 2.0 / 3.0\n#define LAT_OFFSET_2 (20.0 * sin(y * M_PI) + 40.0 * sin(y / 3.0 * M_PI)) * 2.0 / 3.0\n#define LAT_OFFSET_3 (160.0 * sin(y / 12.0 * M_PI) + 320 * sin(y * M_PI / 30.0)) * 2.0 / 3.0\n\n#define LON_OFFSET_0(x,y) 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * sqrt(fabs(x))\n#define LON_OFFSET_1 (20.0 * sin(6.0 * x * M_PI) + 20.0 * sin(2.0 * x * M_PI)) * 2.0 / 3.0\n#define LON_OFFSET_2 (20.0 * sin(x * M_PI) + 40.0 * sin(x / 3.0 * M_PI)) * 2.0 / 3.0\n#define LON_OFFSET_3 (150.0 * sin(x / 12.0 * M_PI) + 300.0 * sin(x / 30.0 * M_PI)) * 2.0 / 3.0\n\n#define RANGE_LON_MAX 137.8347\n#define RANGE_LON_MIN 72.004\n#define RANGE_LAT_MAX 55.8271\n#define RANGE_LAT_MIN 0.8293\n// jzA = 6378245.0, 1/f = 298.3\n// b = a * (1 - f)\n// ee = (a^2 - b^2) / a^2;\n#define jzA 6378245.0\n#define jzEE 0.00669342162296594323\n\n@implementation TLocationPluginLocationConverter\n\n+ (double)transformLat:(double)x bdLon:(double)y {\n    double ret = LAT_OFFSET_0(x, y);\n    ret += LAT_OFFSET_1;\n    ret += LAT_OFFSET_2;\n    ret += LAT_OFFSET_3;\n    return ret;\n}\n\n+ (double)transformLon:(double)x bdLon:(double)y {\n    double ret = LON_OFFSET_0(x, y);\n    ret += LON_OFFSET_1;\n    ret += LON_OFFSET_2;\n    ret += LON_OFFSET_3;\n    return ret;\n}\n\n+ (BOOL)outOfChina:(double)lat bdLon:(double)lon {\n    if (lon < RANGE_LON_MIN || lon > RANGE_LON_MAX)\n        return true;\n    if (lat < RANGE_LAT_MIN || lat > RANGE_LAT_MAX)\n        return true;\n    return false;\n}\n\n+ (CLLocationCoordinate2D)gcj02Encrypt:(double)ggLat bdLon:(double)ggLon {\n    CLLocationCoordinate2D resPoint;\n    double mgLat;\n    double mgLon;\n    if ([self outOfChina:ggLat bdLon:ggLon]) {\n        resPoint.latitude = ggLat;\n        resPoint.longitude = ggLon;\n        return resPoint;\n    }\n    double dLat = [self transformLat:(ggLon - 105.0)bdLon:(ggLat - 35.0)];\n    double dLon = [self transformLon:(ggLon - 105.0) bdLon:(ggLat - 35.0)];\n    double radLat = ggLat / 180.0 * M_PI;\n    double magic = sin(radLat);\n    magic = 1 - jzEE * magic * magic;\n    double sqrtMagic = sqrt(magic);\n    dLat = (dLat * 180.0) / ((jzA * (1 - jzEE)) / (magic * sqrtMagic) * M_PI);\n    dLon = (dLon * 180.0) / (jzA / sqrtMagic * cos(radLat) * M_PI);\n    mgLat = ggLat + dLat;\n    mgLon = ggLon + dLon;\n    \n    resPoint.latitude = mgLat;\n    resPoint.longitude = mgLon;\n    return resPoint;\n}\n\n+ (CLLocationCoordinate2D)gcj02Decrypt:(double)gjLat gjLon:(double)gjLon {\n    CLLocationCoordinate2D  gPt = [self gcj02Encrypt:gjLat bdLon:gjLon];\n    double dLon = gPt.longitude - gjLon;\n    double dLat = gPt.latitude - gjLat;\n    CLLocationCoordinate2D pt;\n    pt.latitude = gjLat - dLat;\n    pt.longitude = gjLon - dLon;\n    return pt;\n}\n\n+ (CLLocationCoordinate2D)bd09Decrypt:(double)bdLat bdLon:(double)bdLon {\n    CLLocationCoordinate2D gcjPt;\n    double x = bdLon - 0.0065, y = bdLat - 0.006;\n    double z = sqrt(x * x + y * y) - 0.00002 * sin(y * M_PI);\n    double theta = atan2(y, x) - 0.000003 * cos(x * M_PI);\n    gcjPt.longitude = z * cos(theta);\n    gcjPt.latitude = z * sin(theta);\n    return gcjPt;\n}\n\n+(CLLocationCoordinate2D)bd09Encrypt:(double)ggLat bdLon:(double)ggLon {\n    CLLocationCoordinate2D bdPt;\n    double x = ggLon, y = ggLat;\n    double z = sqrt(x * x + y * y) + 0.00002 * sin(y * M_PI);\n    double theta = atan2(y, x) + 0.000003 * cos(x * M_PI);\n    bdPt.longitude = z * cos(theta) + 0.0065;\n    bdPt.latitude = z * sin(theta) + 0.006;\n    return bdPt;\n}\n\n\n+ (CLLocationCoordinate2D)wgs84ToGcj02:(CLLocationCoordinate2D)location {\n    return [self gcj02Encrypt:location.latitude bdLon:location.longitude];\n}\n\n+ (CLLocationCoordinate2D)gcj02ToWgs84:(CLLocationCoordinate2D)location {\n    return [self gcj02Decrypt:location.latitude gjLon:location.longitude];\n}\n\n\n+ (CLLocationCoordinate2D)wgs84ToBd09:(CLLocationCoordinate2D)location {\n    CLLocationCoordinate2D gcj02Pt = [self gcj02Encrypt:location.latitude\n                                                  bdLon:location.longitude];\n    return [self bd09Encrypt:gcj02Pt.latitude bdLon:gcj02Pt.longitude] ;\n}\n\n+ (CLLocationCoordinate2D)gcj02ToBd09:(CLLocationCoordinate2D)location {\n    return  [self bd09Encrypt:location.latitude bdLon:location.longitude];\n}\n\n+ (CLLocationCoordinate2D)bd09ToGcj02:(CLLocationCoordinate2D)location {\n    return [self bd09Decrypt:location.latitude bdLon:location.longitude];\n}\n\n+ (CLLocationCoordinate2D)bd09ToWgs84:(CLLocationCoordinate2D)location {\n    CLLocationCoordinate2D gcj02 = [self bd09ToGcj02:location];\n    return [self gcj02Decrypt:gcj02.latitude gjLon:gcj02.longitude];\n}\n\n@end\n"
  },
  {
    "path": "TLocationPlugin/TLocationPlugin.h",
    "content": "//\n//  TLocationPlugin.h\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/4.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\n//! Project version number for TLocationPlugin.\nFOUNDATION_EXPORT double TLocationPluginVersionNumber;\n\n//! Project version string for TLocationPlugin.\nFOUNDATION_EXPORT const unsigned char TLocationPluginVersionString[];\n\n// In this header, you should import all the public headers of your framework using statements like #import <TLocationPlugin/PublicHeader.h>\n"
  },
  {
    "path": "TLocationPlugin/TSafeRuntimeCFunc.h",
    "content": "//\n//  TSafeRuntimeCFunc.h\n//  TLocationPlugin\n//\n//  Created by TBD on 2018/4/19.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\nNS_ASSUME_NONNULL_BEGIN\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\nvoid t_add_instance_method(Class cls,\n                           SEL sel);\n\nvoid t_add_class_method(Class cls,\n                        SEL sel);\n\n/// 先添加 后替换, 防止父类函数指针重复替换\nvoid t_exchange_instance_method(Class cls,\n                                SEL originalSel,\n                                SEL swizzledSel);\n/// 先添加 后替换, 防止父类函数指针重复替换\nvoid t_exchange_class_method(Class cls,\n                             SEL originalSel,\n                             SEL swizzledSel);\n\n#ifdef __cplusplus\n} // extern \"C\"\n#endif\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "TLocationPlugin/TSafeRuntimeCFunc.m",
    "content": "//\n//  TSafeRuntimeCFunc.h\n//  TLocationPlugin\n//\n//  Created by TBD on 2018/4/19.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import \"TSafeRuntimeCFunc.h\"\n#import <objc/runtime.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n    \n    void t_add_instance_method(Class cls, SEL sel) {\n        Method method = class_getInstanceMethod(cls, sel);\n        class_addMethod(cls,\n                        sel,\n                        method_getImplementation(method),\n                        method_getTypeEncoding(method));\n    }\n    \n    void t_add_class_method(Class cls, SEL sel) {\n        Method method = class_getClassMethod(cls, sel);\n        class_addMethod(objc_getMetaClass(object_getClassName(cls)),\n                        sel,\n                        method_getImplementation(method),\n                        method_getTypeEncoding(method));\n    }\n    \n    void t_exchange_instance_method(Class cls, SEL sel1, SEL sel2) {\n        Method method1 = class_getInstanceMethod(cls, sel1);\n        Method method2 = class_getInstanceMethod(cls, sel2);\n        if (method1 == NULL || method2 == NULL) {\n            NSLog(@\"class: %@, no method for sel1: %@, or sel2: %@\", cls, NSStringFromSelector(sel1), NSStringFromSelector(sel2));\n        }\n        \n        IMP imp1 = method_getImplementation(method1);\n        IMP imp2 = method_getImplementation(method2);\n        \n        const char *encode1 = method_getTypeEncoding(method1);\n        const char *encode2 = method_getTypeEncoding(method2);\n        if (strcmp(encode1, encode2) != 0) {\n            NSLog(@\"type encoding not same for: %@, sel1: %@, sel2: %@\", cls, NSStringFromSelector(sel1), NSStringFromSelector(sel2));\n            NSLog(@\"sel1 type encoding: %s\", encode1);\n            NSLog(@\"sel2 type encoding: %s\", encode2);\n        }\n        \n        // 交换实现进行添加函数\n        class_replaceMethod(cls, sel1, imp2, encode2);\n        class_replaceMethod(cls, sel2, imp1, encode1);\n    }\n    \n    void t_exchange_class_method(Class cls, SEL sel1, SEL sel2) {\n        t_exchange_instance_method(object_getClass(cls), sel1, sel2);\n    }\n    \n#ifdef __cplusplus\n} // extern \"C\"\n#endif\n\n\n"
  },
  {
    "path": "TLocationPlugin/Tools/CALayer+TLocationPlugin.h",
    "content": "//\n//  CALayer+TLocationPlugin.h\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/6.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import <QuartzCore/QuartzCore.h>\n#import <UIKit/UIKit.h>\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface CALayer (TLocationPlugin)\n\n@property (nonatomic, strong, nullable) UIColor *t_borderUIColor;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "TLocationPlugin/Tools/CALayer+TLocationPlugin.m",
    "content": "//\n//  CALayer+TLocationPlugin.m\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/6.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import \"CALayer+TLocationPlugin.h\"\n\n@implementation CALayer (TLocationPlugin)\n\n- (UIColor *)t_borderUIColor {\n    return [UIColor colorWithCGColor:self.borderColor];\n}\n\n- (void)setT_borderUIColor:(UIColor *)t_borderUIColor {\n    self.borderColor = t_borderUIColor.CGColor;\n}\n\n@end\n"
  },
  {
    "path": "TLocationPlugin/Tools/NSBundle+TLocationPlugin.h",
    "content": "//\n//  NSBundle+TLocationPlugin.h\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/5.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import <Foundation/Foundation.h>\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface NSBundle (TLocationPlugin)\n\n+ (instancetype)t_bundle;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "TLocationPlugin/Tools/NSBundle+TLocationPlugin.m",
    "content": "//\n//  NSBundle+TLocationPlugin.m\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/5.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import \"NSBundle+TLocationPlugin.h\"\n\n@interface __TLocationPlugin_Temp_Bundle_Class : NSObject\n@end\n@implementation __TLocationPlugin_Temp_Bundle_Class\n@end\n\n@implementation NSBundle (TLocationPlugin)\n\n+ (instancetype)t_bundle {\n    static NSBundle *_t_bundle = nil;\n    static dispatch_once_t onceToken;\n    dispatch_once(&onceToken, ^{\n        _t_bundle = [NSBundle bundleForClass:[__TLocationPlugin_Temp_Bundle_Class class]];\n        if (_t_bundle == nil) {\n            _t_bundle = [NSBundle bundleWithPath:[NSBundle.mainBundle pathForResource:@\"Frameworks/TLocationPlugin.framework\" ofType:nil]];\n        }\n    });\n    return _t_bundle;\n}\n\n@end\n"
  },
  {
    "path": "TLocationPlugin/Tools/TAlertController.h",
    "content": "//\n//  TAlertController.h\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/6.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\nNS_ASSUME_NONNULL_BEGIN\n\n@class TAlertController;\ntypedef void(^TAlertControllerBlock)(TAlertController *alert, UIAlertAction *action);\n\n@interface TAlertController: UIAlertController\n\n/// 一个取消按钮\n+ (instancetype)singleActionAlertWithTitle:(nullable NSString *)title\n                                   message:(nullable NSString *)message\n                               actionTitle:(nullable NSString *)actionTitle\n                               actionBlock:(nullable TAlertControllerBlock)actionBlock;\n\n\n/// confirmTitle 在左, cancelTitle 在右\n+ (instancetype)confirmAlertWithTitle:(nullable NSString *)title\n                              message:(nullable NSString *)message\n                          cancelTitle:(nullable NSString *)cancelTitle\n                          cancelBlock:(nullable TAlertControllerBlock)cancelBlock\n                         confirmTitle:(nullable NSString *)confirmTitle\n                         confirmBlock:(nullable TAlertControllerBlock)confirmBlock;\n\n/// destructiveTitle 在左, cancelTitle 在右\n+ (instancetype)destructiveAlertWithTitle:(nullable NSString *)title\n                                  message:(nullable NSString *)message\n                              cancelTitle:(nullable NSString *)cancelTitle\n                              cancelBlock:(nullable TAlertControllerBlock)cancelBlock\n                         destructiveTitle:(nullable NSString *)destructiveTitle\n                         destructiveBlock:(nullable TAlertControllerBlock)destructiveBlock;\n\n/// 编辑框\n+ (instancetype)editAlertWithTitle:(nullable NSString *)title\n                           message:(nullable NSString *)message\n                        labelTexts:(nullable NSArray<NSString *> *)labelTexts\n                     defaultValues:(nullable NSArray<NSString *> *)defaultValues\n                       cancelTitle:(nullable NSString *)cancelTitle\n                       cancelBlock:(nullable TAlertControllerBlock)cancelBlock\n                      confirmTitle:(nullable NSString *)confirmTitle\n                      confirmBlock:(nullable TAlertControllerBlock)confirmBlock;\n/// 翻转 Actions 顺序\n- (void)reverseActions;\n/// 添加 Action\n- (void)addAction:(UIAlertAction *)action;\n/// 删除 Action\n- (void)removeAction:(UIAlertAction *)action;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "TLocationPlugin/Tools/TAlertController.m",
    "content": "//\n//  TAlertController.m\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/6.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import \"TAlertController.h\"\n#import \"TLocationDefine.h\"\n\n@interface TAlertController () <UITextFieldDelegate>\n\n@property (nonatomic, assign) BOOL isLoaded;\n@property (nonatomic, strong)  UIAlertAction *confirmAction;\n@property (nonatomic, copy)  TAlertControllerBlock confirmBlock;\n@property (nonatomic, strong) NSMutableArray<UIAlertAction *> *mutableActions;\n\n@end\n\n@implementation TAlertController\n\n#pragma mark - 构造方法\n+ (instancetype)alertWithTitle:(NSString *)title\n                       message:(NSString *)message\n                  confirmTitle:(NSString *)confirmTitle\n                  confirmBlock:(void (^ __nullable)(TAlertController *alert, UIAlertAction *action))confirmBlock\n                   cancelTitle:(NSString *)cancelTitle\n                   cancelBlock:(void (^ __nullable)(TAlertController *alert, UIAlertAction *action))cancelBlock\n                 isDestructive:(BOOL)isDestructive {\n    TAlertController *alert = [self alertControllerWithTitle:title\n                                                     message:message\n                                              preferredStyle:UIAlertControllerStyleAlert];\n    @weakify(alert);\n    alert.view.tintColor = UIColor.blackColor;\n    UIAlertAction *confirmAction = nil;\n    UIAlertAction *cancelAction = nil;\n    \n    if (confirmTitle || confirmBlock) {\n        confirmAction = [UIAlertAction actionWithTitle:confirmTitle ?: @\"确定\"\n                                                 style:isDestructive ? UIAlertActionStyleDestructive : UIAlertActionStyleDefault\n                                               handler:^(UIAlertAction * _Nonnull action) {\n            @strongify(alert);\n            if (confirmBlock) {\n                confirmBlock(alert, action);\n            }\n        }];\n        alert.confirmAction = confirmAction;\n        alert.confirmBlock = confirmBlock;\n    }\n    if (cancelTitle || cancelBlock || confirmAction == nil) {\n        cancelAction = [UIAlertAction actionWithTitle:cancelTitle ?: @\"取消\"\n                                                style:UIAlertActionStyleDefault\n                                              handler:^(UIAlertAction * _Nonnull action) {\n            @strongify(alert);\n            if (cancelBlock) {\n                cancelBlock(alert, action);\n            }\n        }];\n    }\n    \n    if (confirmAction) {\n        [alert addAction:confirmAction];\n    }\n    if (cancelAction) {\n        [alert addAction:cancelAction];\n    }\n    return alert;\n}\n\n+ (instancetype)singleActionAlertWithTitle:(NSString *)title\n                                   message:(NSString *)message\n                               actionTitle:(NSString *)actionTitle\n                               actionBlock:(void (^ __nullable)(TAlertController *alert, UIAlertAction *action))actionBlock {\n    return [self alertWithTitle:title\n                        message:message\n                   confirmTitle:actionTitle\n                   confirmBlock:actionBlock\n                    cancelTitle:nil\n                    cancelBlock:nil\n                  isDestructive:NO];\n}\n\n+ (instancetype)confirmAlertWithTitle:(NSString *)title\n                              message:(NSString *)message\n                          cancelTitle:(NSString *)cancelTitle\n                          cancelBlock:(void (^ __nullable)(TAlertController *alert, UIAlertAction *action))cancelBlock\n                         confirmTitle:(NSString *)confirmTitle\n                         confirmBlock:(void (^ __nullable)(TAlertController *alert, UIAlertAction *action))confirmBlock {\n    return [self alertWithTitle:title\n                        message:message\n                   confirmTitle:confirmTitle\n                   confirmBlock:confirmBlock\n                    cancelTitle:cancelTitle\n                    cancelBlock:cancelBlock\n                  isDestructive:NO];\n}\n\n+ (instancetype)destructiveAlertWithTitle:(NSString *)title\n                                  message:(NSString *)message\n                              cancelTitle:(NSString *)cancelTitle\n                              cancelBlock:(void (^ __nullable)(TAlertController *alert, UIAlertAction *action))cancelBlock\n                         destructiveTitle:(NSString *)destructiveTitle\n                         destructiveBlock:(void (^ __nullable)(TAlertController *alert, UIAlertAction *action))destructiveBlock {\n    return [self alertWithTitle:title\n                        message:message\n                   confirmTitle:destructiveTitle\n                   confirmBlock:destructiveBlock\n                    cancelTitle:cancelTitle\n                    cancelBlock:cancelBlock\n                  isDestructive:YES];\n}\n\n/// 编辑框\n+ (instancetype)editAlertWithTitle:(nullable NSString *)title\n                           message:(nullable NSString *)message\n                        labelTexts:(nullable NSArray<NSString *> *)labelTexts\n                     defaultValues:(nullable NSArray<NSString *> *)defaultValues\n                       cancelTitle:(nullable NSString *)cancelTitle\n                       cancelBlock:(void (^ __nullable)(TAlertController *alert, UIAlertAction *action))cancelBlock\n                      confirmTitle:(nullable NSString *)confirmTitle\n                      confirmBlock:(void (^ __nullable)(TAlertController *alert, UIAlertAction *action))confirmBlock {\n    if (labelTexts.count == 0 && defaultValues.count == 0) {\n        return [self confirmAlertWithTitle:title\n                                   message:message\n                               cancelTitle:cancelTitle\n                               cancelBlock:cancelBlock\n                              confirmTitle:confirmTitle\n                              confirmBlock:confirmBlock];\n    }\n    TAlertController *alert = [TAlertController destructiveAlertWithTitle:title\n                                                                  message:message\n                                                              cancelTitle:cancelTitle\n                                                              cancelBlock:cancelBlock\n                                                         destructiveTitle:confirmTitle\n                                                         destructiveBlock:confirmBlock];\n    [alert reverseActions];\n    __block BOOL isNeedLabel = NO;\n    [labelTexts enumerateObjectsUsingBlock:^(NSString * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {\n        if (obj.length > 0) {\n            isNeedLabel = YES;\n            *stop = YES;\n        }\n    }];\n    for (NSUInteger index=0; index<MAX(labelTexts.count, defaultValues.count); ++index) {\n        @weakify(alert);\n        [alert addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {\n            @strongify(alert)\n            NSString *text = @\"\";\n            if (index < labelTexts.count) {\n                text = labelTexts[index];\n            }\n            if (isNeedLabel && text.length > 0) {\n                UILabel *label = [[UILabel alloc] init];\n                label.text = [text stringByAppendingString:@\": \"];\n                label.font = [UIFont systemFontOfSize:14];\n                textField.leftView = label;\n                textField.leftViewMode = UITextFieldViewModeAlways;\n            }\n            if (index < defaultValues.count) {\n                textField.text = defaultValues[index];\n            }\n            textField.delegate = alert;\n            textField.placeholder = text;\n            textField.returnKeyType = UIReturnKeyNext;\n        }];\n    }\n    alert.textFields.lastObject.returnKeyType = UIReturnKeyDone;\n    return alert;\n}\n\n#pragma mark - Life Cycle\n- (void)viewDidLoad {}\n\n- (void)viewWillAppear:(BOOL)animated {\n    if (!self.isLoaded) {\n        for (UIAlertAction *action in self.mutableActions) {\n            [super addAction:action];\n        }\n        [super viewDidLoad];\n    }\n    [super viewWillAppear:animated];\n}\n\n#pragma mark - mutableActions Getter\n- (NSMutableArray<UIAlertAction *> *)mutableActions {\n    if (self->_mutableActions == nil) {\n        self->_mutableActions = [NSMutableArray<UIAlertAction *> array];\n    }\n    return self->_mutableActions;\n}\n\n#pragma mark - Functions\n- (void)reverseActions {\n    // self.mutableActions = [self.mutableActions reverseObjectEnumerator].allObjects.mutableCopy;\n    NSUInteger count = self.mutableActions.count;\n    for (NSUInteger index=0; index<count/2; ++index) {\n        [self.mutableActions exchangeObjectAtIndex:index withObjectAtIndex:count-1-index];\n    }\n}\n\n- (void)addAction:(UIAlertAction *)action {\n    [self.mutableActions addObject:action];\n}\n\n- (void)removeAction:(UIAlertAction *)action {\n    [self.mutableActions removeObject:action];\n    if (self.confirmAction == action) {\n        self.confirmAction = nil;\n        self.confirmBlock = nil;\n    }\n}\n\n#pragma mark - UITextFieldDelegate\n- (BOOL)textFieldShouldReturn:(UITextField *)textField {\n    if (textField == self.textFields.lastObject) {\n        if (self.confirmBlock && self.confirmAction) {\n            [self.presentingViewController dismissViewControllerAnimated:YES completion:^{\n                self.confirmBlock(self, self.confirmAction);\n            }];\n        }\n    }\n    return YES;\n}\n\n\n@end\n"
  },
  {
    "path": "TLocationPlugin/Tools/TLocationDefine.h",
    "content": "//\n//  TLocationDefine.h\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/6.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#ifndef TLocationDefine_h\n#define TLocationDefine_h\n\n#ifndef weakify\n#   if DEBUG\n#       if __has_feature(objc_arc)\n#           define weakify(object) autoreleasepool{} __weak __typeof__(&*object) weak##_##object = object;\n#       else\n#           define weakify(object) autoreleasepool{} __block __typeof__(&*object) block##_##object = object;\n#       endif\n#   else\n#       if __has_feature(objc_arc)\n#           define weakify(object) try{} @finally{} {} __weak __typeof__(&*object) weak##_##object = object;\n#       else\n#           define weakify(object) try{} @finally{} {} __block __typeof__(&*object) block##_##object = object;\n#       endif\n#   endif\n#endif\n\n\n#ifndef strongify\n#   if DEBUG\n#       if __has_feature(objc_arc)\n#           define strongify(object) autoreleasepool{} __typeof__(&*object) object = weak##_##object;\n#       else\n#           define strongify(object) autoreleasepool{} __typeof__(&*object) object = block##_##object;\n#       endif\n#   else\n#       if __has_feature(objc_arc)\n#           define strongify(object) try{} @finally{} __typeof__(&*object) object = weak##_##object;\n#       else\n#           define strongify(object) try{} @finally{} __typeof__(&*object) object = block##_##object;\n#       endif\n#   endif\n#endif\n\n\n#endif /* TLocationDefine_h */\n"
  },
  {
    "path": "TLocationPlugin/Tools/UIApplication+TLocationPlugin.h",
    "content": "//\n//  UIApplication+TLocationPlugin.h\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/8.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface UIApplication (TLocationPlugin)\n\n/// 获取 App 的顶层 controller\n@property (nonatomic, readonly, nullable) UIViewController *t_topViewController;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "TLocationPlugin/Tools/UIApplication+TLocationPlugin.m",
    "content": "//\n//  UIApplication+TLocationPlugin.m\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/8.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import \"UIApplication+TLocationPlugin.h\"\n#import \"UIViewController+TLocationPlugin.h\"\n\n@implementation UIApplication (TLocationPlugin)\n\n- (UIViewController *)t_topViewController {\n    UIViewController *viewController = self.keyWindow.rootViewController;\n    if (viewController) {\n        return [UIViewController t_findTopViewControllerFromViewController:viewController];\n    }\n    return nil;\n}\n\n@end\n"
  },
  {
    "path": "TLocationPlugin/Tools/UIImage+TLocationPlugin.h",
    "content": "//\n//  UIImage+TLocationPlugin.h\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/5.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface UIImage (TLocationPlugin)\n\n+ (nullable instancetype)t_imageNamed:(NSString *)name;\n\n+ (instancetype)t_imageWithColor:(UIColor *)color;\n+ (instancetype)t_imageWithColor:(UIColor *)color size:(CGSize)size;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "TLocationPlugin/Tools/UIImage+TLocationPlugin.m",
    "content": "//\n//  UIImage+TLocationPlugin.m\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/5.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import \"UIImage+TLocationPlugin.h\"\n#import \"NSBundle+TLocationPlugin.h\"\n\n@implementation UIImage (TLocationPlugin)\n\n+ (nullable instancetype)t_imageNamed:(NSString *)name {\n    static NSBundle *imageBundle;\n    static dispatch_once_t onceToken;\n    dispatch_once(&onceToken, ^{\n        imageBundle = [NSBundle bundleWithPath:[NSBundle.t_bundle pathForResource:@\"TLocationPluginImages\" ofType:@\"bundle\"]];\n    });\n    NSString *imagePath = [imageBundle pathForResource:name ofType:@\"png\"];\n    UIImage *image = [UIImage imageWithContentsOfFile:imagePath];\n    return image;\n}\n\n+ (instancetype)t_imageWithColor:(UIColor *)color {\n    return [self t_imageWithColor:color size:CGSizeMake(1, 1)];\n}\n\n+ (instancetype)t_imageWithColor:(UIColor *)color size:(CGSize)size {\n    if (!color || size.width <= 0 || size.height <= 0) return nil;\n    CGRect rect = CGRectMake(0.0f, 0.0f, size.width, size.height);\n    UIGraphicsBeginImageContextWithOptions(rect.size, NO, 0);\n    CGContextRef context = UIGraphicsGetCurrentContext();\n    CGContextSetFillColorWithColor(context, color.CGColor);\n    CGContextFillRect(context, rect);\n    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();\n    UIGraphicsEndImageContext();\n    return image;\n}\n\n@end\n"
  },
  {
    "path": "TLocationPlugin/Tools/UITableView+TLocationPlugin.h",
    "content": "//\n//  UITableView+TLocationPlugin.h\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/8.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface UITableView (TLocationPlugin)\n\n@property (nonatomic, assign, getter=isEditBegining) BOOL editBegining;\n@property (nonatomic, assign, getter=isEditEnding) BOOL editEnding;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "TLocationPlugin/Tools/UITableView+TLocationPlugin.m",
    "content": "//\n//  UITableView+TLocationPlugin.m\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/8.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import \"UITableView+TLocationPlugin.h\"\n#import \"TSafeRuntimeCFunc.h\"\n#import <objc/runtime.h>\n\n@implementation UITableView (TLocationPlugin)\n\n+ (void)load {\n    t_exchange_instance_method(self, @selector(setEditing:), @selector(_t_setEditing:));\n    t_exchange_instance_method(self, @selector(setEditing:animated:), @selector(_t_setEditing:animated:));\n}\n\n- (BOOL)isEditBegining {\n    return [objc_getAssociatedObject(self, _cmd) boolValue];\n}\n\n- (void)setEditBegining:(BOOL)beginingEdit {\n    objc_setAssociatedObject(self, @selector(isEditBegining), @(beginingEdit), OBJC_ASSOCIATION_RETAIN);\n}\n\n\n- (BOOL)isEditEnding {\n    return [objc_getAssociatedObject(self, _cmd) boolValue];\n}\n\n- (void)setEditEnding:(BOOL)endingEdit {\n    objc_setAssociatedObject(self, @selector(isEditEnding), @(endingEdit), OBJC_ASSOCIATION_RETAIN);\n}\n\n- (void)_t_setEditing:(BOOL)editing {\n    self.editBegining = editing;\n    self.editEnding = !editing;\n    [self _t_setEditing:editing];\n    self.editBegining = NO;\n    self.editEnding = NO;\n}\n\n- (void)_t_setEditing:(BOOL)editing animated:(BOOL)animated {\n    self.editBegining = editing;\n    self.editEnding = !editing;\n    [self _t_setEditing:editing animated:animated];\n    self.editBegining = NO;\n    self.editEnding = NO;\n}\n\n@end\n"
  },
  {
    "path": "TLocationPlugin/Tools/UIViewController+TLocationPlugin.h",
    "content": "//\n//  UIViewController+TLocationPlugin.h\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/8.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface UIViewController (TLocationPlugin)\n\n/// 获取当前 viewController 的顶层 controller\n@property (nonatomic, readonly) UIViewController *t_topViewController;\n\n/// 获取 viewController 的顶层 controller\n+ (UIViewController *)t_findTopViewControllerFromViewController:(UIViewController *)viewController;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "TLocationPlugin/Tools/UIViewController+TLocationPlugin.m",
    "content": "//\n//  UIViewController+TLocationPlugin.m\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/8.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import \"UIViewController+TLocationPlugin.h\"\n\n@implementation UIViewController (TLocationPlugin)\n\n- (UIViewController *)t_topViewController {\n    return [UIViewController t_findTopViewControllerFromViewController:self];\n}\n\n+ (UIViewController *)t_findTopViewControllerFromViewController:(UIViewController *)viewController {\n    if ([viewController isKindOfClass:[UISplitViewController class]]) {\n        UISplitViewController *svc = (UISplitViewController*)viewController;\n        if (svc.viewControllers.count > 0) {\n            return [self t_findTopViewControllerFromViewController:svc.viewControllers.lastObject];\n        } else {\n            return viewController;\n        }\n    } else if ([viewController isKindOfClass:[UINavigationController class]]) {\n        UINavigationController *nav = (UINavigationController *)viewController;\n        if (nav.viewControllers.count > 0) {\n            return [self t_findTopViewControllerFromViewController:nav.topViewController];\n        } else {\n            return viewController;\n        }\n    } else if ([viewController isKindOfClass:[UITabBarController class]]) {\n        UITabBarController *tbc = (UITabBarController*)viewController;\n        if (tbc.viewControllers.count > 0) {\n            return [self t_findTopViewControllerFromViewController:tbc.selectedViewController];\n        } else {\n            return viewController;\n        }\n    } else if (viewController.childViewControllers.count > 0) {\n        UIViewController *childVC = [viewController childViewControllerForStatusBarStyle];\n        \n        if (childVC != nil) {\n            return [self t_findTopViewControllerFromViewController:childVC];\n        } else {\n            return viewController;\n        }\n    } else if (viewController.presentedViewController) {\n        if (@available(iOS 8.0, *)) {\n            if ([viewController.presentedViewController isKindOfClass:[UIAlertController class]]) {\n                return viewController;\n            }\n        }\n        return [self t_findTopViewControllerFromViewController:viewController.presentedViewController];\n    } else {\n        return viewController;\n    }\n}\n\n@end\n"
  },
  {
    "path": "TLocationPlugin/Tools/UIWindow+TLocationPluginToast.h",
    "content": "//\n//  UIWindow+TLocationPluginToast.h\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/5.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n#import <CoreLocation/CoreLocation.h>\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface UIWindow (TLocationPluginToast)\n\n+ (void)t_showTostForMessage:(NSString *)message;\n+ (void)t_showTostForMessage:(NSString *)message fontSize:(CGFloat)fontSize;\n\n+ (void)t_showTostForCLLocation:(CLLocation *)location;\n+ (void)t_showTostForCLLocations:(NSArray<CLLocation *> *)locations;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "TLocationPlugin/Tools/UIWindow+TLocationPluginToast.m",
    "content": "//\n//  UIWindow+TLocationPluginToast.m\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/5.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import \"UIWindow+TLocationPluginToast.h\"\n\n#define SCREEN_HEIGHT   (UIScreen.mainScreen.bounds.size.height)\n#define SCREEN_WIDTH    (UIScreen.mainScreen.bounds.size.width)\n\n@implementation UIWindow (TLocationPluginToast)\n\nstatic UIView *_t_cllocationToastView = nil;\n\n+ (void)t_showTostForMessage:(NSString *)message\n                    fontSize:(CGFloat)fontSize\n                bottomMargin:(CGFloat)bottomMargin {\n    dispatch_async(dispatch_get_main_queue(), ^{\n        _t_cllocationToastView.hidden = YES;\n        [_t_cllocationToastView removeFromSuperview];\n        UIFont *textFont = [UIFont systemFontOfSize:fontSize];\n        CGSize maxSize = CGSizeMake(200, 100);\n        CGRect frame = [message boundingRectWithSize:maxSize\n                                             options:NSStringDrawingUsesLineFragmentOrigin\n                                          attributes:@{NSFontAttributeName: textFont}\n                                             context:nil];\n        frame = CGRectMake(0, 0, frame.size.width+40, frame.size.height+20);\n        UIView *view = [[UIView alloc] initWithFrame:frame];\n        \n        UIView *bgView = [[UIView alloc] initWithFrame:frame];\n        bgView.backgroundColor = UIColor.grayColor;\n        bgView.alpha = 0.9;\n        [view addSubview:bgView];\n        \n        UILabel *label = [[UILabel alloc] initWithFrame:frame];\n        label.textColor = UIColor.whiteColor;\n        label.textAlignment = NSTextAlignmentCenter;\n        label.numberOfLines = 0;\n        label.font = textFont;\n        label.text = message;\n        label.contentMode = UIViewContentModeCenter;\n        [view addSubview:label];\n        view.layer.cornerRadius = 5;\n        view.layer.masksToBounds = YES;\n        \n        UITapGestureRecognizer *touch = [[UITapGestureRecognizer alloc] initWithTarget:self\n                                                                                action:@selector(_t_touchToastView:)];\n        [view addGestureRecognizer:touch];\n        [UIApplication.sharedApplication.keyWindow addSubview:view];\n        CGFloat toastWidth = view.frame.size.width;\n        CGFloat toastHeight = view.frame.size.height;\n        CGFloat toastX = (SCREEN_WIDTH - toastWidth) / 2;\n        CGFloat toastY = SCREEN_HEIGHT - toastHeight - bottomMargin;\n        view.frame = CGRectMake(toastX, toastY, toastWidth, toastHeight);\n        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{\n            [UIView animateWithDuration:0.5 animations:^{\n                view.alpha = 0.0;\n            } completion:^(BOOL finished) {\n                [view removeFromSuperview];\n                _t_cllocationToastView = nil;\n            }];\n        });\n        _t_cllocationToastView = view;\n    });\n}\n\n+ (void)t_showTostForMessage:(NSString *)message {\n    [self t_showTostForMessage:message fontSize:12];\n}\n\n+ (void)t_showTostForMessage:(NSString *)message\n                    fontSize:(CGFloat)fontSize {\n    [self t_showTostForMessage:message\n                      fontSize:fontSize\n                  bottomMargin:100];\n}\n\n+ (void)t_showTostForCLLocation:(CLLocation *)location {\n    if (location == nil) {\n        return;\n    }\n    [self t_showTostForCLLocations:@[location]];\n}\n\n+ (void)t_showTostForCLLocations:(NSArray<CLLocation *> *)locations {\n    if (locations.count == 0) {\n        return;\n    }\n    NSMutableString *text = [NSMutableString string];\n    for (NSUInteger idx = 0; idx < locations.count; ++idx) {\n        CLLocation *location = locations[idx];\n        if (idx == 0) [text appendString:@\"定位数据\"];\n        [text appendString:@\"\\n\"];\n        [text appendString:@\"纬度: \"];\n        [text appendString:@(location.coordinate.latitude).stringValue];\n        [text appendString:@\"\\n\"];\n        [text appendString:@\"经度: \"];\n        [text appendString:@(location.coordinate.longitude).stringValue];\n    }\n    [self t_showTostForMessage:text fontSize:10 bottomMargin:40];\n}\n\n+ (void)_t_touchToastView:(UIGestureRecognizer*)gestureRecognizer {\n    [_t_cllocationToastView removeFromSuperview];\n    _t_cllocationToastView = nil;\n}\n\n@end\n"
  },
  {
    "path": "TLocationPlugin/Tools/UIWindow+TLocationPluginTouch.h",
    "content": "//\n//  UIWindow+TLocationPluginTouch.h\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/4.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface UIWindow (TLocationPluginTouch)\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "TLocationPlugin/Tools/UIWindow+TLocationPluginTouch.m",
    "content": "//\n//  UIWindow+TLocationPluginTouch.m\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/4.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import <AudioToolbox/AudioToolbox.h>\n#import \"TSelectLocationDataViewController.h\"\n#import \"TLocationNavigationController.h\"\n#import \"UIWindow+TLocationPluginTouch.h\"\n#import \"UIApplication+TLocationPlugin.h\"\n\n@implementation UIWindow (TLocationPluginTouch)\n\nstatic NSInteger _t_windowTouchedTimes = 0;\n- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {\n    if (TLocationNavigationController.isShowing) {\n        return;\n    }\n    if (_t_windowTouchedTimes == 0) {\n        // 开始触摸, 5秒后清零\n        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{\n            _t_windowTouchedTimes = 0;\n        });\n    }\n    ++_t_windowTouchedTimes;\n    if (_t_windowTouchedTimes < 5) {\n        return;\n    }\n    // 5秒内触摸5次\n    TLocationNavigationController.isShowing = YES;\n    _t_windowTouchedTimes = 0;\n    AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);\n    UIViewController *rootVC = [UIApplication sharedApplication].t_topViewController;\n    TSelectLocationDataViewController *vc = [[TSelectLocationDataViewController alloc] init];\n    TLocationNavigationController *nav = [[TLocationNavigationController alloc] initWithRootViewController:vc];\n    [rootVC presentViewController:nav animated:YES completion:^{\n        [UIApplication.sharedApplication performSelector:@selector(setStatusBarStyle:animated:) withObject:@(UIStatusBarStyleDefault) withObject:@(YES)];\n    }];\n}\n@end\n"
  },
  {
    "path": "TLocationPlugin/ViewControllerAndViews/TAddLocationDataViewController.h",
    "content": "//\n//  TAddLocationDataViewController.h\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/4.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n#import \"TLocationModel.h\"\n#import \"TBaseViewController.h\"\n\nNS_ASSUME_NONNULL_BEGIN\n\ntypedef void(^TAddLocationDataCompletionBlock)(TLocationModel *model);\n\n@interface TAddLocationDataViewController : TBaseViewController\n\n@property (nonatomic, copy) TAddLocationDataCompletionBlock addLocationBlock;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "TLocationPlugin/ViewControllerAndViews/TAddLocationDataViewController.m",
    "content": "//\n//  TAddLocationDataViewController.m\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/4.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import <MapKit/MapKit.h>\n#import <CoreLocation/CoreLocation.h>\n#import \"TAddLocationDataViewController.h\"\n#import \"TLocationTableViewCell.h\"\n#import \"TAlertController.h\"\n#import \"UIImage+TLocationPlugin.h\"\n#import \"UIWindow+TLocationPluginToast.h\"\n\ntypedef void (^GetPlaceInfoBlock)(NSArray<TLocationModel *> *_Nullable models);\n\ntypedef NS_ENUM(NSUInteger, TMapViewAnnotationType) {\n    TMapViewAnnotationTypeFirst,\n    TMapViewAnnotationTypeAll,\n};\n\nstatic NSString * const TAddLocationDataTableViewCellID = @\"TAddLocationDataTableViewCellID\";\n\n@interface TAddLocationDataViewController () <UITableViewDelegate, UITableViewDataSource, MKMapViewDelegate, UITextFieldDelegate>\n\n@property (nonatomic, assign) BOOL shouldRefreshUserLocation;\n\n@property (nonatomic, strong) IBOutlet UIView *searchContent;\n@property (nonatomic, strong) IBOutlet UITextField *searchTextField;\n@property (nonatomic, strong) IBOutlet MKMapView *mapView;\n@property (nonatomic, strong) IBOutlet UITableView *tableView;\n\n@property (nonatomic, copy) NSArray<TLocationModel *> *tableViewData;\n@property (nonatomic, strong) TLocationModel *selectedModel;\n\n@property (nonatomic, strong) CLLocationManager *locationManager;\n\n@end\n\n@implementation TAddLocationDataViewController\n\n- (void)viewDidLoad {\n    [super viewDidLoad];\n    self.title = @\"添加位置\";\n    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;\n    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage t_imageNamed:@\"user_location\"]\n                                                                              style:UIBarButtonItemStylePlain\n                                                                             target:self\n                                                                             action:@selector(backUserLocation:)];\n    [self requestLocationAuthorization];\n    if (self.mapView.userLocation.location) {\n        [self refreshViewWithLocation:self.mapView.userLocation.location\n                     setMapViewCenter:YES\n                             animated:NO\n                       annotationType:TMapViewAnnotationTypeFirst];\n    }\n    self.shouldRefreshUserLocation = YES;\n    UITapGestureRecognizer *mapViewTouch = [[UITapGestureRecognizer alloc] initWithTarget:self\n                                                                                   action:@selector(touchMapView:)];\n    [self.mapView addGestureRecognizer:mapViewTouch];\n    \n    self.searchContent.layer.shadowColor = UIColor.blackColor.CGColor;\n    self.searchContent.layer.shadowOpacity = 0.5;\n    self.searchContent.layer.shadowOffset = CGSizeMake(0, 5);\n    self.searchContent.layer.shadowRadius = 10;\n}\n\n- (void)requestLocationAuthorization {\n    if (![CLLocationManager locationServicesEnabled]) {\n        return;\n    }\n    if ([CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorizedWhenInUse ||\n        [CLLocationManager authorizationStatus] == kCLAuthorizationStatusAuthorizedAlways) {\n        return;\n    }\n    self.locationManager = [[CLLocationManager alloc] init];\n    [self.locationManager requestWhenInUseAuthorization];\n}\n\n- (void)touchMapView:(UIGestureRecognizer *)gestureRecognizer {\n    if (self.searchTextField.isEditing) {\n        [self.searchTextField resignFirstResponder];\n        return;\n    }\n    self.shouldRefreshUserLocation = NO;\n    CGPoint touchPoint = [gestureRecognizer locationInView:self.mapView];\n    CLLocationCoordinate2D touchMapCoordinate = [self.mapView convertPoint:touchPoint\n                                                      toCoordinateFromView:self.mapView];\n    CLLocation *location = [[CLLocation alloc] initWithLatitude:touchMapCoordinate.latitude\n                                                      longitude:touchMapCoordinate.longitude];\n    [self refreshViewWithLocation:location\n                 setMapViewCenter:NO\n                         animated:YES\n                   annotationType:TMapViewAnnotationTypeFirst];\n}\n\n- (void)backUserLocation:(UIBarButtonItem *)sender {\n    self.shouldRefreshUserLocation = YES;\n    [self refreshViewWithLocation:self.mapView.userLocation.location\n                 setMapViewCenter:YES\n                         animated:NO\n                   annotationType:TMapViewAnnotationTypeFirst];\n}\n\n\n- (IBAction)addALocationModelToLocalList:(UIButton *)sender {\n    if (self.selectedModel == nil) {\n        TAlertController *alert = [TAlertController singleActionAlertWithTitle:@\"请选择一个位置\"\n                                                                       message:nil\n                                                                   actionTitle:@\"确定\"\n                                                                   actionBlock:nil];\n        [self presentViewController:alert animated:YES completion:nil];\n        return;\n    }\n    \n    TAlertController *alert = [TAlertController editAlertWithTitle:@\"请输入标记名称\"\n                                                           message:nil\n                                                        labelTexts:nil\n                                                     defaultValues:@[self.selectedModel.name ?: @\"\"]\n                                                       cancelTitle:@\"取消\"\n                                                       cancelBlock:nil\n                                                      confirmTitle:@\"确定\"\n                                                      confirmBlock:^(TAlertController * _Nonnull alert, UIAlertAction * _Nonnull action) {\n        NSString *name = alert.textFields.firstObject.text;\n        [self saveSelectedModelWithNewName:name];\n    }];\n    [self presentViewController:alert animated:YES completion:nil];\n}\n\n- (void)saveSelectedModelWithNewName:(NSString *)name {\n    if (name.length <= 0) {\n        TAlertController *alertError = [TAlertController singleActionAlertWithTitle:@\"请输入标记名称\"\n                                                                            message:nil\n                                                                        actionTitle:@\"确定\"\n                                                                        actionBlock:nil];\n        [self presentViewController:alertError animated:YES completion:nil];\n        return;\n    }\n    \n    /// 使用 copy 防止添加多次同一个对象出现问题\n    TLocationModel *model = [self.selectedModel copy];\n    model.name = name;\n    /// 默认不选择\n    model.isSelect = NO;\n    if (self.addLocationBlock) {\n        self.addLocationBlock(model);\n        NSString *toastText = [NSString stringWithFormat:@\"添加成功: %@\\n%@\", model.name, model.locationText];\n        [UIWindow t_showTostForMessage:toastText];\n    }\n}\n\n- (void)setMapViewCenter:(CLLocationCoordinate2D)coordinate animated:(BOOL)animated {\n    self.mapView.centerCoordinate = coordinate;\n    MKCoordinateSpan span = MKCoordinateSpanMake(0.0015, 0.0015);\n    MKCoordinateRegion region = MKCoordinateRegionMake(coordinate, span);\n    MKCoordinateRegion fitRegion = [self.mapView regionThatFits:region];\n    if (CLLocationCoordinate2DIsValid(fitRegion.center)) {\n        [self.mapView setRegion:fitRegion animated:animated];\n    } else {\n        [self.mapView setRegion:region animated:animated];\n    }\n}\n\n\n- (void)updateTableViewForArray:(NSArray<TLocationModel *> *)array {\n    /// 刷新清空\n    self.selectedModel = nil;\n    self.tableViewData = array;\n    if (self.tableViewData.count > 0) {\n        /// 默认选择第一个\n        self.selectedModel = self.tableViewData.firstObject;\n        self.selectedModel.isSelect = YES;\n    }\n    [self.tableView reloadData];\n}\n\n- (void)refreshAnnotationsForModelArray:(NSArray<TLocationModel *> *)modelArray {\n    [self.mapView removeAnnotations:self.mapView.annotations];\n    for (TLocationModel *model in modelArray) {\n        CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(model.latitude, model.longitude);\n        MKPointAnnotation *annoation = [[MKPointAnnotation alloc] init];\n        annoation.coordinate = coordinate;\n        annoation.title = model.name;\n        [self.mapView addAnnotation:annoation];\n    }\n}\n\n/// 刷新标记\n- (void)refreshViewWithLocation:(CLLocation *)location\n               setMapViewCenter:(BOOL)setMapViewCenter\n                       animated:(BOOL)animated\n                 annotationType:(TMapViewAnnotationType)annotationType {\n    if (location == nil) {\n        self.tableViewData = nil;\n        [self.mapView removeAnnotations:self.mapView.annotations];\n        [self.tableView reloadData];\n        return;\n    }\n    if (setMapViewCenter) {\n        [self setMapViewCenter:location.coordinate animated:animated];\n    }\n    CLGeocoder *geocoder = [[CLGeocoder alloc] init];\n    [geocoder reverseGeocodeLocation:location completionHandler:^(NSArray<CLPlacemark *> * _Nullable placemarks, NSError * _Nullable error) {\n        if (placemarks == nil) {\n            self.tableViewData = nil;\n            [self.mapView removeAnnotations:self.mapView.annotations];\n            [self.tableView reloadData];\n            return;\n        }\n        \n        NSMutableArray<TLocationModel *> *locationModelArray = [NSMutableArray<TLocationModel *> array];\n        for (CLPlacemark *placemark in placemarks) {\n            TLocationModel *model =[TLocationModel modelWithSubLocality:placemark.subLocality\n                                                                   name:placemark.name\n                                                               latitude:placemark.location.coordinate.latitude\n                                                              longitude:placemark.location.coordinate.longitude];\n            [locationModelArray addObject:model];\n        }\n        \n        if (annotationType == TMapViewAnnotationTypeFirst && locationModelArray.count >= 1) {\n            [self refreshAnnotationsForModelArray:@[locationModelArray.firstObject]];\n        } else {\n            [self refreshAnnotationsForModelArray:locationModelArray];\n        }\n        [self updateTableViewForArray:locationModelArray];\n    }];\n}\n\n- (IBAction)searchMap:(UIButton *)sender {\n    [self.view endEditing:YES];\n    [self searchMapForText:self.searchTextField.text];\n}\n\n/// 输入文字结束搜索, 其他情况不搜索\n- (void)searchMapForText:(NSString *)text {\n    if (text.length <= 0) {\n        // 恢复用户当前位置\n        self.shouldRefreshUserLocation = YES;\n        [self refreshViewWithLocation:self.mapView.userLocation.location\n                     setMapViewCenter:YES\n                             animated:YES\n                       annotationType:TMapViewAnnotationTypeFirst];\n        return;\n    }\n    // 搜索则拦截用户位置更新, 不进行显示\n    self.shouldRefreshUserLocation = NO;\n    MKLocalSearchRequest *searchRequest = [[MKLocalSearchRequest alloc] init];\n    [searchRequest setNaturalLanguageQuery:text];\n    [searchRequest setRegion:self.mapView.region];\n    MKLocalSearch *localSearch = [[MKLocalSearch alloc] initWithRequest:searchRequest];\n    [localSearch startWithCompletionHandler:^(MKLocalSearchResponse * _Nullable response, NSError * _Nullable error) {\n        // [self.mapView setRegion:response.boundingRegion];\n        NSMutableArray<TLocationModel *> *locationModelArray = [NSMutableArray<TLocationModel *> array];\n        for (MKMapItem *item in response.mapItems) {\n            TLocationModel *model =[TLocationModel modelWithSubLocality:item.placemark.subLocality\n                                                                   name:item.placemark.name\n                                                               latitude:item.placemark.location.coordinate.latitude\n                                                              longitude:item.placemark.location.coordinate.longitude];\n            [locationModelArray addObject:model];\n        }\n        \n        [self setMapViewCenter:response.mapItems.firstObject.placemark.location.coordinate\n                      animated:YES];\n        [self refreshAnnotationsForModelArray:locationModelArray];\n        [self updateTableViewForArray:locationModelArray];\n    }];\n}\n\n#pragma mark - UITableViewDelegate, UITableViewDataSource\n\n- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {\n    return 1;\n}\n\n- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {\n    return self.tableViewData.count;\n}\n\n- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {\n    TLocationTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:TAddLocationDataTableViewCellID];\n    if (cell == nil) {\n        cell = [[TLocationTableViewCell alloc] initWithReuseIdentifier:TAddLocationDataTableViewCellID];\n        cell.tableView = tableView;\n    }\n    cell.model = self.tableViewData[indexPath.row];\n    return cell;\n}\n\n- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {\n    [self.view endEditing:YES];\n    self.shouldRefreshUserLocation = NO;\n    \n    NSMutableArray<NSIndexPath *> *reloadIndexPaths = [NSMutableArray<NSIndexPath *> array];\n    [reloadIndexPaths addObject:indexPath];\n    \n    NSUInteger oldIndex = [self.tableViewData indexOfObject:self.selectedModel];\n    if (oldIndex != NSNotFound) {\n        NSIndexPath *oldIndexPath = [NSIndexPath indexPathForRow:oldIndex inSection:0];\n        [reloadIndexPaths addObject:oldIndexPath];\n    }\n    self.selectedModel.isSelect = NO;\n    self.selectedModel = self.tableViewData[indexPath.row];\n    self.selectedModel.isSelect = YES;\n    [self.tableView reloadRowsAtIndexPaths:reloadIndexPaths\n                          withRowAnimation:UITableViewRowAnimationNone];\n    \n    CLLocation *location = [[CLLocation alloc] initWithLatitude:self.selectedModel.latitude\n                                                      longitude:self.selectedModel.longitude];\n    [self setMapViewCenter:location.coordinate animated:NO];\n}\n\n\n#pragma mark - UITextFieldDelegate\n- (BOOL)textFieldShouldReturn:(UITextField *)textField {\n    [textField resignFirstResponder];\n    [self searchMapForText:textField.text];\n    return YES;\n}\n\n\n#pragma mark - MKMapViewDelegate\n- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(nonnull MKUserLocation *)userLocation {\n    if (self.shouldRefreshUserLocation) {\n        [self refreshViewWithLocation:userLocation.location\n                     setMapViewCenter:YES\n                             animated:YES\n                       annotationType:TMapViewAnnotationTypeFirst];\n    }\n}\n\n//- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated {\n//}\n\n\n@end\n"
  },
  {
    "path": "TLocationPlugin/ViewControllerAndViews/TAddLocationDataViewController.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"14865.1\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" colorMatched=\"YES\">\n    <device id=\"retina5_9\" orientation=\"portrait\" appearance=\"light\"/>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"14819.2\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\" customClass=\"TAddLocationDataViewController\">\n            <connections>\n                <outlet property=\"mapView\" destination=\"hQU-PM-GHy\" id=\"1HW-Ec-v3n\"/>\n                <outlet property=\"searchContent\" destination=\"Sfn-98-YBq\" id=\"A2I-aO-zMc\"/>\n                <outlet property=\"searchTextField\" destination=\"kYv-1g-b1a\" id=\"PF8-wx-npV\"/>\n                <outlet property=\"tableView\" destination=\"5p4-nj-99t\" id=\"WZw-RW-BPT\"/>\n                <outlet property=\"view\" destination=\"i5M-Pr-FkT\" id=\"sfx-zR-JGt\"/>\n            </connections>\n        </placeholder>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <view clearsContextBeforeDrawing=\"NO\" contentMode=\"scaleToFill\" id=\"i5M-Pr-FkT\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"812\"/>\n            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n            <subviews>\n                <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"D4z-bk-QeD\">\n                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"812\"/>\n                    <subviews>\n                        <mapView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" mapType=\"standard\" showsUserLocation=\"YES\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"hQU-PM-GHy\">\n                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"406\"/>\n                            <connections>\n                                <outlet property=\"delegate\" destination=\"-1\" id=\"n3U-Qu-00P\"/>\n                            </connections>\n                        </mapView>\n                        <tableView clipsSubviews=\"YES\" contentMode=\"scaleToFill\" alwaysBounceVertical=\"YES\" style=\"plain\" separatorStyle=\"default\" rowHeight=\"-1\" estimatedRowHeight=\"-1\" sectionHeaderHeight=\"28\" sectionFooterHeight=\"28\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"5p4-nj-99t\">\n                            <rect key=\"frame\" x=\"0.0\" y=\"406\" width=\"375\" height=\"304\"/>\n                            <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            <connections>\n                                <outlet property=\"dataSource\" destination=\"-1\" id=\"d9K-Tp-6Tr\"/>\n                                <outlet property=\"delegate\" destination=\"-1\" id=\"i00-pc-pmt\"/>\n                            </connections>\n                        </tableView>\n                        <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"0jz-tV-Ftd\">\n                            <rect key=\"frame\" x=\"8\" y=\"720\" width=\"359\" height=\"40\"/>\n                            <color key=\"backgroundColor\" white=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            <constraints>\n                                <constraint firstAttribute=\"height\" constant=\"40\" id=\"jKX-Zi-9MV\"/>\n                            </constraints>\n                            <state key=\"normal\" title=\"添加\">\n                                <color key=\"titleColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </state>\n                            <state key=\"highlighted\">\n                                <color key=\"titleColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </state>\n                            <userDefinedRuntimeAttributes>\n                                <userDefinedRuntimeAttribute type=\"number\" keyPath=\"layer.cornerRadius\">\n                                    <integer key=\"value\" value=\"5\"/>\n                                </userDefinedRuntimeAttribute>\n                                <userDefinedRuntimeAttribute type=\"boolean\" keyPath=\"layer.masksToBounds\" value=\"YES\"/>\n                            </userDefinedRuntimeAttributes>\n                            <connections>\n                                <action selector=\"addALocationModelToLocalList:\" destination=\"-1\" eventType=\"touchUpInside\" id=\"Qbc-c6-00S\"/>\n                            </connections>\n                        </button>\n                        <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Sfn-98-YBq\">\n                            <rect key=\"frame\" x=\"20\" y=\"62\" width=\"335\" height=\"40\"/>\n                            <subviews>\n                                <textField opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"center\" placeholder=\"搜索位置\" textAlignment=\"center\" minimumFontSize=\"17\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"kYv-1g-b1a\">\n                                    <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"265\" height=\"40\"/>\n                                    <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                                    <color key=\"tintColor\" white=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                                    <constraints>\n                                        <constraint firstAttribute=\"height\" constant=\"40\" id=\"zL3-hg-lzl\"/>\n                                    </constraints>\n                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"16\"/>\n                                    <textInputTraits key=\"textInputTraits\" returnKeyType=\"search\"/>\n                                    <connections>\n                                        <outlet property=\"delegate\" destination=\"-1\" id=\"Fvb-7M-vCS\"/>\n                                    </connections>\n                                </textField>\n                                <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"hOZ-Xi-8wG\">\n                                    <rect key=\"frame\" x=\"265\" y=\"0.0\" width=\"70\" height=\"40\"/>\n                                    <color key=\"backgroundColor\" white=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                                    <constraints>\n                                        <constraint firstAttribute=\"width\" constant=\"70\" id=\"udo-Lc-e7c\"/>\n                                    </constraints>\n                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"16\"/>\n                                    <state key=\"normal\" title=\"搜索\">\n                                        <color key=\"titleColor\" red=\"0.97647058819999999\" green=\"0.97647058819999999\" blue=\"0.97647058819999999\" alpha=\"1\" colorSpace=\"calibratedRGB\"/>\n                                    </state>\n                                    <connections>\n                                        <action selector=\"searchMap:\" destination=\"-1\" eventType=\"touchUpInside\" id=\"thq-tK-3E3\"/>\n                                    </connections>\n                                </button>\n                            </subviews>\n                            <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            <constraints>\n                                <constraint firstItem=\"kYv-1g-b1a\" firstAttribute=\"top\" secondItem=\"Sfn-98-YBq\" secondAttribute=\"top\" id=\"QKe-s2-UNw\"/>\n                                <constraint firstAttribute=\"height\" constant=\"40\" id=\"RjG-ka-B17\"/>\n                                <constraint firstItem=\"kYv-1g-b1a\" firstAttribute=\"leading\" secondItem=\"Sfn-98-YBq\" secondAttribute=\"leading\" id=\"SE3-bX-zVG\"/>\n                                <constraint firstAttribute=\"trailing\" secondItem=\"hOZ-Xi-8wG\" secondAttribute=\"trailing\" id=\"TXN-a1-qjJ\"/>\n                                <constraint firstItem=\"hOZ-Xi-8wG\" firstAttribute=\"leading\" secondItem=\"kYv-1g-b1a\" secondAttribute=\"trailing\" id=\"bnN-NR-wVd\"/>\n                                <constraint firstAttribute=\"bottom\" secondItem=\"kYv-1g-b1a\" secondAttribute=\"bottom\" id=\"rJm-Y0-mLC\"/>\n                                <constraint firstAttribute=\"bottom\" secondItem=\"hOZ-Xi-8wG\" secondAttribute=\"bottom\" id=\"rKD-Pn-PuO\"/>\n                                <constraint firstItem=\"hOZ-Xi-8wG\" firstAttribute=\"top\" secondItem=\"Sfn-98-YBq\" secondAttribute=\"top\" id=\"wo4-4i-qde\"/>\n                            </constraints>\n                        </view>\n                    </subviews>\n                    <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                    <constraints>\n                        <constraint firstItem=\"hQU-PM-GHy\" firstAttribute=\"top\" secondItem=\"D4z-bk-QeD\" secondAttribute=\"top\" id=\"0rc-Un-ucz\"/>\n                        <constraint firstItem=\"Sfn-98-YBq\" firstAttribute=\"top\" secondItem=\"D4z-bk-QeD\" secondAttribute=\"topMargin\" constant=\"10\" id=\"4iG-O7-EuD\"/>\n                        <constraint firstItem=\"5p4-nj-99t\" firstAttribute=\"leading\" secondItem=\"D4z-bk-QeD\" secondAttribute=\"leading\" id=\"7Yg-wi-Nfh\"/>\n                        <constraint firstItem=\"0jz-tV-Ftd\" firstAttribute=\"top\" secondItem=\"5p4-nj-99t\" secondAttribute=\"bottom\" constant=\"10\" id=\"E32-8V-vP5\"/>\n                        <constraint firstAttribute=\"trailingMargin\" secondItem=\"0jz-tV-Ftd\" secondAttribute=\"trailing\" id=\"GIc-YZ-iyT\"/>\n                        <constraint firstItem=\"hQU-PM-GHy\" firstAttribute=\"leading\" secondItem=\"D4z-bk-QeD\" secondAttribute=\"leading\" id=\"IKR-Bq-B5I\"/>\n                        <constraint firstItem=\"5p4-nj-99t\" firstAttribute=\"top\" secondItem=\"hQU-PM-GHy\" secondAttribute=\"bottom\" id=\"LLJ-b7-CKy\"/>\n                        <constraint firstItem=\"Sfn-98-YBq\" firstAttribute=\"leading\" secondItem=\"D4z-bk-QeD\" secondAttribute=\"leading\" constant=\"20\" id=\"NP0-cl-HrV\"/>\n                        <constraint firstAttribute=\"trailing\" secondItem=\"hQU-PM-GHy\" secondAttribute=\"trailing\" id=\"OTf-aC-xnW\"/>\n                        <constraint firstItem=\"0jz-tV-Ftd\" firstAttribute=\"leading\" secondItem=\"D4z-bk-QeD\" secondAttribute=\"leadingMargin\" id=\"aIY-47-qUI\"/>\n                        <constraint firstItem=\"hQU-PM-GHy\" firstAttribute=\"height\" secondItem=\"D4z-bk-QeD\" secondAttribute=\"height\" multiplier=\"0.5\" id=\"fVm-X9-nZ1\"/>\n                        <constraint firstAttribute=\"bottomMargin\" secondItem=\"0jz-tV-Ftd\" secondAttribute=\"bottom\" constant=\"10\" id=\"gM2-XT-GWW\"/>\n                        <constraint firstAttribute=\"trailing\" secondItem=\"Sfn-98-YBq\" secondAttribute=\"trailing\" constant=\"20\" id=\"gUV-mg-1pL\"/>\n                        <constraint firstAttribute=\"trailing\" secondItem=\"5p4-nj-99t\" secondAttribute=\"trailing\" id=\"wxg-ut-0Ts\"/>\n                    </constraints>\n                </view>\n            </subviews>\n            <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n            <constraints>\n                <constraint firstAttribute=\"trailing\" secondItem=\"D4z-bk-QeD\" secondAttribute=\"trailing\" id=\"VGv-1R-eVD\"/>\n                <constraint firstItem=\"D4z-bk-QeD\" firstAttribute=\"top\" secondItem=\"i5M-Pr-FkT\" secondAttribute=\"top\" id=\"Ypc-uT-1Fd\"/>\n                <constraint firstItem=\"D4z-bk-QeD\" firstAttribute=\"leading\" secondItem=\"i5M-Pr-FkT\" secondAttribute=\"leading\" id=\"ddY-4Y-fQn\"/>\n                <constraint firstAttribute=\"bottom\" secondItem=\"D4z-bk-QeD\" secondAttribute=\"bottom\" id=\"qb9-TF-Cpz\"/>\n            </constraints>\n            <point key=\"canvasLocation\" x=\"136.80000000000001\" y=\"152.21674876847291\"/>\n        </view>\n    </objects>\n</document>\n"
  },
  {
    "path": "TLocationPlugin/ViewControllerAndViews/TBaseViewController.h",
    "content": "//\n//  TBaseViewController.h\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/5.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface TBaseViewController : UIViewController\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "TLocationPlugin/ViewControllerAndViews/TBaseViewController.m",
    "content": "//\n//  TBaseViewController.m\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/5.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import \"TBaseViewController.h\"\n#import \"NSBundle+TLocationPlugin.h\"\n\n@interface TBaseViewController ()\n\n@end\n\n@implementation TBaseViewController\n\n- (instancetype)init {\n    return [super initWithNibName:NSStringFromClass(self.class) bundle:NSBundle.t_bundle];\n}\n\n- (void)viewDidLoad {\n    [super viewDidLoad];\n}\n\n- (void)viewWillAppear:(BOOL)animated {\n    [super viewWillAppear:animated];\n}\n\n- (void)viewDidAppear:(BOOL)animated {\n    [super viewDidAppear:animated];\n}\n\n- (UIStatusBarStyle)preferredStatusBarStyle {\n    return UIStatusBarStyleDefault;\n}\n\n@end\n"
  },
  {
    "path": "TLocationPlugin/ViewControllerAndViews/TLocationChangeAppICONViewController.h",
    "content": "//\n//  TLocationChangeAppICONViewController.h\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/9.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n#import <UIKit/UIKit.h>\n#import \"TBaseViewController.h\"\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface TLocationChangeAppICONViewController : TBaseViewController\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "TLocationPlugin/ViewControllerAndViews/TLocationChangeAppICONViewController.m",
    "content": "//\n//  TLocationChangeAppICONViewController.m\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/9.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import \"TLocationChangeAppICONViewController.h\"\n#import \"UIWindow+TLocationPluginToast.h\"\n\n@interface TLocationChangeAppICONViewController ()\n\n@property (strong, nonatomic) IBOutlet UIButton *weWork;\n@property (strong, nonatomic) IBOutlet UIButton *dingDing;\n@property (strong, nonatomic) IBOutlet UIButton *lark;\n@property (strong, nonatomic) IBOutlet UIButton *neiXin;\n@property (strong, nonatomic) IBOutlet UIButton *qq;\n@property (strong, nonatomic) IBOutlet UIButton *tim;\n@property (strong, nonatomic) IBOutlet UIButton *weChat;\n\n@end\n\n@implementation TLocationChangeAppICONViewController\n\n- (void)viewDidLoad {\n    [super viewDidLoad];\n    self.title = @\"修改图标\";\n}\n\n- (IBAction)changeIconButtonClicked:(UIButton *)sender {\n    if (@available(iOS 10.3, *)) {\n        if (!UIApplication.sharedApplication.supportsAlternateIcons) {\n            [UIWindow t_showTostForMessage:@\"App不支持切换图标\"];\n            return;\n        }\n        \n        NSString *iconName;\n        if (sender == self.weWork) {\n            iconName = @\"WeWork\";\n        }\n        if (sender == self.dingDing) {\n            iconName = @\"DingDing\";\n        }\n        if (sender == self.lark) {\n            iconName = @\"Lark\";\n        }\n        if (sender == self.neiXin) {\n            iconName = @\"NeiXin\";\n        }\n        if (sender == self.qq) {\n            iconName = @\"QQ\";\n        }\n        if (sender == self.tim) {\n            iconName = @\"Tim\";\n        }\n        if (sender == self.weChat) {\n            iconName = @\"WeChat\";\n        }\n        [UIApplication.sharedApplication setAlternateIconName:iconName completionHandler:^(NSError * _Nullable error) {\n            if (error) {\n                NSString *toastMessage = [NSString stringWithFormat:@\"App切换图标错误:\\n%@\", error];\n                [UIWindow t_showTostForMessage:toastMessage];\n            }\n        }];\n    } else {\n        [UIWindow t_showTostForMessage:@\"10.3以下系统不支持切换图标\"];\n    }\n}\n\n@end\n"
  },
  {
    "path": "TLocationPlugin/ViewControllerAndViews/TLocationChangeAppICONViewController.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"14865.1\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" colorMatched=\"YES\">\n    <device id=\"retina5_9\" orientation=\"portrait\" appearance=\"light\"/>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"14819.2\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\" customClass=\"TLocationChangeAppICONViewController\">\n            <connections>\n                <outlet property=\"dingDing\" destination=\"Lrh-48-UxP\" id=\"0wj-bn-Gsa\"/>\n                <outlet property=\"lark\" destination=\"i06-1m-x0e\" id=\"dsD-p1-Zpu\"/>\n                <outlet property=\"neiXin\" destination=\"oZ9-Cp-bMe\" id=\"fZC-gd-pM0\"/>\n                <outlet property=\"qq\" destination=\"7pU-rl-Kdg\" id=\"vNd-WG-6Su\"/>\n                <outlet property=\"tim\" destination=\"4Hh-uh-57S\" id=\"Y1u-0W-um3\"/>\n                <outlet property=\"view\" destination=\"i5M-Pr-FkT\" id=\"sfx-zR-JGt\"/>\n                <outlet property=\"weChat\" destination=\"b3X-ao-8Au\" id=\"Bsn-de-sDN\"/>\n                <outlet property=\"weWork\" destination=\"Ap9-PG-557\" id=\"MLV-yO-9g2\"/>\n            </connections>\n        </placeholder>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <view clearsContextBeforeDrawing=\"NO\" contentMode=\"scaleToFill\" id=\"i5M-Pr-FkT\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"812\"/>\n            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n            <subviews>\n                <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"7tt-7J-Jmy\">\n                    <rect key=\"frame\" x=\"0.0\" y=\"44\" width=\"375\" height=\"768\"/>\n                    <subviews>\n                        <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Ap9-PG-557\">\n                            <rect key=\"frame\" x=\"8\" y=\"20\" width=\"175.66666666666666\" height=\"87.666666666666671\"/>\n                            <color key=\"backgroundColor\" white=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            <constraints>\n                                <constraint firstAttribute=\"width\" secondItem=\"Ap9-PG-557\" secondAttribute=\"height\" multiplier=\"2:1\" id=\"bf0-Fg-8iQ\"/>\n                            </constraints>\n                            <state key=\"normal\" title=\"WeWork\">\n                                <color key=\"titleColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </state>\n                            <state key=\"highlighted\">\n                                <color key=\"titleColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </state>\n                            <userDefinedRuntimeAttributes>\n                                <userDefinedRuntimeAttribute type=\"number\" keyPath=\"layer.cornerRadius\">\n                                    <integer key=\"value\" value=\"5\"/>\n                                </userDefinedRuntimeAttribute>\n                                <userDefinedRuntimeAttribute type=\"boolean\" keyPath=\"layer.masksToBounds\" value=\"YES\"/>\n                            </userDefinedRuntimeAttributes>\n                            <connections>\n                                <action selector=\"changeIconButtonClicked:\" destination=\"-1\" eventType=\"touchUpInside\" id=\"Oi4-zS-qcu\"/>\n                            </connections>\n                        </button>\n                        <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Lrh-48-UxP\">\n                            <rect key=\"frame\" x=\"191.66666666666663\" y=\"20\" width=\"175.33333333333337\" height=\"87.666666666666671\"/>\n                            <color key=\"backgroundColor\" white=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            <state key=\"normal\" title=\"DingDing\">\n                                <color key=\"titleColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </state>\n                            <state key=\"highlighted\">\n                                <color key=\"titleColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </state>\n                            <userDefinedRuntimeAttributes>\n                                <userDefinedRuntimeAttribute type=\"number\" keyPath=\"layer.cornerRadius\">\n                                    <integer key=\"value\" value=\"5\"/>\n                                </userDefinedRuntimeAttribute>\n                                <userDefinedRuntimeAttribute type=\"boolean\" keyPath=\"layer.masksToBounds\" value=\"YES\"/>\n                            </userDefinedRuntimeAttributes>\n                            <connections>\n                                <action selector=\"changeIconButtonClicked:\" destination=\"-1\" eventType=\"touchUpInside\" id=\"hvF-nu-EvK\"/>\n                            </connections>\n                        </button>\n                        <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"i06-1m-x0e\">\n                            <rect key=\"frame\" x=\"8\" y=\"117.66666666666666\" width=\"175.66666666666666\" height=\"88\"/>\n                            <color key=\"backgroundColor\" white=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            <state key=\"normal\" title=\"Lark\">\n                                <color key=\"titleColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </state>\n                            <state key=\"highlighted\">\n                                <color key=\"titleColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </state>\n                            <userDefinedRuntimeAttributes>\n                                <userDefinedRuntimeAttribute type=\"number\" keyPath=\"layer.cornerRadius\">\n                                    <integer key=\"value\" value=\"5\"/>\n                                </userDefinedRuntimeAttribute>\n                                <userDefinedRuntimeAttribute type=\"boolean\" keyPath=\"layer.masksToBounds\" value=\"YES\"/>\n                            </userDefinedRuntimeAttributes>\n                            <connections>\n                                <action selector=\"changeIconButtonClicked:\" destination=\"-1\" eventType=\"touchUpInside\" id=\"uFq-zt-WSH\"/>\n                            </connections>\n                        </button>\n                        <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"7pU-rl-Kdg\">\n                            <rect key=\"frame\" x=\"8\" y=\"215.66666666666666\" width=\"175.66666666666666\" height=\"87.666666666666657\"/>\n                            <color key=\"backgroundColor\" white=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            <state key=\"normal\" title=\"QQ\">\n                                <color key=\"titleColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </state>\n                            <state key=\"highlighted\">\n                                <color key=\"titleColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </state>\n                            <userDefinedRuntimeAttributes>\n                                <userDefinedRuntimeAttribute type=\"number\" keyPath=\"layer.cornerRadius\">\n                                    <integer key=\"value\" value=\"5\"/>\n                                </userDefinedRuntimeAttribute>\n                                <userDefinedRuntimeAttribute type=\"boolean\" keyPath=\"layer.masksToBounds\" value=\"YES\"/>\n                            </userDefinedRuntimeAttributes>\n                            <connections>\n                                <action selector=\"changeIconButtonClicked:\" destination=\"-1\" eventType=\"touchUpInside\" id=\"okI-rv-qgZ\"/>\n                            </connections>\n                        </button>\n                        <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"oZ9-Cp-bMe\">\n                            <rect key=\"frame\" x=\"191.66666666666663\" y=\"117.66666666666666\" width=\"175.33333333333337\" height=\"88\"/>\n                            <color key=\"backgroundColor\" white=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            <state key=\"normal\" title=\"NeiXin\">\n                                <color key=\"titleColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </state>\n                            <state key=\"highlighted\">\n                                <color key=\"titleColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </state>\n                            <userDefinedRuntimeAttributes>\n                                <userDefinedRuntimeAttribute type=\"number\" keyPath=\"layer.cornerRadius\">\n                                    <integer key=\"value\" value=\"5\"/>\n                                </userDefinedRuntimeAttribute>\n                                <userDefinedRuntimeAttribute type=\"boolean\" keyPath=\"layer.masksToBounds\" value=\"YES\"/>\n                            </userDefinedRuntimeAttributes>\n                            <connections>\n                                <action selector=\"changeIconButtonClicked:\" destination=\"-1\" eventType=\"touchUpInside\" id=\"xTu-Ji-pTH\"/>\n                            </connections>\n                        </button>\n                        <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"4Hh-uh-57S\">\n                            <rect key=\"frame\" x=\"191.66666666666663\" y=\"215.66666666666666\" width=\"175.33333333333337\" height=\"87.666666666666657\"/>\n                            <color key=\"backgroundColor\" white=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            <state key=\"normal\" title=\"Tim\">\n                                <color key=\"titleColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </state>\n                            <state key=\"highlighted\">\n                                <color key=\"titleColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </state>\n                            <userDefinedRuntimeAttributes>\n                                <userDefinedRuntimeAttribute type=\"number\" keyPath=\"layer.cornerRadius\">\n                                    <integer key=\"value\" value=\"5\"/>\n                                </userDefinedRuntimeAttribute>\n                                <userDefinedRuntimeAttribute type=\"boolean\" keyPath=\"layer.masksToBounds\" value=\"YES\"/>\n                            </userDefinedRuntimeAttributes>\n                            <connections>\n                                <action selector=\"changeIconButtonClicked:\" destination=\"-1\" eventType=\"touchUpInside\" id=\"062-Qo-fcL\"/>\n                            </connections>\n                        </button>\n                        <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"b3X-ao-8Au\">\n                            <rect key=\"frame\" x=\"8\" y=\"313.33333333333331\" width=\"175.66666666666666\" height=\"87.666666666666686\"/>\n                            <color key=\"backgroundColor\" white=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            <state key=\"normal\" title=\"WeChat\">\n                                <color key=\"titleColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </state>\n                            <state key=\"highlighted\">\n                                <color key=\"titleColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </state>\n                            <userDefinedRuntimeAttributes>\n                                <userDefinedRuntimeAttribute type=\"number\" keyPath=\"layer.cornerRadius\">\n                                    <integer key=\"value\" value=\"5\"/>\n                                </userDefinedRuntimeAttribute>\n                                <userDefinedRuntimeAttribute type=\"boolean\" keyPath=\"layer.masksToBounds\" value=\"YES\"/>\n                            </userDefinedRuntimeAttributes>\n                            <connections>\n                                <action selector=\"changeIconButtonClicked:\" destination=\"-1\" eventType=\"touchUpInside\" id=\"VBb-uP-lIy\"/>\n                            </connections>\n                        </button>\n                    </subviews>\n                    <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                    <constraints>\n                        <constraint firstItem=\"i06-1m-x0e\" firstAttribute=\"height\" secondItem=\"Ap9-PG-557\" secondAttribute=\"height\" id=\"4dk-Cx-8GB\"/>\n                        <constraint firstItem=\"b3X-ao-8Au\" firstAttribute=\"trailing\" secondItem=\"7pU-rl-Kdg\" secondAttribute=\"trailing\" id=\"4fJ-Gx-n9b\"/>\n                        <constraint firstItem=\"oZ9-Cp-bMe\" firstAttribute=\"trailing\" secondItem=\"Lrh-48-UxP\" secondAttribute=\"trailing\" id=\"7CW-M5-cgP\"/>\n                        <constraint firstItem=\"i06-1m-x0e\" firstAttribute=\"top\" secondItem=\"Ap9-PG-557\" secondAttribute=\"bottom\" constant=\"10\" id=\"GCI-nf-OFL\"/>\n                        <constraint firstItem=\"i06-1m-x0e\" firstAttribute=\"trailing\" secondItem=\"Ap9-PG-557\" secondAttribute=\"trailing\" id=\"Glj-Gc-kiO\"/>\n                        <constraint firstItem=\"Lrh-48-UxP\" firstAttribute=\"bottom\" secondItem=\"Ap9-PG-557\" secondAttribute=\"bottom\" id=\"I2F-55-Kvs\"/>\n                        <constraint firstItem=\"oZ9-Cp-bMe\" firstAttribute=\"top\" secondItem=\"i06-1m-x0e\" secondAttribute=\"top\" id=\"J4j-SV-dEM\"/>\n                        <constraint firstItem=\"oZ9-Cp-bMe\" firstAttribute=\"bottom\" secondItem=\"i06-1m-x0e\" secondAttribute=\"bottom\" id=\"Kh5-a7-zyD\"/>\n                        <constraint firstAttribute=\"trailingMargin\" secondItem=\"Lrh-48-UxP\" secondAttribute=\"trailing\" id=\"LoJ-pG-atU\"/>\n                        <constraint firstItem=\"7pU-rl-Kdg\" firstAttribute=\"height\" secondItem=\"i06-1m-x0e\" secondAttribute=\"height\" id=\"QHO-pR-0QN\"/>\n                        <constraint firstItem=\"7pU-rl-Kdg\" firstAttribute=\"trailing\" secondItem=\"i06-1m-x0e\" secondAttribute=\"trailing\" id=\"Tdx-mc-MR5\"/>\n                        <constraint firstItem=\"7pU-rl-Kdg\" firstAttribute=\"leading\" secondItem=\"i06-1m-x0e\" secondAttribute=\"leading\" id=\"XvG-oj-rHb\"/>\n                        <constraint firstItem=\"Lrh-48-UxP\" firstAttribute=\"top\" secondItem=\"Ap9-PG-557\" secondAttribute=\"top\" id=\"ZYE-bb-mLz\"/>\n                        <constraint firstItem=\"Ap9-PG-557\" firstAttribute=\"width\" secondItem=\"7tt-7J-Jmy\" secondAttribute=\"width\" multiplier=\"0.5\" constant=\"-12\" id=\"cFd-X4-W6f\"/>\n                        <constraint firstItem=\"4Hh-uh-57S\" firstAttribute=\"leading\" secondItem=\"oZ9-Cp-bMe\" secondAttribute=\"leading\" id=\"elX-ae-97T\"/>\n                        <constraint firstItem=\"Ap9-PG-557\" firstAttribute=\"top\" secondItem=\"7tt-7J-Jmy\" secondAttribute=\"top\" constant=\"20\" id=\"gF7-no-kIZ\"/>\n                        <constraint firstItem=\"b3X-ao-8Au\" firstAttribute=\"height\" secondItem=\"7pU-rl-Kdg\" secondAttribute=\"height\" id=\"hVb-nk-YyG\"/>\n                        <constraint firstItem=\"b3X-ao-8Au\" firstAttribute=\"top\" secondItem=\"7pU-rl-Kdg\" secondAttribute=\"bottom\" constant=\"10\" id=\"iyl-v6-mZk\"/>\n                        <constraint firstItem=\"oZ9-Cp-bMe\" firstAttribute=\"leading\" secondItem=\"Lrh-48-UxP\" secondAttribute=\"leading\" id=\"jz0-qY-TMa\"/>\n                        <constraint firstItem=\"7pU-rl-Kdg\" firstAttribute=\"top\" secondItem=\"i06-1m-x0e\" secondAttribute=\"bottom\" constant=\"10\" id=\"kuV-7g-YLO\"/>\n                        <constraint firstItem=\"b3X-ao-8Au\" firstAttribute=\"leading\" secondItem=\"7pU-rl-Kdg\" secondAttribute=\"leading\" id=\"n5o-MM-99H\"/>\n                        <constraint firstItem=\"4Hh-uh-57S\" firstAttribute=\"top\" secondItem=\"7pU-rl-Kdg\" secondAttribute=\"top\" id=\"oFa-4v-KS2\"/>\n                        <constraint firstItem=\"Ap9-PG-557\" firstAttribute=\"leading\" secondItem=\"7tt-7J-Jmy\" secondAttribute=\"leadingMargin\" id=\"oRa-QU-2ZY\"/>\n                        <constraint firstItem=\"Lrh-48-UxP\" firstAttribute=\"width\" secondItem=\"Ap9-PG-557\" secondAttribute=\"width\" id=\"odq-c0-6gy\"/>\n                        <constraint firstItem=\"4Hh-uh-57S\" firstAttribute=\"trailing\" secondItem=\"oZ9-Cp-bMe\" secondAttribute=\"trailing\" id=\"vOU-ne-rnZ\"/>\n                        <constraint firstItem=\"i06-1m-x0e\" firstAttribute=\"leading\" secondItem=\"Ap9-PG-557\" secondAttribute=\"leading\" id=\"veX-MT-nUh\"/>\n                        <constraint firstItem=\"4Hh-uh-57S\" firstAttribute=\"bottom\" secondItem=\"7pU-rl-Kdg\" secondAttribute=\"bottom\" id=\"yky-SU-TZc\"/>\n                    </constraints>\n                </view>\n            </subviews>\n            <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n            <constraints>\n                <constraint firstItem=\"7tt-7J-Jmy\" firstAttribute=\"top\" secondItem=\"i5M-Pr-FkT\" secondAttribute=\"topMargin\" id=\"EMG-gG-iCo\"/>\n                <constraint firstAttribute=\"bottom\" secondItem=\"7tt-7J-Jmy\" secondAttribute=\"bottom\" id=\"IV2-5m-xEj\"/>\n                <constraint firstItem=\"7tt-7J-Jmy\" firstAttribute=\"leading\" secondItem=\"i5M-Pr-FkT\" secondAttribute=\"leading\" id=\"Zc7-6h-dbS\"/>\n                <constraint firstAttribute=\"trailing\" secondItem=\"7tt-7J-Jmy\" secondAttribute=\"trailing\" id=\"r3t-iv-zvd\"/>\n            </constraints>\n            <point key=\"canvasLocation\" x=\"-68.115942028985515\" y=\"152.67857142857142\"/>\n        </view>\n    </objects>\n</document>\n"
  },
  {
    "path": "TLocationPlugin/ViewControllerAndViews/TLocationNavigationController.h",
    "content": "//\n//  TLocationNavigationController.h\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/5.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface TLocationNavigationController : UINavigationController\n\n@property(class, nonatomic, assign) BOOL isShowing;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "TLocationPlugin/ViewControllerAndViews/TLocationNavigationController.m",
    "content": "//\n//  TLocationNavigationController.m\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/5.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import \"TLocationNavigationController.h\"\n#import \"UIImage+TLocationPlugin.h\"\n#import \"TLocationManager.h\"\n\n@interface TLocationNavigationController ()\n\n@property (nonatomic, assign) UIStatusBarStyle currentStatusBarStyle;\n\n@end\n\n@implementation TLocationNavigationController\n\n- (void)dealloc {\n    TLocationNavigationController.isShowing = NO;\n    /// restore old style\n    [UIApplication sharedApplication].statusBarStyle = self.currentStatusBarStyle;\n}\n\n- (void)viewDidLoad {\n    [super viewDidLoad];\n    /// save old style\n    self.currentStatusBarStyle = [UIApplication sharedApplication].statusBarStyle;\n    self.view.backgroundColor = UIColor.whiteColor;\n    \n    self.navigationBar.shadowImage = nil;\n    self.navigationBar.tintColor = UIColor.whiteColor;\n    self.navigationBar.tintColor = UIColor.blackColor;\n    self.navigationBar.titleTextAttributes = @{\n        NSForegroundColorAttributeName: UIColor.blackColor,\n        NSFontAttributeName: [UIFont boldSystemFontOfSize:17],\n    };\n}\n\n#pragma mark - Setter/Getter\nstatic BOOL _t_isShowing = NO;\n+ (BOOL)isShowing {\n    return _t_isShowing;\n}\n\n+ (void)setIsShowing:(BOOL)isShowing {\n    _t_isShowing = isShowing;\n    TLocationManager.shared.suspend = isShowing;\n}\n\n\n- (UIModalPresentationStyle)modalPresentationStyle {\n    return UIModalPresentationFullScreen;\n}\n\n- (UIStatusBarStyle)preferredStatusBarStyle {\n    return UIStatusBarStyleDefault;\n}\n\n- (UIViewController *)childViewControllerForStatusBarStyle {\n    return nil;\n}\n\n- (UIViewController *)childViewControllerForStatusBarHidden {\n    return nil;\n}\n\n@end\n"
  },
  {
    "path": "TLocationPlugin/ViewControllerAndViews/TLocationSettingViewController.h",
    "content": "//\n//  TLocationSettingViewController.h\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/4.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n#import \"TBaseViewController.h\"\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface TLocationSettingViewController : TBaseViewController\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "TLocationPlugin/ViewControllerAndViews/TLocationSettingViewController.m",
    "content": "//\n//  TLocationSettingViewController.m\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/4.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import \"TLocationSettingViewController.h\"\n#import \"TSelectLocationDataViewController.h\"\n#import \"TLocationManager.h\"\n#import \"UIImage+TLocationPlugin.h\"\n#import \"TAlertController.h\"\n#import \"UIWindow+TLocationPluginToast.h\"\n#import \"TLocationChangeAppICONViewController.h\"\n\n@interface TLocationSettingViewController () <UITextFieldDelegate>\n\n@property (nonatomic, strong) IBOutlet UIScrollView *contentScrollView;\n@property (nonatomic, strong) IBOutlet UILabel *locationNameLabel;\n@property (nonatomic, strong) IBOutlet UITextField *latitudeTextField;\n@property (nonatomic, strong) IBOutlet UITextField *longitudeTextField;\n@property (nonatomic, strong) IBOutlet UITextField *rangeTextField;\n@property (nonatomic, strong) IBOutlet UISwitch *usingHookSwitch;\n@property (strong, nonatomic) IBOutlet UISwitch *usingToastSwitch;\n\n@end\n\n@implementation TLocationSettingViewController\n\n- (void)viewDidLoad {\n    [super viewDidLoad];\n    self.title = @\"设置\";\n    UITapGestureRecognizer *sigleTap = [[UITapGestureRecognizer alloc] initWithTarget:self\n                                                                               action:@selector(tapScrollView)];\n    [self.contentScrollView addGestureRecognizer:sigleTap];\n    NSString *locationName = TLocationManager.shared.locationName;\n    CLLocationDegrees latitude = TLocationManager.shared.latitude;\n    CLLocationDegrees longitude = TLocationManager.shared.longitude;\n    NSInteger range = TLocationManager.shared.range;\n    BOOL isUsingHook = TLocationManager.shared.usingHookLocation;\n    BOOL isUsingToast = TLocationManager.shared.usingToast;\n    self.locationNameLabel.text = locationName;\n    self.latitudeTextField.text = @(latitude).stringValue;\n    self.longitudeTextField.text = @(longitude).stringValue;\n    self.rangeTextField.text = @(range).stringValue;\n    self.usingHookSwitch.on = isUsingHook;\n    self.usingToastSwitch.on = isUsingToast;\n}\n\n- (void)tapScrollView {\n    [self.view endEditing:YES];\n}\n\n/// 开关\n- (IBAction)usingHookLocationValueChanged:(UISwitch *)sender {\n    [self.view endEditing:YES];\n    TLocationManager.shared.usingHookLocation = sender.isOn;\n    [UIWindow t_showTostForMessage:sender.isOn ? @\"已开启位置拦截\" : @\"已关闭位置拦截\"];\n}\n\n- (IBAction)usingToastValueChanged:(UISwitch *)sender {\n    [self.view endEditing:YES];\n    TLocationManager.shared.usingToast = sender.isOn;\n    [UIWindow t_showTostForMessage:sender.isOn ? @\"已开启定位提示\" : @\"已关闭定位提示\"];\n}\n\n- (IBAction)changeAppICON:(UIButton *)sender {\n    TLocationChangeAppICONViewController *vc = [[TLocationChangeAppICONViewController alloc] init];\n    [self.navigationController pushViewController:vc animated:YES];\n}\n\n- (IBAction)cleanCacheData:(UIButton *)sender {\n    TAlertController *alert = [TAlertController destructiveAlertWithTitle:@\"确定清空保存的位置列表数据?\"\n                                                                  message:nil\n                                                              cancelTitle:@\"取消\"\n                                                              cancelBlock:nil\n                                                         destructiveTitle:@\"确定\"\n                                                         destructiveBlock:^(TAlertController * _Nonnull alert, UIAlertAction * _Nonnull action) {\n        TLocationManager.shared.cacheDataArray = nil;\n        [TLocationManager.shared saveCacheDataArray];\n        [UIWindow t_showTostForMessage:@\"已清空保存的位置列表数据\"];\n    }];\n    [self presentViewController:alert animated:YES completion:nil];\n}\n\n#pragma mark - UITextFieldDelegate\n- (BOOL)textFieldShouldReturn:(UITextField *)textField {\n    [self.view endEditing:YES];\n    return YES;\n}\n\n- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {\n    if (textField == self.rangeTextField) {\n        NSInteger range = [self.rangeTextField.text integerValue];\n        if (TLocationManager.shared.range != range) {\n            TLocationManager.shared.range = range;\n            NSString *tostText = [NSString stringWithFormat:@\"已保存范围: %ld\", (long)TLocationManager.shared.range];\n            // 重设值, TLocationManager.shared.range 赋值包含判断\n            textField.text = @(TLocationManager.shared.range).stringValue;\n            [UIWindow t_showTostForMessage:tostText];\n        }\n    }\n    return YES;\n}\n\n- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {\n    [self.view endEditing:YES];\n}\n\n@end\n"
  },
  {
    "path": "TLocationPlugin/ViewControllerAndViews/TLocationSettingViewController.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"14865.1\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" colorMatched=\"YES\">\n    <device id=\"retina5_9\" orientation=\"portrait\" appearance=\"light\"/>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"14819.2\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\" customClass=\"TLocationSettingViewController\">\n            <connections>\n                <outlet property=\"contentScrollView\" destination=\"hky-M3-ICB\" id=\"TMf-mn-veE\"/>\n                <outlet property=\"latitudeTextField\" destination=\"K2X-fA-dZd\" id=\"Y5T-8s-AEj\"/>\n                <outlet property=\"locationNameLabel\" destination=\"Cwa-lD-bT9\" id=\"opb-VE-UWZ\"/>\n                <outlet property=\"longitudeTextField\" destination=\"AvS-No-Mxt\" id=\"icf-Ao-wcr\"/>\n                <outlet property=\"rangeTextField\" destination=\"ggQ-Zj-etz\" id=\"vw6-fr-idL\"/>\n                <outlet property=\"usingHookSwitch\" destination=\"3yV-UL-fdM\" id=\"BpI-np-Exb\"/>\n                <outlet property=\"usingToastSwitch\" destination=\"dAi-MM-MGR\" id=\"fz5-hF-Byt\"/>\n                <outlet property=\"view\" destination=\"i5M-Pr-FkT\" id=\"sfx-zR-JGt\"/>\n            </connections>\n        </placeholder>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <view clearsContextBeforeDrawing=\"NO\" contentMode=\"scaleToFill\" id=\"i5M-Pr-FkT\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"812\"/>\n            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n            <subviews>\n                <scrollView clipsSubviews=\"YES\" multipleTouchEnabled=\"YES\" contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"hky-M3-ICB\">\n                    <rect key=\"frame\" x=\"0.0\" y=\"44\" width=\"375\" height=\"768\"/>\n                    <subviews>\n                        <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"sE3-RS-abB\" userLabel=\"位置\">\n                            <rect key=\"frame\" x=\"16\" y=\"40\" width=\"343\" height=\"152\"/>\n                            <subviews>\n                                <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"位置信息\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"zYq-f4-Bgb\">\n                                    <rect key=\"frame\" x=\"20\" y=\"0.0\" width=\"303\" height=\"40\"/>\n                                    <constraints>\n                                        <constraint firstAttribute=\"height\" constant=\"40\" id=\"i1h-mS-dj1\"/>\n                                    </constraints>\n                                    <fontDescription key=\"fontDescription\" type=\"boldSystem\" pointSize=\"20\"/>\n                                    <nil key=\"textColor\"/>\n                                    <nil key=\"highlightedColor\"/>\n                                </label>\n                                <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"name\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" numberOfLines=\"0\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Cwa-lD-bT9\">\n                                    <rect key=\"frame\" x=\"20\" y=\"40\" width=\"303\" height=\"17\"/>\n                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"14\"/>\n                                    <nil key=\"textColor\"/>\n                                    <nil key=\"highlightedColor\"/>\n                                </label>\n                                <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"纬度:\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"qxb-h7-Vzw\">\n                                    <rect key=\"frame\" x=\"20\" y=\"67\" width=\"40\" height=\"30\"/>\n                                    <color key=\"tintColor\" white=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                                    <constraints>\n                                        <constraint firstAttribute=\"height\" constant=\"30\" id=\"ISR-zi-9BW\"/>\n                                        <constraint firstAttribute=\"width\" constant=\"40\" id=\"M8Z-hk-dHy\"/>\n                                    </constraints>\n                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"15\"/>\n                                    <nil key=\"textColor\"/>\n                                    <nil key=\"highlightedColor\"/>\n                                </label>\n                                <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"经度:\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"aqZ-hf-K3S\">\n                                    <rect key=\"frame\" x=\"20\" y=\"102\" width=\"40\" height=\"30\"/>\n                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"15\"/>\n                                    <nil key=\"textColor\"/>\n                                    <nil key=\"highlightedColor\"/>\n                                </label>\n                                <textField opaque=\"NO\" contentMode=\"scaleToFill\" enabled=\"NO\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"center\" borderStyle=\"roundedRect\" textAlignment=\"right\" minimumFontSize=\"17\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"K2X-fA-dZd\">\n                                    <rect key=\"frame\" x=\"70\" y=\"67\" width=\"253\" height=\"30\"/>\n                                    <color key=\"tintColor\" white=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                                    <color key=\"textColor\" white=\"0.33333333333333331\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                                    <fontDescription key=\"fontDescription\" name=\"HelveticaNeue\" family=\"Helvetica Neue\" pointSize=\"15\"/>\n                                    <textInputTraits key=\"textInputTraits\" keyboardType=\"decimalPad\" returnKeyType=\"next\"/>\n                                    <connections>\n                                        <outlet property=\"delegate\" destination=\"-1\" id=\"O96-EE-yU0\"/>\n                                    </connections>\n                                </textField>\n                                <textField opaque=\"NO\" contentMode=\"scaleToFill\" enabled=\"NO\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"center\" borderStyle=\"roundedRect\" textAlignment=\"right\" minimumFontSize=\"17\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"AvS-No-Mxt\">\n                                    <rect key=\"frame\" x=\"70\" y=\"102\" width=\"253\" height=\"30\"/>\n                                    <color key=\"tintColor\" white=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                                    <color key=\"textColor\" white=\"0.33333333333333331\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                                    <fontDescription key=\"fontDescription\" name=\"HelveticaNeue\" family=\"Helvetica Neue\" pointSize=\"15\"/>\n                                    <textInputTraits key=\"textInputTraits\" keyboardType=\"decimalPad\" returnKeyType=\"next\"/>\n                                    <connections>\n                                        <outlet property=\"delegate\" destination=\"-1\" id=\"PEk-vL-zzD\"/>\n                                    </connections>\n                                </textField>\n                            </subviews>\n                            <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            <constraints>\n                                <constraint firstItem=\"K2X-fA-dZd\" firstAttribute=\"leading\" secondItem=\"qxb-h7-Vzw\" secondAttribute=\"trailing\" constant=\"10\" id=\"1QS-05-bTf\"/>\n                                <constraint firstItem=\"qxb-h7-Vzw\" firstAttribute=\"leading\" secondItem=\"sE3-RS-abB\" secondAttribute=\"leading\" constant=\"20\" id=\"2sG-mg-WJN\"/>\n                                <constraint firstItem=\"aqZ-hf-K3S\" firstAttribute=\"top\" secondItem=\"qxb-h7-Vzw\" secondAttribute=\"bottom\" constant=\"5\" id=\"2yL-Qx-6f7\"/>\n                                <constraint firstItem=\"zYq-f4-Bgb\" firstAttribute=\"top\" secondItem=\"sE3-RS-abB\" secondAttribute=\"top\" id=\"3bk-QE-vl3\"/>\n                                <constraint firstItem=\"Cwa-lD-bT9\" firstAttribute=\"leading\" secondItem=\"sE3-RS-abB\" secondAttribute=\"leading\" constant=\"20\" id=\"4V9-jZ-ble\"/>\n                                <constraint firstItem=\"AvS-No-Mxt\" firstAttribute=\"leading\" secondItem=\"K2X-fA-dZd\" secondAttribute=\"leading\" id=\"88J-Wr-7NQ\"/>\n                                <constraint firstItem=\"Cwa-lD-bT9\" firstAttribute=\"top\" secondItem=\"zYq-f4-Bgb\" secondAttribute=\"bottom\" id=\"JIu-Us-L1j\"/>\n                                <constraint firstItem=\"AvS-No-Mxt\" firstAttribute=\"top\" secondItem=\"aqZ-hf-K3S\" secondAttribute=\"top\" id=\"LFg-O1-7pA\"/>\n                                <constraint firstItem=\"qxb-h7-Vzw\" firstAttribute=\"top\" secondItem=\"Cwa-lD-bT9\" secondAttribute=\"bottom\" constant=\"10\" id=\"OVf-pS-k9p\"/>\n                                <constraint firstItem=\"aqZ-hf-K3S\" firstAttribute=\"leading\" secondItem=\"qxb-h7-Vzw\" secondAttribute=\"leading\" id=\"OgP-e4-Efh\"/>\n                                <constraint firstItem=\"K2X-fA-dZd\" firstAttribute=\"top\" secondItem=\"qxb-h7-Vzw\" secondAttribute=\"top\" id=\"QYH-qE-rGR\"/>\n                                <constraint firstItem=\"K2X-fA-dZd\" firstAttribute=\"bottom\" secondItem=\"qxb-h7-Vzw\" secondAttribute=\"bottom\" id=\"Qwn-xG-Buz\"/>\n                                <constraint firstAttribute=\"trailing\" secondItem=\"Cwa-lD-bT9\" secondAttribute=\"trailing\" constant=\"20\" id=\"Rii-aB-TTR\"/>\n                                <constraint firstItem=\"zYq-f4-Bgb\" firstAttribute=\"leading\" secondItem=\"sE3-RS-abB\" secondAttribute=\"leading\" constant=\"20\" id=\"S1u-Ii-KF4\"/>\n                                <constraint firstAttribute=\"trailing\" secondItem=\"K2X-fA-dZd\" secondAttribute=\"trailing\" constant=\"20\" id=\"TUZ-51-tIa\"/>\n                                <constraint firstItem=\"AvS-No-Mxt\" firstAttribute=\"trailing\" secondItem=\"K2X-fA-dZd\" secondAttribute=\"trailing\" id=\"Tm3-d7-k4T\"/>\n                                <constraint firstItem=\"aqZ-hf-K3S\" firstAttribute=\"height\" secondItem=\"qxb-h7-Vzw\" secondAttribute=\"height\" id=\"YzI-CY-Qnf\"/>\n                                <constraint firstItem=\"aqZ-hf-K3S\" firstAttribute=\"width\" secondItem=\"qxb-h7-Vzw\" secondAttribute=\"width\" id=\"ZAg-aR-wK1\"/>\n                                <constraint firstAttribute=\"bottom\" secondItem=\"aqZ-hf-K3S\" secondAttribute=\"bottom\" constant=\"20\" id=\"ej5-KE-Fnf\"/>\n                                <constraint firstAttribute=\"trailing\" secondItem=\"zYq-f4-Bgb\" secondAttribute=\"trailing\" constant=\"20\" id=\"k3k-cv-JCF\"/>\n                                <constraint firstItem=\"AvS-No-Mxt\" firstAttribute=\"bottom\" secondItem=\"aqZ-hf-K3S\" secondAttribute=\"bottom\" id=\"pCI-rB-sxW\"/>\n                            </constraints>\n                            <userDefinedRuntimeAttributes>\n                                <userDefinedRuntimeAttribute type=\"number\" keyPath=\"layer.cornerRadius\">\n                                    <integer key=\"value\" value=\"5\"/>\n                                </userDefinedRuntimeAttribute>\n                                <userDefinedRuntimeAttribute type=\"boolean\" keyPath=\"layer.masksToBounds\" value=\"YES\"/>\n                                <userDefinedRuntimeAttribute type=\"color\" keyPath=\"layer.t_borderUIColor\">\n                                    <color key=\"value\" white=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                                </userDefinedRuntimeAttribute>\n                                <userDefinedRuntimeAttribute type=\"number\" keyPath=\"layer.borderWidth\">\n                                    <integer key=\"value\" value=\"1\"/>\n                                </userDefinedRuntimeAttribute>\n                            </userDefinedRuntimeAttributes>\n                        </view>\n                        <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Pye-GT-934\" userLabel=\"范围\">\n                            <rect key=\"frame\" x=\"16\" y=\"212\" width=\"343\" height=\"90\"/>\n                            <subviews>\n                                <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"范围设置\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"1es-Ok-4Z1\">\n                                    <rect key=\"frame\" x=\"20\" y=\"0.0\" width=\"303\" height=\"40\"/>\n                                    <constraints>\n                                        <constraint firstAttribute=\"height\" constant=\"40\" id=\"vkS-Gr-nqd\"/>\n                                    </constraints>\n                                    <fontDescription key=\"fontDescription\" type=\"boldSystem\" pointSize=\"20\"/>\n                                    <nil key=\"textColor\"/>\n                                    <nil key=\"highlightedColor\"/>\n                                </label>\n                                <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"范围:\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"fO8-Y8-GiO\">\n                                    <rect key=\"frame\" x=\"20\" y=\"40\" width=\"35\" height=\"30\"/>\n                                    <constraints>\n                                        <constraint firstAttribute=\"height\" constant=\"30\" id=\"Tkh-yi-Aej\"/>\n                                    </constraints>\n                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"15\"/>\n                                    <nil key=\"textColor\"/>\n                                    <nil key=\"highlightedColor\"/>\n                                </label>\n                                <textField opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"left\" contentVerticalAlignment=\"center\" borderStyle=\"roundedRect\" textAlignment=\"right\" minimumFontSize=\"17\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"ggQ-Zj-etz\">\n                                    <rect key=\"frame\" x=\"65\" y=\"40\" width=\"258\" height=\"30\"/>\n                                    <color key=\"tintColor\" white=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                                    <fontDescription key=\"fontDescription\" name=\"HelveticaNeue\" family=\"Helvetica Neue\" pointSize=\"15\"/>\n                                    <textInputTraits key=\"textInputTraits\" keyboardType=\"numberPad\" returnKeyType=\"done\"/>\n                                    <connections>\n                                        <outlet property=\"delegate\" destination=\"-1\" id=\"H3U-gv-Jzo\"/>\n                                    </connections>\n                                </textField>\n                            </subviews>\n                            <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            <constraints>\n                                <constraint firstItem=\"ggQ-Zj-etz\" firstAttribute=\"bottom\" secondItem=\"fO8-Y8-GiO\" secondAttribute=\"bottom\" id=\"4n8-hf-IZv\"/>\n                                <constraint firstItem=\"ggQ-Zj-etz\" firstAttribute=\"top\" secondItem=\"fO8-Y8-GiO\" secondAttribute=\"top\" id=\"9Ss-ge-H7f\"/>\n                                <constraint firstItem=\"1es-Ok-4Z1\" firstAttribute=\"top\" secondItem=\"Pye-GT-934\" secondAttribute=\"top\" id=\"G3p-Ap-0hh\"/>\n                                <constraint firstAttribute=\"bottom\" secondItem=\"fO8-Y8-GiO\" secondAttribute=\"bottom\" constant=\"20\" id=\"U50-w6-aAA\"/>\n                                <constraint firstAttribute=\"trailing\" secondItem=\"ggQ-Zj-etz\" secondAttribute=\"trailing\" constant=\"20\" id=\"UHd-uZ-rTq\"/>\n                                <constraint firstItem=\"1es-Ok-4Z1\" firstAttribute=\"leading\" secondItem=\"Pye-GT-934\" secondAttribute=\"leading\" constant=\"20\" id=\"fJh-0C-dac\"/>\n                                <constraint firstAttribute=\"trailing\" secondItem=\"1es-Ok-4Z1\" secondAttribute=\"trailing\" constant=\"20\" id=\"io3-qm-vJy\"/>\n                                <constraint firstItem=\"fO8-Y8-GiO\" firstAttribute=\"leading\" secondItem=\"Pye-GT-934\" secondAttribute=\"leading\" constant=\"20\" id=\"lUM-oG-Lrr\"/>\n                                <constraint firstItem=\"fO8-Y8-GiO\" firstAttribute=\"top\" secondItem=\"1es-Ok-4Z1\" secondAttribute=\"bottom\" id=\"mSA-5n-I3I\"/>\n                                <constraint firstItem=\"ggQ-Zj-etz\" firstAttribute=\"leading\" secondItem=\"fO8-Y8-GiO\" secondAttribute=\"trailing\" constant=\"10\" id=\"rpT-Rr-wPa\"/>\n                            </constraints>\n                            <userDefinedRuntimeAttributes>\n                                <userDefinedRuntimeAttribute type=\"number\" keyPath=\"layer.cornerRadius\">\n                                    <integer key=\"value\" value=\"5\"/>\n                                </userDefinedRuntimeAttribute>\n                                <userDefinedRuntimeAttribute type=\"boolean\" keyPath=\"layer.masksToBounds\" value=\"YES\"/>\n                                <userDefinedRuntimeAttribute type=\"color\" keyPath=\"layer.t_borderUIColor\">\n                                    <color key=\"value\" white=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                                </userDefinedRuntimeAttribute>\n                                <userDefinedRuntimeAttribute type=\"number\" keyPath=\"layer.borderWidth\">\n                                    <integer key=\"value\" value=\"1\"/>\n                                </userDefinedRuntimeAttribute>\n                            </userDefinedRuntimeAttributes>\n                        </view>\n                        <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Nf7-hy-6Ad\" userLabel=\"开关\">\n                            <rect key=\"frame\" x=\"16\" y=\"322\" width=\"343\" height=\"120\"/>\n                            <subviews>\n                                <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"开关设置\" textAlignment=\"center\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"cq3-28-tDd\">\n                                    <rect key=\"frame\" x=\"20\" y=\"0.0\" width=\"303\" height=\"40\"/>\n                                    <constraints>\n                                        <constraint firstAttribute=\"height\" constant=\"40\" id=\"nZH-Gs-zv9\"/>\n                                    </constraints>\n                                    <fontDescription key=\"fontDescription\" type=\"boldSystem\" pointSize=\"20\"/>\n                                    <nil key=\"textColor\"/>\n                                    <nil key=\"highlightedColor\"/>\n                                </label>\n                                <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"启用位置拦截\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"fk5-72-04V\">\n                                    <rect key=\"frame\" x=\"20\" y=\"40\" width=\"234\" height=\"25\"/>\n                                    <constraints>\n                                        <constraint firstAttribute=\"height\" constant=\"25\" id=\"HvL-fG-1qR\"/>\n                                    </constraints>\n                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"15\"/>\n                                    <nil key=\"textColor\"/>\n                                    <nil key=\"highlightedColor\"/>\n                                </label>\n                                <switch opaque=\"NO\" contentMode=\"scaleToFill\" horizontalHuggingPriority=\"750\" verticalHuggingPriority=\"750\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"3yV-UL-fdM\">\n                                    <rect key=\"frame\" x=\"274\" y=\"37.666666666666686\" width=\"51\" height=\"30\"/>\n                                    <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                                    <constraints>\n                                        <constraint firstAttribute=\"height\" constant=\"30\" id=\"TkI-E9-4QV\"/>\n                                        <constraint firstAttribute=\"width\" constant=\"49\" id=\"ZjS-qg-Flc\"/>\n                                    </constraints>\n                                    <color key=\"onTintColor\" white=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                                    <color key=\"thumbTintColor\" systemColor=\"systemGrayColor\" red=\"0.5568627451\" green=\"0.5568627451\" blue=\"0.57647058819999997\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    <connections>\n                                        <action selector=\"usingHookLocationValueChanged:\" destination=\"-1\" eventType=\"valueChanged\" id=\"PTp-Wv-nfG\"/>\n                                    </connections>\n                                </switch>\n                                <label opaque=\"NO\" userInteractionEnabled=\"NO\" contentMode=\"left\" horizontalHuggingPriority=\"251\" verticalHuggingPriority=\"251\" text=\"启用定位提示\" lineBreakMode=\"tailTruncation\" baselineAdjustment=\"alignBaselines\" adjustsFontSizeToFit=\"NO\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"R9R-aL-Sn4\">\n                                    <rect key=\"frame\" x=\"20\" y=\"75\" width=\"234\" height=\"25\"/>\n                                    <constraints>\n                                        <constraint firstAttribute=\"height\" constant=\"25\" id=\"YB0-al-PEv\"/>\n                                    </constraints>\n                                    <fontDescription key=\"fontDescription\" type=\"system\" pointSize=\"15\"/>\n                                    <nil key=\"textColor\"/>\n                                    <nil key=\"highlightedColor\"/>\n                                </label>\n                                <switch opaque=\"NO\" contentMode=\"scaleToFill\" horizontalHuggingPriority=\"750\" verticalHuggingPriority=\"750\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"dAi-MM-MGR\">\n                                    <rect key=\"frame\" x=\"274\" y=\"72.666666666666686\" width=\"51\" height=\"30\"/>\n                                    <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                                    <color key=\"onTintColor\" white=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                                    <color key=\"thumbTintColor\" systemColor=\"systemGrayColor\" red=\"0.5568627451\" green=\"0.5568627451\" blue=\"0.57647058819999997\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                                    <connections>\n                                        <action selector=\"usingToastValueChanged:\" destination=\"-1\" eventType=\"valueChanged\" id=\"zMT-qb-5KG\"/>\n                                    </connections>\n                                </switch>\n                            </subviews>\n                            <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            <constraints>\n                                <constraint firstItem=\"dAi-MM-MGR\" firstAttribute=\"leading\" secondItem=\"3yV-UL-fdM\" secondAttribute=\"leading\" id=\"3en-b5-RZ7\"/>\n                                <constraint firstItem=\"dAi-MM-MGR\" firstAttribute=\"height\" secondItem=\"3yV-UL-fdM\" secondAttribute=\"height\" id=\"Avg-og-6Kc\"/>\n                                <constraint firstItem=\"dAi-MM-MGR\" firstAttribute=\"trailing\" secondItem=\"3yV-UL-fdM\" secondAttribute=\"trailing\" id=\"F5N-2E-eNr\"/>\n                                <constraint firstItem=\"R9R-aL-Sn4\" firstAttribute=\"top\" secondItem=\"fk5-72-04V\" secondAttribute=\"bottom\" constant=\"10\" id=\"Ftd-pa-ZB5\"/>\n                                <constraint firstItem=\"cq3-28-tDd\" firstAttribute=\"leading\" secondItem=\"Nf7-hy-6Ad\" secondAttribute=\"leading\" constant=\"20\" id=\"Z4F-dO-Bmu\"/>\n                                <constraint firstItem=\"3yV-UL-fdM\" firstAttribute=\"centerY\" secondItem=\"fk5-72-04V\" secondAttribute=\"centerY\" id=\"a3Z-uh-Ok2\"/>\n                                <constraint firstItem=\"cq3-28-tDd\" firstAttribute=\"top\" secondItem=\"Nf7-hy-6Ad\" secondAttribute=\"top\" id=\"aTx-vQ-221\"/>\n                                <constraint firstItem=\"3yV-UL-fdM\" firstAttribute=\"trailing\" secondItem=\"cq3-28-tDd\" secondAttribute=\"trailing\" id=\"hBN-ph-du0\"/>\n                                <constraint firstItem=\"fk5-72-04V\" firstAttribute=\"leading\" secondItem=\"cq3-28-tDd\" secondAttribute=\"leading\" id=\"ifi-n8-nuU\"/>\n                                <constraint firstAttribute=\"bottom\" secondItem=\"R9R-aL-Sn4\" secondAttribute=\"bottom\" constant=\"20\" id=\"iuQ-vW-A1d\"/>\n                                <constraint firstItem=\"fk5-72-04V\" firstAttribute=\"top\" secondItem=\"cq3-28-tDd\" secondAttribute=\"bottom\" id=\"kXR-d6-tg6\"/>\n                                <constraint firstItem=\"dAi-MM-MGR\" firstAttribute=\"centerY\" secondItem=\"R9R-aL-Sn4\" secondAttribute=\"centerY\" id=\"mAG-5S-nUC\"/>\n                                <constraint firstAttribute=\"trailing\" secondItem=\"cq3-28-tDd\" secondAttribute=\"trailing\" constant=\"20\" id=\"nXv-pQ-06F\"/>\n                                <constraint firstItem=\"3yV-UL-fdM\" firstAttribute=\"leading\" secondItem=\"fk5-72-04V\" secondAttribute=\"trailing\" constant=\"20\" id=\"p3F-1l-0mX\"/>\n                                <constraint firstItem=\"R9R-aL-Sn4\" firstAttribute=\"trailing\" secondItem=\"fk5-72-04V\" secondAttribute=\"trailing\" id=\"rko-V4-BHF\"/>\n                                <constraint firstItem=\"R9R-aL-Sn4\" firstAttribute=\"leading\" secondItem=\"fk5-72-04V\" secondAttribute=\"leading\" id=\"ueI-WS-3O8\"/>\n                            </constraints>\n                            <userDefinedRuntimeAttributes>\n                                <userDefinedRuntimeAttribute type=\"number\" keyPath=\"layer.cornerRadius\">\n                                    <integer key=\"value\" value=\"5\"/>\n                                </userDefinedRuntimeAttribute>\n                                <userDefinedRuntimeAttribute type=\"boolean\" keyPath=\"layer.masksToBounds\" value=\"YES\"/>\n                                <userDefinedRuntimeAttribute type=\"color\" keyPath=\"layer.t_borderUIColor\">\n                                    <color key=\"value\" white=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                                </userDefinedRuntimeAttribute>\n                                <userDefinedRuntimeAttribute type=\"number\" keyPath=\"layer.borderWidth\">\n                                    <integer key=\"value\" value=\"1\"/>\n                                </userDefinedRuntimeAttribute>\n                            </userDefinedRuntimeAttributes>\n                        </view>\n                        <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"LV1-LM-h2q\">\n                            <rect key=\"frame\" x=\"16\" y=\"552\" width=\"343\" height=\"40\"/>\n                            <color key=\"backgroundColor\" red=\"1\" green=\"0.0\" blue=\"0.20679030879001292\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"displayP3\"/>\n                            <constraints>\n                                <constraint firstAttribute=\"height\" constant=\"40\" id=\"bil-oO-rV9\"/>\n                            </constraints>\n                            <state key=\"normal\" title=\"清空缓存列表\">\n                                <color key=\"titleColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </state>\n                            <state key=\"highlighted\">\n                                <color key=\"titleColor\" white=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </state>\n                            <userDefinedRuntimeAttributes>\n                                <userDefinedRuntimeAttribute type=\"number\" keyPath=\"layer.cornerRadius\">\n                                    <integer key=\"value\" value=\"5\"/>\n                                </userDefinedRuntimeAttribute>\n                                <userDefinedRuntimeAttribute type=\"boolean\" keyPath=\"layer.masksToBounds\" value=\"YES\"/>\n                            </userDefinedRuntimeAttributes>\n                            <connections>\n                                <action selector=\"cleanCacheData:\" destination=\"-1\" eventType=\"touchUpInside\" id=\"LP7-fr-LaM\"/>\n                            </connections>\n                        </button>\n                        <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"fPk-yc-8np\">\n                            <rect key=\"frame\" x=\"16\" y=\"492\" width=\"343\" height=\"40\"/>\n                            <color key=\"backgroundColor\" white=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            <constraints>\n                                <constraint firstAttribute=\"height\" constant=\"40\" id=\"7C9-GN-RTM\"/>\n                            </constraints>\n                            <state key=\"normal\" title=\"修改图标\">\n                                <color key=\"titleColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </state>\n                            <state key=\"highlighted\">\n                                <color key=\"titleColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </state>\n                            <userDefinedRuntimeAttributes>\n                                <userDefinedRuntimeAttribute type=\"number\" keyPath=\"layer.cornerRadius\">\n                                    <integer key=\"value\" value=\"5\"/>\n                                </userDefinedRuntimeAttribute>\n                                <userDefinedRuntimeAttribute type=\"boolean\" keyPath=\"layer.masksToBounds\" value=\"YES\"/>\n                            </userDefinedRuntimeAttributes>\n                            <connections>\n                                <action selector=\"changeAppICON:\" destination=\"-1\" eventType=\"touchUpInside\" id=\"c6u-Uf-sXB\"/>\n                            </connections>\n                        </button>\n                    </subviews>\n                    <color key=\"backgroundColor\" white=\"0.0\" alpha=\"0.0\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                    <constraints>\n                        <constraint firstItem=\"fPk-yc-8np\" firstAttribute=\"leading\" secondItem=\"Nf7-hy-6Ad\" secondAttribute=\"leading\" id=\"0u9-h2-L0m\"/>\n                        <constraint firstItem=\"sE3-RS-abB\" firstAttribute=\"top\" secondItem=\"hky-M3-ICB\" secondAttribute=\"top\" constant=\"40\" id=\"4Ys-VA-I9j\"/>\n                        <constraint firstItem=\"Pye-GT-934\" firstAttribute=\"leading\" secondItem=\"sE3-RS-abB\" secondAttribute=\"leading\" id=\"9Wq-fc-aZF\"/>\n                        <constraint firstItem=\"Nf7-hy-6Ad\" firstAttribute=\"trailing\" secondItem=\"Pye-GT-934\" secondAttribute=\"trailing\" id=\"BrH-CT-lKX\"/>\n                        <constraint firstItem=\"sE3-RS-abB\" firstAttribute=\"leading\" secondItem=\"hky-M3-ICB\" secondAttribute=\"leading\" constant=\"16\" id=\"D00-6D-dU0\"/>\n                        <constraint firstItem=\"Nf7-hy-6Ad\" firstAttribute=\"leading\" secondItem=\"Pye-GT-934\" secondAttribute=\"leading\" id=\"Fa0-Ba-XKy\"/>\n                        <constraint firstItem=\"sE3-RS-abB\" firstAttribute=\"width\" secondItem=\"hky-M3-ICB\" secondAttribute=\"width\" constant=\"-32\" id=\"Hz7-ON-TT5\"/>\n                        <constraint firstAttribute=\"trailing\" secondItem=\"sE3-RS-abB\" secondAttribute=\"trailing\" constant=\"16\" id=\"JBy-ZY-dk6\"/>\n                        <constraint firstItem=\"LV1-LM-h2q\" firstAttribute=\"leading\" secondItem=\"fPk-yc-8np\" secondAttribute=\"leading\" id=\"PEj-EN-02j\"/>\n                        <constraint firstItem=\"Nf7-hy-6Ad\" firstAttribute=\"top\" secondItem=\"Pye-GT-934\" secondAttribute=\"bottom\" constant=\"20\" id=\"RGb-pm-NXk\"/>\n                        <constraint firstItem=\"Pye-GT-934\" firstAttribute=\"trailing\" secondItem=\"sE3-RS-abB\" secondAttribute=\"trailing\" id=\"Wf1-AG-igz\"/>\n                        <constraint firstAttribute=\"bottom\" secondItem=\"LV1-LM-h2q\" secondAttribute=\"bottom\" constant=\"40\" id=\"YsV-cZ-Amx\"/>\n                        <constraint firstItem=\"fPk-yc-8np\" firstAttribute=\"trailing\" secondItem=\"Nf7-hy-6Ad\" secondAttribute=\"trailing\" id=\"agg-hg-dT6\"/>\n                        <constraint firstItem=\"Pye-GT-934\" firstAttribute=\"top\" secondItem=\"sE3-RS-abB\" secondAttribute=\"bottom\" constant=\"20\" id=\"i0V-M6-e7W\"/>\n                        <constraint firstItem=\"fPk-yc-8np\" firstAttribute=\"top\" secondItem=\"Nf7-hy-6Ad\" secondAttribute=\"bottom\" constant=\"50\" id=\"nZq-8d-3Yj\"/>\n                        <constraint firstItem=\"LV1-LM-h2q\" firstAttribute=\"top\" secondItem=\"fPk-yc-8np\" secondAttribute=\"bottom\" constant=\"20\" id=\"xjv-px-Ugr\"/>\n                        <constraint firstItem=\"LV1-LM-h2q\" firstAttribute=\"trailing\" secondItem=\"fPk-yc-8np\" secondAttribute=\"trailing\" id=\"zfV-df-0ob\"/>\n                    </constraints>\n                </scrollView>\n            </subviews>\n            <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n            <constraints>\n                <constraint firstItem=\"hky-M3-ICB\" firstAttribute=\"top\" secondItem=\"i5M-Pr-FkT\" secondAttribute=\"topMargin\" id=\"0VV-fZ-0TR\"/>\n                <constraint firstAttribute=\"trailing\" secondItem=\"hky-M3-ICB\" secondAttribute=\"trailing\" id=\"Zjg-Y8-e79\"/>\n                <constraint firstAttribute=\"bottom\" secondItem=\"hky-M3-ICB\" secondAttribute=\"bottom\" id=\"qzT-Iv-tIW\"/>\n                <constraint firstItem=\"hky-M3-ICB\" firstAttribute=\"leading\" secondItem=\"i5M-Pr-FkT\" secondAttribute=\"leading\" id=\"tsg-Yg-EV6\"/>\n            </constraints>\n            <point key=\"canvasLocation\" x=\"-196\" y=\"137.4384236453202\"/>\n        </view>\n    </objects>\n</document>\n"
  },
  {
    "path": "TLocationPlugin/ViewControllerAndViews/TLocationTableViewCell.h",
    "content": "//\n//  TLocationTableViewCell.h\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/5.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n#import \"TLocationModel.h\"\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface TLocationTableViewCell : UITableViewCell\n\n@property (nonatomic, weak) UITableView *tableView;\n@property (nonatomic, weak) TLocationModel *model;\n\n- (instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier;\n\n//- (void)setSelectedCell:(BOOL)selected;\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "TLocationPlugin/ViewControllerAndViews/TLocationTableViewCell.m",
    "content": "//\n//  TLocationTableViewCell.m\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/5.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import \"TLocationTableViewCell.h\"\n#import \"UIImage+TLocationPlugin.h\"\n#import \"UITableView+TLocationPlugin.h\"\n\n@implementation TLocationTableViewCell\n\n- (instancetype)initWithReuseIdentifier:(NSString *)reuseIdentifier {\n    self = [super initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:reuseIdentifier];\n    if (self) {\n        self.selectionStyle = UITableViewCellSelectionStyleGray;\n        self.selectedBackgroundView = [[UIView alloc] init];\n        self.textLabel.numberOfLines = 0;\n        self.textLabel.font = [UIFont boldSystemFontOfSize:16];\n        self.detailTextLabel.numberOfLines = 0;\n        self.detailTextLabel.textColor = UIColor.darkGrayColor;\n        self.detailTextLabel.font = [UIFont fontWithName:@\"HelveticaNeue\" size:12];\n        self.tintColor = UIColor.blackColor;\n    }\n    return self;\n}\n\n- (void)awakeFromNib {\n    [super awakeFromNib];\n}\n\n- (void)setSelected:(BOOL)selected animated:(BOOL)animated {\n    [super setSelected:selected animated:animated];\n    if (self.tableView.isEditing || self.tableView.isEditBegining) {\n        return;\n    }\n}\n\n- (void)setModel:(TLocationModel *)model {\n    self->_model = model;\n    \n    if (model.isSelect) {\n        self.imageView.image = [UIImage t_imageNamed:@\"checked_location\"];\n    } else {\n        self.imageView.image = [UIImage t_imageNamed:@\"none\"];\n    }\n    self.textLabel.text = model.name;\n    self.detailTextLabel.text = model.locationText;\n}\n\n///// 添加选择方法为了防止和编辑模式下默认的 select 冲突\n//- (void)setSelectedCell:(BOOL)selected {\n//    if (selected) {\n//        self.imageView.image = [UIImage t_imageNamed:@\"checked_location\"];\n//    } else {\n//        self.imageView.image = [UIImage t_imageNamed:@\"none\"];\n//    }\n//}\n\n@end\n"
  },
  {
    "path": "TLocationPlugin/ViewControllerAndViews/TSelectLocationDataViewController.h",
    "content": "//\n//  TSelectLocationDataViewController.h\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/4.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n#import \"TBaseViewController.h\"\n#import \"TLocationModel.h\"\n\nNS_ASSUME_NONNULL_BEGIN\n\ntypedef void(^TSelectLocationDataCompletionBlock)(TLocationModel *model);\n\n@interface TSelectLocationDataViewController : TBaseViewController\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "TLocationPlugin/ViewControllerAndViews/TSelectLocationDataViewController.m",
    "content": "//\n//  TSelectLocationDataViewController.m\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/4.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import \"TSelectLocationDataViewController.h\"\n#import \"TLocationNavigationController.h\"\n#import \"TAddLocationDataViewController.h\"\n#import \"TLocationSettingViewController.h\"\n#import \"TLocationTableViewCell.h\"\n#import \"TLocationManager.h\"\n#import \"TAlertController.h\"\n#import \"UIImage+TLocationPlugin.h\"\n#import \"UITableView+TLocationPlugin.h\"\n#import \"UIWindow+TLocationPluginToast.h\"\n\nstatic NSString * const TSelectLocationDataTableViewCellID = @\"TSelectLocationDataTableViewCellID\";\n\n@interface TSelectLocationDataViewController () <UITableViewDelegate, UITableViewDataSource>\n\n@property (strong, nonatomic) IBOutlet UITableView      *tableView;\n@property (nonatomic, assign) BOOL                      hasChangedLocationData;\n\n@property (nonatomic, copy) NSArray<TLocationModel *>   *tableViewData;\n@property (nonatomic, assign) NSUInteger                lastSavedCacheDataArrayHash;\n@property (nonatomic, readonly, nullable) NSIndexPath   *currentSelectIndex;\n@property (nonatomic, strong) TLocationModel            *selectedModel;\n\n@property (nonatomic, copy) NSArray<UIBarButtonItem *>  *leftBarButtonItems;\n@property (nonatomic, copy) NSArray<UIBarButtonItem *>  *rightBarButtonItems;\n\n@end\n\n@implementation TSelectLocationDataViewController\n\n- (void)viewDidLoad {\n    [super viewDidLoad];\n    self.title = @\"选择位置\";\n    UIBarButtonItem *closeItem = [[UIBarButtonItem alloc] initWithImage:[UIImage t_imageNamed:@\"close\"]\n                                                                  style:UIBarButtonItemStylePlain\n                                                                 target:self\n                                                                 action:@selector(closeSetLocationViewController)];\n    \n    UIBarButtonItem *settingItem = [[UIBarButtonItem alloc] initWithImage:[UIImage t_imageNamed:@\"setting\"]\n                                                                    style:UIBarButtonItemStylePlain\n                                                                   target:self\n                                                                   action:@selector(openLocationSettingViewController)];\n    UIBarButtonItem *sortItem = [[UIBarButtonItem alloc] initWithTitle:@\"编辑\"\n                                                                 style:UIBarButtonItemStylePlain\n                                                                target:self\n                                                                action:@selector(editTableView)];\n    self.leftBarButtonItems = @[closeItem];\n    self.rightBarButtonItems = @[settingItem, sortItem];\n    self.navigationItem.leftBarButtonItems = self.leftBarButtonItems;\n    self.navigationItem.rightBarButtonItems = self.rightBarButtonItems;\n    \n    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;\n    self.tableView.allowsMultipleSelectionDuringEditing = YES;\n    self.lastSavedCacheDataArrayHash = TLocationManager.shared.cacheDataArrayHash;\n}\n\n- (void)viewWillAppear:(BOOL)animated {\n    [super viewWillAppear:animated];\n    [self refreshTableView];\n}\n\n- (void)viewWillDisappear:(BOOL)animated {\n    [super viewWillDisappear:animated];\n    [self storageCacheDataArray];\n}\n\n- (NSArray<TLocationModel *> *)tableViewData {\n    return TLocationManager.shared.cacheDataArray;\n}\n\n- (void)setTableViewData:(NSArray<TLocationModel *> *)tableViewData {\n    TLocationManager.shared.cacheDataArray = tableViewData;\n}\n\n- (NSIndexPath *)currentSelectIndex {\n    __block NSIndexPath *index = nil;\n    [self.tableViewData enumerateObjectsUsingBlock:^(TLocationModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {\n        if (obj.isSelect) {\n            index = [NSIndexPath indexPathForRow:idx inSection:0];\n            *stop = YES;\n        }\n    }];\n    return index;\n}\n\n- (void)refreshTableView {\n    [self.tableView reloadData];\n    if (self.currentSelectIndex) {\n        [self.tableView selectRowAtIndexPath:self.currentSelectIndex\n                                    animated:YES\n                              scrollPosition:UITableViewScrollPositionNone];\n    }\n}\n\n- (void)closeSetLocationViewController {\n    [self.view endEditing:YES];\n    [self storageCacheDataArray];\n    \n    /// 修改了数据但是没有启用\n    if (self.hasChangedLocationData && !TLocationManager.shared.usingHookLocation) {\n        TAlertController *alert = [TAlertController confirmAlertWithTitle:@\"是否启用位置拦截?\" message:nil cancelTitle:@\"否\" cancelBlock:^(TAlertController * _Nonnull alert, UIAlertAction * _Nonnull action) {\n            [self dismissSelf];\n        } confirmTitle:@\"是\" confirmBlock:^(TAlertController * _Nonnull alert, UIAlertAction * _Nonnull action) {\n            TLocationManager.shared.usingHookLocation = YES;\n            [self dismissSelf];\n        }];\n        [alert reverseActions];\n        [self presentViewController:alert animated:YES completion:nil];\n        return;\n    }\n\n    [self dismissSelf];\n}\n\n- (void)editTableView {\n    if (self.tableView.isEditing || self.tableView.isEditBegining) {\n        return;\n    }\n    [self.tableView setEditing:YES animated:YES];\n    UIBarButtonItem *deleteItem = [[UIBarButtonItem alloc] initWithTitle:@\"删除\"\n                                                                   style:UIBarButtonItemStylePlain\n                                                                  target:self\n                                                                  action:@selector(removeTableViewCell)];\n    self.navigationItem.leftBarButtonItems = @[deleteItem];\n    UIBarButtonItem *doneItem = [[UIBarButtonItem alloc] initWithTitle:@\"完成\"\n                                                                 style:UIBarButtonItemStylePlain\n                                                                target:self\n                                                                action:@selector(doneEditTableView)];\n    self.navigationItem.rightBarButtonItems = @[doneItem];\n}\n\n- (void)removeTableViewCell {\n    if (self.tableView.indexPathsForSelectedRows.count == 0) {\n        return;\n    }\n    NSMutableArray<TLocationModel *> *tableViewDataArray = [self.tableViewData mutableCopy];\n    NSMutableIndexSet *indexSet = [[NSMutableIndexSet alloc] init];\n    [self.tableView.indexPathsForSelectedRows enumerateObjectsUsingBlock:^(NSIndexPath * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {\n        [indexSet addIndex:obj.row];\n    }];\n    [tableViewDataArray removeObjectsAtIndexes:indexSet];\n    self.tableViewData = tableViewDataArray;\n    [self storageCacheDataArray];\n    [self.tableView deleteRowsAtIndexPaths:self.tableView.indexPathsForSelectedRows\n                          withRowAnimation:UITableViewRowAnimationLeft];\n}\n\n- (void)doneEditTableView {\n    if (!self.tableView.isEditing || self.tableView.isEditEnding) {\n        return;\n    }\n    [self.tableView setEditing:NO animated:YES];\n    self.navigationItem.leftBarButtonItems = self.leftBarButtonItems;\n    self.navigationItem.rightBarButtonItems = self.rightBarButtonItems;\n}\n\n- (void)openLocationSettingViewController {\n    [self doneEditTableView];\n    TLocationSettingViewController *vc = [[TLocationSettingViewController alloc] init];\n    [self.navigationController pushViewController:vc animated:YES];\n}\n\n- (void)storageCacheDataArray {\n    if (self.lastSavedCacheDataArrayHash == TLocationManager.shared.cacheDataArrayHash) {\n        return;\n    }\n    [TLocationManager.shared saveCacheDataArray];\n    self.lastSavedCacheDataArrayHash = TLocationManager.shared.cacheDataArrayHash;\n}\n\n- (void)storageLocation:(TLocationModel * _Nonnull)model {\n    if (model == nil) {\n        return;\n    }\n    self.hasChangedLocationData = YES;\n    TLocationManager.shared.locationName = model.name;\n    TLocationManager.shared.latitude = model.latitude;\n    TLocationManager.shared.longitude = model.longitude;\n}\n\n- (void)dismissSelf {\n    [self dismissViewControllerAnimated:YES completion:^{\n        TLocationNavigationController.isShowing = NO;\n    }];\n}\n\n- (IBAction)addLocationData:(UIButton *)sender {\n    [self doneEditTableView];\n    TAddLocationDataViewController *vc = [[TAddLocationDataViewController alloc] init];\n    vc.addLocationBlock = ^(TLocationModel * _Nonnull model) {\n        NSMutableArray<TLocationModel *> *newDataArray = [self.tableViewData mutableCopy];\n        if (newDataArray == nil) {\n            newDataArray = [NSMutableArray<TLocationModel *> array];\n        }\n        [newDataArray insertObject:model atIndex:0];\n        self.tableViewData = newDataArray;\n        [self storageCacheDataArray];\n    };\n    [self.navigationController pushViewController:vc animated:YES];\n}\n\n#pragma mark - UITableViewDelegate, UITableViewDataSource\n- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {\n    return 1;\n}\n\n- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {\n    return self.tableViewData.count;\n}\n\n- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {\n    TLocationTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:TSelectLocationDataTableViewCellID];\n    if (cell == nil) {\n        cell = [[TLocationTableViewCell alloc] initWithReuseIdentifier:TSelectLocationDataTableViewCellID];\n        cell.tableView = tableView;\n    }\n    TLocationModel *model = self.tableViewData[indexPath.row];\n    if (model.isSelect) {\n        self.selectedModel = self.tableViewData[indexPath.row];\n    }\n    cell.model = model;\n    return cell;\n}\n\n- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {\n    if (tableView.isEditing) {\n        return;\n    }\n    \n    NSMutableArray<NSIndexPath *> *reloadIndexPaths = [NSMutableArray<NSIndexPath *> array];\n    [reloadIndexPaths addObject:indexPath];\n    \n    NSUInteger oldIndex = [self.tableViewData indexOfObject:self.selectedModel];\n    if (oldIndex != NSNotFound) {\n        NSIndexPath *oldIndexPath = [NSIndexPath indexPathForRow:oldIndex inSection:0];\n        [reloadIndexPaths addObject:oldIndexPath];\n    }\n    self.selectedModel.isSelect = NO;\n    self.selectedModel = self.tableViewData[indexPath.row];\n    self.selectedModel.isSelect = YES;\n    [self.tableView reloadRowsAtIndexPaths:reloadIndexPaths\n                          withRowAnimation:UITableViewRowAnimationNone];\n    \n    [self storageLocation:self.selectedModel];\n    [self storageCacheDataArray];\n    \n    NSString *toastText = [NSString stringWithFormat:@\"已保存为: %@\\n%@\", self.selectedModel.name, self.selectedModel.locationText];\n    [UIWindow t_showTostForMessage:toastText];\n}\n\n- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {\n    return YES;\n}\n\n- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath {\n    return UITableViewCellEditingStyleDelete | UITableViewCellEditingStyleInsert;\n}\n\n- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {\n    return YES;\n}\n\n- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath {\n    if (sourceIndexPath.row == destinationIndexPath.row) {\n        return;\n    }\n    NSMutableArray<TLocationModel *> *tableViewDataArray = [self.tableViewData mutableCopy];\n    TLocationModel *model = [tableViewDataArray objectAtIndex:sourceIndexPath.row];\n    [tableViewDataArray removeObjectAtIndex:sourceIndexPath.row];\n    [tableViewDataArray insertObject:model atIndex:destinationIndexPath.row];\n    self.tableViewData = tableViewDataArray;\n    [self storageCacheDataArray];\n}\n\n\n- (NSArray<UITableViewRowAction *> *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath {\n    UITableViewRowAction *deleleteBtn = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive\n                                                                           title:@\"删除\"\n                                                                         handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) {\n        [self removeTableViewDataInIndexPath:indexPath];\n    }];\n\n    UITableViewRowAction *editBtn = [UITableViewRowAction  rowActionWithStyle:UITableViewRowActionStyleNormal\n                                                                        title:@\"编辑\"\n                                                                      handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) {\n        [self editTableViewDataInIndexPath:indexPath];\n    }];\n\n    UITableViewRowAction *topBtn = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal\n                                                                      title:@\"置顶\"\n                                                                    handler:^(UITableViewRowAction * _Nonnull action, NSIndexPath * _Nonnull indexPath) {\n        [self topTableViewDataInIndexPath:indexPath];\n    }];\n\n    deleleteBtn.backgroundColor = UIColor.redColor;\n    editBtn.backgroundColor = UIColor.grayColor;\n    topBtn.backgroundColor = UIColor.blackColor;\n    return @[deleleteBtn, editBtn, topBtn];\n}\n\n\n#pragma mark - 辅助函数\n- (void)topTableViewDataInIndexPath:(NSIndexPath *)indexPath {\n    NSIndexPath *firstIndexPath = [NSIndexPath indexPathForRow:0 inSection:indexPath.section];\n    [self.tableView moveRowAtIndexPath:indexPath toIndexPath:firstIndexPath];\n\n    NSMutableArray<TLocationModel *> *tableViewDataArray = [self.tableViewData mutableCopy];\n    TLocationModel *model = [tableViewDataArray objectAtIndex:indexPath.row];\n    [tableViewDataArray removeObjectAtIndex:indexPath.row];\n    [tableViewDataArray insertObject:model atIndex:0];\n    self.tableViewData = tableViewDataArray;\n    [self storageCacheDataArray];\n}\n\n- (void)removeTableViewDataInIndexPath:(NSIndexPath *)indexPath {\n    TLocationModel *model = self.tableViewData[indexPath.row];\n    TAlertController *alert = [TAlertController destructiveAlertWithTitle:@\"确定删除数据?\"\n                                                                  message:model.name\n                                                              cancelTitle:@\"取消\"\n                                                              cancelBlock:nil\n                                                         destructiveTitle:@\"确定\"\n                                                         destructiveBlock:^(TAlertController * _Nonnull alert, UIAlertAction * _Nonnull action) {\n        NSMutableArray<TLocationModel *> *tableViewDataArray = [self.tableViewData mutableCopy];\n        [tableViewDataArray removeObjectAtIndex:indexPath.row];\n        self.tableViewData = tableViewDataArray;\n        [self storageCacheDataArray];\n        [self.tableView deleteRowsAtIndexPaths:@[indexPath]\n                              withRowAnimation:UITableViewRowAnimationLeft];\n    }];\n    [self presentViewController:alert animated:YES completion:nil];\n}\n\n- (void)editTableViewDataInIndexPath:(NSIndexPath *)indexPath {\n    if (indexPath == nil) {\n        return;\n    }\n    TLocationModel *model = self.tableViewData[indexPath.row];\n    TAlertController *alert = [TAlertController editAlertWithTitle:@\"修改数据\"\n                                                           message:model.name\n                                                        labelTexts:@[@\"名称\", @\"纬度\", @\"经度\"]\n                                                     defaultValues:@[\n                                                         model.name ?: @\"\",\n                                                         @(model.latitude).stringValue,\n                                                         @(model.longitude).stringValue,\n                                                     ]\n                                                       cancelTitle:@\"取消\"\n                                                       cancelBlock:nil\n                                                      confirmTitle:@\"确定\"\n                                                      confirmBlock:^(TAlertController * _Nonnull alert, UIAlertAction * _Nonnull action) {\n        model.name = alert.textFields[0].text;\n        model.latitude = alert.textFields[1].text.doubleValue;\n        model.longitude = alert.textFields[2].text.doubleValue;\n        if (model.isSelect) {\n            [self storageLocation:model];\n        }\n        [self storageCacheDataArray];\n        [self.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];\n    }];\n    [self presentViewController:alert animated:YES completion:nil];\n}\n\n@end\n"
  },
  {
    "path": "TLocationPlugin/ViewControllerAndViews/TSelectLocationDataViewController.xib",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.XIB\" version=\"3.0\" toolsVersion=\"14865.1\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" colorMatched=\"YES\">\n    <device id=\"retina5_9\" orientation=\"portrait\" appearance=\"light\"/>\n    <dependencies>\n        <deployment identifier=\"iOS\"/>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"14819.2\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <objects>\n        <placeholder placeholderIdentifier=\"IBFilesOwner\" id=\"-1\" userLabel=\"File's Owner\" customClass=\"TSelectLocationDataViewController\">\n            <connections>\n                <outlet property=\"tableView\" destination=\"ibH-l8-7ge\" id=\"dhp-Ni-pKl\"/>\n                <outlet property=\"view\" destination=\"i5M-Pr-FkT\" id=\"sfx-zR-JGt\"/>\n            </connections>\n        </placeholder>\n        <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"-2\" customClass=\"UIResponder\"/>\n        <view clearsContextBeforeDrawing=\"NO\" contentMode=\"scaleToFill\" id=\"i5M-Pr-FkT\">\n            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"812\"/>\n            <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n            <subviews>\n                <view contentMode=\"scaleToFill\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"I1K-S0-wWC\">\n                    <rect key=\"frame\" x=\"0.0\" y=\"44\" width=\"375\" height=\"768\"/>\n                    <subviews>\n                        <button opaque=\"NO\" contentMode=\"scaleToFill\" contentHorizontalAlignment=\"center\" contentVerticalAlignment=\"center\" buttonType=\"roundedRect\" lineBreakMode=\"middleTruncation\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"Z4B-OE-RS5\">\n                            <rect key=\"frame\" x=\"8\" y=\"676\" width=\"359\" height=\"40\"/>\n                            <color key=\"backgroundColor\" white=\"0.0\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            <constraints>\n                                <constraint firstAttribute=\"height\" constant=\"40\" id=\"X0Z-Ke-aoB\"/>\n                            </constraints>\n                            <state key=\"normal\" title=\"添加位置\">\n                                <color key=\"titleColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </state>\n                            <state key=\"highlighted\">\n                                <color key=\"titleColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            </state>\n                            <userDefinedRuntimeAttributes>\n                                <userDefinedRuntimeAttribute type=\"number\" keyPath=\"layer.cornerRadius\">\n                                    <integer key=\"value\" value=\"5\"/>\n                                </userDefinedRuntimeAttribute>\n                                <userDefinedRuntimeAttribute type=\"boolean\" keyPath=\"layer.masksToBounds\" value=\"YES\"/>\n                            </userDefinedRuntimeAttributes>\n                            <connections>\n                                <action selector=\"addLocationData:\" destination=\"-1\" eventType=\"touchUpInside\" id=\"vt7-Kj-MT8\"/>\n                            </connections>\n                        </button>\n                        <tableView clipsSubviews=\"YES\" contentMode=\"scaleToFill\" alwaysBounceVertical=\"YES\" style=\"plain\" separatorStyle=\"default\" allowsSelectionDuringEditing=\"YES\" allowsMultipleSelectionDuringEditing=\"YES\" rowHeight=\"-1\" estimatedRowHeight=\"-1\" sectionHeaderHeight=\"28\" sectionFooterHeight=\"28\" translatesAutoresizingMaskIntoConstraints=\"NO\" id=\"ibH-l8-7ge\">\n                            <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"666\"/>\n                            <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                            <connections>\n                                <outlet property=\"dataSource\" destination=\"-1\" id=\"Fj2-SM-aAN\"/>\n                                <outlet property=\"delegate\" destination=\"-1\" id=\"2B5-21-43f\"/>\n                            </connections>\n                        </tableView>\n                    </subviews>\n                    <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n                    <constraints>\n                        <constraint firstItem=\"Z4B-OE-RS5\" firstAttribute=\"top\" secondItem=\"ibH-l8-7ge\" secondAttribute=\"bottom\" constant=\"10\" id=\"6Nf-1W-wyL\"/>\n                        <constraint firstItem=\"ibH-l8-7ge\" firstAttribute=\"leading\" secondItem=\"I1K-S0-wWC\" secondAttribute=\"leading\" id=\"BSq-82-4M0\"/>\n                        <constraint firstAttribute=\"trailing\" secondItem=\"ibH-l8-7ge\" secondAttribute=\"trailing\" id=\"BxU-Yu-MQK\"/>\n                        <constraint firstAttribute=\"bottomMargin\" secondItem=\"Z4B-OE-RS5\" secondAttribute=\"bottom\" constant=\"10\" id=\"FlB-zY-vef\"/>\n                        <constraint firstItem=\"Z4B-OE-RS5\" firstAttribute=\"leading\" secondItem=\"I1K-S0-wWC\" secondAttribute=\"leadingMargin\" id=\"sD5-eY-POc\"/>\n                        <constraint firstItem=\"ibH-l8-7ge\" firstAttribute=\"top\" secondItem=\"I1K-S0-wWC\" secondAttribute=\"top\" id=\"vHg-kD-N4J\"/>\n                        <constraint firstAttribute=\"trailingMargin\" secondItem=\"Z4B-OE-RS5\" secondAttribute=\"trailing\" id=\"yjh-fy-ntr\"/>\n                    </constraints>\n                </view>\n            </subviews>\n            <color key=\"backgroundColor\" white=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"genericGamma22GrayColorSpace\"/>\n            <constraints>\n                <constraint firstItem=\"I1K-S0-wWC\" firstAttribute=\"leading\" secondItem=\"i5M-Pr-FkT\" secondAttribute=\"leading\" id=\"9tq-Ad-nst\"/>\n                <constraint firstAttribute=\"trailing\" secondItem=\"I1K-S0-wWC\" secondAttribute=\"trailing\" id=\"btT-jJ-8j5\"/>\n                <constraint firstItem=\"I1K-S0-wWC\" firstAttribute=\"top\" secondItem=\"i5M-Pr-FkT\" secondAttribute=\"topMargin\" id=\"lK2-P4-SQr\"/>\n                <constraint firstAttribute=\"bottom\" secondItem=\"I1K-S0-wWC\" secondAttribute=\"bottom\" id=\"xWX-HK-IRl\"/>\n            </constraints>\n            <point key=\"canvasLocation\" x=\"137.68115942028987\" y=\"152.67857142857142\"/>\n        </view>\n    </objects>\n</document>\n"
  },
  {
    "path": "TLocationPlugin.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 50;\n\tobjects = {\n\n/* Begin PBXAggregateTarget section */\n\t\t3F9CDAA62321F26D000E7A24 /* RunScript */ = {\n\t\t\tisa = PBXAggregateTarget;\n\t\t\tbuildConfigurationList = 3F9CDAA72321F26D000E7A24 /* Build configuration list for PBXAggregateTarget \"RunScript\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t3F9CDAAA2321F275000E7A24 /* BuildFramework */,\n\t\t\t\t3FC34C7D2322524C00C15E66 /* InjectFramework */,\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = RunScript;\n\t\t\tproductName = RunScript;\n\t\t};\n/* End PBXAggregateTarget section */\n\n/* Begin PBXBuildFile section */\n\t\t3F0A641023217506002FA767 /* CALayer+TLocationPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F0A640E23217506002FA767 /* CALayer+TLocationPlugin.h */; };\n\t\t3F0A641123217506002FA767 /* CALayer+TLocationPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F0A640F23217506002FA767 /* CALayer+TLocationPlugin.m */; };\n\t\t3F0FE5112320FBFC008B0830 /* TLocationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F0FE50F2320FBFC008B0830 /* TLocationManager.h */; };\n\t\t3F0FE5122320FBFC008B0830 /* TLocationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F0FE5102320FBFC008B0830 /* TLocationManager.m */; };\n\t\t3F344C0C23227F2F000A0D9F /* TAlertController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F344C0A23227F2F000A0D9F /* TAlertController.h */; };\n\t\t3F344C0D23227F2F000A0D9F /* TAlertController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F344C0B23227F2F000A0D9F /* TAlertController.m */; };\n\t\t3F35B14D2325431200E785B9 /* UIApplication+TLocationPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F35B14B2325431200E785B9 /* UIApplication+TLocationPlugin.h */; };\n\t\t3F35B14E2325431200E785B9 /* UIApplication+TLocationPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F35B14C2325431200E785B9 /* UIApplication+TLocationPlugin.m */; };\n\t\t3F35B1512325436B00E785B9 /* UIViewController+TLocationPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F35B14F2325436B00E785B9 /* UIViewController+TLocationPlugin.h */; };\n\t\t3F35B1522325436B00E785B9 /* UIViewController+TLocationPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F35B1502325436B00E785B9 /* UIViewController+TLocationPlugin.m */; };\n\t\t3F542A982326225500497668 /* TLocationChangeAppICONViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F542A952326225500497668 /* TLocationChangeAppICONViewController.h */; };\n\t\t3F542A992326225500497668 /* TLocationChangeAppICONViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F542A962326225500497668 /* TLocationChangeAppICONViewController.m */; };\n\t\t3F542A9A2326225500497668 /* TLocationChangeAppICONViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3F542A972326225500497668 /* TLocationChangeAppICONViewController.xib */; };\n\t\t3F56897723262F2100FE42DE /* QQ29x29@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56890023262F1B00FE42DE /* QQ29x29@2x.png */; };\n\t\t3F56897823262F2100FE42DE /* Tim29x29@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56890123262F1B00FE42DE /* Tim29x29@2x~ipad.png */; };\n\t\t3F56897923262F2100FE42DE /* WeChat29x29@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56890223262F1B00FE42DE /* WeChat29x29@2x~ipad.png */; };\n\t\t3F56897A23262F2100FE42DE /* Lark60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56890323262F1B00FE42DE /* Lark60x60@3x.png */; };\n\t\t3F56897B23262F2100FE42DE /* NeiXin60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56890423262F1B00FE42DE /* NeiXin60x60@3x.png */; };\n\t\t3F56897C23262F2100FE42DE /* WeChat76x76@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56890523262F1B00FE42DE /* WeChat76x76@2x~ipad.png */; };\n\t\t3F56897D23262F2100FE42DE /* WeWork20x20~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56890623262F1B00FE42DE /* WeWork20x20~ipad.png */; };\n\t\t3F56897E23262F2100FE42DE /* Tim76x76@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56890723262F1B00FE42DE /* Tim76x76@2x~ipad.png */; };\n\t\t3F56897F23262F2100FE42DE /* DingDing60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56890823262F1B00FE42DE /* DingDing60x60@2x.png */; };\n\t\t3F56898023262F2100FE42DE /* WeWork40x40@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56890923262F1B00FE42DE /* WeWork40x40@3x.png */; };\n\t\t3F56898123262F2100FE42DE /* DingDing20x20@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56890A23262F1B00FE42DE /* DingDing20x20@2x~ipad.png */; };\n\t\t3F56898223262F2100FE42DE /* NeiXin20x20~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56890B23262F1B00FE42DE /* NeiXin20x20~ipad.png */; };\n\t\t3F56898323262F2100FE42DE /* NeiXin20x20@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56890C23262F1C00FE42DE /* NeiXin20x20@2x.png */; };\n\t\t3F56898423262F2100FE42DE /* Lark83.5x83.5@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56890D23262F1C00FE42DE /* Lark83.5x83.5@2x~ipad.png */; };\n\t\t3F56898523262F2100FE42DE /* DingDing20x20@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56890E23262F1C00FE42DE /* DingDing20x20@3x.png */; };\n\t\t3F56898623262F2100FE42DE /* NeiXin76x76@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56890F23262F1C00FE42DE /* NeiXin76x76@2x~ipad.png */; };\n\t\t3F56898723262F2100FE42DE /* Lark76x76@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56891023262F1C00FE42DE /* Lark76x76@2x~ipad.png */; };\n\t\t3F56898823262F2100FE42DE /* QQ20x20@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56891123262F1C00FE42DE /* QQ20x20@3x.png */; };\n\t\t3F56898923262F2100FE42DE /* WeWork29x29~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56891223262F1C00FE42DE /* WeWork29x29~ipad.png */; };\n\t\t3F56898A23262F2100FE42DE /* QQ40x40@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56891323262F1C00FE42DE /* QQ40x40@3x.png */; };\n\t\t3F56898B23262F2100FE42DE /* NeiXin29x29@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56891423262F1C00FE42DE /* NeiXin29x29@3x.png */; };\n\t\t3F56898C23262F2100FE42DE /* WeChat20x20~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56891523262F1C00FE42DE /* WeChat20x20~ipad.png */; };\n\t\t3F56898D23262F2100FE42DE /* NeiXin40x40@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56891623262F1C00FE42DE /* NeiXin40x40@2x.png */; };\n\t\t3F56898E23262F2100FE42DE /* WeWork40x40~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56891723262F1C00FE42DE /* WeWork40x40~ipad.png */; };\n\t\t3F56898F23262F2100FE42DE /* WeWork20x20@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56891823262F1C00FE42DE /* WeWork20x20@2x.png */; };\n\t\t3F56899023262F2100FE42DE /* Lark40x40@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56891923262F1C00FE42DE /* Lark40x40@2x~ipad.png */; };\n\t\t3F56899123262F2100FE42DE /* QQ20x20@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56891A23262F1C00FE42DE /* QQ20x20@2x.png */; };\n\t\t3F56899223262F2100FE42DE /* WeChat29x29~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56891B23262F1C00FE42DE /* WeChat29x29~ipad.png */; };\n\t\t3F56899323262F2100FE42DE /* WeChat20x20@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56891C23262F1C00FE42DE /* WeChat20x20@2x~ipad.png */; };\n\t\t3F56899423262F2100FE42DE /* WeChat40x40~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56891D23262F1C00FE42DE /* WeChat40x40~ipad.png */; };\n\t\t3F56899523262F2100FE42DE /* Tim40x40~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56891E23262F1C00FE42DE /* Tim40x40~ipad.png */; };\n\t\t3F56899623262F2100FE42DE /* WeWork60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56891F23262F1C00FE42DE /* WeWork60x60@2x.png */; };\n\t\t3F56899723262F2100FE42DE /* Lark60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56892023262F1C00FE42DE /* Lark60x60@2x.png */; };\n\t\t3F56899823262F2100FE42DE /* Lark29x29@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56892123262F1C00FE42DE /* Lark29x29@2x.png */; };\n\t\t3F56899923262F2100FE42DE /* QQ40x40@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56892223262F1C00FE42DE /* QQ40x40@2x~ipad.png */; };\n\t\t3F56899A23262F2100FE42DE /* NeiXin29x29@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56892323262F1D00FE42DE /* NeiXin29x29@2x~ipad.png */; };\n\t\t3F56899B23262F2100FE42DE /* DingDing40x40@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56892423262F1D00FE42DE /* DingDing40x40@2x.png */; };\n\t\t3F56899C23262F2100FE42DE /* WeChat20x20@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56892523262F1D00FE42DE /* WeChat20x20@2x.png */; };\n\t\t3F56899D23262F2100FE42DE /* Lark20x20@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56892623262F1D00FE42DE /* Lark20x20@2x.png */; };\n\t\t3F56899E23262F2100FE42DE /* QQ20x20@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56892723262F1D00FE42DE /* QQ20x20@2x~ipad.png */; };\n\t\t3F56899F23262F2100FE42DE /* NeiXin40x40@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56892823262F1D00FE42DE /* NeiXin40x40@3x.png */; };\n\t\t3F5689A023262F2100FE42DE /* Lark29x29~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56892923262F1D00FE42DE /* Lark29x29~ipad.png */; };\n\t\t3F5689A123262F2100FE42DE /* WeChat60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56892A23262F1D00FE42DE /* WeChat60x60@3x.png */; };\n\t\t3F5689A223262F2100FE42DE /* WeWork40x40@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56892B23262F1D00FE42DE /* WeWork40x40@2x.png */; };\n\t\t3F5689A323262F2100FE42DE /* WeChat76x76~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56892C23262F1D00FE42DE /* WeChat76x76~ipad.png */; };\n\t\t3F5689A423262F2100FE42DE /* WeWork20x20@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56892D23262F1D00FE42DE /* WeWork20x20@3x.png */; };\n\t\t3F5689A523262F2100FE42DE /* Tim76x76~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56892E23262F1D00FE42DE /* Tim76x76~ipad.png */; };\n\t\t3F5689A623262F2100FE42DE /* QQ40x40~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56892F23262F1D00FE42DE /* QQ40x40~ipad.png */; };\n\t\t3F5689A723262F2100FE42DE /* Tim29x29@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56893023262F1D00FE42DE /* Tim29x29@3x.png */; };\n\t\t3F5689A823262F2100FE42DE /* NeiXin60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56893123262F1D00FE42DE /* NeiXin60x60@2x.png */; };\n\t\t3F5689A923262F2100FE42DE /* DingDing76x76~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56893223262F1D00FE42DE /* DingDing76x76~ipad.png */; };\n\t\t3F5689AA23262F2100FE42DE /* DingDing20x20@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56893323262F1D00FE42DE /* DingDing20x20@2x.png */; };\n\t\t3F5689AB23262F2100FE42DE /* WeWork60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56893423262F1D00FE42DE /* WeWork60x60@3x.png */; };\n\t\t3F5689AC23262F2100FE42DE /* QQ60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56893523262F1D00FE42DE /* QQ60x60@2x.png */; };\n\t\t3F5689AD23262F2100FE42DE /* Lark40x40@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56893623262F1D00FE42DE /* Lark40x40@2x.png */; };\n\t\t3F5689AE23262F2100FE42DE /* Lark29x29@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56893723262F1D00FE42DE /* Lark29x29@2x~ipad.png */; };\n\t\t3F5689AF23262F2100FE42DE /* WeChat29x29@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56893823262F1D00FE42DE /* WeChat29x29@3x.png */; };\n\t\t3F5689B023262F2100FE42DE /* NeiXin40x40@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56893923262F1E00FE42DE /* NeiXin40x40@2x~ipad.png */; };\n\t\t3F5689B123262F2100FE42DE /* Tim20x20@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56893A23262F1E00FE42DE /* Tim20x20@3x.png */; };\n\t\t3F5689B223262F2100FE42DE /* QQ29x29@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56893B23262F1E00FE42DE /* QQ29x29@3x.png */; };\n\t\t3F5689B323262F2100FE42DE /* Tim40x40@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56893C23262F1E00FE42DE /* Tim40x40@3x.png */; };\n\t\t3F5689B423262F2100FE42DE /* Tim60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56893D23262F1E00FE42DE /* Tim60x60@2x.png */; };\n\t\t3F5689B523262F2100FE42DE /* DingDing29x29@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56893E23262F1E00FE42DE /* DingDing29x29@2x.png */; };\n\t\t3F5689B623262F2100FE42DE /* Tim29x29~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56893F23262F1E00FE42DE /* Tim29x29~ipad.png */; };\n\t\t3F5689B723262F2100FE42DE /* Lark20x20~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56894023262F1E00FE42DE /* Lark20x20~ipad.png */; };\n\t\t3F5689B823262F2100FE42DE /* QQ76x76@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56894123262F1E00FE42DE /* QQ76x76@2x~ipad.png */; };\n\t\t3F5689B923262F2100FE42DE /* WeChat40x40@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56894223262F1E00FE42DE /* WeChat40x40@2x~ipad.png */; };\n\t\t3F5689BA23262F2100FE42DE /* Tim29x29@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56894323262F1E00FE42DE /* Tim29x29@2x.png */; };\n\t\t3F5689BB23262F2100FE42DE /* DingDing60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56894423262F1E00FE42DE /* DingDing60x60@3x.png */; };\n\t\t3F5689BC23262F2100FE42DE /* WeChat40x40@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56894523262F1E00FE42DE /* WeChat40x40@3x.png */; };\n\t\t3F5689BD23262F2100FE42DE /* WeWork29x29@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56894623262F1E00FE42DE /* WeWork29x29@2x.png */; };\n\t\t3F5689BE23262F2100FE42DE /* Tim83.5x83.5@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56894723262F1E00FE42DE /* Tim83.5x83.5@2x~ipad.png */; };\n\t\t3F5689BF23262F2100FE42DE /* NeiXin83.5x83.5@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56894823262F1E00FE42DE /* NeiXin83.5x83.5@2x~ipad.png */; };\n\t\t3F5689C023262F2100FE42DE /* DingDing40x40~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56894923262F1E00FE42DE /* DingDing40x40~ipad.png */; };\n\t\t3F5689C123262F2100FE42DE /* Tim40x40@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56894A23262F1E00FE42DE /* Tim40x40@2x~ipad.png */; };\n\t\t3F5689C223262F2100FE42DE /* DingDing83.5x83.5@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56894B23262F1E00FE42DE /* DingDing83.5x83.5@2x~ipad.png */; };\n\t\t3F5689C323262F2100FE42DE /* QQ29x29~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56894C23262F1E00FE42DE /* QQ29x29~ipad.png */; };\n\t\t3F5689C423262F2100FE42DE /* Lark40x40~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56894D23262F1E00FE42DE /* Lark40x40~ipad.png */; };\n\t\t3F5689C523262F2100FE42DE /* NeiXin20x20@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56894E23262F1E00FE42DE /* NeiXin20x20@3x.png */; };\n\t\t3F5689C623262F2100FE42DE /* NeiXin20x20@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56894F23262F1E00FE42DE /* NeiXin20x20@2x~ipad.png */; };\n\t\t3F5689C723262F2100FE42DE /* NeiXin76x76~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56895023262F1E00FE42DE /* NeiXin76x76~ipad.png */; };\n\t\t3F5689C823262F2100FE42DE /* WeWork76x76@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56895123262F1F00FE42DE /* WeWork76x76@2x~ipad.png */; };\n\t\t3F5689C923262F2100FE42DE /* Lark20x20@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56895223262F1F00FE42DE /* Lark20x20@2x~ipad.png */; };\n\t\t3F5689CA23262F2100FE42DE /* NeiXin29x29@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56895323262F1F00FE42DE /* NeiXin29x29@2x.png */; };\n\t\t3F5689CB23262F2200FE42DE /* DingDing29x29@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56895423262F1F00FE42DE /* DingDing29x29@2x~ipad.png */; };\n\t\t3F5689CC23262F2200FE42DE /* NeiXin29x29~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56895523262F1F00FE42DE /* NeiXin29x29~ipad.png */; };\n\t\t3F5689CD23262F2200FE42DE /* WeWork29x29@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56895623262F1F00FE42DE /* WeWork29x29@2x~ipad.png */; };\n\t\t3F5689CE23262F2200FE42DE /* Lark40x40@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56895723262F1F00FE42DE /* Lark40x40@3x.png */; };\n\t\t3F5689CF23262F2200FE42DE /* Tim40x40@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56895823262F1F00FE42DE /* Tim40x40@2x.png */; };\n\t\t3F5689D023262F2200FE42DE /* Tim20x20@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56895923262F1F00FE42DE /* Tim20x20@2x~ipad.png */; };\n\t\t3F5689D123262F2200FE42DE /* DingDing20x20~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56895A23262F1F00FE42DE /* DingDing20x20~ipad.png */; };\n\t\t3F5689D223262F2200FE42DE /* Lark29x29@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56895B23262F1F00FE42DE /* Lark29x29@3x.png */; };\n\t\t3F5689D323262F2200FE42DE /* WeChat40x40@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56895C23262F1F00FE42DE /* WeChat40x40@2x.png */; };\n\t\t3F5689D423262F2200FE42DE /* Lark76x76~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56895D23262F1F00FE42DE /* Lark76x76~ipad.png */; };\n\t\t3F5689D523262F2200FE42DE /* DingDing76x76@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56895E23262F1F00FE42DE /* DingDing76x76@2x~ipad.png */; };\n\t\t3F5689D623262F2200FE42DE /* NeiXin40x40~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56895F23262F1F00FE42DE /* NeiXin40x40~ipad.png */; };\n\t\t3F5689D723262F2200FE42DE /* WeWork40x40@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56896023262F1F00FE42DE /* WeWork40x40@2x~ipad.png */; };\n\t\t3F5689D823262F2200FE42DE /* Tim20x20@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56896123262F2000FE42DE /* Tim20x20@2x.png */; };\n\t\t3F5689D923262F2200FE42DE /* WeWork29x29@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56896223262F2000FE42DE /* WeWork29x29@3x.png */; };\n\t\t3F5689DA23262F2200FE42DE /* WeChat60x60@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56896323262F2000FE42DE /* WeChat60x60@2x.png */; };\n\t\t3F5689DB23262F2200FE42DE /* Tim20x20~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56896423262F2000FE42DE /* Tim20x20~ipad.png */; };\n\t\t3F5689DC23262F2200FE42DE /* WeChat83.5x83.5@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56896523262F2000FE42DE /* WeChat83.5x83.5@2x~ipad.png */; };\n\t\t3F5689DD23262F2200FE42DE /* WeWork20x20@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56896623262F2000FE42DE /* WeWork20x20@2x~ipad.png */; };\n\t\t3F5689DE23262F2200FE42DE /* Tim60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56896723262F2000FE42DE /* Tim60x60@3x.png */; };\n\t\t3F5689DF23262F2200FE42DE /* WeChat20x20@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56896823262F2000FE42DE /* WeChat20x20@3x.png */; };\n\t\t3F5689E023262F2200FE42DE /* QQ20x20~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56896923262F2000FE42DE /* QQ20x20~ipad.png */; };\n\t\t3F5689E123262F2200FE42DE /* QQ40x40@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56896A23262F2000FE42DE /* QQ40x40@2x.png */; };\n\t\t3F5689E223262F2200FE42DE /* QQ29x29@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56896B23262F2000FE42DE /* QQ29x29@2x~ipad.png */; };\n\t\t3F5689E323262F2200FE42DE /* QQ83.5x83.5@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56896C23262F2100FE42DE /* QQ83.5x83.5@2x~ipad.png */; };\n\t\t3F5689E423262F2200FE42DE /* Lark20x20@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56896D23262F2100FE42DE /* Lark20x20@3x.png */; };\n\t\t3F5689E523262F2200FE42DE /* DingDing29x29@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56896E23262F2100FE42DE /* DingDing29x29@3x.png */; };\n\t\t3F5689E623262F2200FE42DE /* WeWork83.5x83.5@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56896F23262F2100FE42DE /* WeWork83.5x83.5@2x~ipad.png */; };\n\t\t3F5689E723262F2200FE42DE /* QQ60x60@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56897023262F2100FE42DE /* QQ60x60@3x.png */; };\n\t\t3F5689E823262F2200FE42DE /* DingDing40x40@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56897123262F2100FE42DE /* DingDing40x40@3x.png */; };\n\t\t3F5689E923262F2200FE42DE /* WeChat29x29@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56897223262F2100FE42DE /* WeChat29x29@2x.png */; };\n\t\t3F5689EA23262F2200FE42DE /* QQ76x76~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56897323262F2100FE42DE /* QQ76x76~ipad.png */; };\n\t\t3F5689EB23262F2200FE42DE /* DingDing40x40@2x~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56897423262F2100FE42DE /* DingDing40x40@2x~ipad.png */; };\n\t\t3F5689EC23262F2200FE42DE /* DingDing29x29~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56897523262F2100FE42DE /* DingDing29x29~ipad.png */; };\n\t\t3F5689ED23262F2200FE42DE /* WeWork76x76~ipad.png in Resources */ = {isa = PBXBuildFile; fileRef = 3F56897623262F2100FE42DE /* WeWork76x76~ipad.png */; };\n\t\t3F63118F23222EFE0004E0A1 /* TLocationPluginLocationConverter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F63118D23222EFE0004E0A1 /* TLocationPluginLocationConverter.h */; };\n\t\t3F63119023222EFE0004E0A1 /* TLocationPluginLocationConverter.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F63118E23222EFE0004E0A1 /* TLocationPluginLocationConverter.m */; };\n\t\t3F94F9F7231F7F7800EA742C /* TLocationPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F94F9F5231F7F7800EA742C /* TLocationPlugin.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\t3F94F9FF231F813100EA742C /* NSObject+TLocationPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F94F9FD231F813100EA742C /* NSObject+TLocationPlugin.h */; };\n\t\t3F94FA00231F813100EA742C /* NSObject+TLocationPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F94F9FE231F813100EA742C /* NSObject+TLocationPlugin.m */; };\n\t\t3F9CDAA52321F020000E7A24 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F9CDAA42321F020000E7A24 /* QuartzCore.framework */; };\n\t\t3FA4496623242554005C5CAA /* UITableView+TLocationPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FA4496423242554005C5CAA /* UITableView+TLocationPlugin.h */; };\n\t\t3FA4496723242554005C5CAA /* UITableView+TLocationPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FA4496523242554005C5CAA /* UITableView+TLocationPlugin.m */; };\n\t\t3FB305F62320044900FD85A4 /* TSelectLocationDataViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FB305F32320044900FD85A4 /* TSelectLocationDataViewController.h */; };\n\t\t3FB305F72320044900FD85A4 /* TSelectLocationDataViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FB305F42320044900FD85A4 /* TSelectLocationDataViewController.m */; };\n\t\t3FB305F82320044900FD85A4 /* TSelectLocationDataViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3FB305F52320044900FD85A4 /* TSelectLocationDataViewController.xib */; };\n\t\t3FB305FC2320063F00FD85A4 /* TAddLocationDataViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FB305F92320063F00FD85A4 /* TAddLocationDataViewController.h */; };\n\t\t3FB305FD2320063F00FD85A4 /* TAddLocationDataViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FB305FA2320063F00FD85A4 /* TAddLocationDataViewController.m */; };\n\t\t3FB305FE2320063F00FD85A4 /* TAddLocationDataViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3FB305FB2320063F00FD85A4 /* TAddLocationDataViewController.xib */; };\n\t\t3FB30600232008E100FD85A4 /* MapKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3FB305FF232008E100FD85A4 /* MapKit.framework */; };\n\t\t3FB306032320144700FD85A4 /* TLocationModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FB306012320144700FD85A4 /* TLocationModel.h */; };\n\t\t3FB306042320144700FD85A4 /* TLocationModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FB306022320144700FD85A4 /* TLocationModel.m */; };\n\t\t3FE3DFB8231FA8A5002711B6 /* TSafeRuntimeCFunc.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FE3DFB7231FA8A5002711B6 /* TSafeRuntimeCFunc.m */; };\n\t\t3FEDEEC5231FAD10002E9C18 /* TLocationSettingViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FEDEEC2231FAD10002E9C18 /* TLocationSettingViewController.h */; };\n\t\t3FEDEEC6231FAD10002E9C18 /* TLocationSettingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FEDEEC3231FAD10002E9C18 /* TLocationSettingViewController.m */; };\n\t\t3FEDEEC7231FAD10002E9C18 /* TLocationSettingViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 3FEDEEC4231FAD10002E9C18 /* TLocationSettingViewController.xib */; };\n\t\t3FEDEEC8231FAF5B002E9C18 /* CoreLocation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3FEDEEC0231FAA46002E9C18 /* CoreLocation.framework */; };\n\t\t3FEDEED0231FDB49002E9C18 /* UIWindow+TLocationPluginTouch.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FEDEECE231FDB49002E9C18 /* UIWindow+TLocationPluginTouch.h */; };\n\t\t3FEDEED1231FDB49002E9C18 /* UIWindow+TLocationPluginTouch.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FEDEECF231FDB49002E9C18 /* UIWindow+TLocationPluginTouch.m */; };\n\t\t3FEDEED3231FDCF3002E9C18 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3FEDEED2231FDCF3002E9C18 /* AudioToolbox.framework */; };\n\t\t3FEDEED62320AE6D002E9C18 /* TLocationTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FEDEED42320AE6C002E9C18 /* TLocationTableViewCell.h */; };\n\t\t3FEDEED72320AE6D002E9C18 /* TLocationTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FEDEED52320AE6C002E9C18 /* TLocationTableViewCell.m */; };\n\t\t3FEDEED92320B11C002E9C18 /* TLocationPluginImages.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 3FEDEED82320B11C002E9C18 /* TLocationPluginImages.bundle */; };\n\t\t3FEDEEDC2320B14B002E9C18 /* UIImage+TLocationPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FEDEEDA2320B14B002E9C18 /* UIImage+TLocationPlugin.h */; };\n\t\t3FEDEEDD2320B14B002E9C18 /* UIImage+TLocationPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FEDEEDB2320B14B002E9C18 /* UIImage+TLocationPlugin.m */; };\n\t\t3FEDEEE02320B1AF002E9C18 /* NSBundle+TLocationPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FEDEEDE2320B1AF002E9C18 /* NSBundle+TLocationPlugin.h */; };\n\t\t3FEDEEE12320B1AF002E9C18 /* NSBundle+TLocationPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FEDEEDF2320B1AF002E9C18 /* NSBundle+TLocationPlugin.m */; };\n\t\t3FEDEEE72320B51F002E9C18 /* TLocationNavigationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FEDEEE52320B51F002E9C18 /* TLocationNavigationController.h */; };\n\t\t3FEDEEE82320B51F002E9C18 /* TLocationNavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FEDEEE62320B51F002E9C18 /* TLocationNavigationController.m */; };\n\t\t3FEDEEEB2320C82E002E9C18 /* TBaseViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FEDEEE92320C82D002E9C18 /* TBaseViewController.h */; };\n\t\t3FEDEEEC2320C82E002E9C18 /* TBaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FEDEEEA2320C82E002E9C18 /* TBaseViewController.m */; };\n\t\t3FEDEEF52320C916002E9C18 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FEDEEF42320C916002E9C18 /* AppDelegate.m */; };\n\t\t3FEDEEF82320C916002E9C18 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FEDEEF72320C916002E9C18 /* ViewController.m */; };\n\t\t3FEDEEFB2320C916002E9C18 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3FEDEEF92320C916002E9C18 /* Main.storyboard */; };\n\t\t3FEDEEFD2320C91A002E9C18 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3FEDEEFC2320C91A002E9C18 /* Assets.xcassets */; };\n\t\t3FEDEF002320C91A002E9C18 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3FEDEEFE2320C91A002E9C18 /* LaunchScreen.storyboard */; };\n\t\t3FEDEF032320C91A002E9C18 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FEDEF022320C91A002E9C18 /* main.m */; };\n\t\t3FEDEF092320C93B002E9C18 /* TLocationPlugin.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3F94F9F2231F7F7800EA742C /* TLocationPlugin.framework */; };\n\t\t3FEDEF0A2320C93B002E9C18 /* TLocationPlugin.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 3F94F9F2231F7F7800EA742C /* TLocationPlugin.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };\n\t\t3FF4458923214E880073D346 /* UIWindow+TLocationPluginToast.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FF4458723214E880073D346 /* UIWindow+TLocationPluginToast.h */; };\n\t\t3FF4458A23214E880073D346 /* UIWindow+TLocationPluginToast.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FF4458823214E880073D346 /* UIWindow+TLocationPluginToast.m */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\t3F6B15062327D58700BA3E5E /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 3F6B15022327D58700BA3E5E /* yololib.xcodeproj */;\n\t\t\tproxyType = 2;\n\t\t\tremoteGlobalIDString = AD49F4E51769B63A00B8D2E0;\n\t\t\tremoteInfo = yololib;\n\t\t};\n\t\t3FEDEF072320C92C002E9C18 /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 3F94F9E9231F7F7800EA742C /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = 3F94F9F1231F7F7800EA742C;\n\t\t\tremoteInfo = TLocationPlugin;\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXCopyFilesBuildPhase section */\n\t\t3FEDEF0B2320C93B002E9C18 /* Embed Frameworks */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = \"\";\n\t\t\tdstSubfolderSpec = 10;\n\t\t\tfiles = (\n\t\t\t\t3FEDEF0A2320C93B002E9C18 /* TLocationPlugin.framework in Embed Frameworks */,\n\t\t\t);\n\t\t\tname = \"Embed Frameworks\";\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXCopyFilesBuildPhase section */\n\n/* Begin PBXFileReference section */\n\t\t3F0A640E23217506002FA767 /* CALayer+TLocationPlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"CALayer+TLocationPlugin.h\"; sourceTree = \"<group>\"; };\n\t\t3F0A640F23217506002FA767 /* CALayer+TLocationPlugin.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = \"CALayer+TLocationPlugin.m\"; sourceTree = \"<group>\"; };\n\t\t3F0FE50F2320FBFC008B0830 /* TLocationManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TLocationManager.h; sourceTree = \"<group>\"; };\n\t\t3F0FE5102320FBFC008B0830 /* TLocationManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TLocationManager.m; sourceTree = \"<group>\"; };\n\t\t3F344C0A23227F2F000A0D9F /* TAlertController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TAlertController.h; sourceTree = \"<group>\"; };\n\t\t3F344C0B23227F2F000A0D9F /* TAlertController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TAlertController.m; sourceTree = \"<group>\"; };\n\t\t3F344C0E2322937F000A0D9F /* TLocationDefine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TLocationDefine.h; sourceTree = \"<group>\"; };\n\t\t3F35B14A2325405F00E785B9 /* devices_arm_info.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = devices_arm_info.sh; sourceTree = \"<group>\"; };\n\t\t3F35B14B2325431200E785B9 /* UIApplication+TLocationPlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"UIApplication+TLocationPlugin.h\"; sourceTree = \"<group>\"; };\n\t\t3F35B14C2325431200E785B9 /* UIApplication+TLocationPlugin.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = \"UIApplication+TLocationPlugin.m\"; sourceTree = \"<group>\"; };\n\t\t3F35B14F2325436B00E785B9 /* UIViewController+TLocationPlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"UIViewController+TLocationPlugin.h\"; sourceTree = \"<group>\"; };\n\t\t3F35B1502325436B00E785B9 /* UIViewController+TLocationPlugin.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = \"UIViewController+TLocationPlugin.m\"; sourceTree = \"<group>\"; };\n\t\t3F542A922325F15600497668 /* env.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = env.sh; sourceTree = \"<group>\"; };\n\t\t3F542A9323261BE200497668 /* inject_app_icon.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = inject_app_icon.py; sourceTree = \"<group>\"; };\n\t\t3F542A9423261EAB00497668 /* logos */ = {isa = PBXFileReference; lastKnownFileType = folder; path = logos; sourceTree = \"<group>\"; };\n\t\t3F542A952326225500497668 /* TLocationChangeAppICONViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TLocationChangeAppICONViewController.h; sourceTree = \"<group>\"; };\n\t\t3F542A962326225500497668 /* TLocationChangeAppICONViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TLocationChangeAppICONViewController.m; sourceTree = \"<group>\"; };\n\t\t3F542A972326225500497668 /* TLocationChangeAppICONViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TLocationChangeAppICONViewController.xib; sourceTree = \"<group>\"; };\n\t\t3F56890023262F1B00FE42DE /* QQ29x29@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"QQ29x29@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56890123262F1B00FE42DE /* Tim29x29@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Tim29x29@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56890223262F1B00FE42DE /* WeChat29x29@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeChat29x29@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56890323262F1B00FE42DE /* Lark60x60@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Lark60x60@3x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56890423262F1B00FE42DE /* NeiXin60x60@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"NeiXin60x60@3x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56890523262F1B00FE42DE /* WeChat76x76@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeChat76x76@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56890623262F1B00FE42DE /* WeWork20x20~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeWork20x20~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56890723262F1B00FE42DE /* Tim76x76@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Tim76x76@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56890823262F1B00FE42DE /* DingDing60x60@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"DingDing60x60@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56890923262F1B00FE42DE /* WeWork40x40@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeWork40x40@3x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56890A23262F1B00FE42DE /* DingDing20x20@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"DingDing20x20@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56890B23262F1B00FE42DE /* NeiXin20x20~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"NeiXin20x20~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56890C23262F1C00FE42DE /* NeiXin20x20@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"NeiXin20x20@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56890D23262F1C00FE42DE /* Lark83.5x83.5@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Lark83.5x83.5@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56890E23262F1C00FE42DE /* DingDing20x20@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"DingDing20x20@3x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56890F23262F1C00FE42DE /* NeiXin76x76@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"NeiXin76x76@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56891023262F1C00FE42DE /* Lark76x76@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Lark76x76@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56891123262F1C00FE42DE /* QQ20x20@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"QQ20x20@3x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56891223262F1C00FE42DE /* WeWork29x29~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeWork29x29~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56891323262F1C00FE42DE /* QQ40x40@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"QQ40x40@3x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56891423262F1C00FE42DE /* NeiXin29x29@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"NeiXin29x29@3x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56891523262F1C00FE42DE /* WeChat20x20~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeChat20x20~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56891623262F1C00FE42DE /* NeiXin40x40@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"NeiXin40x40@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56891723262F1C00FE42DE /* WeWork40x40~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeWork40x40~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56891823262F1C00FE42DE /* WeWork20x20@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeWork20x20@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56891923262F1C00FE42DE /* Lark40x40@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Lark40x40@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56891A23262F1C00FE42DE /* QQ20x20@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"QQ20x20@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56891B23262F1C00FE42DE /* WeChat29x29~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeChat29x29~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56891C23262F1C00FE42DE /* WeChat20x20@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeChat20x20@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56891D23262F1C00FE42DE /* WeChat40x40~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeChat40x40~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56891E23262F1C00FE42DE /* Tim40x40~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Tim40x40~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56891F23262F1C00FE42DE /* WeWork60x60@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeWork60x60@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56892023262F1C00FE42DE /* Lark60x60@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Lark60x60@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56892123262F1C00FE42DE /* Lark29x29@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Lark29x29@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56892223262F1C00FE42DE /* QQ40x40@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"QQ40x40@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56892323262F1D00FE42DE /* NeiXin29x29@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"NeiXin29x29@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56892423262F1D00FE42DE /* DingDing40x40@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"DingDing40x40@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56892523262F1D00FE42DE /* WeChat20x20@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeChat20x20@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56892623262F1D00FE42DE /* Lark20x20@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Lark20x20@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56892723262F1D00FE42DE /* QQ20x20@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"QQ20x20@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56892823262F1D00FE42DE /* NeiXin40x40@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"NeiXin40x40@3x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56892923262F1D00FE42DE /* Lark29x29~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Lark29x29~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56892A23262F1D00FE42DE /* WeChat60x60@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeChat60x60@3x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56892B23262F1D00FE42DE /* WeWork40x40@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeWork40x40@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56892C23262F1D00FE42DE /* WeChat76x76~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeChat76x76~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56892D23262F1D00FE42DE /* WeWork20x20@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeWork20x20@3x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56892E23262F1D00FE42DE /* Tim76x76~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Tim76x76~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56892F23262F1D00FE42DE /* QQ40x40~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"QQ40x40~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56893023262F1D00FE42DE /* Tim29x29@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Tim29x29@3x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56893123262F1D00FE42DE /* NeiXin60x60@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"NeiXin60x60@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56893223262F1D00FE42DE /* DingDing76x76~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"DingDing76x76~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56893323262F1D00FE42DE /* DingDing20x20@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"DingDing20x20@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56893423262F1D00FE42DE /* WeWork60x60@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeWork60x60@3x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56893523262F1D00FE42DE /* QQ60x60@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"QQ60x60@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56893623262F1D00FE42DE /* Lark40x40@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Lark40x40@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56893723262F1D00FE42DE /* Lark29x29@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Lark29x29@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56893823262F1D00FE42DE /* WeChat29x29@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeChat29x29@3x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56893923262F1E00FE42DE /* NeiXin40x40@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"NeiXin40x40@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56893A23262F1E00FE42DE /* Tim20x20@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Tim20x20@3x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56893B23262F1E00FE42DE /* QQ29x29@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"QQ29x29@3x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56893C23262F1E00FE42DE /* Tim40x40@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Tim40x40@3x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56893D23262F1E00FE42DE /* Tim60x60@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Tim60x60@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56893E23262F1E00FE42DE /* DingDing29x29@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"DingDing29x29@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56893F23262F1E00FE42DE /* Tim29x29~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Tim29x29~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56894023262F1E00FE42DE /* Lark20x20~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Lark20x20~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56894123262F1E00FE42DE /* QQ76x76@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"QQ76x76@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56894223262F1E00FE42DE /* WeChat40x40@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeChat40x40@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56894323262F1E00FE42DE /* Tim29x29@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Tim29x29@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56894423262F1E00FE42DE /* DingDing60x60@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"DingDing60x60@3x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56894523262F1E00FE42DE /* WeChat40x40@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeChat40x40@3x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56894623262F1E00FE42DE /* WeWork29x29@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeWork29x29@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56894723262F1E00FE42DE /* Tim83.5x83.5@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Tim83.5x83.5@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56894823262F1E00FE42DE /* NeiXin83.5x83.5@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"NeiXin83.5x83.5@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56894923262F1E00FE42DE /* DingDing40x40~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"DingDing40x40~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56894A23262F1E00FE42DE /* Tim40x40@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Tim40x40@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56894B23262F1E00FE42DE /* DingDing83.5x83.5@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"DingDing83.5x83.5@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56894C23262F1E00FE42DE /* QQ29x29~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"QQ29x29~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56894D23262F1E00FE42DE /* Lark40x40~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Lark40x40~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56894E23262F1E00FE42DE /* NeiXin20x20@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"NeiXin20x20@3x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56894F23262F1E00FE42DE /* NeiXin20x20@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"NeiXin20x20@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56895023262F1E00FE42DE /* NeiXin76x76~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"NeiXin76x76~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56895123262F1F00FE42DE /* WeWork76x76@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeWork76x76@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56895223262F1F00FE42DE /* Lark20x20@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Lark20x20@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56895323262F1F00FE42DE /* NeiXin29x29@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"NeiXin29x29@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56895423262F1F00FE42DE /* DingDing29x29@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"DingDing29x29@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56895523262F1F00FE42DE /* NeiXin29x29~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"NeiXin29x29~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56895623262F1F00FE42DE /* WeWork29x29@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeWork29x29@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56895723262F1F00FE42DE /* Lark40x40@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Lark40x40@3x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56895823262F1F00FE42DE /* Tim40x40@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Tim40x40@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56895923262F1F00FE42DE /* Tim20x20@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Tim20x20@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56895A23262F1F00FE42DE /* DingDing20x20~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"DingDing20x20~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56895B23262F1F00FE42DE /* Lark29x29@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Lark29x29@3x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56895C23262F1F00FE42DE /* WeChat40x40@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeChat40x40@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56895D23262F1F00FE42DE /* Lark76x76~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Lark76x76~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56895E23262F1F00FE42DE /* DingDing76x76@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"DingDing76x76@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56895F23262F1F00FE42DE /* NeiXin40x40~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"NeiXin40x40~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56896023262F1F00FE42DE /* WeWork40x40@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeWork40x40@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56896123262F2000FE42DE /* Tim20x20@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Tim20x20@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56896223262F2000FE42DE /* WeWork29x29@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeWork29x29@3x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56896323262F2000FE42DE /* WeChat60x60@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeChat60x60@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56896423262F2000FE42DE /* Tim20x20~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Tim20x20~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56896523262F2000FE42DE /* WeChat83.5x83.5@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeChat83.5x83.5@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56896623262F2000FE42DE /* WeWork20x20@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeWork20x20@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56896723262F2000FE42DE /* Tim60x60@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Tim60x60@3x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56896823262F2000FE42DE /* WeChat20x20@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeChat20x20@3x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56896923262F2000FE42DE /* QQ20x20~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"QQ20x20~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56896A23262F2000FE42DE /* QQ40x40@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"QQ40x40@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56896B23262F2000FE42DE /* QQ29x29@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"QQ29x29@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56896C23262F2100FE42DE /* QQ83.5x83.5@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"QQ83.5x83.5@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56896D23262F2100FE42DE /* Lark20x20@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"Lark20x20@3x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56896E23262F2100FE42DE /* DingDing29x29@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"DingDing29x29@3x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56896F23262F2100FE42DE /* WeWork83.5x83.5@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeWork83.5x83.5@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56897023262F2100FE42DE /* QQ60x60@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"QQ60x60@3x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56897123262F2100FE42DE /* DingDing40x40@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"DingDing40x40@3x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56897223262F2100FE42DE /* WeChat29x29@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeChat29x29@2x.png\"; sourceTree = \"<group>\"; };\n\t\t3F56897323262F2100FE42DE /* QQ76x76~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"QQ76x76~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56897423262F2100FE42DE /* DingDing40x40@2x~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"DingDing40x40@2x~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56897523262F2100FE42DE /* DingDing29x29~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"DingDing29x29~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F56897623262F2100FE42DE /* WeWork76x76~ipad.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = \"WeWork76x76~ipad.png\"; sourceTree = \"<group>\"; };\n\t\t3F63118D23222EFE0004E0A1 /* TLocationPluginLocationConverter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TLocationPluginLocationConverter.h; sourceTree = \"<group>\"; };\n\t\t3F63118E23222EFE0004E0A1 /* TLocationPluginLocationConverter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TLocationPluginLocationConverter.m; sourceTree = \"<group>\"; };\n\t\t3F6B15022327D58700BA3E5E /* yololib.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = \"wrapper.pb-project\"; name = yololib.xcodeproj; path = yololib/yololib.xcodeproj; sourceTree = \"<group>\"; };\n\t\t3F94F9F2231F7F7800EA742C /* TLocationPlugin.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TLocationPlugin.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t3F94F9F5231F7F7800EA742C /* TLocationPlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TLocationPlugin.h; sourceTree = \"<group>\"; };\n\t\t3F94F9F6231F7F7800EA742C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t3F94F9FD231F813100EA742C /* NSObject+TLocationPlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"NSObject+TLocationPlugin.h\"; sourceTree = \"<group>\"; };\n\t\t3F94F9FE231F813100EA742C /* NSObject+TLocationPlugin.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = \"NSObject+TLocationPlugin.m\"; sourceTree = \"<group>\"; };\n\t\t3F9CDAA22321F013000E7A24 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; };\n\t\t3F9CDAA42321F020000E7A24 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; };\n\t\t3F9CDAAC2321F2A7000E7A24 /* build_all.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = build_all.sh; sourceTree = \"<group>\"; };\n\t\t3FA4496423242554005C5CAA /* UITableView+TLocationPlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"UITableView+TLocationPlugin.h\"; sourceTree = \"<group>\"; };\n\t\t3FA4496523242554005C5CAA /* UITableView+TLocationPlugin.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = \"UITableView+TLocationPlugin.m\"; sourceTree = \"<group>\"; };\n\t\t3FB305F32320044900FD85A4 /* TSelectLocationDataViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TSelectLocationDataViewController.h; sourceTree = \"<group>\"; };\n\t\t3FB305F42320044900FD85A4 /* TSelectLocationDataViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TSelectLocationDataViewController.m; sourceTree = \"<group>\"; };\n\t\t3FB305F52320044900FD85A4 /* TSelectLocationDataViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TSelectLocationDataViewController.xib; sourceTree = \"<group>\"; };\n\t\t3FB305F92320063F00FD85A4 /* TAddLocationDataViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TAddLocationDataViewController.h; sourceTree = \"<group>\"; };\n\t\t3FB305FA2320063F00FD85A4 /* TAddLocationDataViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TAddLocationDataViewController.m; sourceTree = \"<group>\"; };\n\t\t3FB305FB2320063F00FD85A4 /* TAddLocationDataViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TAddLocationDataViewController.xib; sourceTree = \"<group>\"; };\n\t\t3FB305FF232008E100FD85A4 /* MapKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MapKit.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.15.sdk/System/Library/Frameworks/MapKit.framework; sourceTree = DEVELOPER_DIR; };\n\t\t3FB306012320144700FD85A4 /* TLocationModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TLocationModel.h; sourceTree = \"<group>\"; };\n\t\t3FB306022320144700FD85A4 /* TLocationModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TLocationModel.m; sourceTree = \"<group>\"; };\n\t\t3FC34C7E2322536600C15E66 /* inject.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = inject.sh; sourceTree = \"<group>\"; };\n\t\t3FE3DFB6231FA8A3002711B6 /* TSafeRuntimeCFunc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TSafeRuntimeCFunc.h; sourceTree = \"<group>\"; };\n\t\t3FE3DFB7231FA8A5002711B6 /* TSafeRuntimeCFunc.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TSafeRuntimeCFunc.m; sourceTree = \"<group>\"; };\n\t\t3FEDEEC0231FAA46002E9C18 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; };\n\t\t3FEDEEC2231FAD10002E9C18 /* TLocationSettingViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TLocationSettingViewController.h; sourceTree = \"<group>\"; };\n\t\t3FEDEEC3231FAD10002E9C18 /* TLocationSettingViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TLocationSettingViewController.m; sourceTree = \"<group>\"; };\n\t\t3FEDEEC4231FAD10002E9C18 /* TLocationSettingViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TLocationSettingViewController.xib; sourceTree = \"<group>\"; };\n\t\t3FEDEECE231FDB49002E9C18 /* UIWindow+TLocationPluginTouch.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"UIWindow+TLocationPluginTouch.h\"; sourceTree = \"<group>\"; };\n\t\t3FEDEECF231FDB49002E9C18 /* UIWindow+TLocationPluginTouch.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = \"UIWindow+TLocationPluginTouch.m\"; sourceTree = \"<group>\"; };\n\t\t3FEDEED2231FDCF3002E9C18 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };\n\t\t3FEDEED42320AE6C002E9C18 /* TLocationTableViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TLocationTableViewCell.h; sourceTree = \"<group>\"; };\n\t\t3FEDEED52320AE6C002E9C18 /* TLocationTableViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TLocationTableViewCell.m; sourceTree = \"<group>\"; };\n\t\t3FEDEED82320B11C002E9C18 /* TLocationPluginImages.bundle */ = {isa = PBXFileReference; lastKnownFileType = \"wrapper.plug-in\"; path = TLocationPluginImages.bundle; sourceTree = \"<group>\"; };\n\t\t3FEDEEDA2320B14B002E9C18 /* UIImage+TLocationPlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"UIImage+TLocationPlugin.h\"; sourceTree = \"<group>\"; };\n\t\t3FEDEEDB2320B14B002E9C18 /* UIImage+TLocationPlugin.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = \"UIImage+TLocationPlugin.m\"; sourceTree = \"<group>\"; };\n\t\t3FEDEEDE2320B1AF002E9C18 /* NSBundle+TLocationPlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"NSBundle+TLocationPlugin.h\"; sourceTree = \"<group>\"; };\n\t\t3FEDEEDF2320B1AF002E9C18 /* NSBundle+TLocationPlugin.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = \"NSBundle+TLocationPlugin.m\"; sourceTree = \"<group>\"; };\n\t\t3FEDEEE52320B51F002E9C18 /* TLocationNavigationController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TLocationNavigationController.h; sourceTree = \"<group>\"; };\n\t\t3FEDEEE62320B51F002E9C18 /* TLocationNavigationController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TLocationNavigationController.m; sourceTree = \"<group>\"; };\n\t\t3FEDEEE92320C82D002E9C18 /* TBaseViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TBaseViewController.h; sourceTree = \"<group>\"; };\n\t\t3FEDEEEA2320C82E002E9C18 /* TBaseViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TBaseViewController.m; sourceTree = \"<group>\"; };\n\t\t3FEDEEF12320C916002E9C18 /* Lark.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Lark.app; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t3FEDEEF32320C916002E9C18 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = \"<group>\"; };\n\t\t3FEDEEF42320C916002E9C18 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = \"<group>\"; };\n\t\t3FEDEEF62320C916002E9C18 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = \"<group>\"; };\n\t\t3FEDEEF72320C916002E9C18 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = \"<group>\"; };\n\t\t3FEDEEFA2320C916002E9C18 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = \"<group>\"; };\n\t\t3FEDEEFC2320C91A002E9C18 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = \"<group>\"; };\n\t\t3FEDEEFF2320C91A002E9C18 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = \"<group>\"; };\n\t\t3FEDEF012320C91A002E9C18 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\t3FEDEF022320C91A002E9C18 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = \"<group>\"; };\n\t\t3FF4458723214E880073D346 /* UIWindow+TLocationPluginToast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"UIWindow+TLocationPluginToast.h\"; sourceTree = \"<group>\"; };\n\t\t3FF4458823214E880073D346 /* UIWindow+TLocationPluginToast.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = \"UIWindow+TLocationPluginToast.m\"; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t3F94F9EF231F7F7800EA742C /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3F9CDAA52321F020000E7A24 /* QuartzCore.framework in Frameworks */,\n\t\t\t\t3FEDEED3231FDCF3002E9C18 /* AudioToolbox.framework in Frameworks */,\n\t\t\t\t3FB30600232008E100FD85A4 /* MapKit.framework in Frameworks */,\n\t\t\t\t3FEDEEC8231FAF5B002E9C18 /* CoreLocation.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t3FEDEEEE2320C916002E9C18 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3FEDEF092320C93B002E9C18 /* TLocationPlugin.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t3F6B15032327D58700BA3E5E /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3F6B15072327D58700BA3E5E /* yololib */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3F94F9E8231F7F7800EA742C = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3F6B15022327D58700BA3E5E /* yololib.xcodeproj */,\n\t\t\t\t3F94F9F4231F7F7800EA742C /* TLocationPlugin */,\n\t\t\t\t3FEDEEF22320C916002E9C18 /* TestLocationPlugin */,\n\t\t\t\t3F9CDAAB2321F28A000E7A24 /* RunScript */,\n\t\t\t\t3F94F9F3231F7F7800EA742C /* Products */,\n\t\t\t\tEC41FADB1E5A492BCB391115 /* Frameworks */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3F94F9F3231F7F7800EA742C /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3F94F9F2231F7F7800EA742C /* TLocationPlugin.framework */,\n\t\t\t\t3FEDEEF12320C916002E9C18 /* Lark.app */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3F94F9F4231F7F7800EA742C /* TLocationPlugin */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3F94F9F5231F7F7800EA742C /* TLocationPlugin.h */,\n\t\t\t\t3FE3DFB6231FA8A3002711B6 /* TSafeRuntimeCFunc.h */,\n\t\t\t\t3FE3DFB7231FA8A5002711B6 /* TSafeRuntimeCFunc.m */,\n\t\t\t\t3F94F9FD231F813100EA742C /* NSObject+TLocationPlugin.h */,\n\t\t\t\t3F94F9FE231F813100EA742C /* NSObject+TLocationPlugin.m */,\n\t\t\t\t3FEDEEE42320B435002E9C18 /* Others */,\n\t\t\t\t3FEDEEE32320B419002E9C18 /* ViewControllerAndViews */,\n\t\t\t\t3FEDEEE22320B402002E9C18 /* Tools */,\n\t\t\t\t3FEDEED82320B11C002E9C18 /* TLocationPluginImages.bundle */,\n\t\t\t\t3F94F9F6231F7F7800EA742C /* Info.plist */,\n\t\t\t);\n\t\t\tpath = TLocationPlugin;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3F9CDAAB2321F28A000E7A24 /* RunScript */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3F542A922325F15600497668 /* env.sh */,\n\t\t\t\t3F35B14A2325405F00E785B9 /* devices_arm_info.sh */,\n\t\t\t\t3F9CDAAC2321F2A7000E7A24 /* build_all.sh */,\n\t\t\t\t3FC34C7E2322536600C15E66 /* inject.sh */,\n\t\t\t\t3F542A9323261BE200497668 /* inject_app_icon.py */,\n\t\t\t\t3F542A9423261EAB00497668 /* logos */,\n\t\t\t);\n\t\t\tpath = RunScript;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3FEDEEE22320B402002E9C18 /* Tools */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3F344C0E2322937F000A0D9F /* TLocationDefine.h */,\n\t\t\t\t3F344C0A23227F2F000A0D9F /* TAlertController.h */,\n\t\t\t\t3F344C0B23227F2F000A0D9F /* TAlertController.m */,\n\t\t\t\t3FF4458723214E880073D346 /* UIWindow+TLocationPluginToast.h */,\n\t\t\t\t3FF4458823214E880073D346 /* UIWindow+TLocationPluginToast.m */,\n\t\t\t\t3FEDEECE231FDB49002E9C18 /* UIWindow+TLocationPluginTouch.h */,\n\t\t\t\t3FEDEECF231FDB49002E9C18 /* UIWindow+TLocationPluginTouch.m */,\n\t\t\t\t3F35B14F2325436B00E785B9 /* UIViewController+TLocationPlugin.h */,\n\t\t\t\t3F35B1502325436B00E785B9 /* UIViewController+TLocationPlugin.m */,\n\t\t\t\t3F35B14B2325431200E785B9 /* UIApplication+TLocationPlugin.h */,\n\t\t\t\t3F35B14C2325431200E785B9 /* UIApplication+TLocationPlugin.m */,\n\t\t\t\t3FEDEEDE2320B1AF002E9C18 /* NSBundle+TLocationPlugin.h */,\n\t\t\t\t3FEDEEDF2320B1AF002E9C18 /* NSBundle+TLocationPlugin.m */,\n\t\t\t\t3FEDEEDA2320B14B002E9C18 /* UIImage+TLocationPlugin.h */,\n\t\t\t\t3FEDEEDB2320B14B002E9C18 /* UIImage+TLocationPlugin.m */,\n\t\t\t\t3F0A640E23217506002FA767 /* CALayer+TLocationPlugin.h */,\n\t\t\t\t3F0A640F23217506002FA767 /* CALayer+TLocationPlugin.m */,\n\t\t\t\t3FA4496423242554005C5CAA /* UITableView+TLocationPlugin.h */,\n\t\t\t\t3FA4496523242554005C5CAA /* UITableView+TLocationPlugin.m */,\n\t\t\t);\n\t\t\tpath = Tools;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3FEDEEE32320B419002E9C18 /* ViewControllerAndViews */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3FEDEEE52320B51F002E9C18 /* TLocationNavigationController.h */,\n\t\t\t\t3FEDEEE62320B51F002E9C18 /* TLocationNavigationController.m */,\n\t\t\t\t3FEDEEE92320C82D002E9C18 /* TBaseViewController.h */,\n\t\t\t\t3FEDEEEA2320C82E002E9C18 /* TBaseViewController.m */,\n\t\t\t\t3FEDEED42320AE6C002E9C18 /* TLocationTableViewCell.h */,\n\t\t\t\t3FEDEED52320AE6C002E9C18 /* TLocationTableViewCell.m */,\n\t\t\t\t3FB305F32320044900FD85A4 /* TSelectLocationDataViewController.h */,\n\t\t\t\t3FB305F42320044900FD85A4 /* TSelectLocationDataViewController.m */,\n\t\t\t\t3FB305F52320044900FD85A4 /* TSelectLocationDataViewController.xib */,\n\t\t\t\t3FB305F92320063F00FD85A4 /* TAddLocationDataViewController.h */,\n\t\t\t\t3FB305FA2320063F00FD85A4 /* TAddLocationDataViewController.m */,\n\t\t\t\t3FB305FB2320063F00FD85A4 /* TAddLocationDataViewController.xib */,\n\t\t\t\t3FEDEEC2231FAD10002E9C18 /* TLocationSettingViewController.h */,\n\t\t\t\t3FEDEEC3231FAD10002E9C18 /* TLocationSettingViewController.m */,\n\t\t\t\t3FEDEEC4231FAD10002E9C18 /* TLocationSettingViewController.xib */,\n\t\t\t\t3F542A952326225500497668 /* TLocationChangeAppICONViewController.h */,\n\t\t\t\t3F542A962326225500497668 /* TLocationChangeAppICONViewController.m */,\n\t\t\t\t3F542A972326225500497668 /* TLocationChangeAppICONViewController.xib */,\n\t\t\t);\n\t\t\tpath = ViewControllerAndViews;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3FEDEEE42320B435002E9C18 /* Others */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3F0FE50F2320FBFC008B0830 /* TLocationManager.h */,\n\t\t\t\t3F0FE5102320FBFC008B0830 /* TLocationManager.m */,\n\t\t\t\t3F63118D23222EFE0004E0A1 /* TLocationPluginLocationConverter.h */,\n\t\t\t\t3F63118E23222EFE0004E0A1 /* TLocationPluginLocationConverter.m */,\n\t\t\t\t3FB306012320144700FD85A4 /* TLocationModel.h */,\n\t\t\t\t3FB306022320144700FD85A4 /* TLocationModel.m */,\n\t\t\t);\n\t\t\tpath = Others;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3FEDEEF22320C916002E9C18 /* TestLocationPlugin */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3FEDEEF32320C916002E9C18 /* AppDelegate.h */,\n\t\t\t\t3FEDEEF42320C916002E9C18 /* AppDelegate.m */,\n\t\t\t\t3FEDEEF62320C916002E9C18 /* ViewController.h */,\n\t\t\t\t3FEDEEF72320C916002E9C18 /* ViewController.m */,\n\t\t\t\t3FEDEEF92320C916002E9C18 /* Main.storyboard */,\n\t\t\t\t3FEDEEFC2320C91A002E9C18 /* Assets.xcassets */,\n\t\t\t\t3FEDEEFE2320C91A002E9C18 /* LaunchScreen.storyboard */,\n\t\t\t\t3FEDEF012320C91A002E9C18 /* Info.plist */,\n\t\t\t\t3FEDEF022320C91A002E9C18 /* main.m */,\n\t\t\t\t3FEF0BA523262EBB003F32FB /* icons */,\n\t\t\t);\n\t\t\tpath = TestLocationPlugin;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3FEF0BA523262EBB003F32FB /* icons */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3F56893323262F1D00FE42DE /* DingDing20x20@2x.png */,\n\t\t\t\t3F56890A23262F1B00FE42DE /* DingDing20x20@2x~ipad.png */,\n\t\t\t\t3F56890E23262F1C00FE42DE /* DingDing20x20@3x.png */,\n\t\t\t\t3F56895A23262F1F00FE42DE /* DingDing20x20~ipad.png */,\n\t\t\t\t3F56893E23262F1E00FE42DE /* DingDing29x29@2x.png */,\n\t\t\t\t3F56895423262F1F00FE42DE /* DingDing29x29@2x~ipad.png */,\n\t\t\t\t3F56896E23262F2100FE42DE /* DingDing29x29@3x.png */,\n\t\t\t\t3F56897523262F2100FE42DE /* DingDing29x29~ipad.png */,\n\t\t\t\t3F56892423262F1D00FE42DE /* DingDing40x40@2x.png */,\n\t\t\t\t3F56897423262F2100FE42DE /* DingDing40x40@2x~ipad.png */,\n\t\t\t\t3F56897123262F2100FE42DE /* DingDing40x40@3x.png */,\n\t\t\t\t3F56894923262F1E00FE42DE /* DingDing40x40~ipad.png */,\n\t\t\t\t3F56890823262F1B00FE42DE /* DingDing60x60@2x.png */,\n\t\t\t\t3F56894423262F1E00FE42DE /* DingDing60x60@3x.png */,\n\t\t\t\t3F56895E23262F1F00FE42DE /* DingDing76x76@2x~ipad.png */,\n\t\t\t\t3F56893223262F1D00FE42DE /* DingDing76x76~ipad.png */,\n\t\t\t\t3F56894B23262F1E00FE42DE /* DingDing83.5x83.5@2x~ipad.png */,\n\t\t\t\t3F56892623262F1D00FE42DE /* Lark20x20@2x.png */,\n\t\t\t\t3F56895223262F1F00FE42DE /* Lark20x20@2x~ipad.png */,\n\t\t\t\t3F56896D23262F2100FE42DE /* Lark20x20@3x.png */,\n\t\t\t\t3F56894023262F1E00FE42DE /* Lark20x20~ipad.png */,\n\t\t\t\t3F56892123262F1C00FE42DE /* Lark29x29@2x.png */,\n\t\t\t\t3F56893723262F1D00FE42DE /* Lark29x29@2x~ipad.png */,\n\t\t\t\t3F56895B23262F1F00FE42DE /* Lark29x29@3x.png */,\n\t\t\t\t3F56892923262F1D00FE42DE /* Lark29x29~ipad.png */,\n\t\t\t\t3F56893623262F1D00FE42DE /* Lark40x40@2x.png */,\n\t\t\t\t3F56891923262F1C00FE42DE /* Lark40x40@2x~ipad.png */,\n\t\t\t\t3F56895723262F1F00FE42DE /* Lark40x40@3x.png */,\n\t\t\t\t3F56894D23262F1E00FE42DE /* Lark40x40~ipad.png */,\n\t\t\t\t3F56892023262F1C00FE42DE /* Lark60x60@2x.png */,\n\t\t\t\t3F56890323262F1B00FE42DE /* Lark60x60@3x.png */,\n\t\t\t\t3F56891023262F1C00FE42DE /* Lark76x76@2x~ipad.png */,\n\t\t\t\t3F56895D23262F1F00FE42DE /* Lark76x76~ipad.png */,\n\t\t\t\t3F56890D23262F1C00FE42DE /* Lark83.5x83.5@2x~ipad.png */,\n\t\t\t\t3F56890C23262F1C00FE42DE /* NeiXin20x20@2x.png */,\n\t\t\t\t3F56894F23262F1E00FE42DE /* NeiXin20x20@2x~ipad.png */,\n\t\t\t\t3F56894E23262F1E00FE42DE /* NeiXin20x20@3x.png */,\n\t\t\t\t3F56890B23262F1B00FE42DE /* NeiXin20x20~ipad.png */,\n\t\t\t\t3F56895323262F1F00FE42DE /* NeiXin29x29@2x.png */,\n\t\t\t\t3F56892323262F1D00FE42DE /* NeiXin29x29@2x~ipad.png */,\n\t\t\t\t3F56891423262F1C00FE42DE /* NeiXin29x29@3x.png */,\n\t\t\t\t3F56895523262F1F00FE42DE /* NeiXin29x29~ipad.png */,\n\t\t\t\t3F56891623262F1C00FE42DE /* NeiXin40x40@2x.png */,\n\t\t\t\t3F56893923262F1E00FE42DE /* NeiXin40x40@2x~ipad.png */,\n\t\t\t\t3F56892823262F1D00FE42DE /* NeiXin40x40@3x.png */,\n\t\t\t\t3F56895F23262F1F00FE42DE /* NeiXin40x40~ipad.png */,\n\t\t\t\t3F56893123262F1D00FE42DE /* NeiXin60x60@2x.png */,\n\t\t\t\t3F56890423262F1B00FE42DE /* NeiXin60x60@3x.png */,\n\t\t\t\t3F56890F23262F1C00FE42DE /* NeiXin76x76@2x~ipad.png */,\n\t\t\t\t3F56895023262F1E00FE42DE /* NeiXin76x76~ipad.png */,\n\t\t\t\t3F56894823262F1E00FE42DE /* NeiXin83.5x83.5@2x~ipad.png */,\n\t\t\t\t3F56891A23262F1C00FE42DE /* QQ20x20@2x.png */,\n\t\t\t\t3F56892723262F1D00FE42DE /* QQ20x20@2x~ipad.png */,\n\t\t\t\t3F56891123262F1C00FE42DE /* QQ20x20@3x.png */,\n\t\t\t\t3F56896923262F2000FE42DE /* QQ20x20~ipad.png */,\n\t\t\t\t3F56890023262F1B00FE42DE /* QQ29x29@2x.png */,\n\t\t\t\t3F56896B23262F2000FE42DE /* QQ29x29@2x~ipad.png */,\n\t\t\t\t3F56893B23262F1E00FE42DE /* QQ29x29@3x.png */,\n\t\t\t\t3F56894C23262F1E00FE42DE /* QQ29x29~ipad.png */,\n\t\t\t\t3F56896A23262F2000FE42DE /* QQ40x40@2x.png */,\n\t\t\t\t3F56892223262F1C00FE42DE /* QQ40x40@2x~ipad.png */,\n\t\t\t\t3F56891323262F1C00FE42DE /* QQ40x40@3x.png */,\n\t\t\t\t3F56892F23262F1D00FE42DE /* QQ40x40~ipad.png */,\n\t\t\t\t3F56893523262F1D00FE42DE /* QQ60x60@2x.png */,\n\t\t\t\t3F56897023262F2100FE42DE /* QQ60x60@3x.png */,\n\t\t\t\t3F56894123262F1E00FE42DE /* QQ76x76@2x~ipad.png */,\n\t\t\t\t3F56897323262F2100FE42DE /* QQ76x76~ipad.png */,\n\t\t\t\t3F56896C23262F2100FE42DE /* QQ83.5x83.5@2x~ipad.png */,\n\t\t\t\t3F56896123262F2000FE42DE /* Tim20x20@2x.png */,\n\t\t\t\t3F56895923262F1F00FE42DE /* Tim20x20@2x~ipad.png */,\n\t\t\t\t3F56893A23262F1E00FE42DE /* Tim20x20@3x.png */,\n\t\t\t\t3F56896423262F2000FE42DE /* Tim20x20~ipad.png */,\n\t\t\t\t3F56894323262F1E00FE42DE /* Tim29x29@2x.png */,\n\t\t\t\t3F56890123262F1B00FE42DE /* Tim29x29@2x~ipad.png */,\n\t\t\t\t3F56893023262F1D00FE42DE /* Tim29x29@3x.png */,\n\t\t\t\t3F56893F23262F1E00FE42DE /* Tim29x29~ipad.png */,\n\t\t\t\t3F56895823262F1F00FE42DE /* Tim40x40@2x.png */,\n\t\t\t\t3F56894A23262F1E00FE42DE /* Tim40x40@2x~ipad.png */,\n\t\t\t\t3F56893C23262F1E00FE42DE /* Tim40x40@3x.png */,\n\t\t\t\t3F56891E23262F1C00FE42DE /* Tim40x40~ipad.png */,\n\t\t\t\t3F56893D23262F1E00FE42DE /* Tim60x60@2x.png */,\n\t\t\t\t3F56896723262F2000FE42DE /* Tim60x60@3x.png */,\n\t\t\t\t3F56890723262F1B00FE42DE /* Tim76x76@2x~ipad.png */,\n\t\t\t\t3F56892E23262F1D00FE42DE /* Tim76x76~ipad.png */,\n\t\t\t\t3F56894723262F1E00FE42DE /* Tim83.5x83.5@2x~ipad.png */,\n\t\t\t\t3F56892523262F1D00FE42DE /* WeChat20x20@2x.png */,\n\t\t\t\t3F56891C23262F1C00FE42DE /* WeChat20x20@2x~ipad.png */,\n\t\t\t\t3F56896823262F2000FE42DE /* WeChat20x20@3x.png */,\n\t\t\t\t3F56891523262F1C00FE42DE /* WeChat20x20~ipad.png */,\n\t\t\t\t3F56897223262F2100FE42DE /* WeChat29x29@2x.png */,\n\t\t\t\t3F56890223262F1B00FE42DE /* WeChat29x29@2x~ipad.png */,\n\t\t\t\t3F56893823262F1D00FE42DE /* WeChat29x29@3x.png */,\n\t\t\t\t3F56891B23262F1C00FE42DE /* WeChat29x29~ipad.png */,\n\t\t\t\t3F56895C23262F1F00FE42DE /* WeChat40x40@2x.png */,\n\t\t\t\t3F56894223262F1E00FE42DE /* WeChat40x40@2x~ipad.png */,\n\t\t\t\t3F56894523262F1E00FE42DE /* WeChat40x40@3x.png */,\n\t\t\t\t3F56891D23262F1C00FE42DE /* WeChat40x40~ipad.png */,\n\t\t\t\t3F56896323262F2000FE42DE /* WeChat60x60@2x.png */,\n\t\t\t\t3F56892A23262F1D00FE42DE /* WeChat60x60@3x.png */,\n\t\t\t\t3F56890523262F1B00FE42DE /* WeChat76x76@2x~ipad.png */,\n\t\t\t\t3F56892C23262F1D00FE42DE /* WeChat76x76~ipad.png */,\n\t\t\t\t3F56896523262F2000FE42DE /* WeChat83.5x83.5@2x~ipad.png */,\n\t\t\t\t3F56891823262F1C00FE42DE /* WeWork20x20@2x.png */,\n\t\t\t\t3F56896623262F2000FE42DE /* WeWork20x20@2x~ipad.png */,\n\t\t\t\t3F56892D23262F1D00FE42DE /* WeWork20x20@3x.png */,\n\t\t\t\t3F56890623262F1B00FE42DE /* WeWork20x20~ipad.png */,\n\t\t\t\t3F56894623262F1E00FE42DE /* WeWork29x29@2x.png */,\n\t\t\t\t3F56895623262F1F00FE42DE /* WeWork29x29@2x~ipad.png */,\n\t\t\t\t3F56896223262F2000FE42DE /* WeWork29x29@3x.png */,\n\t\t\t\t3F56891223262F1C00FE42DE /* WeWork29x29~ipad.png */,\n\t\t\t\t3F56892B23262F1D00FE42DE /* WeWork40x40@2x.png */,\n\t\t\t\t3F56896023262F1F00FE42DE /* WeWork40x40@2x~ipad.png */,\n\t\t\t\t3F56890923262F1B00FE42DE /* WeWork40x40@3x.png */,\n\t\t\t\t3F56891723262F1C00FE42DE /* WeWork40x40~ipad.png */,\n\t\t\t\t3F56891F23262F1C00FE42DE /* WeWork60x60@2x.png */,\n\t\t\t\t3F56893423262F1D00FE42DE /* WeWork60x60@3x.png */,\n\t\t\t\t3F56895123262F1F00FE42DE /* WeWork76x76@2x~ipad.png */,\n\t\t\t\t3F56897623262F2100FE42DE /* WeWork76x76~ipad.png */,\n\t\t\t\t3F56896F23262F2100FE42DE /* WeWork83.5x83.5@2x~ipad.png */,\n\t\t\t);\n\t\t\tpath = icons;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tEC41FADB1E5A492BCB391115 /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3F9CDAA42321F020000E7A24 /* QuartzCore.framework */,\n\t\t\t\t3F9CDAA22321F013000E7A24 /* CoreGraphics.framework */,\n\t\t\t\t3FB305FF232008E100FD85A4 /* MapKit.framework */,\n\t\t\t\t3FEDEED2231FDCF3002E9C18 /* AudioToolbox.framework */,\n\t\t\t\t3FEDEEC0231FAA46002E9C18 /* CoreLocation.framework */,\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXHeadersBuildPhase section */\n\t\t3F94F9ED231F7F7800EA742C /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3FEDEEC5231FAD10002E9C18 /* TLocationSettingViewController.h in Headers */,\n\t\t\t\t3F94F9FF231F813100EA742C /* NSObject+TLocationPlugin.h in Headers */,\n\t\t\t\t3F542A982326225500497668 /* TLocationChangeAppICONViewController.h in Headers */,\n\t\t\t\t3F344C0C23227F2F000A0D9F /* TAlertController.h in Headers */,\n\t\t\t\t3FB305FC2320063F00FD85A4 /* TAddLocationDataViewController.h in Headers */,\n\t\t\t\t3F35B1512325436B00E785B9 /* UIViewController+TLocationPlugin.h in Headers */,\n\t\t\t\t3FEDEED0231FDB49002E9C18 /* UIWindow+TLocationPluginTouch.h in Headers */,\n\t\t\t\t3FEDEEEB2320C82E002E9C18 /* TBaseViewController.h in Headers */,\n\t\t\t\t3FEDEEE02320B1AF002E9C18 /* NSBundle+TLocationPlugin.h in Headers */,\n\t\t\t\t3FEDEEDC2320B14B002E9C18 /* UIImage+TLocationPlugin.h in Headers */,\n\t\t\t\t3FF4458923214E880073D346 /* UIWindow+TLocationPluginToast.h in Headers */,\n\t\t\t\t3FEDEEE72320B51F002E9C18 /* TLocationNavigationController.h in Headers */,\n\t\t\t\t3FB306032320144700FD85A4 /* TLocationModel.h in Headers */,\n\t\t\t\t3FB305F62320044900FD85A4 /* TSelectLocationDataViewController.h in Headers */,\n\t\t\t\t3F0A641023217506002FA767 /* CALayer+TLocationPlugin.h in Headers */,\n\t\t\t\t3FEDEED62320AE6D002E9C18 /* TLocationTableViewCell.h in Headers */,\n\t\t\t\t3F94F9F7231F7F7800EA742C /* TLocationPlugin.h in Headers */,\n\t\t\t\t3F0FE5112320FBFC008B0830 /* TLocationManager.h in Headers */,\n\t\t\t\t3F63118F23222EFE0004E0A1 /* TLocationPluginLocationConverter.h in Headers */,\n\t\t\t\t3F35B14D2325431200E785B9 /* UIApplication+TLocationPlugin.h in Headers */,\n\t\t\t\t3FA4496623242554005C5CAA /* UITableView+TLocationPlugin.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXHeadersBuildPhase section */\n\n/* Begin PBXNativeTarget section */\n\t\t3F94F9F1231F7F7800EA742C /* TLocationPlugin */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 3F94F9FA231F7F7800EA742C /* Build configuration list for PBXNativeTarget \"TLocationPlugin\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t3F94F9ED231F7F7800EA742C /* Headers */,\n\t\t\t\t3F94F9EE231F7F7800EA742C /* Sources */,\n\t\t\t\t3F94F9EF231F7F7800EA742C /* Frameworks */,\n\t\t\t\t3F94F9F0231F7F7800EA742C /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = TLocationPlugin;\n\t\t\tproductName = TLocationPlugin;\n\t\t\tproductReference = 3F94F9F2231F7F7800EA742C /* TLocationPlugin.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\t3FEDEEF02320C916002E9C18 /* TestLocationPlugin */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 3FEDEF042320C91A002E9C18 /* Build configuration list for PBXNativeTarget \"TestLocationPlugin\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t3FEDEEED2320C916002E9C18 /* Sources */,\n\t\t\t\t3FEDEEEE2320C916002E9C18 /* Frameworks */,\n\t\t\t\t3FEDEEEF2320C916002E9C18 /* Resources */,\n\t\t\t\t3FEDEF0B2320C93B002E9C18 /* Embed Frameworks */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\t3FEDEF082320C92C002E9C18 /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = TestLocationPlugin;\n\t\t\tproductName = TestLocationPlugin;\n\t\t\tproductReference = 3FEDEEF12320C916002E9C18 /* Lark.app */;\n\t\t\tproductType = \"com.apple.product-type.application\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t3F94F9E9231F7F7800EA742C /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastUpgradeCheck = 1130;\n\t\t\t\tORGANIZATIONNAME = TBD;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t3F94F9F1231F7F7800EA742C = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 11.0;\n\t\t\t\t\t};\n\t\t\t\t\t3F9CDAA62321F26D000E7A24 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 11.0;\n\t\t\t\t\t};\n\t\t\t\t\t3FEDEEF02320C916002E9C18 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 10.3;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 3F94F9EC231F7F7800EA742C /* Build configuration list for PBXProject \"TLocationPlugin\" */;\n\t\t\tcompatibilityVersion = \"Xcode 9.3\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 3F94F9E8231F7F7800EA742C;\n\t\t\tproductRefGroup = 3F94F9F3231F7F7800EA742C /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectReferences = (\n\t\t\t\t{\n\t\t\t\t\tProductGroup = 3F6B15032327D58700BA3E5E /* Products */;\n\t\t\t\t\tProjectRef = 3F6B15022327D58700BA3E5E /* yololib.xcodeproj */;\n\t\t\t\t},\n\t\t\t);\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t3F94F9F1231F7F7800EA742C /* TLocationPlugin */,\n\t\t\t\t3FEDEEF02320C916002E9C18 /* TestLocationPlugin */,\n\t\t\t\t3F9CDAA62321F26D000E7A24 /* RunScript */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXReferenceProxy section */\n\t\t3F6B15072327D58700BA3E5E /* yololib */ = {\n\t\t\tisa = PBXReferenceProxy;\n\t\t\tfileType = \"compiled.mach-o.executable\";\n\t\t\tpath = yololib;\n\t\t\tremoteRef = 3F6B15062327D58700BA3E5E /* PBXContainerItemProxy */;\n\t\t\tsourceTree = BUILT_PRODUCTS_DIR;\n\t\t};\n/* End PBXReferenceProxy section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t3F94F9F0231F7F7800EA742C /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3FB305F82320044900FD85A4 /* TSelectLocationDataViewController.xib in Resources */,\n\t\t\t\t3FEDEED92320B11C002E9C18 /* TLocationPluginImages.bundle in Resources */,\n\t\t\t\t3FB305FE2320063F00FD85A4 /* TAddLocationDataViewController.xib in Resources */,\n\t\t\t\t3FEDEEC7231FAD10002E9C18 /* TLocationSettingViewController.xib in Resources */,\n\t\t\t\t3F542A9A2326225500497668 /* TLocationChangeAppICONViewController.xib in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t3FEDEEEF2320C916002E9C18 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3F5689D523262F2200FE42DE /* DingDing76x76@2x~ipad.png in Resources */,\n\t\t\t\t3F5689DD23262F2200FE42DE /* WeWork20x20@2x~ipad.png in Resources */,\n\t\t\t\t3F5689ED23262F2200FE42DE /* WeWork76x76~ipad.png in Resources */,\n\t\t\t\t3F56899A23262F2100FE42DE /* NeiXin29x29@2x~ipad.png in Resources */,\n\t\t\t\t3F56897C23262F2100FE42DE /* WeChat76x76@2x~ipad.png in Resources */,\n\t\t\t\t3F5689E423262F2200FE42DE /* Lark20x20@3x.png in Resources */,\n\t\t\t\t3F5689A123262F2100FE42DE /* WeChat60x60@3x.png in Resources */,\n\t\t\t\t3F56899223262F2100FE42DE /* WeChat29x29~ipad.png in Resources */,\n\t\t\t\t3F5689D923262F2200FE42DE /* WeWork29x29@3x.png in Resources */,\n\t\t\t\t3F5689B423262F2100FE42DE /* Tim60x60@2x.png in Resources */,\n\t\t\t\t3F56899623262F2100FE42DE /* WeWork60x60@2x.png in Resources */,\n\t\t\t\t3F56899023262F2100FE42DE /* Lark40x40@2x~ipad.png in Resources */,\n\t\t\t\t3F5689A223262F2100FE42DE /* WeWork40x40@2x.png in Resources */,\n\t\t\t\t3FEDEF002320C91A002E9C18 /* LaunchScreen.storyboard in Resources */,\n\t\t\t\t3F56899523262F2100FE42DE /* Tim40x40~ipad.png in Resources */,\n\t\t\t\t3F5689BD23262F2100FE42DE /* WeWork29x29@2x.png in Resources */,\n\t\t\t\t3F5689D323262F2200FE42DE /* WeChat40x40@2x.png in Resources */,\n\t\t\t\t3FEDEEFD2320C91A002E9C18 /* Assets.xcassets in Resources */,\n\t\t\t\t3F5689DC23262F2200FE42DE /* WeChat83.5x83.5@2x~ipad.png in Resources */,\n\t\t\t\t3F5689A623262F2100FE42DE /* QQ40x40~ipad.png in Resources */,\n\t\t\t\t3F5689E223262F2200FE42DE /* QQ29x29@2x~ipad.png in Resources */,\n\t\t\t\t3F56897E23262F2100FE42DE /* Tim76x76@2x~ipad.png in Resources */,\n\t\t\t\t3F56898923262F2100FE42DE /* WeWork29x29~ipad.png in Resources */,\n\t\t\t\t3F5689A723262F2100FE42DE /* Tim29x29@3x.png in Resources */,\n\t\t\t\t3F5689B223262F2100FE42DE /* QQ29x29@3x.png in Resources */,\n\t\t\t\t3F56898423262F2100FE42DE /* Lark83.5x83.5@2x~ipad.png in Resources */,\n\t\t\t\t3F5689BE23262F2100FE42DE /* Tim83.5x83.5@2x~ipad.png in Resources */,\n\t\t\t\t3F5689DF23262F2200FE42DE /* WeChat20x20@3x.png in Resources */,\n\t\t\t\t3F5689E123262F2200FE42DE /* QQ40x40@2x.png in Resources */,\n\t\t\t\t3F56899923262F2100FE42DE /* QQ40x40@2x~ipad.png in Resources */,\n\t\t\t\t3F56899423262F2100FE42DE /* WeChat40x40~ipad.png in Resources */,\n\t\t\t\t3F56899723262F2100FE42DE /* Lark60x60@2x.png in Resources */,\n\t\t\t\t3F5689CA23262F2100FE42DE /* NeiXin29x29@2x.png in Resources */,\n\t\t\t\t3F56899323262F2100FE42DE /* WeChat20x20@2x~ipad.png in Resources */,\n\t\t\t\t3F5689C523262F2100FE42DE /* NeiXin20x20@3x.png in Resources */,\n\t\t\t\t3F5689E723262F2200FE42DE /* QQ60x60@3x.png in Resources */,\n\t\t\t\t3F5689BF23262F2100FE42DE /* NeiXin83.5x83.5@2x~ipad.png in Resources */,\n\t\t\t\t3F5689B123262F2100FE42DE /* Tim20x20@3x.png in Resources */,\n\t\t\t\t3F5689AD23262F2100FE42DE /* Lark40x40@2x.png in Resources */,\n\t\t\t\t3FEDEEFB2320C916002E9C18 /* Main.storyboard in Resources */,\n\t\t\t\t3F5689C623262F2100FE42DE /* NeiXin20x20@2x~ipad.png in Resources */,\n\t\t\t\t3F5689D423262F2200FE42DE /* Lark76x76~ipad.png in Resources */,\n\t\t\t\t3F5689C423262F2100FE42DE /* Lark40x40~ipad.png in Resources */,\n\t\t\t\t3F5689B323262F2100FE42DE /* Tim40x40@3x.png in Resources */,\n\t\t\t\t3F5689D723262F2200FE42DE /* WeWork40x40@2x~ipad.png in Resources */,\n\t\t\t\t3F56898C23262F2100FE42DE /* WeChat20x20~ipad.png in Resources */,\n\t\t\t\t3F56898A23262F2100FE42DE /* QQ40x40@3x.png in Resources */,\n\t\t\t\t3F5689C823262F2100FE42DE /* WeWork76x76@2x~ipad.png in Resources */,\n\t\t\t\t3F5689D223262F2200FE42DE /* Lark29x29@3x.png in Resources */,\n\t\t\t\t3F5689B723262F2100FE42DE /* Lark20x20~ipad.png in Resources */,\n\t\t\t\t3F56898723262F2100FE42DE /* Lark76x76@2x~ipad.png in Resources */,\n\t\t\t\t3F5689AA23262F2100FE42DE /* DingDing20x20@2x.png in Resources */,\n\t\t\t\t3F5689C723262F2100FE42DE /* NeiXin76x76~ipad.png in Resources */,\n\t\t\t\t3F5689C923262F2100FE42DE /* Lark20x20@2x~ipad.png in Resources */,\n\t\t\t\t3F5689E823262F2200FE42DE /* DingDing40x40@3x.png in Resources */,\n\t\t\t\t3F56897D23262F2100FE42DE /* WeWork20x20~ipad.png in Resources */,\n\t\t\t\t3F56898323262F2100FE42DE /* NeiXin20x20@2x.png in Resources */,\n\t\t\t\t3F56898123262F2100FE42DE /* DingDing20x20@2x~ipad.png in Resources */,\n\t\t\t\t3F56898823262F2100FE42DE /* QQ20x20@3x.png in Resources */,\n\t\t\t\t3F5689C223262F2100FE42DE /* DingDing83.5x83.5@2x~ipad.png in Resources */,\n\t\t\t\t3F56897A23262F2100FE42DE /* Lark60x60@3x.png in Resources */,\n\t\t\t\t3F56898523262F2100FE42DE /* DingDing20x20@3x.png in Resources */,\n\t\t\t\t3F5689BC23262F2100FE42DE /* WeChat40x40@3x.png in Resources */,\n\t\t\t\t3F5689CC23262F2200FE42DE /* NeiXin29x29~ipad.png in Resources */,\n\t\t\t\t3F56899D23262F2100FE42DE /* Lark20x20@2x.png in Resources */,\n\t\t\t\t3F5689A523262F2100FE42DE /* Tim76x76~ipad.png in Resources */,\n\t\t\t\t3F5689B923262F2100FE42DE /* WeChat40x40@2x~ipad.png in Resources */,\n\t\t\t\t3F56897723262F2100FE42DE /* QQ29x29@2x.png in Resources */,\n\t\t\t\t3F56898623262F2100FE42DE /* NeiXin76x76@2x~ipad.png in Resources */,\n\t\t\t\t3F5689B023262F2100FE42DE /* NeiXin40x40@2x~ipad.png in Resources */,\n\t\t\t\t3F5689BB23262F2100FE42DE /* DingDing60x60@3x.png in Resources */,\n\t\t\t\t3F5689A923262F2100FE42DE /* DingDing76x76~ipad.png in Resources */,\n\t\t\t\t3F5689DE23262F2200FE42DE /* Tim60x60@3x.png in Resources */,\n\t\t\t\t3F5689A023262F2100FE42DE /* Lark29x29~ipad.png in Resources */,\n\t\t\t\t3F5689E923262F2200FE42DE /* WeChat29x29@2x.png in Resources */,\n\t\t\t\t3F5689C023262F2100FE42DE /* DingDing40x40~ipad.png in Resources */,\n\t\t\t\t3F56898B23262F2100FE42DE /* NeiXin29x29@3x.png in Resources */,\n\t\t\t\t3F5689A823262F2100FE42DE /* NeiXin60x60@2x.png in Resources */,\n\t\t\t\t3F5689CB23262F2200FE42DE /* DingDing29x29@2x~ipad.png in Resources */,\n\t\t\t\t3F5689B823262F2100FE42DE /* QQ76x76@2x~ipad.png in Resources */,\n\t\t\t\t3F5689C123262F2100FE42DE /* Tim40x40@2x~ipad.png in Resources */,\n\t\t\t\t3F5689DB23262F2200FE42DE /* Tim20x20~ipad.png in Resources */,\n\t\t\t\t3F5689E523262F2200FE42DE /* DingDing29x29@3x.png in Resources */,\n\t\t\t\t3F56897923262F2100FE42DE /* WeChat29x29@2x~ipad.png in Resources */,\n\t\t\t\t3F5689AC23262F2100FE42DE /* QQ60x60@2x.png in Resources */,\n\t\t\t\t3F5689A323262F2100FE42DE /* WeChat76x76~ipad.png in Resources */,\n\t\t\t\t3F5689AF23262F2100FE42DE /* WeChat29x29@3x.png in Resources */,\n\t\t\t\t3F56899E23262F2100FE42DE /* QQ20x20@2x~ipad.png in Resources */,\n\t\t\t\t3F56899C23262F2100FE42DE /* WeChat20x20@2x.png in Resources */,\n\t\t\t\t3F5689E623262F2200FE42DE /* WeWork83.5x83.5@2x~ipad.png in Resources */,\n\t\t\t\t3F56899B23262F2100FE42DE /* DingDing40x40@2x.png in Resources */,\n\t\t\t\t3F5689B523262F2100FE42DE /* DingDing29x29@2x.png in Resources */,\n\t\t\t\t3F5689AB23262F2100FE42DE /* WeWork60x60@3x.png in Resources */,\n\t\t\t\t3F5689E323262F2200FE42DE /* QQ83.5x83.5@2x~ipad.png in Resources */,\n\t\t\t\t3F5689AE23262F2100FE42DE /* Lark29x29@2x~ipad.png in Resources */,\n\t\t\t\t3F56899123262F2100FE42DE /* QQ20x20@2x.png in Resources */,\n\t\t\t\t3F5689EA23262F2200FE42DE /* QQ76x76~ipad.png in Resources */,\n\t\t\t\t3F5689CD23262F2200FE42DE /* WeWork29x29@2x~ipad.png in Resources */,\n\t\t\t\t3F5689CE23262F2200FE42DE /* Lark40x40@3x.png in Resources */,\n\t\t\t\t3F56897F23262F2100FE42DE /* DingDing60x60@2x.png in Resources */,\n\t\t\t\t3F56898223262F2100FE42DE /* NeiXin20x20~ipad.png in Resources */,\n\t\t\t\t3F56898F23262F2100FE42DE /* WeWork20x20@2x.png in Resources */,\n\t\t\t\t3F5689EC23262F2200FE42DE /* DingDing29x29~ipad.png in Resources */,\n\t\t\t\t3F5689DA23262F2200FE42DE /* WeChat60x60@2x.png in Resources */,\n\t\t\t\t3F5689EB23262F2200FE42DE /* DingDing40x40@2x~ipad.png in Resources */,\n\t\t\t\t3F56897823262F2100FE42DE /* Tim29x29@2x~ipad.png in Resources */,\n\t\t\t\t3F5689A423262F2100FE42DE /* WeWork20x20@3x.png in Resources */,\n\t\t\t\t3F5689CF23262F2200FE42DE /* Tim40x40@2x.png in Resources */,\n\t\t\t\t3F56898E23262F2100FE42DE /* WeWork40x40~ipad.png in Resources */,\n\t\t\t\t3F5689BA23262F2100FE42DE /* Tim29x29@2x.png in Resources */,\n\t\t\t\t3F56899F23262F2100FE42DE /* NeiXin40x40@3x.png in Resources */,\n\t\t\t\t3F5689B623262F2100FE42DE /* Tim29x29~ipad.png in Resources */,\n\t\t\t\t3F5689D123262F2200FE42DE /* DingDing20x20~ipad.png in Resources */,\n\t\t\t\t3F56898023262F2100FE42DE /* WeWork40x40@3x.png in Resources */,\n\t\t\t\t3F5689D023262F2200FE42DE /* Tim20x20@2x~ipad.png in Resources */,\n\t\t\t\t3F56899823262F2100FE42DE /* Lark29x29@2x.png in Resources */,\n\t\t\t\t3F5689D823262F2200FE42DE /* Tim20x20@2x.png in Resources */,\n\t\t\t\t3F56898D23262F2100FE42DE /* NeiXin40x40@2x.png in Resources */,\n\t\t\t\t3F56897B23262F2100FE42DE /* NeiXin60x60@3x.png in Resources */,\n\t\t\t\t3F5689C323262F2100FE42DE /* QQ29x29~ipad.png in Resources */,\n\t\t\t\t3F5689D623262F2200FE42DE /* NeiXin40x40~ipad.png in Resources */,\n\t\t\t\t3F5689E023262F2200FE42DE /* QQ20x20~ipad.png in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXShellScriptBuildPhase section */\n\t\t3F9CDAAA2321F275000E7A24 /* BuildFramework */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputFileListPaths = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = BuildFramework;\n\t\t\toutputFileListPaths = (\n\t\t\t);\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"# Type a script or drag a script file from your workspace to insert its path.\\n$PROJECT_DIR/RunScript/build_all.sh\\n\";\n\t\t};\n\t\t3FC34C7D2322524C00C15E66 /* InjectFramework */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputFileListPaths = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = InjectFramework;\n\t\t\toutputFileListPaths = (\n\t\t\t);\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"# Type a script or drag a script file from your workspace to insert its path.\\n$PROJECT_DIR/RunScript/inject.sh\\n\";\n\t\t};\n/* End PBXShellScriptBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t3F94F9EE231F7F7800EA742C /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3FB305F72320044900FD85A4 /* TSelectLocationDataViewController.m in Sources */,\n\t\t\t\t3FB306042320144700FD85A4 /* TLocationModel.m in Sources */,\n\t\t\t\t3FA4496723242554005C5CAA /* UITableView+TLocationPlugin.m in Sources */,\n\t\t\t\t3F94FA00231F813100EA742C /* NSObject+TLocationPlugin.m in Sources */,\n\t\t\t\t3FEDEEE82320B51F002E9C18 /* TLocationNavigationController.m in Sources */,\n\t\t\t\t3F542A992326225500497668 /* TLocationChangeAppICONViewController.m in Sources */,\n\t\t\t\t3F63119023222EFE0004E0A1 /* TLocationPluginLocationConverter.m in Sources */,\n\t\t\t\t3FEDEEE12320B1AF002E9C18 /* NSBundle+TLocationPlugin.m in Sources */,\n\t\t\t\t3FEDEEC6231FAD10002E9C18 /* TLocationSettingViewController.m in Sources */,\n\t\t\t\t3F0FE5122320FBFC008B0830 /* TLocationManager.m in Sources */,\n\t\t\t\t3F35B1522325436B00E785B9 /* UIViewController+TLocationPlugin.m in Sources */,\n\t\t\t\t3FEDEED1231FDB49002E9C18 /* UIWindow+TLocationPluginTouch.m in Sources */,\n\t\t\t\t3FF4458A23214E880073D346 /* UIWindow+TLocationPluginToast.m in Sources */,\n\t\t\t\t3FE3DFB8231FA8A5002711B6 /* TSafeRuntimeCFunc.m in Sources */,\n\t\t\t\t3FEDEEEC2320C82E002E9C18 /* TBaseViewController.m in Sources */,\n\t\t\t\t3F0A641123217506002FA767 /* CALayer+TLocationPlugin.m in Sources */,\n\t\t\t\t3F344C0D23227F2F000A0D9F /* TAlertController.m in Sources */,\n\t\t\t\t3FB305FD2320063F00FD85A4 /* TAddLocationDataViewController.m in Sources */,\n\t\t\t\t3FEDEED72320AE6D002E9C18 /* TLocationTableViewCell.m in Sources */,\n\t\t\t\t3FEDEEDD2320B14B002E9C18 /* UIImage+TLocationPlugin.m in Sources */,\n\t\t\t\t3F35B14E2325431200E785B9 /* UIApplication+TLocationPlugin.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\t3FEDEEED2320C916002E9C18 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t3FEDEEF82320C916002E9C18 /* ViewController.m in Sources */,\n\t\t\t\t3FEDEF032320C91A002E9C18 /* main.m in Sources */,\n\t\t\t\t3FEDEEF52320C916002E9C18 /* AppDelegate.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXTargetDependency section */\n\t\t3FEDEF082320C92C002E9C18 /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = 3F94F9F1231F7F7800EA742C /* TLocationPlugin */;\n\t\t\ttargetProxy = 3FEDEF072320C92C002E9C18 /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin PBXVariantGroup section */\n\t\t3FEDEEF92320C916002E9C18 /* Main.storyboard */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t3FEDEEFA2320C916002E9C18 /* Base */,\n\t\t\t);\n\t\t\tname = Main.storyboard;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t3FEDEEFE2320C91A002E9C18 /* LaunchScreen.storyboard */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t3FEDEEFF2320C91A002E9C18 /* Base */,\n\t\t\t);\n\t\t\tname = LaunchScreen.storyboard;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\t3F94F9F8231F7F7800EA742C /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++14\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t\tVERSION_INFO_PREFIX = \"\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3F94F9F9231F7F7800EA742C /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++14\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 13.0;\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tMTL_FAST_MATH = YES;\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t\tVERSION_INFO_PREFIX = \"\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t3F94F9FB231F7F7800EA742C /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDEVELOPMENT_TEAM = TS9WTSBK78;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tINFOPLIST_FILE = TLocationPlugin/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = tbd.tech.TLocationPlugin;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME:c99extidentifier)\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSUPPORTS_MACCATALYST = NO;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3F94F9FC231F7F7800EA742C /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDEVELOPMENT_TEAM = TS9WTSBK78;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tINFOPLIST_FILE = TLocationPlugin/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 9.0;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t\t\"@loader_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = tbd.tech.TLocationPlugin;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME:c99extidentifier)\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tSUPPORTS_MACCATALYST = NO;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t3F9CDAA82321F26D000E7A24 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3F9CDAA92321F26D000E7A24 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 8.0;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t3FEDEF052320C91A002E9C18 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\tCODE_SIGN_STYLE = Manual;\n\t\t\t\tDEVELOPMENT_TEAM = 63JR9Z58EL;\n\t\t\t\tINFOPLIST_FILE = TestLocationPlugin/Info.plist;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.4;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = tbd.tech.TestLocationPlugin;\n\t\t\t\tPRODUCT_NAME = Lark;\n\t\t\t\tPROVISIONING_PROFILE_SPECIFIER = \"Wildcard Development\";\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t3FEDEF062320C91A002E9C18 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Distribution\";\n\t\t\t\tCODE_SIGN_STYLE = Manual;\n\t\t\t\tDEVELOPMENT_TEAM = 63JR9Z58EL;\n\t\t\t\tINFOPLIST_FILE = TestLocationPlugin/Info.plist;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.4;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = (\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"@executable_path/Frameworks\",\n\t\t\t\t);\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = tbd.tech.TestLocationPlugin;\n\t\t\t\tPRODUCT_NAME = Lark;\n\t\t\t\tPROVISIONING_PROFILE_SPECIFIER = \"Wildcard Adhoc\";\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t3F94F9EC231F7F7800EA742C /* Build configuration list for PBXProject \"TLocationPlugin\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3F94F9F8231F7F7800EA742C /* Debug */,\n\t\t\t\t3F94F9F9231F7F7800EA742C /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t3F94F9FA231F7F7800EA742C /* Build configuration list for PBXNativeTarget \"TLocationPlugin\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3F94F9FB231F7F7800EA742C /* Debug */,\n\t\t\t\t3F94F9FC231F7F7800EA742C /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t3F9CDAA72321F26D000E7A24 /* Build configuration list for PBXAggregateTarget \"RunScript\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3F9CDAA82321F26D000E7A24 /* Debug */,\n\t\t\t\t3F9CDAA92321F26D000E7A24 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t3FEDEF042320C91A002E9C18 /* Build configuration list for PBXNativeTarget \"TestLocationPlugin\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t3FEDEF052320C91A002E9C18 /* Debug */,\n\t\t\t\t3FEDEF062320C91A002E9C18 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = 3F94F9E9231F7F7800EA742C /* Project object */;\n}\n"
  },
  {
    "path": "TLocationPlugin.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "TLocationPlugin.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "TLocationPlugin.xcodeproj/xcshareddata/xcschemes/TLocationPlugin.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1130\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"3F94F9F1231F7F7800EA742C\"\n               BuildableName = \"TLocationPlugin.framework\"\n               BlueprintName = \"TLocationPlugin\"\n               ReferencedContainer = \"container:TLocationPlugin.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"3F94F9F1231F7F7800EA742C\"\n            BuildableName = \"TLocationPlugin.framework\"\n            BlueprintName = \"TLocationPlugin\"\n            ReferencedContainer = \"container:TLocationPlugin.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "TLocationPlugin.xcodeproj/xcshareddata/xcschemes/TestLocationPlugin.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1130\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"3FEDEEF02320C916002E9C18\"\n               BuildableName = \"Lark.app\"\n               BlueprintName = \"TestLocationPlugin\"\n               ReferencedContainer = \"container:TLocationPlugin.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n      </Testables>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"3FEDEEF02320C916002E9C18\"\n            BuildableName = \"Lark.app\"\n            BlueprintName = \"TestLocationPlugin\"\n            ReferencedContainer = \"container:TLocationPlugin.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <BuildableProductRunnable\n         runnableDebuggingMode = \"0\">\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"3FEDEEF02320C916002E9C18\"\n            BuildableName = \"Lark.app\"\n            BlueprintName = \"TestLocationPlugin\"\n            ReferencedContainer = \"container:TLocationPlugin.xcodeproj\">\n         </BuildableReference>\n      </BuildableProductRunnable>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "TestLocationPlugin/AppDelegate.h",
    "content": "//\n//  AppDelegate.h\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/5.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\n@interface AppDelegate : UIResponder <UIApplicationDelegate>\n\n@property (strong, nonatomic) UIWindow *window;\n\n\n@end\n\n"
  },
  {
    "path": "TestLocationPlugin/AppDelegate.m",
    "content": "//\n//  AppDelegate.m\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/5.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import \"AppDelegate.h\"\n\n@interface AppDelegate ()\n\n@end\n\n@implementation AppDelegate\n\n\n- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {\n    // Override point for customization after application launch.\n    return YES;\n}\n\n\n- (void)applicationWillResignActive:(UIApplication *)application {\n    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.\n    // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.\n}\n\n\n- (void)applicationDidEnterBackground:(UIApplication *)application {\n    // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.\n    // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.\n}\n\n\n- (void)applicationWillEnterForeground:(UIApplication *)application {\n    // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.\n}\n\n\n- (void)applicationDidBecomeActive:(UIApplication *)application {\n    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.\n}\n\n\n- (void)applicationWillTerminate:(UIApplication *)application {\n    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.\n}\n\n\n@end\n"
  },
  {
    "path": "TestLocationPlugin/Assets.xcassets/AppIcon.appiconset/Contents.json",
    "content": "{\n  \"images\" : [\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"20x20\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"20x20\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"60x60\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"iphone\",\n      \"size\" : \"60x60\",\n      \"scale\" : \"3x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"20x20\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"20x20\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"29x29\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"40x40\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"76x76\",\n      \"scale\" : \"1x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"76x76\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"ipad\",\n      \"size\" : \"83.5x83.5\",\n      \"scale\" : \"2x\"\n    },\n    {\n      \"idiom\" : \"ios-marketing\",\n      \"size\" : \"1024x1024\",\n      \"scale\" : \"1x\"\n    }\n  ],\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "TestLocationPlugin/Assets.xcassets/Contents.json",
    "content": "{\n  \"info\" : {\n    \"version\" : 1,\n    \"author\" : \"xcode\"\n  }\n}"
  },
  {
    "path": "TestLocationPlugin/Base.lproj/LaunchScreen.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"13122.16\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" launchScreen=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"01J-lp-oVM\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"13104.12\"/>\n        <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--View Controller-->\n        <scene sceneID=\"EHf-IW-A2E\">\n            <objects>\n                <viewController id=\"01J-lp-oVM\" sceneMemberID=\"viewController\">\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"Ze5-6b-2t3\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"667\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <viewLayoutGuide key=\"safeArea\" id=\"6Tk-OE-BBY\"/>\n                    </view>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"iYj-Kq-Ea1\" userLabel=\"First Responder\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n            <point key=\"canvasLocation\" x=\"53\" y=\"375\"/>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "TestLocationPlugin/Base.lproj/Main.storyboard",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<document type=\"com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB\" version=\"3.0\" toolsVersion=\"13122.16\" targetRuntime=\"iOS.CocoaTouch\" propertyAccessControl=\"none\" useAutolayout=\"YES\" useTraitCollections=\"YES\" useSafeAreas=\"YES\" colorMatched=\"YES\" initialViewController=\"BYZ-38-t0r\">\n    <dependencies>\n        <plugIn identifier=\"com.apple.InterfaceBuilder.IBCocoaTouchPlugin\" version=\"13104.12\"/>\n        <capability name=\"Safe area layout guides\" minToolsVersion=\"9.0\"/>\n        <capability name=\"documents saved in the Xcode 8 format\" minToolsVersion=\"8.0\"/>\n    </dependencies>\n    <scenes>\n        <!--View Controller-->\n        <scene sceneID=\"tne-QT-ifu\">\n            <objects>\n                <viewController id=\"BYZ-38-t0r\" customClass=\"ViewController\" customModuleProvider=\"\" sceneMemberID=\"viewController\">\n                    <view key=\"view\" contentMode=\"scaleToFill\" id=\"8bC-Xf-vdC\">\n                        <rect key=\"frame\" x=\"0.0\" y=\"0.0\" width=\"375\" height=\"667\"/>\n                        <autoresizingMask key=\"autoresizingMask\" widthSizable=\"YES\" heightSizable=\"YES\"/>\n                        <color key=\"backgroundColor\" red=\"1\" green=\"1\" blue=\"1\" alpha=\"1\" colorSpace=\"custom\" customColorSpace=\"sRGB\"/>\n                        <viewLayoutGuide key=\"safeArea\" id=\"6Tk-OE-BBY\"/>\n                    </view>\n                </viewController>\n                <placeholder placeholderIdentifier=\"IBFirstResponder\" id=\"dkx-z0-nzr\" sceneMemberID=\"firstResponder\"/>\n            </objects>\n        </scene>\n    </scenes>\n</document>\n"
  },
  {
    "path": "TestLocationPlugin/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleIcons</key>\n\t<dict>\n\t\t<key>CFBundleAlternateIcons</key>\n\t\t<dict>\n\t\t\t<key>DingDing</key>\n\t\t\t<dict>\n\t\t\t\t<key>CFBundleIconFiles</key>\n\t\t\t\t<array>\n\t\t\t\t\t<string>DingDing20x20</string>\n\t\t\t\t\t<string>DingDing29x29</string>\n\t\t\t\t\t<string>DingDing40x40</string>\n\t\t\t\t\t<string>DingDing60x60</string>\n\t\t\t\t</array>\n\t\t\t\t<key>UIPrerenderedIcon</key>\n\t\t\t\t<false/>\n\t\t\t</dict>\n\t\t\t<key>Lark</key>\n\t\t\t<dict>\n\t\t\t\t<key>CFBundleIconFiles</key>\n\t\t\t\t<array>\n\t\t\t\t\t<string>Lark20x20</string>\n\t\t\t\t\t<string>Lark29x29</string>\n\t\t\t\t\t<string>Lark40x40</string>\n\t\t\t\t\t<string>Lark60x60</string>\n\t\t\t\t</array>\n\t\t\t\t<key>UIPrerenderedIcon</key>\n\t\t\t\t<false/>\n\t\t\t</dict>\n\t\t\t<key>NeiXin</key>\n\t\t\t<dict>\n\t\t\t\t<key>CFBundleIconFiles</key>\n\t\t\t\t<array>\n\t\t\t\t\t<string>NeiXin20x20</string>\n\t\t\t\t\t<string>NeiXin29x29</string>\n\t\t\t\t\t<string>NeiXin40x40</string>\n\t\t\t\t\t<string>NeiXin60x60</string>\n\t\t\t\t</array>\n\t\t\t\t<key>UIPrerenderedIcon</key>\n\t\t\t\t<false/>\n\t\t\t</dict>\n\t\t\t<key>QQ</key>\n\t\t\t<dict>\n\t\t\t\t<key>CFBundleIconFiles</key>\n\t\t\t\t<array>\n\t\t\t\t\t<string>QQ20x20</string>\n\t\t\t\t\t<string>QQ29x29</string>\n\t\t\t\t\t<string>QQ40x40</string>\n\t\t\t\t\t<string>QQ60x60</string>\n\t\t\t\t</array>\n\t\t\t\t<key>UIPrerenderedIcon</key>\n\t\t\t\t<false/>\n\t\t\t</dict>\n\t\t\t<key>Tim</key>\n\t\t\t<dict>\n\t\t\t\t<key>CFBundleIconFiles</key>\n\t\t\t\t<array>\n\t\t\t\t\t<string>Tim20x20</string>\n\t\t\t\t\t<string>Tim29x29</string>\n\t\t\t\t\t<string>Tim40x40</string>\n\t\t\t\t\t<string>Tim60x60</string>\n\t\t\t\t</array>\n\t\t\t\t<key>UIPrerenderedIcon</key>\n\t\t\t\t<false/>\n\t\t\t</dict>\n\t\t\t<key>UINewsstandBindingEdge</key>\n\t\t\t<string>UINewsstandBindingEdgeLeft</string>\n\t\t\t<key>UINewsstandBindingType</key>\n\t\t\t<string>UINewsstandBindingTypeMagazine</string>\n\t\t\t<key>WeChat</key>\n\t\t\t<dict>\n\t\t\t\t<key>CFBundleIconFiles</key>\n\t\t\t\t<array>\n\t\t\t\t\t<string>WeChat20x20</string>\n\t\t\t\t\t<string>WeChat29x29</string>\n\t\t\t\t\t<string>WeChat40x40</string>\n\t\t\t\t\t<string>WeChat60x60</string>\n\t\t\t\t</array>\n\t\t\t\t<key>UIPrerenderedIcon</key>\n\t\t\t\t<false/>\n\t\t\t</dict>\n\t\t\t<key>WeWork</key>\n\t\t\t<dict>\n\t\t\t\t<key>CFBundleIconFiles</key>\n\t\t\t\t<array>\n\t\t\t\t\t<string>WeWork20x20</string>\n\t\t\t\t\t<string>WeWork29x29</string>\n\t\t\t\t\t<string>WeWork40x40</string>\n\t\t\t\t\t<string>WeWork60x60</string>\n\t\t\t\t</array>\n\t\t\t\t<key>UIPrerenderedIcon</key>\n\t\t\t\t<false/>\n\t\t\t</dict>\n\t\t</dict>\n\t</dict>\n\t<key>CFBundleIcons~ipad</key>\n\t<dict>\n\t\t<key>CFBundleAlternateIcons</key>\n\t\t<dict>\n\t\t\t<key>DingDing</key>\n\t\t\t<dict>\n\t\t\t\t<key>CFBundleIconFiles</key>\n\t\t\t\t<array>\n\t\t\t\t\t<string>DingDing20x20</string>\n\t\t\t\t\t<string>DingDing29x29</string>\n\t\t\t\t\t<string>DingDing40x40</string>\n\t\t\t\t\t<string>DingDing76x76</string>\n\t\t\t\t\t<string>DingDing83.5x83.5</string>\n\t\t\t\t</array>\n\t\t\t\t<key>UIPrerenderedIcon</key>\n\t\t\t\t<false/>\n\t\t\t</dict>\n\t\t\t<key>Lark</key>\n\t\t\t<dict>\n\t\t\t\t<key>CFBundleIconFiles</key>\n\t\t\t\t<array>\n\t\t\t\t\t<string>Lark20x20</string>\n\t\t\t\t\t<string>Lark29x29</string>\n\t\t\t\t\t<string>Lark40x40</string>\n\t\t\t\t\t<string>Lark76x76</string>\n\t\t\t\t\t<string>Lark83.5x83.5</string>\n\t\t\t\t</array>\n\t\t\t\t<key>UIPrerenderedIcon</key>\n\t\t\t\t<false/>\n\t\t\t</dict>\n\t\t\t<key>NeiXin</key>\n\t\t\t<dict>\n\t\t\t\t<key>CFBundleIconFiles</key>\n\t\t\t\t<array>\n\t\t\t\t\t<string>NeiXin20x20</string>\n\t\t\t\t\t<string>NeiXin29x29</string>\n\t\t\t\t\t<string>NeiXin40x40</string>\n\t\t\t\t\t<string>NeiXin76x76</string>\n\t\t\t\t\t<string>NeiXin83.5x83.5</string>\n\t\t\t\t</array>\n\t\t\t\t<key>UIPrerenderedIcon</key>\n\t\t\t\t<false/>\n\t\t\t</dict>\n\t\t\t<key>QQ</key>\n\t\t\t<dict>\n\t\t\t\t<key>CFBundleIconFiles</key>\n\t\t\t\t<array>\n\t\t\t\t\t<string>QQ20x20</string>\n\t\t\t\t\t<string>QQ29x29</string>\n\t\t\t\t\t<string>QQ40x40</string>\n\t\t\t\t\t<string>QQ76x76</string>\n\t\t\t\t\t<string>QQ83.5x83.5</string>\n\t\t\t\t</array>\n\t\t\t\t<key>UIPrerenderedIcon</key>\n\t\t\t\t<false/>\n\t\t\t</dict>\n\t\t\t<key>Tim</key>\n\t\t\t<dict>\n\t\t\t\t<key>CFBundleIconFiles</key>\n\t\t\t\t<array>\n\t\t\t\t\t<string>Tim20x20</string>\n\t\t\t\t\t<string>Tim29x29</string>\n\t\t\t\t\t<string>Tim40x40</string>\n\t\t\t\t\t<string>Tim76x76</string>\n\t\t\t\t\t<string>Tim83.5x83.5</string>\n\t\t\t\t</array>\n\t\t\t\t<key>UIPrerenderedIcon</key>\n\t\t\t\t<false/>\n\t\t\t</dict>\n\t\t\t<key>UINewsstandBindingEdge</key>\n\t\t\t<string>UINewsstandBindingEdgeLeft</string>\n\t\t\t<key>UINewsstandBindingType</key>\n\t\t\t<string>UINewsstandBindingTypeMagazine</string>\n\t\t\t<key>WeChat</key>\n\t\t\t<dict>\n\t\t\t\t<key>CFBundleIconFiles</key>\n\t\t\t\t<array>\n\t\t\t\t\t<string>WeChat20x20</string>\n\t\t\t\t\t<string>WeChat29x29</string>\n\t\t\t\t\t<string>WeChat40x40</string>\n\t\t\t\t\t<string>WeChat76x76</string>\n\t\t\t\t\t<string>WeChat83.5x83.5</string>\n\t\t\t\t</array>\n\t\t\t\t<key>UIPrerenderedIcon</key>\n\t\t\t\t<false/>\n\t\t\t</dict>\n\t\t\t<key>WeWork</key>\n\t\t\t<dict>\n\t\t\t\t<key>CFBundleIconFiles</key>\n\t\t\t\t<array>\n\t\t\t\t\t<string>WeWork20x20</string>\n\t\t\t\t\t<string>WeWork29x29</string>\n\t\t\t\t\t<string>WeWork40x40</string>\n\t\t\t\t\t<string>WeWork76x76</string>\n\t\t\t\t\t<string>WeWork83.5x83.5</string>\n\t\t\t\t</array>\n\t\t\t\t<key>UIPrerenderedIcon</key>\n\t\t\t\t<false/>\n\t\t\t</dict>\n\t\t</dict>\n\t</dict>\n\t<key>NSLocationWhenInUseUsageDescription</key>\n\t<string>需要使用定位</string>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>$(DEVELOPMENT_LANGUAGE)</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>APPL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n\t<key>LSRequiresIPhoneOS</key>\n\t<true/>\n\t<key>UILaunchStoryboardName</key>\n\t<string>LaunchScreen</string>\n\t<key>UIMainStoryboardFile</key>\n\t<string>Main</string>\n\t<key>UIRequiredDeviceCapabilities</key>\n\t<array>\n\t\t<string>armv7</string>\n\t</array>\n\t<key>UISupportedInterfaceOrientations</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n\t<key>UISupportedInterfaceOrientations~ipad</key>\n\t<array>\n\t\t<string>UIInterfaceOrientationPortrait</string>\n\t\t<string>UIInterfaceOrientationPortraitUpsideDown</string>\n\t\t<string>UIInterfaceOrientationLandscapeLeft</string>\n\t\t<string>UIInterfaceOrientationLandscapeRight</string>\n\t</array>\n</dict>\n</plist>\n"
  },
  {
    "path": "TestLocationPlugin/ViewController.h",
    "content": "//\n//  ViewController.h\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/5.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n\n@interface ViewController : UIViewController\n\n\n@end\n\n"
  },
  {
    "path": "TestLocationPlugin/ViewController.m",
    "content": "//\n//  ViewController.m\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/5.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import \"ViewController.h\"\n\n@interface ViewController ()\n\n@end\n\n@implementation ViewController\n\n- (void)viewDidLoad {\n    [super viewDidLoad];\n    \n}\n\n\n@end\n"
  },
  {
    "path": "TestLocationPlugin/main.m",
    "content": "//\n//  main.m\n//  TLocationPlugin\n//\n//  Created by TBD on 2019/9/5.\n//  Copyright © 2019 TBD. All rights reserved.\n//\n\n#import <UIKit/UIKit.h>\n#import \"AppDelegate.h\"\n\nint main(int argc, char * argv[]) {\n    @autoreleasepool {\n        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));\n    }\n}\n"
  },
  {
    "path": "requirements.txt",
    "content": "biplist\nPillow\n"
  },
  {
    "path": "yololib/README.md",
    "content": "yololib\n=======\n\ndylib injector for mach-o binaries\n\n\nUsage\n============\n\nSelf-explainatory\n\n`yololib` `binary` `dylib file`\n"
  },
  {
    "path": "yololib/main.m",
    "content": "/*\n yololib\n Inject dylibs into existing Mach-O binaries\n \n \n DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n Version 2, December 2004\n \n Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>\n \n Everyone is permitted to copy and distribute verbatim or modified\n copies of this license document, and changing it is allowed as long\n as the name is changed.\n \n DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE\n TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\n \n 0. You just DO WHAT THE FUCK YOU WANT TO.\n \n */\n\n#include <stdio.h>\n#include <string.h>\n#include <mach-o/fat.h>\n#include <mach-o/loader.h>\n#import <Foundation/Foundation.h>\n\n\nNSString* DYLIB_PATH;\n\n#define DYLIB_CURRENT_VER 0x10000\n#define DYLIB_COMPATIBILITY_VERSION 0x10000\n\n#define ARMV7 9\n#define ARMV6 6\n\nunsigned long b_round(\n                      unsigned long v,\n                      unsigned long r)\n{\n    r--;\n    v += r;\n    v &= ~(long)r;\n    return(v);\n}\n\nvoid inject_dylib(FILE* newFile, uint32_t top) {\n    fseek(newFile, top, SEEK_SET);\n    struct mach_header mach;\n    \n    fread(&mach, sizeof(struct mach_header), 1, newFile);\n    \n    NSData* data = [DYLIB_PATH dataUsingEncoding:NSUTF8StringEncoding];\n    \n    uint32_t dylib_size = (uint32_t)[data length] + sizeof(struct dylib_command);\n    dylib_size += sizeof(long) - (dylib_size % sizeof(long)); // load commands like to be aligned by long\n    \n    mach.ncmds += 1;\n    uint32_t sizeofcmds = mach.sizeofcmds;\n    mach.sizeofcmds += dylib_size;\n    \n    fseek(newFile, -sizeof(struct mach_header), SEEK_CUR);\n    fwrite(&mach, sizeof(struct mach_header), 1, newFile);\n    NSLog(@\"Patching mach_header..\\n\");\n    \n    fseek(newFile, sizeofcmds, SEEK_CUR);\n    \n    struct dylib_command dyld;\n    fread(&dyld, sizeof(struct dylib_command), 1, newFile);\n    \n    NSLog(@\"Attaching dylib..\\n\\n\");\n    \n    dyld.cmd = LC_LOAD_DYLIB;\n    dyld.cmdsize = dylib_size;\n    dyld.dylib.compatibility_version = DYLIB_COMPATIBILITY_VERSION;\n    dyld.dylib.current_version = DYLIB_CURRENT_VER;\n    dyld.dylib.timestamp = 2;\n    dyld.dylib.name.offset = sizeof(struct dylib_command);\n    fseek(newFile, -sizeof(struct dylib_command), SEEK_CUR);\n    \n    fwrite(&dyld, sizeof(struct dylib_command), 1, newFile);\n    \n    fwrite([data bytes], [data length], 1, newFile);\n    \n}\n\nvoid inject_dylib_64(FILE* newFile, uint32_t top) {\n    @autoreleasepool {\n        fseek(newFile, top, SEEK_SET);\n        struct mach_header_64 mach;\n        \n        \n        fread(&mach, sizeof(struct mach_header_64), 1, newFile);\n        \n        NSData* data = [DYLIB_PATH dataUsingEncoding:NSUTF8StringEncoding];\n        \n        \n        unsigned long dylib_size = sizeof(struct dylib_command) + b_round(strlen([DYLIB_PATH UTF8String]) + 1, 8);\n        \n        \n        //round(strlen([DYLIB_PATH UTF8String]) + 1, sizeof(long));\n        NSLog(@\"dylib size wow %lu\", dylib_size);\n        /*uint32_t dylib_size2 = (uint32_t)[data length] + sizeof(struct dylib_command);\n         dylib_size2 += sizeof(long) - (dylib_size % sizeof(long)); // load commands like to be aligned by long\n         \n         NSLog(@\"dylib size2 wow %u\", dylib_size2);\n         NSLog(@\"dylib size2 wow %u\", CFSwapInt32(dylib_size2));*/\n        \n        NSLog(@\"mach.ncmds %u\", mach.ncmds);\n        \n        mach.ncmds += 0x1;\n        \n        NSLog(@\"mach.ncmds %u\", mach.ncmds);\n        \n        uint32_t sizeofcmds = mach.sizeofcmds;\n        mach.sizeofcmds += (dylib_size);\n        \n        fseek(newFile, -sizeof(struct mach_header_64), SEEK_CUR);\n        fwrite(&mach, sizeof(struct mach_header_64), 1, newFile);\n        NSLog(@\"Patching mach_header..\\n\");\n        \n        fseek(newFile, sizeofcmds, SEEK_CUR);\n        \n        struct dylib_command dyld;\n        fread(&dyld, sizeof(struct dylib_command), 1, newFile);\n        \n        NSLog(@\"Attaching dylib..\\n\\n\");\n        \n        dyld.cmd = LC_LOAD_DYLIB;\n        dyld.cmdsize = (uint32_t) dylib_size;\n        dyld.dylib.compatibility_version = DYLIB_COMPATIBILITY_VERSION;\n        dyld.dylib.current_version = DYLIB_CURRENT_VER;\n        dyld.dylib.timestamp = 2;\n        dyld.dylib.name.offset = sizeof(struct dylib_command);\n        fseek(newFile, -sizeof(struct dylib_command), SEEK_CUR);\n        \n        fwrite(&dyld, sizeof(struct dylib_command), 1, newFile);\n        \n        fwrite([data bytes], [data length], 1, newFile);\n        NSLog(@\"size %lu\", sizeof(struct dylib_command) + [data length]);\n    }\n}\n\n\nvoid inject_file(NSString* file, NSString* _dylib)\n{\n    char buffer[4096], binary[4096], dylib[4096];\n    \n    \n    strlcpy(binary, [file UTF8String], sizeof(binary));\n    strlcpy(dylib, [DYLIB_PATH UTF8String], sizeof(dylib));\n    \n    NSLog(@\"dylib path %@\", DYLIB_PATH);\n    FILE *binaryFile = fopen(binary, \"r+\");\n    printf(\"Reading binary: %s\\n\\n\", binary);\n    fread(&buffer, sizeof(buffer), 1, binaryFile);\n    \n    struct fat_header* fh = (struct fat_header*) (buffer);\n    \n    switch (fh->magic) {\n        case FAT_CIGAM:\n        case FAT_MAGIC:\n        {\n            struct fat_arch* arch = (struct fat_arch*) &fh[1];\n            NSLog(@\"FAT binary!\\n\");\n            int i;\n            for (i = 0; i < CFSwapInt32(fh->nfat_arch); i++) {\n                NSLog(@\"Injecting to arch %i\\n\", CFSwapInt32(arch->cpusubtype));\n                if (CFSwapInt32(arch->cputype) == CPU_TYPE_ARM64) {\n                    NSLog(@\"64bit arch wow\");\n                    inject_dylib_64(binaryFile, CFSwapInt32(arch->offset));\n                }\n                else {\n                    inject_dylib(binaryFile, CFSwapInt32(arch->offset));\n                }\n                arch++;\n            }\n            break;\n        }\n        case MH_CIGAM_64:\n        case MH_MAGIC_64:\n        {\n            NSLog(@\"Thin 64bit binary!\\n\");\n            inject_dylib_64(binaryFile, 0);\n            break;\n        }\n        case MH_CIGAM:\n        case MH_MAGIC:\n        {\n            NSLog(@\"Thin 32bit binary!\\n\");\n            inject_dylib_64(binaryFile, 0);\n            break;\n        }\n        default:\n        {\n            printf(\"Error: Unknown architecture detected\");\n            exit(1);\n        }\n    }\n    \n    NSLog(@\"complete!\");\n    fclose(binaryFile);\n}\n\nint main(int argc, const char * argv[]) {\n    NSString *binary = [NSString stringWithUTF8String:argv[1]];\n    NSString *dylib = [NSString stringWithUTF8String:argv[2]];\n    if ([dylib hasPrefix:@\"Frameworks/\"]) {\n        DYLIB_PATH = [NSString stringWithFormat:@\"@rpath/%@\",  [dylib substringFromIndex:11]];\n    } else {\n        DYLIB_PATH = [NSString stringWithFormat:@\"@executable_path/%@\", dylib];\n    }\n    NSLog(@\"dylib path %@\", DYLIB_PATH);\n    inject_file(binary, DYLIB_PATH);\n    return 0;\n}\n\n"
  },
  {
    "path": "yololib/yololib.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\tAD4A0D571949A42E00B6B127 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AD4A0D561949A42E00B6B127 /* Foundation.framework */; };\n\t\tAD4A0D591949AA5B00B6B127 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = AD4A0D581949AA5B00B6B127 /* main.m */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXCopyFilesBuildPhase section */\n\t\tAD49F4E31769B63900B8D2E0 /* CopyFiles */ = {\n\t\t\tisa = PBXCopyFilesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tdstPath = /usr/share/man/man1/;\n\t\t\tdstSubfolderSpec = 0;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 1;\n\t\t};\n/* End PBXCopyFilesBuildPhase section */\n\n/* Begin PBXFileReference section */\n\t\t3F0D76872974FD6A00AC8A50 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };\n\t\tAD49F4E51769B63A00B8D2E0 /* yololib */ = {isa = PBXFileReference; explicitFileType = \"compiled.mach-o.executable\"; includeInIndex = 0; path = yololib; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tAD4A0D561949A42E00B6B127 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };\n\t\tAD4A0D581949AA5B00B6B127 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\tAD49F4E21769B63900B8D2E0 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tAD4A0D571949A42E00B6B127 /* Foundation.framework in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t3F0D76862974FD6900AC8A50 /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t3F0D76872974FD6A00AC8A50 /* CoreFoundation.framework */,\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tAD49F4DC1769B63800B8D2E0 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tAD4A0D581949AA5B00B6B127 /* main.m */,\n\t\t\t\tAD4A0D561949A42E00B6B127 /* Foundation.framework */,\n\t\t\t\tAD49F4E61769B63A00B8D2E0 /* Products */,\n\t\t\t\t3F0D76862974FD6900AC8A50 /* Frameworks */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tAD49F4E61769B63A00B8D2E0 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tAD49F4E51769B63A00B8D2E0 /* yololib */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXNativeTarget section */\n\t\tAD49F4E41769B63900B8D2E0 /* yololib */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = AD49F4EE1769B63A00B8D2E0 /* Build configuration list for PBXNativeTarget \"yololib\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tAD49F4E11769B63900B8D2E0 /* Sources */,\n\t\t\t\tAD49F4E21769B63900B8D2E0 /* Frameworks */,\n\t\t\t\tAD49F4E31769B63900B8D2E0 /* CopyFiles */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = yololib;\n\t\t\tproductName = yololib;\n\t\t\tproductReference = AD49F4E51769B63A00B8D2E0 /* yololib */;\n\t\t\tproductType = \"com.apple.product-type.tool\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\tAD49F4DD1769B63800B8D2E0 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastUpgradeCheck = 1130;\n\t\t\t\tORGANIZATIONNAME = test;\n\t\t\t};\n\t\t\tbuildConfigurationList = AD49F4E01769B63900B8D2E0 /* Build configuration list for PBXProject \"yololib\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = en;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = AD49F4DC1769B63800B8D2E0;\n\t\t\tproductRefGroup = AD49F4E61769B63A00B8D2E0 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\tAD49F4E41769B63900B8D2E0 /* yololib */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\tAD49F4E11769B63900B8D2E0 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tAD4A0D591949AA5B00B6B127 /* main.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin XCBuildConfiguration section */\n\t\tAD49F4EC1769B63A00B8D2E0 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.9;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tAD49F4ED1769B63A00B8D2E0 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_ENABLE_OBJC_EXCEPTIONS = YES;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.9;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tAD49F4EF1769B63A00B8D2E0 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"-\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tAD49F4F01769B63A00B8D2E0 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"-\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\tAD49F4E01769B63900B8D2E0 /* Build configuration list for PBXProject \"yololib\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tAD49F4EC1769B63A00B8D2E0 /* Debug */,\n\t\t\t\tAD49F4ED1769B63A00B8D2E0 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tAD49F4EE1769B63A00B8D2E0 /* Build configuration list for PBXNativeTarget \"yololib\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tAD49F4EF1769B63A00B8D2E0 /* Debug */,\n\t\t\t\tAD49F4F01769B63A00B8D2E0 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = AD49F4DD1769B63800B8D2E0 /* Project object */;\n}\n"
  },
  {
    "path": "yololib/yololib.xcodeproj/project.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Workspace\n   version = \"1.0\">\n   <FileRef\n      location = \"self:yololib.xcodeproj\">\n   </FileRef>\n</Workspace>\n"
  },
  {
    "path": "yololib/yololib.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  }
]