Jelajahi Sumber

开发完毕设置页和主题页

100Years 1 bulan lalu
induk
melakukan
6f0ae1a8ce
100 mengubah file dengan 1568 tambahan dan 48 penghapusan
  1. 92 0
      .gitignore
  2. 716 35
      AIRingtone.xcodeproj/project.pbxproj
  3. 1 1
      AIRingtone.xcodeproj/xcuserdata/100years.xcuserdatad/xcschemes/xcschememanagement.plist
  4. 10 0
      AIRingtone.xcworkspace/contents.xcworkspacedata
  5. 6 0
      AIRingtone/AIRingtone-Bridging-Header.h
  6. 59 12
      AIRingtone/AppDelegate.swift
  7. 6 0
      AIRingtone/Assets.xcassets/AIRing/Contents.json
  8. 22 0
      AIRingtone/Assets.xcassets/AIRing/nav_title_aiRing.imageset/Contents.json
  9. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/AIRing/nav_title_aiRing.imageset/nav_title_aiRing@2x.png
  10. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/AIRing/nav_title_aiRing.imageset/nav_title_aiRing@3x.png
  11. 6 0
      AIRingtone/Assets.xcassets/Common/Contents.json
  12. 22 0
      AIRingtone/Assets.xcassets/Common/add.imageset/Contents.json
  13. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/add.imageset/add@2x.png
  14. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/add.imageset/add@3x.png
  15. 22 0
      AIRingtone/Assets.xcassets/Common/clear_text.imageset/Contents.json
  16. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/clear_text.imageset/clear_text@2x.png
  17. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/clear_text.imageset/clear_text@3x.png
  18. 22 0
      AIRingtone/Assets.xcassets/Common/delete.imageset/Contents.json
  19. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/delete.imageset/delete@2x.png
  20. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/delete.imageset/delete@3x.png
  21. 22 0
      AIRingtone/Assets.xcassets/Common/delete_redRound.imageset/Contents.json
  22. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/delete_redRound.imageset/delete_redRound@2x.png
  23. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/delete_redRound.imageset/delete_redRound@3x.png
  24. 22 0
      AIRingtone/Assets.xcassets/Common/delete_white.imageset/Contents.json
  25. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/delete_white.imageset/delete_white@2x.png
  26. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/delete_white.imageset/delete_white@3x.png
  27. 22 0
      AIRingtone/Assets.xcassets/Common/down_arrow_line.imageset/Contents.json
  28. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/down_arrow_line.imageset/down_arrow@2x.png
  29. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/down_arrow_line.imageset/down_arrow@3x.png
  30. 22 0
      AIRingtone/Assets.xcassets/Common/down_arrow_white.imageset/Contents.json
  31. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/down_arrow_white.imageset/down_arrow_white@2x.png
  32. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/down_arrow_white.imageset/down_arrow_white@3x.png
  33. 22 0
      AIRingtone/Assets.xcassets/Common/failed_big.imageset/Contents.json
  34. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/failed_big.imageset/failed_big@2x.png
  35. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/failed_big.imageset/failed_big@3x.png
  36. 22 0
      AIRingtone/Assets.xcassets/Common/inspiration_yellow.imageset/Contents.json
  37. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/inspiration_yellow.imageset/inspiration_yellow@2x.png
  38. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/inspiration_yellow.imageset/inspiration_yellow@3x.png
  39. 22 0
      AIRingtone/Assets.xcassets/Common/keyboard.imageset/Contents.json
  40. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/keyboard.imageset/keyboard@2x.png
  41. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/keyboard.imageset/keyboard@3x.png
  42. 22 0
      AIRingtone/Assets.xcassets/Common/navi_back_white.imageset/Contents.json
  43. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/navi_back_white.imageset/navi_back_white@2x.png
  44. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/navi_back_white.imageset/navi_back_white@3x.png
  45. 22 0
      AIRingtone/Assets.xcassets/Common/pageNull.imageset/Contents.json
  46. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/pageNull.imageset/pageNull@2x.png
  47. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/pageNull.imageset/pageNull@3x.png
  48. 22 0
      AIRingtone/Assets.xcassets/Common/page_left.imageset/Contents.json
  49. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/page_left.imageset/page_left@2x.png
  50. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/page_left.imageset/page_left@3x.png
  51. 22 0
      AIRingtone/Assets.xcassets/Common/page_right.imageset/Contents.json
  52. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/page_right.imageset/page_right@2x.png
  53. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/page_right.imageset/page_right@3x.png
  54. 22 0
      AIRingtone/Assets.xcassets/Common/placeholderImage.imageset/Contents.json
  55. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/placeholderImage.imageset/placeholderImage@2x.png
  56. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/placeholderImage.imageset/placeholderImage@3x.png
  57. 22 0
      AIRingtone/Assets.xcassets/Common/ringtone_pause.imageset/Contents.json
  58. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/ringtone_pause.imageset/ringtone_pause@2x.png
  59. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/ringtone_pause.imageset/ringtone_pause@3x.png
  60. 22 0
      AIRingtone/Assets.xcassets/Common/ringtone_play.imageset/Contents.json
  61. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/ringtone_play.imageset/ringtone_play@2x.png
  62. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/ringtone_play.imageset/ringtone_play@3x.png
  63. 22 0
      AIRingtone/Assets.xcassets/Common/setting.imageset/Contents.json
  64. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/setting.imageset/setting@2x.png
  65. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/setting.imageset/setting@3x.png
  66. 22 0
      AIRingtone/Assets.xcassets/Common/submit_btn_bg.imageset/Contents.json
  67. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/submit_btn_bg.imageset/submit_btn_bg@2x.png
  68. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/submit_btn_bg.imageset/submit_btn_bg@3x.png
  69. 22 0
      AIRingtone/Assets.xcassets/Common/submit_btn_dis_bg.imageset/Contents.json
  70. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/submit_btn_dis_bg.imageset/submit_btn_dis_bg@2x.png
  71. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/submit_btn_dis_bg.imageset/submit_btn_dis_bg@3x.png
  72. 22 0
      AIRingtone/Assets.xcassets/Common/submit_btn_small_bg.imageset/Contents.json
  73. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/submit_btn_small_bg.imageset/submit_btn_small_bg@2x.png
  74. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/submit_btn_small_bg.imageset/submit_btn_small_bg@3x.png
  75. 22 0
      AIRingtone/Assets.xcassets/Common/success_icon.imageset/Contents.json
  76. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/success_icon.imageset/icon_已下载@2x.png
  77. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/success_icon.imageset/icon_已下载@3x.png
  78. 22 0
      AIRingtone/Assets.xcassets/Common/tutorials.imageset/Contents.json
  79. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/tutorials.imageset/tutorials@2x.png
  80. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/tutorials.imageset/tutorials@3x.png
  81. 22 0
      AIRingtone/Assets.xcassets/Common/tutorials_banner.imageset/Contents.json
  82. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/tutorials_banner.imageset/tutorials_banner@2x.png
  83. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/tutorials_banner.imageset/tutorials_banner@3x.png
  84. 22 0
      AIRingtone/Assets.xcassets/Common/view_bj.imageset/Contents.json
  85. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/view_bj.imageset/view_bj@2x.png
  86. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/view_bj.imageset/view_bj@3x.png
  87. 22 0
      AIRingtone/Assets.xcassets/Common/white_right_arrow.imageset/Contents.json
  88. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/white_right_arrow.imageset/white_right_arrow@2x.png
  89. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/white_right_arrow.imageset/white_right_arrow@3x.png
  90. 22 0
      AIRingtone/Assets.xcassets/Common/x.imageset/Contents.json
  91. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/x.imageset/x@2x.png
  92. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Common/x.imageset/x@3x.png
  93. 6 0
      AIRingtone/Assets.xcassets/Setting/Contents.json
  94. 22 0
      AIRingtone/Assets.xcassets/Setting/nav_title_setting.imageset/Contents.json
  95. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Setting/nav_title_setting.imageset/nav_title_setting@2x.png
  96. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Setting/nav_title_setting.imageset/nav_title_setting@3x.png
  97. 6 0
      AIRingtone/Assets.xcassets/Tabbar/Contents.json
  98. 22 0
      AIRingtone/Assets.xcassets/Tabbar/tabbar_select_avatar.imageset/Contents.json
  99. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Tabbar/tabbar_select_avatar.imageset/tabbar_select_avatar@2x.png
  100. TEMPAT SAMPAH
      AIRingtone/Assets.xcassets/Tabbar/tabbar_select_avatar.imageset/tabbar_select_avatar@3x.png

+ 92 - 0
.gitignore

@@ -0,0 +1,92 @@
+# Xcode
+#
+# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
+
+## User settings
+xcuserdata/
+
+## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9)
+*.xcscmblueprint
+*.xccheckout
+
+## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4)
+build/
+DerivedData/
+*.moved-aside
+*.pbxuser
+!default.pbxuser
+*.mode1v3
+!default.mode1v3
+*.mode2v3
+!default.mode2v3
+*.perspectivev3
+!default.perspectivev3
+
+## Obj-C/Swift specific
+*.hmap
+
+## App packaging
+*.ipa
+*.dSYM.zip
+*.dSYM
+
+## Playgrounds
+timeline.xctimeline
+playground.xcworkspace
+
+# Swift Package Manager
+#
+# Add this line if you want to avoid checking in source code from Swift Package Manager dependencies.
+# Packages/
+# Package.pins
+# Package.resolved
+# *.xcodeproj
+#
+# Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata
+# hence it is not needed unless you have added a package configuration file to your project
+# .swiftpm
+
+.build/
+
+# CocoaPods
+#
+# We recommend against adding the Pods directory to your .gitignore. However
+# you should judge for yourself, the pros and cons are mentioned at:
+# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
+
+Pods/
+!Podfile.lock
+
+# Add this line if you want to avoid checking in source code from the Xcode workspace
+# *.xcworkspace
+
+# Carthage
+#
+# Add this line if you want to avoid checking in source code from Carthage dependencies.
+# Carthage/Checkouts
+
+Carthage/Build/
+
+# Accio dependency management
+Dependencies/
+.accio/
+
+# fastlane
+#
+# It is recommended to not store the screenshots in the git repo.
+# Instead, use fastlane to re-generate the screenshots whenever they are needed.
+# For more information about the recommended setup visit:
+# https://docs.fastlane.tools/best-practices/source-control/#source-control
+
+fastlane/report.xml
+fastlane/Preview.html
+fastlane/screenshots/**/*.png
+fastlane/test_output
+
+# Code Injection
+#
+# After new code Injection tools there's a generated folder /iOSInjectionProject
+# https://github.com/johnno1962/injectionforxcode
+
+iOSInjectionProject/
+

+ 716 - 35
AIRingtone.xcodeproj/project.pbxproj

@@ -6,47 +6,189 @@
 	objectVersion = 77;
 	objects = {
 
+/* Begin PBXBuildFile section */
+		A80EDE582D718623003CD332 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDE4E2D718623003CD332 /* AppDelegate.swift */; };
+		A80EDE5B2D718623003CD332 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A80EDE4F2D718623003CD332 /* Assets.xcassets */; };
+		A80EDE5D2D718623003CD332 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A80EDE522D718623003CD332 /* LaunchScreen.storyboard */; };
+		A80EDE612D718AF4003CD332 /* TSConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDE602D718AF4003CD332 /* TSConfig.swift */; };
+		A80EDE652D718CAF003CD332 /* GlobalImports.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDE642D718CAF003CD332 /* GlobalImports.swift */; };
+		A80EDEC62D718CEA003CD332 /* TSRandomTextPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDEB32D718CEA003CD332 /* TSRandomTextPicker.swift */; };
+		A80EDEC82D718CEA003CD332 /* TSNetworkManager+Loading.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDE6E2D718CEA003CD332 /* TSNetworkManager+Loading.swift */; };
+		A80EDECB2D718CEA003CD332 /* TSNetWork+Business.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDE6D2D718CEA003CD332 /* TSNetWork+Business.swift */; };
+		A80EDEDB2D718CEA003CD332 /* TSPhotoPickerManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDEBB2D718CEA003CD332 /* TSPhotoPickerManager.swift */; };
+		A80EDEE32D718CEA003CD332 /* TSNetworkManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDE6C2D718CEA003CD332 /* TSNetworkManager.swift */; };
+		A80EDEE72D718CEA003CD332 /* TSCustomStackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDEBD2D718CEA003CD332 /* TSCustomStackView.swift */; };
+		A80EDEE92D718CEA003CD332 /* TSFileManagerTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDEB62D718CEA003CD332 /* TSFileManagerTool.swift */; };
+		A80EDEEA2D718CEA003CD332 /* PaddedLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDEBF2D718CEA003CD332 /* PaddedLabel.swift */; };
+		A80EDEEB2D718CEA003CD332 /* StreamPostRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDE6F2D718CEA003CD332 /* StreamPostRequest.swift */; };
+		A80EDEEC2D718CEA003CD332 /* WindowHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDEB92D718CEA003CD332 /* WindowHelper.swift */; };
+		A80EDEF52D718DEA003CD332 /* TSTabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDEF32D718DEA003CD332 /* TSTabBarController.swift */; };
+		A80EDF012D718DF1003CD332 /* TSBusinessWebVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDEF62D718DF1003CD332 /* TSBusinessWebVC.swift */; };
+		A80EDF022D718DF1003CD332 /* TSSettingListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDEF92D718DF1003CD332 /* TSSettingListView.swift */; };
+		A80EDF032D718DF1003CD332 /* ShareActivityItemProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDEFD2D718DF1003CD332 /* ShareActivityItemProvider.swift */; };
+		A80EDF042D718DF1003CD332 /* TSSetingModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDEFC2D718DF1003CD332 /* TSSetingModel.swift */; };
+		A80EDF052D718DF1003CD332 /* TSSetingVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDEFE2D718DF1003CD332 /* TSSetingVC.swift */; };
+		A80EDF062D718DF1003CD332 /* SettingPurchaseTopView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDEF82D718DF1003CD332 /* SettingPurchaseTopView.swift */; };
+		A80EDF072D718DF1003CD332 /* TSSetingViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDEFB2D718DF1003CD332 /* TSSetingViewModel.swift */; };
+		A80EDF0B2D718DF7003CD332 /* TSBootPageVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDF082D718DF7003CD332 /* TSBootPageVC.swift */; };
+		A80EDF0C2D718DF7003CD332 /* TSLaunchVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDF092D718DF7003CD332 /* TSLaunchVC.swift */; };
+		A80EDF112D718ED1003CD332 /* TSAIRintoneVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDF102D718ECF003CD332 /* TSAIRintoneVC.swift */; };
+		A80EDF132D718EF7003CD332 /* TSAIPhotoVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDF122D718EF6003CD332 /* TSAIPhotoVC.swift */; };
+		A80EDF152D718F13003CD332 /* TSThemeVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDF142D718F12003CD332 /* TSThemeVC.swift */; };
+		A80EDF182D7193EE003CD332 /* TSTutorialsVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDF172D7193ED003CD332 /* TSTutorialsVC.swift */; };
+		A80EDF1B2D71AC90003CD332 /* TSCollectionViewVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDF1A2D71AC8F003CD332 /* TSCollectionViewVM.swift */; };
+		A80EDF1D2D71BE15003CD332 /* TSCollectionViewVM+Config.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDF1C2D71BE11003CD332 /* TSCollectionViewVM+Config.swift */; };
+		A80EDF242D71C0AA003CD332 /* TSColVVMSectionHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDF232D71C091003CD332 /* TSColVVMSectionHeaderView.swift */; };
+		A80EDF272D71C13D003CD332 /* TSColVVMHeaderModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDF262D71C13C003CD332 /* TSColVVMHeaderModel.swift */; };
+		A80EDF2A2D71C215003CD332 /* TSThemeVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDF292D71C211003CD332 /* TSThemeVM.swift */; };
+		A80EDF2D2D71C2CA003CD332 /* TSThemeModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = A80EDF2C2D71C2BF003CD332 /* TSThemeModel.swift */; };
+		A868A89A2D75505E00F6D884 /* TSThemeBannerCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868A8992D75505800F6D884 /* TSThemeBannerCell.swift */; };
+		A868A89C2D75506C00F6D884 /* TSThemeContentCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868A89B2D75506500F6D884 /* TSThemeContentCell.swift */; };
+		A868A8A22D7560B900F6D884 /* TSPageNullView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868A89D2D7560B900F6D884 /* TSPageNullView.swift */; };
+		A868A8A32D7560B900F6D884 /* TSViewTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868A8A02D7560B900F6D884 /* TSViewTool.swift */; };
+		A868A8A42D7560B900F6D884 /* TSCommonloadingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868A89E2D7560B900F6D884 /* TSCommonloadingView.swift */; };
+		A868A8A72D757DD600F6D884 /* UICollectionView+Refresh.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868A8A62D757DCE00F6D884 /* UICollectionView+Refresh.swift */; };
+		A868A8AA2D7588A500F6D884 /* TSThemeBrowseVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868A8A92D7588A400F6D884 /* TSThemeBrowseVC.swift */; };
+		A868A8AD2D758B6B00F6D884 /* TSTBCallPreviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868A8AC2D758B5100F6D884 /* TSTBCallPreviewView.swift */; };
+		A868A8AF2D758BBC00F6D884 /* TSTBDesktopPreviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868A8AE2D758BA800F6D884 /* TSTBDesktopPreviewView.swift */; };
+		A868A8B12D758CA400F6D884 /* TSTBBtnView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868A8B02D758C9600F6D884 /* TSTBBtnView.swift */; };
+		A868A8B52D7598C000F6D884 /* TSTSIslandView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868A8B42D7598A500F6D884 /* TSTSIslandView.swift */; };
+		A868A8BA2D75C22300F6D884 /* TSThemeBrowseVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868A8B92D75C20400F6D884 /* TSThemeBrowseVM.swift */; };
+		A868A8BD2D75C68300F6D884 /* TSAudioPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868A8BB2D75C68300F6D884 /* TSAudioPlayer.swift */; };
+		A868A8BF2D76A17E00F6D884 /* Poppins-BlackItalic.ttf in Resources */ = {isa = PBXBuildFile; fileRef = A868A8BE2D76A17E00F6D884 /* Poppins-BlackItalic.ttf */; };
+		A868A8C22D76A2A700F6D884 /* UIFont+TSEx.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868A8C12D76A28F00F6D884 /* UIFont+TSEx.swift */; };
+		A868A8C72D76A44500F6D884 /* TSThemeSetVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868A8C62D76A43E00F6D884 /* TSThemeSetVC.swift */; };
+		A868A8C92D76A45900F6D884 /* TSThemeSetItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868A8C82D76A45200F6D884 /* TSThemeSetItemView.swift */; };
+		A868A8CE2D76AAC600F6D884 /* TSThemeSetRingToneView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868A8CD2D76AAAF00F6D884 /* TSThemeSetRingToneView.swift */; };
+		A868A8D02D76D03900F6D884 /* TSRingToneCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868A8CF2D76D02300F6D884 /* TSRingToneCellView.swift */; };
+		A868A8D32D76DE7600F6D884 /* TSThemeSetVM.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868A8D22D76DC9E00F6D884 /* TSThemeSetVM.swift */; };
+		A868A8D52D76E41800F6D884 /* TSSetContactAvatar.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868A8D42D76E40E00F6D884 /* TSSetContactAvatar.swift */; };
+		A868A8DB2D76F00C00F6D884 /* TSBandRingTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868A8DA2D76F00800F6D884 /* TSBandRingTool.swift */; };
+		A868A8DE2D76F91500F6D884 /* AudioTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868A8DD2D76F91500F6D884 /* AudioTool.swift */; };
+		A868A8E12D76F9BB00F6D884 /* AudioConverter.m in Sources */ = {isa = PBXBuildFile; fileRef = A868A8E02D76F9BB00F6D884 /* AudioConverter.m */; };
+		A868A8E82D76FA4200F6D884 /* ExtAudioConverter.m in Sources */ = {isa = PBXBuildFile; fileRef = A868A8E52D76FA4200F6D884 /* ExtAudioConverter.m */; };
+		A868A8EB2D76FD9800F6D884 /* placeholder.band in Resources */ = {isa = PBXBuildFile; fileRef = A868A8EA2D76FD9800F6D884 /* placeholder.band */; };
+		A868A8ED2D76FE5D00F6D884 /* tutorial-ring.mp4 in Resources */ = {isa = PBXBuildFile; fileRef = A868A8EC2D76FE5D00F6D884 /* tutorial-ring.mp4 */; };
+		A868A8EF2D77041400F6D884 /* TSLoadingAnimation.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868A8EE2D77040F00F6D884 /* TSLoadingAnimation.swift */; };
+		A868A8F12D77081C00F6D884 /* TSContactsTool.swift in Sources */ = {isa = PBXBuildFile; fileRef = A868A8F02D77081B00F6D884 /* TSContactsTool.swift */; };
+		A868A8F22D770A9200F6D884 /* libmp3lame.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A868A8E42D76FA4200F6D884 /* libmp3lame.a */; };
+		F5FF0EC10B0056B65FDB9C78 /* Pods_AIRingtone.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 39C823AB7F3D49E8B2356E07 /* Pods_AIRingtone.framework */; };
+/* End PBXBuildFile section */
+
 /* Begin PBXFileReference section */
+		39C823AB7F3D49E8B2356E07 /* Pods_AIRingtone.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_AIRingtone.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+		5D578E9BD60A04ABE5E6E12E /* Pods-AIRingtone.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AIRingtone.debug.xcconfig"; path = "Target Support Files/Pods-AIRingtone/Pods-AIRingtone.debug.xcconfig"; sourceTree = "<group>"; };
+		5DBE882FFF7A297F71A825E3 /* Pods-AIRingtone.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AIRingtone.release.xcconfig"; path = "Target Support Files/Pods-AIRingtone/Pods-AIRingtone.release.xcconfig"; sourceTree = "<group>"; };
 		A80EDE362D7184D9003CD332 /* AIRingtone.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AIRingtone.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		A80EDE4E2D718623003CD332 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
+		A80EDE4F2D718623003CD332 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
+		A80EDE502D718623003CD332 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
+		A80EDE512D718623003CD332 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
+		A80EDE602D718AF4003CD332 /* TSConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSConfig.swift; sourceTree = "<group>"; };
+		A80EDE642D718CAF003CD332 /* GlobalImports.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GlobalImports.swift; sourceTree = "<group>"; };
+		A80EDE6C2D718CEA003CD332 /* TSNetworkManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSNetworkManager.swift; sourceTree = "<group>"; };
+		A80EDE6D2D718CEA003CD332 /* TSNetWork+Business.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TSNetWork+Business.swift"; sourceTree = "<group>"; };
+		A80EDE6E2D718CEA003CD332 /* TSNetworkManager+Loading.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TSNetworkManager+Loading.swift"; sourceTree = "<group>"; };
+		A80EDE6F2D718CEA003CD332 /* StreamPostRequest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StreamPostRequest.swift; sourceTree = "<group>"; };
+		A80EDEB32D718CEA003CD332 /* TSRandomTextPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSRandomTextPicker.swift; sourceTree = "<group>"; };
+		A80EDEB62D718CEA003CD332 /* TSFileManagerTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSFileManagerTool.swift; sourceTree = "<group>"; };
+		A80EDEB92D718CEA003CD332 /* WindowHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WindowHelper.swift; sourceTree = "<group>"; };
+		A80EDEBB2D718CEA003CD332 /* TSPhotoPickerManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSPhotoPickerManager.swift; sourceTree = "<group>"; };
+		A80EDEBD2D718CEA003CD332 /* TSCustomStackView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSCustomStackView.swift; sourceTree = "<group>"; };
+		A80EDEBF2D718CEA003CD332 /* PaddedLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaddedLabel.swift; sourceTree = "<group>"; };
+		A80EDEF32D718DEA003CD332 /* TSTabBarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSTabBarController.swift; sourceTree = "<group>"; };
+		A80EDEF62D718DF1003CD332 /* TSBusinessWebVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSBusinessWebVC.swift; sourceTree = "<group>"; };
+		A80EDEF82D718DF1003CD332 /* SettingPurchaseTopView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingPurchaseTopView.swift; sourceTree = "<group>"; };
+		A80EDEF92D718DF1003CD332 /* TSSettingListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSSettingListView.swift; sourceTree = "<group>"; };
+		A80EDEFB2D718DF1003CD332 /* TSSetingViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSSetingViewModel.swift; sourceTree = "<group>"; };
+		A80EDEFC2D718DF1003CD332 /* TSSetingModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSSetingModel.swift; sourceTree = "<group>"; };
+		A80EDEFD2D718DF1003CD332 /* ShareActivityItemProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareActivityItemProvider.swift; sourceTree = "<group>"; };
+		A80EDEFE2D718DF1003CD332 /* TSSetingVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSSetingVC.swift; sourceTree = "<group>"; };
+		A80EDF082D718DF7003CD332 /* TSBootPageVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSBootPageVC.swift; sourceTree = "<group>"; };
+		A80EDF092D718DF7003CD332 /* TSLaunchVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSLaunchVC.swift; sourceTree = "<group>"; };
+		A80EDF102D718ECF003CD332 /* TSAIRintoneVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSAIRintoneVC.swift; sourceTree = "<group>"; };
+		A80EDF122D718EF6003CD332 /* TSAIPhotoVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSAIPhotoVC.swift; sourceTree = "<group>"; };
+		A80EDF142D718F12003CD332 /* TSThemeVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSThemeVC.swift; sourceTree = "<group>"; };
+		A80EDF172D7193ED003CD332 /* TSTutorialsVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSTutorialsVC.swift; sourceTree = "<group>"; };
+		A80EDF1A2D71AC8F003CD332 /* TSCollectionViewVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSCollectionViewVM.swift; sourceTree = "<group>"; };
+		A80EDF1C2D71BE11003CD332 /* TSCollectionViewVM+Config.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "TSCollectionViewVM+Config.swift"; sourceTree = "<group>"; };
+		A80EDF232D71C091003CD332 /* TSColVVMSectionHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSColVVMSectionHeaderView.swift; sourceTree = "<group>"; };
+		A80EDF262D71C13C003CD332 /* TSColVVMHeaderModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSColVVMHeaderModel.swift; sourceTree = "<group>"; };
+		A80EDF292D71C211003CD332 /* TSThemeVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSThemeVM.swift; sourceTree = "<group>"; };
+		A80EDF2C2D71C2BF003CD332 /* TSThemeModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSThemeModel.swift; sourceTree = "<group>"; };
+		A868A8992D75505800F6D884 /* TSThemeBannerCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSThemeBannerCell.swift; sourceTree = "<group>"; };
+		A868A89B2D75506500F6D884 /* TSThemeContentCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSThemeContentCell.swift; sourceTree = "<group>"; };
+		A868A89D2D7560B900F6D884 /* TSPageNullView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSPageNullView.swift; sourceTree = "<group>"; };
+		A868A89E2D7560B900F6D884 /* TSCommonloadingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSCommonloadingView.swift; sourceTree = "<group>"; };
+		A868A8A02D7560B900F6D884 /* TSViewTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSViewTool.swift; sourceTree = "<group>"; };
+		A868A8A62D757DCE00F6D884 /* UICollectionView+Refresh.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UICollectionView+Refresh.swift"; sourceTree = "<group>"; };
+		A868A8A92D7588A400F6D884 /* TSThemeBrowseVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSThemeBrowseVC.swift; sourceTree = "<group>"; };
+		A868A8AC2D758B5100F6D884 /* TSTBCallPreviewView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSTBCallPreviewView.swift; sourceTree = "<group>"; };
+		A868A8AE2D758BA800F6D884 /* TSTBDesktopPreviewView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSTBDesktopPreviewView.swift; sourceTree = "<group>"; };
+		A868A8B02D758C9600F6D884 /* TSTBBtnView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSTBBtnView.swift; sourceTree = "<group>"; };
+		A868A8B42D7598A500F6D884 /* TSTSIslandView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSTSIslandView.swift; sourceTree = "<group>"; };
+		A868A8B92D75C20400F6D884 /* TSThemeBrowseVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSThemeBrowseVM.swift; sourceTree = "<group>"; };
+		A868A8BB2D75C68300F6D884 /* TSAudioPlayer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSAudioPlayer.swift; sourceTree = "<group>"; };
+		A868A8BE2D76A17E00F6D884 /* Poppins-BlackItalic.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Poppins-BlackItalic.ttf"; sourceTree = "<group>"; };
+		A868A8C12D76A28F00F6D884 /* UIFont+TSEx.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIFont+TSEx.swift"; sourceTree = "<group>"; };
+		A868A8C62D76A43E00F6D884 /* TSThemeSetVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSThemeSetVC.swift; sourceTree = "<group>"; };
+		A868A8C82D76A45200F6D884 /* TSThemeSetItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSThemeSetItemView.swift; sourceTree = "<group>"; };
+		A868A8CD2D76AAAF00F6D884 /* TSThemeSetRingToneView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSThemeSetRingToneView.swift; sourceTree = "<group>"; };
+		A868A8CF2D76D02300F6D884 /* TSRingToneCellView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSRingToneCellView.swift; sourceTree = "<group>"; };
+		A868A8D22D76DC9E00F6D884 /* TSThemeSetVM.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSThemeSetVM.swift; sourceTree = "<group>"; };
+		A868A8D42D76E40E00F6D884 /* TSSetContactAvatar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSSetContactAvatar.swift; sourceTree = "<group>"; };
+		A868A8DA2D76F00800F6D884 /* TSBandRingTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSBandRingTool.swift; sourceTree = "<group>"; };
+		A868A8DD2D76F91500F6D884 /* AudioTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioTool.swift; sourceTree = "<group>"; };
+		A868A8DF2D76F9BB00F6D884 /* AudioConverter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AudioConverter.h; sourceTree = "<group>"; };
+		A868A8E02D76F9BB00F6D884 /* AudioConverter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AudioConverter.m; sourceTree = "<group>"; };
+		A868A8E22D76F9BC00F6D884 /* AIRingtone-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "AIRingtone-Bridging-Header.h"; sourceTree = "<group>"; };
+		A868A8E32D76FA4200F6D884 /* ExtAudioConverter.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ExtAudioConverter.h; sourceTree = "<group>"; };
+		A868A8E42D76FA4200F6D884 /* libmp3lame.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libmp3lame.a; sourceTree = "<group>"; };
+		A868A8E52D76FA4200F6D884 /* ExtAudioConverter.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ExtAudioConverter.m; sourceTree = "<group>"; };
+		A868A8E62D76FA4200F6D884 /* lame.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = lame.h; sourceTree = "<group>"; };
+		A868A8EA2D76FD9800F6D884 /* placeholder.band */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = placeholder.band; sourceTree = "<group>"; };
+		A868A8EC2D76FE5D00F6D884 /* tutorial-ring.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "tutorial-ring.mp4"; sourceTree = "<group>"; };
+		A868A8EE2D77040F00F6D884 /* TSLoadingAnimation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSLoadingAnimation.swift; sourceTree = "<group>"; };
+		A868A8F02D77081B00F6D884 /* TSContactsTool.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TSContactsTool.swift; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
-/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */
-		A80EDE482D7184DB003CD332 /* Exceptions for "AIRingtone" folder in "AIRingtone" target */ = {
-			isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
-			membershipExceptions = (
-				Info.plist,
-			);
-			target = A80EDE352D7184D9003CD332 /* AIRingtone */;
-		};
-/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */
-
-/* Begin PBXFileSystemSynchronizedRootGroup section */
-		A80EDE382D7184D9003CD332 /* AIRingtone */ = {
-			isa = PBXFileSystemSynchronizedRootGroup;
-			exceptions = (
-				A80EDE482D7184DB003CD332 /* Exceptions for "AIRingtone" folder in "AIRingtone" target */,
-			);
-			path = AIRingtone;
-			sourceTree = "<group>";
-		};
-/* End PBXFileSystemSynchronizedRootGroup section */
-
 /* Begin PBXFrameworksBuildPhase section */
 		A80EDE332D7184D9003CD332 /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				F5FF0EC10B0056B65FDB9C78 /* Pods_AIRingtone.framework in Frameworks */,
+				A868A8F22D770A9200F6D884 /* libmp3lame.a in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 /* End PBXFrameworksBuildPhase section */
 
 /* Begin PBXGroup section */
+		229F5991134C992950FFF4DF /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				39C823AB7F3D49E8B2356E07 /* Pods_AIRingtone.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+		95CE771C1383BB2F7CD1521C /* Pods */ = {
+			isa = PBXGroup;
+			children = (
+				5D578E9BD60A04ABE5E6E12E /* Pods-AIRingtone.debug.xcconfig */,
+				5DBE882FFF7A297F71A825E3 /* Pods-AIRingtone.release.xcconfig */,
+			);
+			path = Pods;
+			sourceTree = "<group>";
+		};
 		A80EDE2D2D7184D9003CD332 = {
 			isa = PBXGroup;
 			children = (
-				A80EDE382D7184D9003CD332 /* AIRingtone */,
+				A80EDE572D718623003CD332 /* AIRingtone */,
 				A80EDE372D7184D9003CD332 /* Products */,
+				95CE771C1383BB2F7CD1521C /* Pods */,
+				229F5991134C992950FFF4DF /* Frameworks */,
 			);
 			sourceTree = "<group>";
 		};
@@ -58,6 +200,403 @@
 			name = Products;
 			sourceTree = "<group>";
 		};
+		A80EDE572D718623003CD332 /* AIRingtone */ = {
+			isa = PBXGroup;
+			children = (
+				A80EDE632D718B19003CD332 /* Business */,
+				A80EDEC22D718CEA003CD332 /* Common */,
+				A80EDE4E2D718623003CD332 /* AppDelegate.swift */,
+				A868A8E22D76F9BC00F6D884 /* AIRingtone-Bridging-Header.h */,
+				A80EDE4F2D718623003CD332 /* Assets.xcassets */,
+				A80EDE502D718623003CD332 /* Info.plist */,
+				A80EDE522D718623003CD332 /* LaunchScreen.storyboard */,
+			);
+			path = AIRingtone;
+			sourceTree = "<group>";
+		};
+		A80EDE5F2D718AEF003CD332 /* Config */ = {
+			isa = PBXGroup;
+			children = (
+				A80EDE602D718AF4003CD332 /* TSConfig.swift */,
+				A80EDE642D718CAF003CD332 /* GlobalImports.swift */,
+			);
+			path = Config;
+			sourceTree = "<group>";
+		};
+		A80EDE622D718B0F003CD332 /* Res */ = {
+			isa = PBXGroup;
+			children = (
+				A868A8BE2D76A17E00F6D884 /* Poppins-BlackItalic.ttf */,
+			);
+			path = Res;
+			sourceTree = "<group>";
+		};
+		A80EDE632D718B19003CD332 /* Business */ = {
+			isa = PBXGroup;
+			children = (
+				A868A8A12D7560B900F6D884 /* VIewTool */,
+				A80EDF192D71AC2F003CD332 /* TSCollectionViewVM */,
+				A80EDF162D7193E4003CD332 /* TSTutorialsVC */,
+				A80EDF0F2D718E8E003CD332 /* TSAIPhotoVC */,
+				A80EDF0E2D718E58003CD332 /* TSAIRintoneVC */,
+				A80EDF0D2D718E42003CD332 /* TSThemeVC */,
+				A80EDF0A2D718DF7003CD332 /* LaunchVC */,
+				A80EDF002D718DF1003CD332 /* TSSetingVC */,
+				A80EDEF42D718DEA003CD332 /* TSTabBarController */,
+			);
+			path = Business;
+			sourceTree = "<group>";
+		};
+		A80EDE702D718CEA003CD332 /* TSNetWork */ = {
+			isa = PBXGroup;
+			children = (
+				A80EDE6C2D718CEA003CD332 /* TSNetworkManager.swift */,
+				A80EDE6D2D718CEA003CD332 /* TSNetWork+Business.swift */,
+				A80EDE6E2D718CEA003CD332 /* TSNetworkManager+Loading.swift */,
+				A80EDE6F2D718CEA003CD332 /* StreamPostRequest.swift */,
+			);
+			path = TSNetWork;
+			sourceTree = "<group>";
+		};
+		A80EDE712D718CEA003CD332 /* NetworkManager */ = {
+			isa = PBXGroup;
+			children = (
+				A80EDE702D718CEA003CD332 /* TSNetWork */,
+			);
+			path = NetworkManager;
+			sourceTree = "<group>";
+		};
+		A80EDEBA2D718CEA003CD332 /* Tool */ = {
+			isa = PBXGroup;
+			children = (
+				A868A8F02D77081B00F6D884 /* TSContactsTool.swift */,
+				A868A8DC2D76F90E00F6D884 /* TSBandRingTool */,
+				A868A8D42D76E40E00F6D884 /* TSSetContactAvatar.swift */,
+				A868A8BC2D75C68300F6D884 /* TSAudioPlayer */,
+				A80EDEB32D718CEA003CD332 /* TSRandomTextPicker.swift */,
+				A80EDEB62D718CEA003CD332 /* TSFileManagerTool.swift */,
+				A868A8EE2D77040F00F6D884 /* TSLoadingAnimation.swift */,
+				A80EDEB92D718CEA003CD332 /* WindowHelper.swift */,
+			);
+			path = Tool;
+			sourceTree = "<group>";
+		};
+		A80EDEBC2D718CEA003CD332 /* TSPhotoPickerManager */ = {
+			isa = PBXGroup;
+			children = (
+				A80EDEBB2D718CEA003CD332 /* TSPhotoPickerManager.swift */,
+			);
+			path = TSPhotoPickerManager;
+			sourceTree = "<group>";
+		};
+		A80EDEBE2D718CEA003CD332 /* UIStackView */ = {
+			isa = PBXGroup;
+			children = (
+				A80EDEBD2D718CEA003CD332 /* TSCustomStackView.swift */,
+			);
+			path = UIStackView;
+			sourceTree = "<group>";
+		};
+		A80EDEC02D718CEA003CD332 /* UILabel */ = {
+			isa = PBXGroup;
+			children = (
+				A80EDEBF2D718CEA003CD332 /* PaddedLabel.swift */,
+			);
+			path = UILabel;
+			sourceTree = "<group>";
+		};
+		A80EDEC12D718CEA003CD332 /* View */ = {
+			isa = PBXGroup;
+			children = (
+				A80EDEBC2D718CEA003CD332 /* TSPhotoPickerManager */,
+				A80EDEBE2D718CEA003CD332 /* UIStackView */,
+				A80EDEC02D718CEA003CD332 /* UILabel */,
+			);
+			path = View;
+			sourceTree = "<group>";
+		};
+		A80EDEC22D718CEA003CD332 /* Common */ = {
+			isa = PBXGroup;
+			children = (
+				A868A8C02D76A28A00F6D884 /* Ex */,
+				A80EDE622D718B0F003CD332 /* Res */,
+				A80EDE5F2D718AEF003CD332 /* Config */,
+				A80EDE712D718CEA003CD332 /* NetworkManager */,
+				A80EDEBA2D718CEA003CD332 /* Tool */,
+				A80EDEC12D718CEA003CD332 /* View */,
+			);
+			path = Common;
+			sourceTree = "<group>";
+		};
+		A80EDEF42D718DEA003CD332 /* TSTabBarController */ = {
+			isa = PBXGroup;
+			children = (
+				A80EDEF32D718DEA003CD332 /* TSTabBarController.swift */,
+			);
+			path = TSTabBarController;
+			sourceTree = "<group>";
+		};
+		A80EDEF72D718DF1003CD332 /* TSBusinessWebVC */ = {
+			isa = PBXGroup;
+			children = (
+				A80EDEF62D718DF1003CD332 /* TSBusinessWebVC.swift */,
+			);
+			path = TSBusinessWebVC;
+			sourceTree = "<group>";
+		};
+		A80EDEFA2D718DF1003CD332 /* View */ = {
+			isa = PBXGroup;
+			children = (
+				A80EDEF82D718DF1003CD332 /* SettingPurchaseTopView.swift */,
+				A80EDEF92D718DF1003CD332 /* TSSettingListView.swift */,
+			);
+			path = View;
+			sourceTree = "<group>";
+		};
+		A80EDEFF2D718DF1003CD332 /* SetingVC */ = {
+			isa = PBXGroup;
+			children = (
+				A80EDEFA2D718DF1003CD332 /* View */,
+				A80EDEFB2D718DF1003CD332 /* TSSetingViewModel.swift */,
+				A80EDEFC2D718DF1003CD332 /* TSSetingModel.swift */,
+				A80EDEFD2D718DF1003CD332 /* ShareActivityItemProvider.swift */,
+				A80EDEFE2D718DF1003CD332 /* TSSetingVC.swift */,
+			);
+			path = SetingVC;
+			sourceTree = "<group>";
+		};
+		A80EDF002D718DF1003CD332 /* TSSetingVC */ = {
+			isa = PBXGroup;
+			children = (
+				A80EDEF72D718DF1003CD332 /* TSBusinessWebVC */,
+				A80EDEFF2D718DF1003CD332 /* SetingVC */,
+			);
+			path = TSSetingVC;
+			sourceTree = "<group>";
+		};
+		A80EDF0A2D718DF7003CD332 /* LaunchVC */ = {
+			isa = PBXGroup;
+			children = (
+				A80EDF082D718DF7003CD332 /* TSBootPageVC.swift */,
+				A80EDF092D718DF7003CD332 /* TSLaunchVC.swift */,
+			);
+			path = LaunchVC;
+			sourceTree = "<group>";
+		};
+		A80EDF0D2D718E42003CD332 /* TSThemeVC */ = {
+			isa = PBXGroup;
+			children = (
+				A868A8C52D76A43300F6D884 /* TSThemeSetVC */,
+				A868A8C42D76A42700F6D884 /* TSThemeVC */,
+				A868A8A82D75889700F6D884 /* TSThemeBrowseVC */,
+			);
+			path = TSThemeVC;
+			sourceTree = "<group>";
+		};
+		A80EDF0E2D718E58003CD332 /* TSAIRintoneVC */ = {
+			isa = PBXGroup;
+			children = (
+				A80EDF102D718ECF003CD332 /* TSAIRintoneVC.swift */,
+			);
+			path = TSAIRintoneVC;
+			sourceTree = "<group>";
+		};
+		A80EDF0F2D718E8E003CD332 /* TSAIPhotoVC */ = {
+			isa = PBXGroup;
+			children = (
+				A80EDF122D718EF6003CD332 /* TSAIPhotoVC.swift */,
+			);
+			path = TSAIPhotoVC;
+			sourceTree = "<group>";
+		};
+		A80EDF162D7193E4003CD332 /* TSTutorialsVC */ = {
+			isa = PBXGroup;
+			children = (
+				A80EDF172D7193ED003CD332 /* TSTutorialsVC.swift */,
+			);
+			path = TSTutorialsVC;
+			sourceTree = "<group>";
+		};
+		A80EDF192D71AC2F003CD332 /* TSCollectionViewVM */ = {
+			isa = PBXGroup;
+			children = (
+				A868A8A52D757DC100F6D884 /* View */,
+				A80EDF252D71C122003CD332 /* Model */,
+				A80EDF222D71C081003CD332 /* Header */,
+				A80EDF1A2D71AC8F003CD332 /* TSCollectionViewVM.swift */,
+				A80EDF1C2D71BE11003CD332 /* TSCollectionViewVM+Config.swift */,
+			);
+			path = TSCollectionViewVM;
+			sourceTree = "<group>";
+		};
+		A80EDF222D71C081003CD332 /* Header */ = {
+			isa = PBXGroup;
+			children = (
+				A80EDF232D71C091003CD332 /* TSColVVMSectionHeaderView.swift */,
+				A80EDF262D71C13C003CD332 /* TSColVVMHeaderModel.swift */,
+			);
+			path = Header;
+			sourceTree = "<group>";
+		};
+		A80EDF252D71C122003CD332 /* Model */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			path = Model;
+			sourceTree = "<group>";
+		};
+		A80EDF282D71C20D003CD332 /* VM */ = {
+			isa = PBXGroup;
+			children = (
+				A80EDF292D71C211003CD332 /* TSThemeVM.swift */,
+			);
+			path = VM;
+			sourceTree = "<group>";
+		};
+		A80EDF2B2D71C2B7003CD332 /* Model */ = {
+			isa = PBXGroup;
+			children = (
+				A80EDF2C2D71C2BF003CD332 /* TSThemeModel.swift */,
+			);
+			path = Model;
+			sourceTree = "<group>";
+		};
+		A868A8982D75505100F6D884 /* View */ = {
+			isa = PBXGroup;
+			children = (
+				A868A89B2D75506500F6D884 /* TSThemeContentCell.swift */,
+				A868A8992D75505800F6D884 /* TSThemeBannerCell.swift */,
+			);
+			path = View;
+			sourceTree = "<group>";
+		};
+		A868A89F2D7560B900F6D884 /* UILabel */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			path = UILabel;
+			sourceTree = "<group>";
+		};
+		A868A8A12D7560B900F6D884 /* VIewTool */ = {
+			isa = PBXGroup;
+			children = (
+				A868A8CF2D76D02300F6D884 /* TSRingToneCellView.swift */,
+				A868A89D2D7560B900F6D884 /* TSPageNullView.swift */,
+				A868A89E2D7560B900F6D884 /* TSCommonloadingView.swift */,
+				A868A89F2D7560B900F6D884 /* UILabel */,
+				A868A8A02D7560B900F6D884 /* TSViewTool.swift */,
+			);
+			path = VIewTool;
+			sourceTree = "<group>";
+		};
+		A868A8A52D757DC100F6D884 /* View */ = {
+			isa = PBXGroup;
+			children = (
+				A868A8A62D757DCE00F6D884 /* UICollectionView+Refresh.swift */,
+			);
+			path = View;
+			sourceTree = "<group>";
+		};
+		A868A8A82D75889700F6D884 /* TSThemeBrowseVC */ = {
+			isa = PBXGroup;
+			children = (
+				A868A8B82D75C1FB00F6D884 /* VM */,
+				A868A8AB2D758B4100F6D884 /* View */,
+				A868A8A92D7588A400F6D884 /* TSThemeBrowseVC.swift */,
+			);
+			path = TSThemeBrowseVC;
+			sourceTree = "<group>";
+		};
+		A868A8AB2D758B4100F6D884 /* View */ = {
+			isa = PBXGroup;
+			children = (
+				A868A8B42D7598A500F6D884 /* TSTSIslandView.swift */,
+				A868A8B02D758C9600F6D884 /* TSTBBtnView.swift */,
+				A868A8AC2D758B5100F6D884 /* TSTBCallPreviewView.swift */,
+				A868A8AE2D758BA800F6D884 /* TSTBDesktopPreviewView.swift */,
+			);
+			path = View;
+			sourceTree = "<group>";
+		};
+		A868A8B82D75C1FB00F6D884 /* VM */ = {
+			isa = PBXGroup;
+			children = (
+				A868A8B92D75C20400F6D884 /* TSThemeBrowseVM.swift */,
+			);
+			path = VM;
+			sourceTree = "<group>";
+		};
+		A868A8BC2D75C68300F6D884 /* TSAudioPlayer */ = {
+			isa = PBXGroup;
+			children = (
+				A868A8BB2D75C68300F6D884 /* TSAudioPlayer.swift */,
+			);
+			path = TSAudioPlayer;
+			sourceTree = "<group>";
+		};
+		A868A8C02D76A28A00F6D884 /* Ex */ = {
+			isa = PBXGroup;
+			children = (
+				A868A8C12D76A28F00F6D884 /* UIFont+TSEx.swift */,
+			);
+			path = Ex;
+			sourceTree = "<group>";
+		};
+		A868A8C42D76A42700F6D884 /* TSThemeVC */ = {
+			isa = PBXGroup;
+			children = (
+				A868A8982D75505100F6D884 /* View */,
+				A80EDF2B2D71C2B7003CD332 /* Model */,
+				A80EDF282D71C20D003CD332 /* VM */,
+				A80EDF142D718F12003CD332 /* TSThemeVC.swift */,
+			);
+			path = TSThemeVC;
+			sourceTree = "<group>";
+		};
+		A868A8C52D76A43300F6D884 /* TSThemeSetVC */ = {
+			isa = PBXGroup;
+			children = (
+				A868A8D12D76DC9900F6D884 /* VM */,
+				A868A8CD2D76AAAF00F6D884 /* TSThemeSetRingToneView.swift */,
+				A868A8C82D76A45200F6D884 /* TSThemeSetItemView.swift */,
+				A868A8C62D76A43E00F6D884 /* TSThemeSetVC.swift */,
+			);
+			path = TSThemeSetVC;
+			sourceTree = "<group>";
+		};
+		A868A8D12D76DC9900F6D884 /* VM */ = {
+			isa = PBXGroup;
+			children = (
+				A868A8D22D76DC9E00F6D884 /* TSThemeSetVM.swift */,
+			);
+			path = VM;
+			sourceTree = "<group>";
+		};
+		A868A8DC2D76F90E00F6D884 /* TSBandRingTool */ = {
+			isa = PBXGroup;
+			children = (
+				A868A8DF2D76F9BB00F6D884 /* AudioConverter.h */,
+				A868A8E02D76F9BB00F6D884 /* AudioConverter.m */,
+				A868A8E72D76FA4200F6D884 /* libmp3 */,
+				A868A8DD2D76F91500F6D884 /* AudioTool.swift */,
+				A868A8EC2D76FE5D00F6D884 /* tutorial-ring.mp4 */,
+				A868A8DA2D76F00800F6D884 /* TSBandRingTool.swift */,
+				A868A8EA2D76FD9800F6D884 /* placeholder.band */,
+			);
+			path = TSBandRingTool;
+			sourceTree = "<group>";
+		};
+		A868A8E72D76FA4200F6D884 /* libmp3 */ = {
+			isa = PBXGroup;
+			children = (
+				A868A8E32D76FA4200F6D884 /* ExtAudioConverter.h */,
+				A868A8E42D76FA4200F6D884 /* libmp3lame.a */,
+				A868A8E52D76FA4200F6D884 /* ExtAudioConverter.m */,
+				A868A8E62D76FA4200F6D884 /* lame.h */,
+			);
+			path = libmp3;
+			sourceTree = "<group>";
+		};
 /* End PBXGroup section */
 
 /* Begin PBXNativeTarget section */
@@ -65,20 +604,17 @@
 			isa = PBXNativeTarget;
 			buildConfigurationList = A80EDE492D7184DB003CD332 /* Build configuration list for PBXNativeTarget "AIRingtone" */;
 			buildPhases = (
+				955A19BE27CEE13A37F689F6 /* [CP] Check Pods Manifest.lock */,
 				A80EDE322D7184D9003CD332 /* Sources */,
 				A80EDE332D7184D9003CD332 /* Frameworks */,
 				A80EDE342D7184D9003CD332 /* Resources */,
+				B7757A8921F6C3AA38945D37 /* [CP] Embed Pods Frameworks */,
 			);
 			buildRules = (
 			);
 			dependencies = (
 			);
-			fileSystemSynchronizedGroups = (
-				A80EDE382D7184D9003CD332 /* AIRingtone */,
-			);
 			name = AIRingtone;
-			packageProductDependencies = (
-			);
 			productName = AIRingtone;
 			productReference = A80EDE362D7184D9003CD332 /* AIRingtone.app */;
 			productType = "com.apple.product-type.application";
@@ -95,6 +631,7 @@
 				TargetAttributes = {
 					A80EDE352D7184D9003CD332 = {
 						CreatedOnToolsVersion = 16.2;
+						LastSwiftMigration = 1620;
 					};
 				};
 			};
@@ -122,75 +659,219 @@
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				A80EDE5B2D718623003CD332 /* Assets.xcassets in Resources */,
+				A868A8ED2D76FE5D00F6D884 /* tutorial-ring.mp4 in Resources */,
+				A868A8BF2D76A17E00F6D884 /* Poppins-BlackItalic.ttf in Resources */,
+				A868A8EB2D76FD9800F6D884 /* placeholder.band in Resources */,
+				A80EDE5D2D718623003CD332 /* LaunchScreen.storyboard in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 /* End PBXResourcesBuildPhase section */
 
+/* Begin PBXShellScriptBuildPhase section */
+		955A19BE27CEE13A37F689F6 /* [CP] Check Pods Manifest.lock */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputFileListPaths = (
+			);
+			inputPaths = (
+				"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+				"${PODS_ROOT}/Manifest.lock",
+			);
+			name = "[CP] Check Pods Manifest.lock";
+			outputFileListPaths = (
+			);
+			outputPaths = (
+				"$(DERIVED_FILE_DIR)/Pods-AIRingtone-checkManifestLockResult.txt",
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n    # print error to STDERR\n    echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n    exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+			showEnvVarsInLog = 0;
+		};
+		B7757A8921F6C3AA38945D37 /* [CP] Embed Pods Frameworks */ = {
+			isa = PBXShellScriptBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			inputFileListPaths = (
+				"${PODS_ROOT}/Target Support Files/Pods-AIRingtone/Pods-AIRingtone-frameworks-${CONFIGURATION}-input-files.xcfilelist",
+			);
+			name = "[CP] Embed Pods Frameworks";
+			outputFileListPaths = (
+				"${PODS_ROOT}/Target Support Files/Pods-AIRingtone/Pods-AIRingtone-frameworks-${CONFIGURATION}-output-files.xcfilelist",
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-AIRingtone/Pods-AIRingtone-frameworks.sh\"\n";
+			showEnvVarsInLog = 0;
+		};
+/* End PBXShellScriptBuildPhase section */
+
 /* Begin PBXSourcesBuildPhase section */
 		A80EDE322D7184D9003CD332 /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				A868A8C22D76A2A700F6D884 /* UIFont+TSEx.swift in Sources */,
+				A868A8C92D76A45900F6D884 /* TSThemeSetItemView.swift in Sources */,
+				A868A8DB2D76F00C00F6D884 /* TSBandRingTool.swift in Sources */,
+				A868A8F12D77081C00F6D884 /* TSContactsTool.swift in Sources */,
+				A80EDF2D2D71C2CA003CD332 /* TSThemeModel.swift in Sources */,
+				A80EDE582D718623003CD332 /* AppDelegate.swift in Sources */,
+				A868A8EF2D77041400F6D884 /* TSLoadingAnimation.swift in Sources */,
+				A80EDE652D718CAF003CD332 /* GlobalImports.swift in Sources */,
+				A80EDF112D718ED1003CD332 /* TSAIRintoneVC.swift in Sources */,
+				A80EDF1B2D71AC90003CD332 /* TSCollectionViewVM.swift in Sources */,
+				A80EDE612D718AF4003CD332 /* TSConfig.swift in Sources */,
+				A80EDF152D718F13003CD332 /* TSThemeVC.swift in Sources */,
+				A80EDEC62D718CEA003CD332 /* TSRandomTextPicker.swift in Sources */,
+				A80EDEC82D718CEA003CD332 /* TSNetworkManager+Loading.swift in Sources */,
+				A80EDECB2D718CEA003CD332 /* TSNetWork+Business.swift in Sources */,
+				A80EDF0B2D718DF7003CD332 /* TSBootPageVC.swift in Sources */,
+				A80EDF0C2D718DF7003CD332 /* TSLaunchVC.swift in Sources */,
+				A80EDEDB2D718CEA003CD332 /* TSPhotoPickerManager.swift in Sources */,
+				A868A8BD2D75C68300F6D884 /* TSAudioPlayer.swift in Sources */,
+				A80EDEE32D718CEA003CD332 /* TSNetworkManager.swift in Sources */,
+				A868A8AF2D758BBC00F6D884 /* TSTBDesktopPreviewView.swift in Sources */,
+				A80EDEF52D718DEA003CD332 /* TSTabBarController.swift in Sources */,
+				A868A8B52D7598C000F6D884 /* TSTSIslandView.swift in Sources */,
+				A80EDEE72D718CEA003CD332 /* TSCustomStackView.swift in Sources */,
+				A868A8D52D76E41800F6D884 /* TSSetContactAvatar.swift in Sources */,
+				A868A8E82D76FA4200F6D884 /* ExtAudioConverter.m in Sources */,
+				A80EDF132D718EF7003CD332 /* TSAIPhotoVC.swift in Sources */,
+				A868A8DE2D76F91500F6D884 /* AudioTool.swift in Sources */,
+				A80EDF242D71C0AA003CD332 /* TSColVVMSectionHeaderView.swift in Sources */,
+				A80EDF1D2D71BE15003CD332 /* TSCollectionViewVM+Config.swift in Sources */,
+				A868A8E12D76F9BB00F6D884 /* AudioConverter.m in Sources */,
+				A868A8BA2D75C22300F6D884 /* TSThemeBrowseVM.swift in Sources */,
+				A868A89C2D75506C00F6D884 /* TSThemeContentCell.swift in Sources */,
+				A80EDEE92D718CEA003CD332 /* TSFileManagerTool.swift in Sources */,
+				A868A8A22D7560B900F6D884 /* TSPageNullView.swift in Sources */,
+				A868A8CE2D76AAC600F6D884 /* TSThemeSetRingToneView.swift in Sources */,
+				A868A8A32D7560B900F6D884 /* TSViewTool.swift in Sources */,
+				A868A8A42D7560B900F6D884 /* TSCommonloadingView.swift in Sources */,
+				A868A89A2D75505E00F6D884 /* TSThemeBannerCell.swift in Sources */,
+				A80EDF182D7193EE003CD332 /* TSTutorialsVC.swift in Sources */,
+				A80EDEEA2D718CEA003CD332 /* PaddedLabel.swift in Sources */,
+				A80EDEEB2D718CEA003CD332 /* StreamPostRequest.swift in Sources */,
+				A80EDF2A2D71C215003CD332 /* TSThemeVM.swift in Sources */,
+				A868A8AA2D7588A500F6D884 /* TSThemeBrowseVC.swift in Sources */,
+				A868A8B12D758CA400F6D884 /* TSTBBtnView.swift in Sources */,
+				A868A8D32D76DE7600F6D884 /* TSThemeSetVM.swift in Sources */,
+				A80EDF272D71C13D003CD332 /* TSColVVMHeaderModel.swift in Sources */,
+				A868A8AD2D758B6B00F6D884 /* TSTBCallPreviewView.swift in Sources */,
+				A80EDF012D718DF1003CD332 /* TSBusinessWebVC.swift in Sources */,
+				A868A8A72D757DD600F6D884 /* UICollectionView+Refresh.swift in Sources */,
+				A80EDF022D718DF1003CD332 /* TSSettingListView.swift in Sources */,
+				A80EDF032D718DF1003CD332 /* ShareActivityItemProvider.swift in Sources */,
+				A80EDF042D718DF1003CD332 /* TSSetingModel.swift in Sources */,
+				A80EDF052D718DF1003CD332 /* TSSetingVC.swift in Sources */,
+				A80EDF062D718DF1003CD332 /* SettingPurchaseTopView.swift in Sources */,
+				A80EDF072D718DF1003CD332 /* TSSetingViewModel.swift in Sources */,
+				A868A8C72D76A44500F6D884 /* TSThemeSetVC.swift in Sources */,
+				A80EDEEC2D718CEA003CD332 /* WindowHelper.swift in Sources */,
+				A868A8D02D76D03900F6D884 /* TSRingToneCellView.swift in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 /* End PBXSourcesBuildPhase section */
 
+/* Begin PBXVariantGroup section */
+		A80EDE522D718623003CD332 /* LaunchScreen.storyboard */ = {
+			isa = PBXVariantGroup;
+			children = (
+				A80EDE512D718623003CD332 /* Base */,
+			);
+			name = LaunchScreen.storyboard;
+			sourceTree = "<group>";
+		};
+/* End PBXVariantGroup section */
+
 /* Begin XCBuildConfiguration section */
 		A80EDE4A2D7184DB003CD332 /* Debug */ = {
 			isa = XCBuildConfiguration;
+			baseConfigurationReference = 5D578E9BD60A04ABE5E6E12E /* Pods-AIRingtone.debug.xcconfig */;
 			buildSettings = {
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_STYLE = Automatic;
 				CURRENT_PROJECT_VERSION = 1;
 				DEVELOPMENT_TEAM = 65UD255J84;
 				GENERATE_INFOPLIST_FILE = YES;
 				INFOPLIST_FILE = AIRingtone/Info.plist;
+				INFOPLIST_KEY_NSContactsUsageDescription = "Allow \"Contacts\" permission to set contact photo";
+				INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "Allow us to access Photos in order to save wallpapers to your device.";
 				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
 				INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
-				INFOPLIST_KEY_UIMainStoryboardFile = Main;
-				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
-				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+				INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
+				IPHONEOS_DEPLOYMENT_TARGET = 14.0;
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"@executable_path/Frameworks",
 				);
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/AIRingtone/Business/TSThemeVC/TSThemeSetVC/TSBandRingTool/libmp3",
+					"$(PROJECT_DIR)/AIRingtone/Common/Tool/TSBandRingTool/libmp3",
+				);
 				MARKETING_VERSION = 1.0;
 				PRODUCT_BUNDLE_IDENTIFIER = com.tsyh.AIRingtone;
 				PRODUCT_NAME = "$(TARGET_NAME)";
+				SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+				SUPPORTS_MACCATALYST = NO;
+				SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
+				SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
 				SWIFT_EMIT_LOC_STRINGS = YES;
+				SWIFT_OBJC_BRIDGING_HEADER = "AIRingtone/AIRingtone-Bridging-Header.h";
+				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
 				SWIFT_VERSION = 5.0;
-				TARGETED_DEVICE_FAMILY = "1,2";
+				TARGETED_DEVICE_FAMILY = 1;
 			};
 			name = Debug;
 		};
 		A80EDE4B2D7184DB003CD332 /* Release */ = {
 			isa = XCBuildConfiguration;
+			baseConfigurationReference = 5DBE882FFF7A297F71A825E3 /* Pods-AIRingtone.release.xcconfig */;
 			buildSettings = {
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
+				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_STYLE = Automatic;
 				CURRENT_PROJECT_VERSION = 1;
 				DEVELOPMENT_TEAM = 65UD255J84;
 				GENERATE_INFOPLIST_FILE = YES;
 				INFOPLIST_FILE = AIRingtone/Info.plist;
+				INFOPLIST_KEY_NSContactsUsageDescription = "Allow \"Contacts\" permission to set contact photo";
+				INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "Allow us to access Photos in order to save wallpapers to your device.";
 				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
 				INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
-				INFOPLIST_KEY_UIMainStoryboardFile = Main;
-				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
-				INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
+				INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait;
+				IPHONEOS_DEPLOYMENT_TARGET = 14.0;
 				LD_RUNPATH_SEARCH_PATHS = (
 					"$(inherited)",
 					"@executable_path/Frameworks",
 				);
+				LIBRARY_SEARCH_PATHS = (
+					"$(inherited)",
+					"$(PROJECT_DIR)/AIRingtone/Business/TSThemeVC/TSThemeSetVC/TSBandRingTool/libmp3",
+					"$(PROJECT_DIR)/AIRingtone/Common/Tool/TSBandRingTool/libmp3",
+				);
 				MARKETING_VERSION = 1.0;
 				PRODUCT_BUNDLE_IDENTIFIER = com.tsyh.AIRingtone;
 				PRODUCT_NAME = "$(TARGET_NAME)";
+				SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
+				SUPPORTS_MACCATALYST = NO;
+				SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
+				SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
 				SWIFT_EMIT_LOC_STRINGS = YES;
+				SWIFT_OBJC_BRIDGING_HEADER = "AIRingtone/AIRingtone-Bridging-Header.h";
 				SWIFT_VERSION = 5.0;
-				TARGETED_DEVICE_FAMILY = "1,2";
+				TARGETED_DEVICE_FAMILY = 1;
 			};
 			name = Release;
 		};

+ 1 - 1
AIRingtone.xcodeproj/xcuserdata/100years.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -7,7 +7,7 @@
 		<key>AIRingtone.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>0</integer>
+			<integer>35</integer>
 		</dict>
 	</dict>
 </dict>

+ 10 - 0
AIRingtone.xcworkspace/contents.xcworkspacedata

@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Workspace
+   version = "1.0">
+   <FileRef
+      location = "group:AIRingtone.xcodeproj">
+   </FileRef>
+   <FileRef
+      location = "group:Pods/Pods.xcodeproj">
+   </FileRef>
+</Workspace>

+ 6 - 0
AIRingtone/AIRingtone-Bridging-Header.h

@@ -0,0 +1,6 @@
+//
+//  Use this file to import your target's public headers that you would like to expose to Swift.
+//
+
+#import "ExtAudioConverter.h"
+#import "AudioConverter.h"

+ 59 - 12
AIRingtone/AppDelegate.swift

@@ -10,27 +10,74 @@ import UIKit
 @main
 class AppDelegate: UIResponder, UIApplicationDelegate {
 
-
-
+    var window: UIWindow?
+    var backgroundTaskIdentifier: UIBackgroundTaskIdentifier = .invalid
+    
     func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
-        // Override point for customization after application launch.
+        window = UIWindow(frame: UIScreen.main.bounds)
+        window?.backgroundColor = UIColor.white
+        window?.makeKeyAndVisible()
+        initPlatform()
+        goToLoadVC()
         return true
     }
 
-    // MARK: UISceneSession Lifecycle
+    func goToLoadVC() {
+        let launchVC = TSLaunchVC()
+        launchVC.dismissHandler = { [weak self]  in
+            guard let self = self else { return }
+            JudgmentSkipPage()
+        }
+        window?.rootViewController = launchVC
+    }
 
-    func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
-        // Called when a new scene session is being created.
-        // Use this method to select a configuration to create the new scene with.
-        return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
+    func goToTab(){
+        window?.rootViewController = TSTabBarController()
     }
+    
 
-    func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
-        // Called when the user discards a scene session.
-        // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
-        // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
+    func JudgmentSkipPage() {
+        //去掉引导页
+//        if UserDefaults.standard.string(forKey: "isFirstInstallApp") == nil {
+//            window?.rootViewController = TSBootPageVC { [weak self]  in
+//                guard let self = self else { return }
+//                UserDefaults.standard.set("1", forKey: "isFirstInstallApp")
+//                UserDefaults.standard.synchronize()
+//                goToTab()
+//            }
+//        }else{
+            goToTab()
+//        }
     }
+    
 
+    func initPlatform() {
+        TSColorConfigShared.naviMianTextColor = .white
+    }
 
 }
 
+extension AppDelegate {
+
+    func applicationDidEnterBackground(_ application: UIApplication) {
+        beginBackgroundTask()
+    }
+    
+    func beginBackgroundTask() {
+        backgroundTaskIdentifier = UIApplication.shared.beginBackgroundTask { [weak self] in
+            self?.endBackgroundTask()
+        }
+    }
+    
+    func endBackgroundTask() {
+        if backgroundTaskIdentifier != .invalid {
+            UIApplication.shared.endBackgroundTask(backgroundTaskIdentifier)
+            backgroundTaskIdentifier = .invalid
+        }
+    }
+    
+    func applicationWillTerminate(_ application: UIApplication) {
+        
+    }
+    
+}

+ 6 - 0
AIRingtone/Assets.xcassets/AIRing/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 22 - 0
AIRingtone/Assets.xcassets/AIRing/nav_title_aiRing.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "nav_title_aiRing@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "nav_title_aiRing@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/AIRing/nav_title_aiRing.imageset/nav_title_aiRing@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/AIRing/nav_title_aiRing.imageset/nav_title_aiRing@3x.png


+ 6 - 0
AIRingtone/Assets.xcassets/Common/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 22 - 0
AIRingtone/Assets.xcassets/Common/add.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "add@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "add@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/add.imageset/add@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/add.imageset/add@3x.png


+ 22 - 0
AIRingtone/Assets.xcassets/Common/clear_text.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "clear_text@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "clear_text@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/clear_text.imageset/clear_text@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/clear_text.imageset/clear_text@3x.png


+ 22 - 0
AIRingtone/Assets.xcassets/Common/delete.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "delete@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "delete@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/delete.imageset/delete@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/delete.imageset/delete@3x.png


+ 22 - 0
AIRingtone/Assets.xcassets/Common/delete_redRound.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "delete_redRound@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "delete_redRound@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/delete_redRound.imageset/delete_redRound@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/delete_redRound.imageset/delete_redRound@3x.png


+ 22 - 0
AIRingtone/Assets.xcassets/Common/delete_white.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "delete_white@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "delete_white@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/delete_white.imageset/delete_white@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/delete_white.imageset/delete_white@3x.png


+ 22 - 0
AIRingtone/Assets.xcassets/Common/down_arrow_line.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "down_arrow@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "down_arrow@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/down_arrow_line.imageset/down_arrow@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/down_arrow_line.imageset/down_arrow@3x.png


+ 22 - 0
AIRingtone/Assets.xcassets/Common/down_arrow_white.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "down_arrow_white@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "down_arrow_white@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/down_arrow_white.imageset/down_arrow_white@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/down_arrow_white.imageset/down_arrow_white@3x.png


+ 22 - 0
AIRingtone/Assets.xcassets/Common/failed_big.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "failed_big@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "failed_big@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/failed_big.imageset/failed_big@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/failed_big.imageset/failed_big@3x.png


+ 22 - 0
AIRingtone/Assets.xcassets/Common/inspiration_yellow.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "inspiration_yellow@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "inspiration_yellow@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/inspiration_yellow.imageset/inspiration_yellow@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/inspiration_yellow.imageset/inspiration_yellow@3x.png


+ 22 - 0
AIRingtone/Assets.xcassets/Common/keyboard.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "keyboard@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "keyboard@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/keyboard.imageset/keyboard@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/keyboard.imageset/keyboard@3x.png


+ 22 - 0
AIRingtone/Assets.xcassets/Common/navi_back_white.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "navi_back_white@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "navi_back_white@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/navi_back_white.imageset/navi_back_white@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/navi_back_white.imageset/navi_back_white@3x.png


+ 22 - 0
AIRingtone/Assets.xcassets/Common/pageNull.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "pageNull@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "pageNull@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/pageNull.imageset/pageNull@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/pageNull.imageset/pageNull@3x.png


+ 22 - 0
AIRingtone/Assets.xcassets/Common/page_left.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "page_left@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "page_left@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/page_left.imageset/page_left@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/page_left.imageset/page_left@3x.png


+ 22 - 0
AIRingtone/Assets.xcassets/Common/page_right.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "page_right@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "page_right@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/page_right.imageset/page_right@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/page_right.imageset/page_right@3x.png


+ 22 - 0
AIRingtone/Assets.xcassets/Common/placeholderImage.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "placeholderImage@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "placeholderImage@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/placeholderImage.imageset/placeholderImage@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/placeholderImage.imageset/placeholderImage@3x.png


+ 22 - 0
AIRingtone/Assets.xcassets/Common/ringtone_pause.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "ringtone_pause@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "ringtone_pause@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/ringtone_pause.imageset/ringtone_pause@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/ringtone_pause.imageset/ringtone_pause@3x.png


+ 22 - 0
AIRingtone/Assets.xcassets/Common/ringtone_play.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "ringtone_play@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "ringtone_play@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/ringtone_play.imageset/ringtone_play@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/ringtone_play.imageset/ringtone_play@3x.png


+ 22 - 0
AIRingtone/Assets.xcassets/Common/setting.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "setting@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "setting@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/setting.imageset/setting@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/setting.imageset/setting@3x.png


+ 22 - 0
AIRingtone/Assets.xcassets/Common/submit_btn_bg.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "submit_btn_bg@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "submit_btn_bg@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/submit_btn_bg.imageset/submit_btn_bg@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/submit_btn_bg.imageset/submit_btn_bg@3x.png


+ 22 - 0
AIRingtone/Assets.xcassets/Common/submit_btn_dis_bg.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "submit_btn_dis_bg@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "submit_btn_dis_bg@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/submit_btn_dis_bg.imageset/submit_btn_dis_bg@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/submit_btn_dis_bg.imageset/submit_btn_dis_bg@3x.png


+ 22 - 0
AIRingtone/Assets.xcassets/Common/submit_btn_small_bg.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "submit_btn_small_bg@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "submit_btn_small_bg@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/submit_btn_small_bg.imageset/submit_btn_small_bg@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/submit_btn_small_bg.imageset/submit_btn_small_bg@3x.png


+ 22 - 0
AIRingtone/Assets.xcassets/Common/success_icon.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "icon_已下载@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "icon_已下载@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/success_icon.imageset/icon_已下载@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/success_icon.imageset/icon_已下载@3x.png


+ 22 - 0
AIRingtone/Assets.xcassets/Common/tutorials.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "tutorials@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "tutorials@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/tutorials.imageset/tutorials@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/tutorials.imageset/tutorials@3x.png


+ 22 - 0
AIRingtone/Assets.xcassets/Common/tutorials_banner.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "tutorials_banner@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "tutorials_banner@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/tutorials_banner.imageset/tutorials_banner@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/tutorials_banner.imageset/tutorials_banner@3x.png


+ 22 - 0
AIRingtone/Assets.xcassets/Common/view_bj.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "view_bj@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "view_bj@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/view_bj.imageset/view_bj@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/view_bj.imageset/view_bj@3x.png


+ 22 - 0
AIRingtone/Assets.xcassets/Common/white_right_arrow.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "white_right_arrow@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "white_right_arrow@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/white_right_arrow.imageset/white_right_arrow@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/white_right_arrow.imageset/white_right_arrow@3x.png


+ 22 - 0
AIRingtone/Assets.xcassets/Common/x.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "x@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "x@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/x.imageset/x@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Common/x.imageset/x@3x.png


+ 6 - 0
AIRingtone/Assets.xcassets/Setting/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 22 - 0
AIRingtone/Assets.xcassets/Setting/nav_title_setting.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "nav_title_setting@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "nav_title_setting@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Setting/nav_title_setting.imageset/nav_title_setting@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Setting/nav_title_setting.imageset/nav_title_setting@3x.png


+ 6 - 0
AIRingtone/Assets.xcassets/Tabbar/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 22 - 0
AIRingtone/Assets.xcassets/Tabbar/tabbar_select_avatar.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "tabbar_select_avatar@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "tabbar_select_avatar@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Tabbar/tabbar_select_avatar.imageset/tabbar_select_avatar@2x.png


TEMPAT SAMPAH
AIRingtone/Assets.xcassets/Tabbar/tabbar_select_avatar.imageset/tabbar_select_avatar@3x.png


Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini