├── _config.yml ├── Pods ├── Headers │ ├── Private │ │ └── BRLOptionParser │ │ │ └── BRLOptionParser.h │ └── Public │ │ └── BRLOptionParser │ │ └── BRLOptionParser.h ├── Target Support Files │ ├── RxCocoa │ │ ├── RxCocoa.modulemap │ │ ├── RxCocoa-dummy.m │ │ ├── RxCocoa-prefix.pch │ │ ├── RxCocoa-umbrella.h │ │ ├── RxCocoa.xcconfig │ │ ├── RxCocoa.debug.xcconfig │ │ ├── RxCocoa.release.xcconfig │ │ ├── Info.plist │ │ └── RxCocoa-Info.plist │ ├── RxRelay │ │ ├── RxRelay.modulemap │ │ ├── RxRelay-dummy.m │ │ ├── RxRelay-prefix.pch │ │ ├── RxRelay-umbrella.h │ │ ├── RxRelay.debug.xcconfig │ │ ├── RxRelay.release.xcconfig │ │ └── RxRelay-Info.plist │ ├── RxSwift │ │ ├── RxSwift.modulemap │ │ ├── RxSwift-dummy.m │ │ ├── RxSwift-prefix.pch │ │ ├── RxSwift-umbrella.h │ │ ├── RxSwift.xcconfig │ │ ├── RxSwift.debug.xcconfig │ │ ├── RxSwift.release.xcconfig │ │ ├── Info.plist │ │ └── RxSwift-Info.plist │ ├── Alamofire │ │ ├── Alamofire.modulemap │ │ ├── Alamofire-dummy.m │ │ ├── Alamofire-prefix.pch │ │ ├── Alamofire-umbrella.h │ │ ├── Alamofire.xcconfig │ │ ├── Alamofire.debug.xcconfig │ │ ├── Alamofire.release.xcconfig │ │ ├── Info.plist │ │ └── Alamofire-Info.plist │ ├── MASShortcut │ │ ├── MASShortcut.modulemap │ │ ├── MASShortcut-dummy.m │ │ ├── MASShortcut-prefix.pch │ │ ├── MASShortcut.xcconfig │ │ ├── MASShortcut.debug.xcconfig │ │ ├── MASShortcut.release.xcconfig │ │ ├── MASShortcut-umbrella.h │ │ ├── ResourceBundle-MASShortcut-Info.plist │ │ ├── ResourceBundle-MASShortcut-MASShortcut-Info.plist │ │ ├── Info.plist │ │ └── MASShortcut-Info.plist │ ├── GCDWebServer │ │ ├── GCDWebServer.modulemap │ │ ├── GCDWebServer-dummy.m │ │ ├── GCDWebServer-prefix.pch │ │ ├── GCDWebServer.xcconfig │ │ ├── GCDWebServer.debug.xcconfig │ │ ├── GCDWebServer.release.xcconfig │ │ ├── Info.plist │ │ ├── GCDWebServer-Info.plist │ │ └── GCDWebServer-umbrella.h │ ├── BRLOptionParser │ │ ├── BRLOptionParser-dummy.m │ │ ├── BRLOptionParser-prefix.pch │ │ ├── BRLOptionParser.xcconfig │ │ ├── BRLOptionParser.debug.xcconfig │ │ └── BRLOptionParser.release.xcconfig │ ├── Pods-ShadowsocksX-NG │ │ ├── Pods-ShadowsocksX-NG.modulemap │ │ ├── Pods-ShadowsocksX-NG-dummy.m │ │ ├── Pods-ShadowsocksX-NG-umbrella.h │ │ ├── Info.plist │ │ └── Pods-ShadowsocksX-NG-Info.plist │ ├── Pods-ShadowsocksX-NGTests │ │ ├── Pods-ShadowsocksX-NGTests-acknowledgements.markdown │ │ ├── Pods-ShadowsocksX-NGTests.modulemap │ │ ├── Pods-ShadowsocksX-NGTests-dummy.m │ │ ├── Pods-ShadowsocksX-NGTests-umbrella.h │ │ ├── Info.plist │ │ ├── Pods-ShadowsocksX-NGTests-Info.plist │ │ ├── Pods-ShadowsocksX-NGTests-acknowledgements.plist │ │ ├── Pods-ShadowsocksX-NGTests.debug.xcconfig │ │ └── Pods-ShadowsocksX-NGTests.release.xcconfig │ └── Pods-proxy_conf_helper │ │ ├── Pods-proxy_conf_helper-dummy.m │ │ ├── Pods-proxy_conf_helper.debug.xcconfig │ │ ├── Pods-proxy_conf_helper.release.xcconfig │ │ └── Pods-proxy_conf_helper-acknowledgements.markdown ├── RxCocoa │ ├── RxCocoa │ │ ├── Runtime │ │ │ ├── _RX.m │ │ │ └── include │ │ │ │ ├── RxCocoaRuntime.h │ │ │ │ ├── _RXDelegateProxy.h │ │ │ │ └── _RXKVOObserver.h │ │ ├── iOS │ │ │ ├── Events │ │ │ │ └── ItemEvents.swift │ │ │ ├── UIStepper+Rx.swift │ │ │ ├── UISlider+Rx.swift │ │ │ ├── UIRefreshControl+Rx.swift │ │ │ ├── UIActivityIndicatorView+Rx.swift │ │ │ ├── Proxies │ │ │ │ ├── RxTableViewDelegateProxy.swift │ │ │ │ ├── RxCollectionViewDelegateProxy.swift │ │ │ │ ├── RxSearchBarDelegateProxy.swift │ │ │ │ ├── RxPickerViewDelegateProxy.swift │ │ │ │ ├── RxTextStorageDelegateProxy.swift │ │ │ │ ├── RxTabBarControllerDelegateProxy.swift │ │ │ │ ├── RxSearchControllerDelegateProxy.swift │ │ │ │ ├── RxWKNavigationDelegateProxy.swift │ │ │ │ ├── RxNavigationControllerDelegateProxy.swift │ │ │ │ ├── RxTextViewDelegateProxy.swift │ │ │ │ └── RxTabBarDelegateProxy.swift │ │ │ ├── Protocols │ │ │ │ ├── RxPickerViewDataSourceType.swift │ │ │ │ ├── RxTableViewDataSourceType.swift │ │ │ │ └── RxCollectionViewDataSourceType.swift │ │ │ ├── UISwitch+Rx.swift │ │ │ ├── UIDatePicker+Rx.swift │ │ │ └── NSTextStorage+Rx.swift │ │ ├── macOS │ │ │ ├── NSView+Rx.swift │ │ │ ├── NSSlider+Rx.swift │ │ │ └── NSButton+Rx.swift │ │ ├── RxCocoa.h │ │ ├── Traits │ │ │ ├── Signal │ │ │ │ ├── PublishRelay+Signal.swift │ │ │ │ └── ControlEvent+Signal.swift │ │ │ └── Driver │ │ │ │ ├── BehaviorRelay+Driver.swift │ │ │ │ ├── ControlEvent+Driver.swift │ │ │ │ └── ControlProperty+Driver.swift │ │ ├── Common │ │ │ ├── SectionedViewDataSourceType.swift │ │ │ └── RxTarget.swift │ │ └── Foundation │ │ │ ├── KVORepresentable.swift │ │ │ └── NotificationCenter+Rx.swift │ ├── Platform │ │ ├── DispatchQueue+Extensions.swift │ │ ├── DataStructures │ │ │ └── InfiniteSequence.swift │ │ ├── RecursiveLock.swift │ │ ├── Platform.Linux.swift │ │ └── Platform.Darwin.swift │ └── LICENSE.md ├── MASShortcut │ ├── Framework │ │ ├── Shortcut.h │ │ ├── Monitoring │ │ │ ├── MASHotKey.h │ │ │ ├── MASShortcutMonitor.h │ │ │ └── MASHotKey.m │ │ ├── UI │ │ │ ├── MASLocalization.h │ │ │ ├── MASShortcutView.h │ │ │ └── MASShortcutView+Bindings.h │ │ ├── User Defaults Storage │ │ │ └── MASDictionaryTransformer.h │ │ └── Model │ │ │ ├── MASKeyMasks.h │ │ │ └── MASShortcutValidator.h │ └── LICENSE ├── RxSwift │ ├── RxSwift │ │ ├── Disposable.swift │ │ ├── Schedulers │ │ │ ├── Internal │ │ │ │ ├── ScheduledItemType.swift │ │ │ │ ├── InvocableType.swift │ │ │ │ ├── InvocableScheduledItem.swift │ │ │ │ └── ScheduledItem.swift │ │ │ └── HistoricalScheduler.swift │ │ ├── Disposables │ │ │ ├── Disposables.swift │ │ │ ├── DisposeBase.swift │ │ │ ├── SubscriptionDisposable.swift │ │ │ ├── NopDisposable.swift │ │ │ └── BooleanDisposable.swift │ │ ├── Cancelable.swift │ │ ├── Concurrency │ │ │ ├── SynchronizedUnsubscribeType.swift │ │ │ ├── LockOwnerType.swift │ │ │ ├── SynchronizedDisposeType.swift │ │ │ ├── SynchronizedOnType.swift │ │ │ └── Lock.swift │ │ ├── SwiftSupport │ │ │ └── SwiftSupport.swift │ │ ├── ObservableConvertibleType.swift │ │ ├── Subjects │ │ │ └── SubjectType.swift │ │ ├── Observable.swift │ │ ├── Observers │ │ │ ├── AnonymousObserver.swift │ │ │ └── ObserverBase.swift │ │ ├── ConnectableObservableType.swift │ │ ├── Observables │ │ │ ├── Never.swift │ │ │ ├── Empty.swift │ │ │ ├── Error.swift │ │ │ ├── Decode.swift │ │ │ ├── First.swift │ │ │ ├── StartWith.swift │ │ │ ├── AddRef.swift │ │ │ └── AsMaybe.swift │ │ ├── Extensions │ │ │ └── Bag+Rx.swift │ │ ├── ObserverType.swift │ │ ├── GroupedObservable.swift │ │ └── Traits │ │ │ └── Infallible │ │ │ ├── ObservableConvertibleType+Infallible.swift │ │ │ └── Infallible+Create.swift │ ├── Platform │ │ ├── DispatchQueue+Extensions.swift │ │ ├── DataStructures │ │ │ └── InfiniteSequence.swift │ │ ├── RecursiveLock.swift │ │ ├── Platform.Linux.swift │ │ └── Platform.Darwin.swift │ └── LICENSE.md ├── RxRelay │ ├── RxRelay │ │ ├── Utils.swift │ │ ├── PublishRelay.swift │ │ └── BehaviorRelay.swift │ └── LICENSE.md ├── Alamofire │ ├── LICENSE │ └── Source │ │ └── Alamofire.swift ├── BRLOptionParser │ └── LICENSE ├── Manifest.lock └── GCDWebServer │ └── LICENSE ├── ShadowsocksX-NG ├── Assets.xcassets │ ├── Contents.json │ └── AppIcon.appiconset │ │ ├── Icon_16x16.png │ │ ├── Icon_32x32.png │ │ ├── Icon_128x128.png │ │ ├── Icon_16x16@2x.png │ │ ├── Icon_256x256.png │ │ ├── Icon_32x32@2x.png │ │ ├── Icon_512x512.png │ │ ├── Icon_128x128@2x.png │ │ ├── Icon_256x256@2x.png │ │ ├── Icon_512x512@2x.png │ │ └── Contents.json ├── images │ ├── http.png │ ├── menu_icon.png │ ├── command-512.png │ ├── menu_e_icon.png │ ├── menu_g_icon.png │ ├── menu_m_icon.png │ ├── menu_p_icon.png │ ├── menu_e_icon@2x.png │ ├── menu_g_icon@2x.png │ ├── menu_icon@2x.png │ ├── menu_m_icon@2x.png │ ├── menu_p_icon@2x.png │ ├── terminal-logo.png │ ├── menu_icon_disabled.png │ ├── icons8-Eye Filled-50.png │ ├── menu_icon_disabled@2x.png │ ├── virtual-server-icon-3.png │ └── icons8-Blind Filled-50.png ├── user-rule.txt ├── privoxy │ ├── user-privoxy.config │ ├── stop_privoxy.sh │ ├── install_privoxy.sh │ ├── start_privoxy.sh │ └── privoxy.template.config ├── SWBApplication.h ├── fix_dir_owner.sh ├── ProxyConfTool.h ├── ShortcutsController.h ├── ss-local │ ├── stop_ss_local.sh │ ├── start_ss_local.sh │ └── install_ss_local.sh ├── Utils.h ├── zh-Hans.lproj │ ├── UserRulesController.strings │ ├── ImportWindowController.strings │ └── ShareServerProfilesWindowController.strings ├── proxy_conf_helper_version.h ├── ShadowsocksX-NG-Bridging-Header.h ├── simple-obfs │ └── install_simple_obfs.sh ├── ProxyConfHelper.h ├── install_helper.sh ├── SWBQRCodeWindowController.h ├── Notifications.swift ├── kcptun │ └── install_kcptun.sh ├── ShortcutsController.m ├── Utils.swift ├── v2ray-plugin │ └── install_v2ray_plugin.sh ├── Credits.rtf └── LaunchAtLoginController.h ├── ShadowsocksX-NG.xcodeproj └── project.xcworkspace │ └── contents.xcworkspacedata ├── LaunchHelper └── LaunchHelper │ ├── AppDelegate.h │ ├── main.m │ ├── Base.lproj │ └── MainMenu.xib │ ├── Assets.xcassets │ └── AppIcon.appiconset │ │ └── Contents.json │ ├── Info.plist │ └── AppDelegate.m ├── ShadowsocksX-NG.xcworkspace ├── contents.xcworkspacedata └── xcshareddata │ └── WorkspaceSettings.xcsettings ├── deps └── patch │ └── privoxy │ └── configure.in.patch ├── .github ├── ISSUE_TEMPLATE │ ├── Feature_request.md │ └── Bug_report.md └── workflows │ ├── feature.yml │ └── release.yml ├── Podfile ├── ShadowsocksX-NGTests ├── Info.plist └── ShadowsocksX_NGTests.swift ├── .gitmodules ├── Makefile ├── Podfile.lock └── .gitignore /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-slate -------------------------------------------------------------------------------- /Pods/Headers/Private/BRLOptionParser/BRLOptionParser.h: -------------------------------------------------------------------------------- 1 | ../../../BRLOptionParser/BRLOptionParser/BRLOptionParser.h -------------------------------------------------------------------------------- /Pods/Headers/Public/BRLOptionParser/BRLOptionParser.h: -------------------------------------------------------------------------------- 1 | ../../../BRLOptionParser/BRLOptionParser/BRLOptionParser.h -------------------------------------------------------------------------------- /ShadowsocksX-NG/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /ShadowsocksX-NG/images/http.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elenakozlova28/ShadowsocksX-NG/HEAD/ShadowsocksX-NG/images/http.png -------------------------------------------------------------------------------- /ShadowsocksX-NG/user-rule.txt: -------------------------------------------------------------------------------- 1 | ! Put user rules line by line in this file. 2 | ! See https://adblockplus.org/en/filter-cheatsheet 3 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/images/menu_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elenakozlova28/ShadowsocksX-NG/HEAD/ShadowsocksX-NG/images/menu_icon.png -------------------------------------------------------------------------------- /ShadowsocksX-NG/images/command-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elenakozlova28/ShadowsocksX-NG/HEAD/ShadowsocksX-NG/images/command-512.png -------------------------------------------------------------------------------- /ShadowsocksX-NG/images/menu_e_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elenakozlova28/ShadowsocksX-NG/HEAD/ShadowsocksX-NG/images/menu_e_icon.png -------------------------------------------------------------------------------- /ShadowsocksX-NG/images/menu_g_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elenakozlova28/ShadowsocksX-NG/HEAD/ShadowsocksX-NG/images/menu_g_icon.png -------------------------------------------------------------------------------- /ShadowsocksX-NG/images/menu_m_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elenakozlova28/ShadowsocksX-NG/HEAD/ShadowsocksX-NG/images/menu_m_icon.png -------------------------------------------------------------------------------- /ShadowsocksX-NG/images/menu_p_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elenakozlova28/ShadowsocksX-NG/HEAD/ShadowsocksX-NG/images/menu_p_icon.png -------------------------------------------------------------------------------- /ShadowsocksX-NG/images/menu_e_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elenakozlova28/ShadowsocksX-NG/HEAD/ShadowsocksX-NG/images/menu_e_icon@2x.png -------------------------------------------------------------------------------- /ShadowsocksX-NG/images/menu_g_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elenakozlova28/ShadowsocksX-NG/HEAD/ShadowsocksX-NG/images/menu_g_icon@2x.png -------------------------------------------------------------------------------- /ShadowsocksX-NG/images/menu_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elenakozlova28/ShadowsocksX-NG/HEAD/ShadowsocksX-NG/images/menu_icon@2x.png -------------------------------------------------------------------------------- /ShadowsocksX-NG/images/menu_m_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elenakozlova28/ShadowsocksX-NG/HEAD/ShadowsocksX-NG/images/menu_m_icon@2x.png -------------------------------------------------------------------------------- /ShadowsocksX-NG/images/menu_p_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elenakozlova28/ShadowsocksX-NG/HEAD/ShadowsocksX-NG/images/menu_p_icon@2x.png -------------------------------------------------------------------------------- /ShadowsocksX-NG/images/terminal-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elenakozlova28/ShadowsocksX-NG/HEAD/ShadowsocksX-NG/images/terminal-logo.png -------------------------------------------------------------------------------- /ShadowsocksX-NG/images/menu_icon_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elenakozlova28/ShadowsocksX-NG/HEAD/ShadowsocksX-NG/images/menu_icon_disabled.png -------------------------------------------------------------------------------- /ShadowsocksX-NG/privoxy/user-privoxy.config: -------------------------------------------------------------------------------- 1 | # Put user privoxy config line in this file. 2 | # Ref: https://www.privoxy.org/user-manual/index.html 3 | 4 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/images/icons8-Eye Filled-50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elenakozlova28/ShadowsocksX-NG/HEAD/ShadowsocksX-NG/images/icons8-Eye Filled-50.png -------------------------------------------------------------------------------- /ShadowsocksX-NG/images/menu_icon_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elenakozlova28/ShadowsocksX-NG/HEAD/ShadowsocksX-NG/images/menu_icon_disabled@2x.png -------------------------------------------------------------------------------- /ShadowsocksX-NG/images/virtual-server-icon-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elenakozlova28/ShadowsocksX-NG/HEAD/ShadowsocksX-NG/images/virtual-server-icon-3.png -------------------------------------------------------------------------------- /ShadowsocksX-NG/images/icons8-Blind Filled-50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elenakozlova28/ShadowsocksX-NG/HEAD/ShadowsocksX-NG/images/icons8-Blind Filled-50.png -------------------------------------------------------------------------------- /Pods/Target Support Files/RxCocoa/RxCocoa.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxCocoa { 2 | umbrella header "RxCocoa-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxRelay/RxRelay.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxRelay { 2 | umbrella header "RxRelay-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwift/RxSwift.modulemap: -------------------------------------------------------------------------------- 1 | framework module RxSwift { 2 | umbrella header "RxSwift-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Alamofire/Alamofire.modulemap: -------------------------------------------------------------------------------- 1 | framework module Alamofire { 2 | umbrella header "Alamofire-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxCocoa/RxCocoa-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxCocoa : NSObject 3 | @end 4 | @implementation PodsDummy_RxCocoa 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxRelay/RxRelay-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxRelay : NSObject 3 | @end 4 | @implementation PodsDummy_RxRelay 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwift/RxSwift-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_RxSwift : NSObject 3 | @end 4 | @implementation PodsDummy_RxSwift 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Alamofire/Alamofire-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Alamofire : NSObject 3 | @end 4 | @implementation PodsDummy_Alamofire 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MASShortcut/MASShortcut.modulemap: -------------------------------------------------------------------------------- 1 | framework module MASShortcut { 2 | umbrella header "MASShortcut-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/Assets.xcassets/AppIcon.appiconset/Icon_16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elenakozlova28/ShadowsocksX-NG/HEAD/ShadowsocksX-NG/Assets.xcassets/AppIcon.appiconset/Icon_16x16.png -------------------------------------------------------------------------------- /ShadowsocksX-NG/Assets.xcassets/AppIcon.appiconset/Icon_32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elenakozlova28/ShadowsocksX-NG/HEAD/ShadowsocksX-NG/Assets.xcassets/AppIcon.appiconset/Icon_32x32.png -------------------------------------------------------------------------------- /Pods/Target Support Files/GCDWebServer/GCDWebServer.modulemap: -------------------------------------------------------------------------------- 1 | framework module GCDWebServer { 2 | umbrella header "GCDWebServer-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MASShortcut/MASShortcut-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_MASShortcut : NSObject 3 | @end 4 | @implementation PodsDummy_MASShortcut 5 | @end 6 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/Assets.xcassets/AppIcon.appiconset/Icon_128x128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elenakozlova28/ShadowsocksX-NG/HEAD/ShadowsocksX-NG/Assets.xcassets/AppIcon.appiconset/Icon_128x128.png -------------------------------------------------------------------------------- /ShadowsocksX-NG/Assets.xcassets/AppIcon.appiconset/Icon_16x16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elenakozlova28/ShadowsocksX-NG/HEAD/ShadowsocksX-NG/Assets.xcassets/AppIcon.appiconset/Icon_16x16@2x.png -------------------------------------------------------------------------------- /ShadowsocksX-NG/Assets.xcassets/AppIcon.appiconset/Icon_256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elenakozlova28/ShadowsocksX-NG/HEAD/ShadowsocksX-NG/Assets.xcassets/AppIcon.appiconset/Icon_256x256.png -------------------------------------------------------------------------------- /ShadowsocksX-NG/Assets.xcassets/AppIcon.appiconset/Icon_32x32@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elenakozlova28/ShadowsocksX-NG/HEAD/ShadowsocksX-NG/Assets.xcassets/AppIcon.appiconset/Icon_32x32@2x.png -------------------------------------------------------------------------------- /ShadowsocksX-NG/Assets.xcassets/AppIcon.appiconset/Icon_512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elenakozlova28/ShadowsocksX-NG/HEAD/ShadowsocksX-NG/Assets.xcassets/AppIcon.appiconset/Icon_512x512.png -------------------------------------------------------------------------------- /Pods/Target Support Files/GCDWebServer/GCDWebServer-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_GCDWebServer : NSObject 3 | @end 4 | @implementation PodsDummy_GCDWebServer 5 | @end 6 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/Assets.xcassets/AppIcon.appiconset/Icon_128x128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elenakozlova28/ShadowsocksX-NG/HEAD/ShadowsocksX-NG/Assets.xcassets/AppIcon.appiconset/Icon_128x128@2x.png -------------------------------------------------------------------------------- /ShadowsocksX-NG/Assets.xcassets/AppIcon.appiconset/Icon_256x256@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elenakozlova28/ShadowsocksX-NG/HEAD/ShadowsocksX-NG/Assets.xcassets/AppIcon.appiconset/Icon_256x256@2x.png -------------------------------------------------------------------------------- /ShadowsocksX-NG/Assets.xcassets/AppIcon.appiconset/Icon_512x512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/elenakozlova28/ShadowsocksX-NG/HEAD/ShadowsocksX-NG/Assets.xcassets/AppIcon.appiconset/Icon_512x512@2x.png -------------------------------------------------------------------------------- /Pods/Target Support Files/BRLOptionParser/BRLOptionParser-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_BRLOptionParser : NSObject 3 | @end 4 | @implementation PodsDummy_BRLOptionParser 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ShadowsocksX-NG/Pods-ShadowsocksX-NG.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_ShadowsocksX_NG { 2 | umbrella header "Pods-ShadowsocksX-NG-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ShadowsocksX-NG/Pods-ShadowsocksX-NG-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_ShadowsocksX_NG : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_ShadowsocksX_NG 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/Runtime/_RX.m: -------------------------------------------------------------------------------- 1 | // 2 | // _RX.m 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import "include/_RX.h" 10 | 11 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ShadowsocksX-NGTests/Pods-ShadowsocksX-NGTests-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | Generated by CocoaPods - https://cocoapods.org 4 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-proxy_conf_helper/Pods-proxy_conf_helper-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_proxy_conf_helper : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_proxy_conf_helper 5 | @end 6 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ShadowsocksX-NGTests/Pods-ShadowsocksX-NGTests.modulemap: -------------------------------------------------------------------------------- 1 | framework module Pods_ShadowsocksX_NGTests { 2 | umbrella header "Pods-ShadowsocksX-NGTests-umbrella.h" 3 | 4 | export * 5 | module * { export * } 6 | } 7 | -------------------------------------------------------------------------------- /ShadowsocksX-NG.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ShadowsocksX-NGTests/Pods-ShadowsocksX-NGTests-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_ShadowsocksX_NGTests : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_ShadowsocksX_NGTests 5 | @end 6 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/SWBApplication.h: -------------------------------------------------------------------------------- 1 | // 2 | // Created by clowwindy on 3/1/14. 3 | // Copyright (c) 2014 clowwindy. All rights reserved. 4 | // 5 | 6 | #import 7 | @import AppKit; 8 | 9 | 10 | @interface SWBApplication : NSApplication 11 | @end -------------------------------------------------------------------------------- /Pods/Target Support Files/RxCocoa/RxCocoa-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxRelay/RxRelay-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwift/RxSwift-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Pods/MASShortcut/Framework/Shortcut.h: -------------------------------------------------------------------------------- 1 | #import "MASKeyMasks.h" 2 | #import "MASShortcut.h" 3 | #import "MASShortcutValidator.h" 4 | #import "MASShortcutMonitor.h" 5 | #import "MASShortcutBinder.h" 6 | #import "MASDictionaryTransformer.h" 7 | #import "MASShortcutView.h" 8 | #import "MASShortcutView+Bindings.h" 9 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Alamofire/Alamofire-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Pods/Target Support Files/GCDWebServer/GCDWebServer-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MASShortcut/MASShortcut-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/fix_dir_owner.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # fix_dir_owner.sh 4 | # ShadowsocksX-NG 5 | # 6 | # Created by 邱宇舟 on 2017/8/25. 7 | # Copyright © 2017年 qiuyuzhou. All rights reserved. 8 | 9 | 10 | LAUNCH_AGENTS_DIR="$HOME/Library/LaunchAgents" 11 | sudo chown $@ "$HOME/Library/LaunchAgents" 12 | 13 | -------------------------------------------------------------------------------- /Pods/Target Support Files/BRLOptionParser/BRLOptionParser-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /LaunchHelper/LaunchHelper/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // LaunchHelper 4 | // 5 | // Created by 邱宇舟 on 2017/3/28. 6 | // Copyright © 2017年 qiuyuzhou. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : NSObject 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /LaunchHelper/LaunchHelper/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // LaunchHelper 4 | // 5 | // Created by 邱宇舟 on 2017/3/28. 6 | // Copyright © 2017年 qiuyuzhou. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | int main(int argc, const char * argv[]) { 12 | return NSApplicationMain(argc, argv); 13 | } 14 | -------------------------------------------------------------------------------- /ShadowsocksX-NG.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/ProxyConfTool.h: -------------------------------------------------------------------------------- 1 | // 2 | // ProxyConfTool.h 3 | // ShadowsocksX-NG 4 | // 5 | // Created by 邱宇舟 on 16/6/29. 6 | // Copyright © 2016年 qiuyuzhou. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | 12 | @interface ProxyConfTool : NSObject 13 | 14 | +(NSArray*)networkServicesList; 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/privoxy/stop_privoxy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # stop_privoxy.sh 4 | # ShadowsocksX-NG 5 | # 6 | # Created by 王晨 on 16/10/7. 7 | # Copyright © 2016年 zhfish. All rights reserved. 8 | 9 | launchctl stop com.qiuyuzhou.shadowsocksX-NG.http 10 | launchctl unload "$HOME/Library/LaunchAgents/com.qiuyuzhou.shadowsocksX-NG.http.plist" 11 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Disposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Disposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents a disposable resource. 10 | public protocol Disposable { 11 | /// Dispose resource. 12 | func dispose() 13 | } 14 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/ShortcutsController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ShortcutsController.h 3 | // ShadowsocksX-NG 4 | // 5 | // Created by 邱宇舟 on 2017/3/10. 6 | // Copyright © 2017年 qiuyuzhou. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ShortcutsController : NSObject 12 | 13 | + (void)bindShortcuts; 14 | 15 | @end 16 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItemType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ScheduledItemType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol ScheduledItemType 10 | : Cancelable 11 | , InvocableType { 12 | func invoke() 13 | } 14 | -------------------------------------------------------------------------------- /ShadowsocksX-NG.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/ss-local/stop_ss_local.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # stop_ss_local.sh 4 | # ShadowsocksX-NG 5 | # 6 | # Created by 邱宇舟 on 16/6/6. 7 | # Copyright © 2016年 qiuyuzhou. All rights reserved. 8 | 9 | launchctl stop com.qiuyuzhou.shadowsocksX-NG.local 10 | launchctl unload "$HOME/Library/LaunchAgents/com.qiuyuzhou.shadowsocksX-NG.local.plist" 11 | -------------------------------------------------------------------------------- /Pods/MASShortcut/Framework/Monitoring/MASHotKey.h: -------------------------------------------------------------------------------- 1 | #import "MASShortcut.h" 2 | 3 | extern FourCharCode const MASHotKeySignature; 4 | 5 | @interface MASHotKey : NSObject 6 | 7 | @property(readonly) UInt32 carbonID; 8 | @property(copy) dispatch_block_t action; 9 | 10 | + (instancetype) registeredHotKeyWithShortcut: (MASShortcut*) shortcut; 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /deps/patch/privoxy/configure.in.patch: -------------------------------------------------------------------------------- 1 | --- configure.in 2023-01-05 14:37:57 2 | +++ configure.in.1 2023-01-05 14:37:40 3 | @@ -1090,7 +1090,7 @@ 4 | fi 5 | fi 6 | 7 | -use_static_pcre="yes" 8 | + 9 | # If we have libpcre and either we also have pcreposix or 10 | # we don't need pcreposix, then link pcre dynamically; else 11 | # build it and link statically 12 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Disposables/Disposables.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Disposables.swift 3 | // RxSwift 4 | // 5 | // Created by Mohsen Ramezanpoor on 01/08/2016. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// A collection of utility methods for common disposable operations. 10 | public struct Disposables { 11 | private init() {} 12 | } 13 | 14 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/Utils.h: -------------------------------------------------------------------------------- 1 | // 2 | // QRCodeUtils.h 3 | // ShadowsocksX-NG 4 | // 5 | // Created by 邱宇舟 on 16/6/8. 6 | // Copyright © 2016年 qiuyuzhou. All rights reserved. 7 | // 8 | 9 | #ifndef QRCodeUtils_h 10 | #define QRCodeUtils_h 11 | 12 | void ScanQRCodeOnScreen(); 13 | 14 | NSImage* createQRImage(NSString *string, NSSize size); 15 | 16 | #endif /* QRCodeUtils_h */ 17 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/zh-Hans.lproj/UserRulesController.strings: -------------------------------------------------------------------------------- 1 | 2 | /* Class = "NSButtonCell"; title = "OK"; ObjectID = "0Sc-cm-Vyu"; */ 3 | "0Sc-cm-Vyu.title" = "确定"; 4 | 5 | /* Class = "NSWindow"; title = "User Rules"; ObjectID = "F0z-JX-Cv5"; */ 6 | "F0z-JX-Cv5.title" = "用户规则"; 7 | 8 | /* Class = "NSButtonCell"; title = "Cancel"; ObjectID = "QAR-9i-kmv"; */ 9 | "QAR-9i-kmv.title" = "取消"; 10 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Cancelable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Cancelable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 3/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents disposable resource with state tracking. 10 | public protocol Cancelable : Disposable { 11 | /// Was resource disposed. 12 | var isDisposed: Bool { get } 13 | } 14 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/proxy_conf_helper_version.h: -------------------------------------------------------------------------------- 1 | // 2 | // proxy_conf_helper_version.h 3 | // ShadowsocksX-NG 4 | // 5 | // Created by 邱宇舟 on 16/6/10. 6 | // Copyright © 2016年 qiuyuzhou. All rights reserved. 7 | // 8 | 9 | #ifndef proxy_conf_helper_version_h 10 | #define proxy_conf_helper_version_h 11 | 12 | #define kProxyConfHelperVersion @"1.8.2" 13 | 14 | #endif /* proxy_conf_helper_version_h */ 15 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/ShadowsocksX-NG-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // Use this file to import your target's public headers that you would like to expose to Swift. 3 | // 4 | 5 | #import 6 | 7 | #import "LaunchAtLoginController.h" 8 | #import "SWBQRCodeWindowController.h" 9 | #import "ShortcutsController.h" 10 | #import "Utils.h" 11 | #import "ProxyConfHelper.h" 12 | #import "ProxyConfTool.h" 13 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Concurrency/SynchronizedUnsubscribeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedUnsubscribeType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol SynchronizedUnsubscribeType: AnyObject { 10 | associatedtype DisposeKey 11 | 12 | func synchronizedUnsubscribe(_ disposeKey: DisposeKey) 13 | } 14 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvocableType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol InvocableType { 10 | func invoke() 11 | } 12 | 13 | protocol InvocableWithValueType { 14 | associatedtype Value 15 | 16 | func invoke(_ value: Value) 17 | } 18 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxRelay/RxRelay-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double RxRelayVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char RxRelayVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwift/RxSwift-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double RxSwiftVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char RxSwiftVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Alamofire/Alamofire-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double AlamofireVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char AlamofireVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/privoxy/install_privoxy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # install_privoxy.sh 4 | # ShadowsocksX-NG 5 | # 6 | # Created by 王晨 on 16/10/7. 7 | # Copyright © 2016年 zhfish. All rights reserved. 8 | 9 | 10 | cd "$(dirname "${BASH_SOURCE[0]}")" 11 | 12 | mkdir -p "$HOME/Library/Application Support/ShadowsocksX-NG/privoxy" 13 | cp -f privoxy "$HOME/Library/Application Support/ShadowsocksX-NG/privoxy/" 14 | 15 | echo done 16 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/privoxy/start_privoxy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # start_privoxy.sh 4 | # ShadowsocksX-NG 5 | # 6 | # Created by 王晨 on 16/10/7. 7 | # Copyright © 2016年 zhfish. All rights reserved. 8 | 9 | chmod 644 "$HOME/Library/LaunchAgents/com.qiuyuzhou.shadowsocksX-NG.http.plist" 10 | launchctl load -wF "$HOME/Library/LaunchAgents/com.qiuyuzhou.shadowsocksX-NG.http.plist" 11 | launchctl start com.qiuyuzhou.shadowsocksX-NG.http 12 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/ss-local/start_ss_local.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # start_ss_local.sh 4 | # ShadowsocksX-NG 5 | # 6 | # Created by 邱宇舟 on 16/6/6. 7 | # Copyright © 2016年 qiuyuzhou. All rights reserved. 8 | 9 | chmod 644 "$HOME/Library/LaunchAgents/com.qiuyuzhou.shadowsocksX-NG.local.plist" 10 | launchctl load -wF "$HOME/Library/LaunchAgents/com.qiuyuzhou.shadowsocksX-NG.local.plist" 11 | launchctl start com.qiuyuzhou.shadowsocksX-NG.local 12 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Concurrency/LockOwnerType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // LockOwnerType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol LockOwnerType: AnyObject, Lock { 10 | var lock: RecursiveLock { get } 11 | } 12 | 13 | extension LockOwnerType { 14 | func lock() { self.lock.lock() } 15 | func unlock() { self.lock.unlock() } 16 | } 17 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/SwiftSupport/SwiftSupport.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SwiftSupport.swift 3 | // RxSwift 4 | // 5 | // Created by Volodymyr Gorbenko on 3/6/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | typealias IntMax = Int64 12 | public typealias RxAbstractInteger = FixedWidthInteger 13 | 14 | extension SignedInteger { 15 | func toIntMax() -> IntMax { 16 | IntMax(self) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ShadowsocksX-NG/Pods-ShadowsocksX-NG-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_ShadowsocksX_NGVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_ShadowsocksX_NGVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/zh-Hans.lproj/ImportWindowController.strings: -------------------------------------------------------------------------------- 1 | 2 | /* Class = "NSButtonCell"; title = "Import"; ObjectID = "EW8-ld-aGr"; */ 3 | "EW8-ld-aGr.title" = "导入"; 4 | 5 | /* Class = "NSWindow"; title = "Import Server URLs"; ObjectID = "F0z-JX-Cv5"; */ 6 | "F0z-JX-Cv5.title" = "导入服务器URLs"; 7 | 8 | /* Class = "NSTextFieldCell"; placeholderString = "Copy your shadowsocks URLs to here"; ObjectID = "h31-8G-f2d"; */ 9 | "h31-8G-f2d.placeholderString" = "复制shadowsocks URLs到这里"; 10 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ShadowsocksX-NGTests/Pods-ShadowsocksX-NGTests-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | 14 | FOUNDATION_EXPORT double Pods_ShadowsocksX_NGTestsVersionNumber; 15 | FOUNDATION_EXPORT const unsigned char Pods_ShadowsocksX_NGTestsVersionString[]; 16 | 17 | -------------------------------------------------------------------------------- /Pods/RxRelay/RxRelay/Utils.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Utils.swift 3 | // RxRelay 4 | // 5 | // Created by Shai Mishali on 09/04/2019. 6 | // Copyright © 2019 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | func rxFatalErrorInDebug(_ lastMessage: @autoclosure () -> String, file: StaticString = #file, line: UInt = #line) { 12 | #if DEBUG 13 | fatalError(lastMessage(), file: file, line: line) 14 | #else 15 | print("\(file):\(line): \(lastMessage())") 16 | #endif 17 | } 18 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Disposables/DisposeBase.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DisposeBase.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 4/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Base class for all disposables. 10 | public class DisposeBase { 11 | init() { 12 | #if TRACE_RESOURCES 13 | _ = Resources.incrementTotal() 14 | #endif 15 | } 16 | 17 | deinit { 18 | #if TRACE_RESOURCES 19 | _ = Resources.decrementTotal() 20 | #endif 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/ss-local/install_ss_local.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # install_ss_local.sh 4 | # ShadowsocksX-NG 5 | # 6 | # Created by 邱宇舟 on 16/6/6. 7 | # Copyright © 2016年 qiuyuzhou. All rights reserved. 8 | 9 | 10 | cd "$(dirname "${BASH_SOURCE[0]}")" 11 | 12 | NGDir="$HOME/Library/Application Support/ShadowsocksX-NG" 13 | TargetDir="$NGDir/ss-local" 14 | 15 | echo ngdir: ${NGDir} 16 | 17 | # https://bintray.com/homebrew/bottles/shadowsocks-libev/ 18 | mkdir -p "$TargetDir" 19 | cp -f ss-local "$TargetDir" 20 | 21 | echo done 22 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Concurrency/SynchronizedDisposeType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedDisposeType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol SynchronizedDisposeType: AnyObject, Disposable, Lock { 10 | func synchronized_dispose() 11 | } 12 | 13 | extension SynchronizedDisposeType { 14 | func synchronizedDispose() { 15 | self.lock(); defer { self.unlock() } 16 | self.synchronized_dispose() 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwift/RxSwift.xcconfig: -------------------------------------------------------------------------------- 1 | CODE_SIGN_IDENTITY = 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxSwift 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxSwift 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/Events/ItemEvents.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ItemEvents.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/20/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | import UIKit 11 | 12 | public typealias ItemMovedEvent = (sourceIndex: IndexPath, destinationIndex: IndexPath) 13 | public typealias WillDisplayCellEvent = (cell: UITableViewCell, indexPath: IndexPath) 14 | public typealias DidEndDisplayingCellEvent = (cell: UITableViewCell, indexPath: IndexPath) 15 | #endif 16 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Alamofire/Alamofire.xcconfig: -------------------------------------------------------------------------------- 1 | CODE_SIGN_IDENTITY = 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Alamofire 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Alamofire 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Concurrency/SynchronizedOnType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SynchronizedOnType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol SynchronizedOnType: AnyObject, ObserverType, Lock { 10 | func synchronized_on(_ event: Event) 11 | } 12 | 13 | extension SynchronizedOnType { 14 | func synchronizedOn(_ event: Event) { 15 | self.lock(); defer { self.unlock() } 16 | self.synchronized_on(event) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MASShortcut/MASShortcut.xcconfig: -------------------------------------------------------------------------------- 1 | CODE_SIGN_IDENTITY = 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MASShortcut 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_LDFLAGS = $(inherited) -framework "AppKit" -framework "Carbon" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MASShortcut 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/Runtime/include/RxCocoaRuntime.h: -------------------------------------------------------------------------------- 1 | // 2 | // RxCocoaRuntime.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 2/21/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "_RX.h" 11 | #import "_RXDelegateProxy.h" 12 | #import "_RXKVOObserver.h" 13 | #import "_RXObjCRuntime.h" 14 | 15 | //! Project version number for RxCocoa. 16 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 17 | 18 | //! Project version string for RxCocoa. 19 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; 20 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/macOS/NSView+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NSView+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 12/6/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(macOS) 10 | import Cocoa 11 | import RxSwift 12 | 13 | extension Reactive where Base: NSView { 14 | /// Bindable sink for `alphaValue` property. 15 | public var alpha: Binder { 16 | return Binder(self.base) { view, value in 17 | view.alphaValue = value 18 | } 19 | } 20 | } 21 | #endif 22 | -------------------------------------------------------------------------------- /Pods/Target Support Files/GCDWebServer/GCDWebServer.xcconfig: -------------------------------------------------------------------------------- 1 | CODE_SIGN_IDENTITY = 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GCDWebServer 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | OTHER_LDFLAGS = $(inherited) -l"z" -framework "SystemConfiguration" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/GCDWebServer 9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 10 | SKIP_INSTALL = YES 11 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxCocoa/RxCocoa-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "RxCocoaRuntime.h" 14 | #import "_RX.h" 15 | #import "_RXDelegateProxy.h" 16 | #import "_RXKVOObserver.h" 17 | #import "_RXObjCRuntime.h" 18 | #import "RxCocoa.h" 19 | 20 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 21 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; 22 | 23 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/RxCocoa.h: -------------------------------------------------------------------------------- 1 | // 2 | // RxCocoa.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 2/21/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import 12 | #import 13 | #import 14 | 15 | //! Project version number for RxCocoa. 16 | FOUNDATION_EXPORT double RxCocoaVersionNumber; 17 | 18 | //! Project version string for RxCocoa. 19 | FOUNDATION_EXPORT const unsigned char RxCocoaVersionString[]; 20 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/simple-obfs/install_simple_obfs.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # v0.0.5 https://bintray.com/homebrew/bottles/simple-obfs 3 | 4 | FILE_DIR=`dirname "${BASH_SOURCE[0]}"` 5 | cd "$FILE_DIR" 6 | 7 | NGDir="$HOME/Library/Application Support/ShadowsocksX-NG" 8 | TargetDir="$NGDir/simple-obfs" 9 | PluginDir="$NGDir/plugins" 10 | 11 | echo ngdir: ${NGDir} 12 | 13 | mkdir -p "$TargetDir" 14 | mkdir -p "$PluginDir" 15 | 16 | cp -f obfs-local "$TargetDir" 17 | 18 | ln -sfh "$TargetDir/obfs-local" "$PluginDir/simple-obfs" 19 | ln -sfh "$TargetDir/obfs-local" "$PluginDir/obfs-local" 20 | 21 | echo done 22 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/ProxyConfHelper.h: -------------------------------------------------------------------------------- 1 | // 2 | // ProxyConfHelper.h 3 | // ShadowsocksX-NG 4 | // 5 | // Created by 邱宇舟 on 16/6/10. 6 | // Copyright © 2016年 qiuyuzhou. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | #import 12 | 13 | @interface ProxyConfHelper : NSObject 14 | 15 | + (void)install; 16 | 17 | + (void)enablePACProxy; 18 | 19 | + (void)enableGlobalProxy; 20 | 21 | + (void)disableProxy; 22 | 23 | + (void)enableExternalPACProxy; 24 | 25 | + (void)startMonitorPAC; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/install_helper.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # install_helper.sh 4 | # shadowsocks 5 | # 6 | # Created by clowwindy on 14-3-15. 7 | 8 | cd "$(dirname "${BASH_SOURCE[0]}")" 9 | 10 | sudo mkdir -p "/Library/Application Support/ShadowsocksX-NG/" 11 | sudo cp proxy_conf_helper "/Library/Application Support/ShadowsocksX-NG/" 12 | sudo chown root:admin "/Library/Application Support/ShadowsocksX-NG/proxy_conf_helper" 13 | sudo chmod a+rx "/Library/Application Support/ShadowsocksX-NG/proxy_conf_helper" 14 | sudo chmod +s "/Library/Application Support/ShadowsocksX-NG/proxy_conf_helper" 15 | 16 | echo done 17 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Schedulers/Internal/InvocableScheduledItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InvocableScheduledItem.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 11/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | struct InvocableScheduledItem : InvocableType { 10 | 11 | let invocable: I 12 | let state: I.Value 13 | 14 | init(invocable: I, state: I.Value) { 15 | self.invocable = invocable 16 | self.state = state 17 | } 18 | 19 | func invoke() { 20 | self.invocable.invoke(self.state) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /Pods/RxCocoa/Platform/DispatchQueue+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DispatchQueue+Extensions.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 10/22/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Dispatch 10 | 11 | extension DispatchQueue { 12 | private static var token: DispatchSpecificKey<()> = { 13 | let key = DispatchSpecificKey<()>() 14 | DispatchQueue.main.setSpecific(key: key, value: ()) 15 | return key 16 | }() 17 | 18 | static var isMain: Bool { 19 | DispatchQueue.getSpecific(key: token) != nil 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Pods/RxSwift/Platform/DispatchQueue+Extensions.swift: -------------------------------------------------------------------------------- 1 | // 2 | // DispatchQueue+Extensions.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 10/22/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Dispatch 10 | 11 | extension DispatchQueue { 12 | private static var token: DispatchSpecificKey<()> = { 13 | let key = DispatchSpecificKey<()>() 14 | DispatchQueue.main.setSpecific(key: key, value: ()) 15 | return key 16 | }() 17 | 18 | static var isMain: Bool { 19 | DispatchQueue.getSpecific(key: token) != nil 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Disposables/SubscriptionDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SubscriptionDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/25/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | struct SubscriptionDisposable : Disposable { 10 | private let key: T.DisposeKey 11 | private weak var owner: T? 12 | 13 | init(owner: T, key: T.DisposeKey) { 14 | self.owner = owner 15 | self.key = key 16 | } 17 | 18 | func dispose() { 19 | self.owner?.synchronizedUnsubscribe(self.key) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Concurrency/Lock.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Lock.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 3/31/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | protocol Lock { 10 | func lock() 11 | func unlock() 12 | } 13 | 14 | // https://lists.swift.org/pipermail/swift-dev/Week-of-Mon-20151214/000321.html 15 | typealias SpinLock = RecursiveLock 16 | 17 | extension RecursiveLock : Lock { 18 | @inline(__always) 19 | final func performLocked(_ action: () -> T) -> T { 20 | self.lock(); defer { self.unlock() } 21 | return action() 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxCocoa/RxCocoa.xcconfig: -------------------------------------------------------------------------------- 1 | CODE_SIGN_IDENTITY = 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa 3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxCocoa 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/Traits/Signal/PublishRelay+Signal.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PublishRelay+Signal.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 12/28/15. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | import RxRelay 11 | 12 | extension PublishRelay { 13 | /// Converts `PublishRelay` to `Signal`. 14 | /// 15 | /// - returns: Observable sequence. 16 | public func asSignal() -> Signal { 17 | let source = self.asObservable() 18 | .observe(on:SignalSharingStrategy.scheduler) 19 | return SharedSequence(source) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/ObservableConvertibleType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ObservableConvertibleType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 9/17/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Type that can be converted to observable sequence (`Observable`). 10 | public protocol ObservableConvertibleType { 11 | /// Type of elements in sequence. 12 | associatedtype Element 13 | 14 | /// Converts `self` to `Observable` sequence. 15 | /// 16 | /// - returns: Observable sequence that represents `self`. 17 | func asObservable() -> Observable 18 | } 19 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/Traits/Driver/BehaviorRelay+Driver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BehaviorRelay+Driver.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 10/7/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | import RxRelay 11 | 12 | extension BehaviorRelay { 13 | /// Converts `BehaviorRelay` to `Driver`. 14 | /// 15 | /// - returns: Observable sequence. 16 | public func asDriver() -> Driver { 17 | let source = self.asObservable() 18 | .observe(on:DriverSharingStrategy.scheduler) 19 | return SharedSequence(source) 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/privoxy/privoxy.template.config: -------------------------------------------------------------------------------- 1 | listen-address {http} 2 | toggle 1 3 | enable-remote-toggle 1 4 | enable-remote-http-toggle 1 5 | enable-edit-actions 0 6 | enforce-blocks 0 7 | buffer-limit 4096 8 | forwarded-connect-retries 0 9 | accept-intercepted-requests 0 10 | allow-cgi-request-crunching 0 11 | split-large-forms 0 12 | keep-alive-timeout 5 13 | socket-timeout 60 14 | 15 | forward 192.168.*.*/ . 16 | forward 10.*.*.*/ . 17 | forward 127.*.*.*/ . 18 | forward [FE80::/64] . 19 | forward [::1] . 20 | forward [FD00::/8] . 21 | forward-socks5 / {socks5} . 22 | 23 | -------------------------------------------------------------------------------- /Pods/MASShortcut/Framework/UI/MASLocalization.h: -------------------------------------------------------------------------------- 1 | /** 2 | Reads a localized string from the framework’s bundle. 3 | 4 | Normally you would use NSLocalizedString to read the localized 5 | strings, but that’s just a shortcut for loading the strings from 6 | the main bundle. And once the framework ends up in an app, the 7 | main bundle will be the app’s bundle and won’t contain our strings. 8 | So we introduced this helper function that makes sure to load the 9 | strings from the framework’s bundle. Please avoid using 10 | NSLocalizedString throughout the framework, it wouldn’t work 11 | properly. 12 | */ 13 | NSString *MASLocalizedString(NSString *key, NSString *comment); -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/Feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | 5 | --- 6 | 7 | **Is your feature request related to a problem? Please describe.** 8 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 9 | 10 | **Describe the solution you'd like** 11 | A clear and concise description of what you want to happen. 12 | 13 | **Describe alternatives you've considered** 14 | A clear and concise description of any alternative solutions or features you've considered. 15 | 16 | **Additional context** 17 | Add any other context or screenshots about the feature request here. 18 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/SWBQRCodeWindowController.h: -------------------------------------------------------------------------------- 1 | // 2 | // QRCodeWindowController.h 3 | // shadowsocks 4 | // 5 | // Created by clowwindy on 10/12/14. 6 | // Copyright (c) 2014 clowwindy. All rights reserved. 7 | // 8 | 9 | #import 10 | #import 11 | 12 | @interface SWBQRCodeWindowController : NSWindowController 13 | 14 | @property (nonatomic, copy) NSString *legacyQRCode; 15 | @property (nonatomic, copy) NSString *qrCode; 16 | @property (nonatomic, copy) NSString *title; 17 | 18 | @property (nonatomic, weak) NSTextField *titleTextField; 19 | @property (nonatomic, weak) NSImageView *imageView; 20 | 21 | - (IBAction) copyQRCode: (id) sender; 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Pods/Target Support Files/BRLOptionParser/BRLOptionParser.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/BRLOptionParser 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/BRLOptionParser" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/BRLOptionParser" 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/BRLOptionParser 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/Notifications.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Notifications.swift 3 | // ShadowsocksX-NG 4 | // 5 | // Created by 邱宇舟 on 16/6/7. 6 | // Copyright © 2016年 qiuyuzhou. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | let NOTIFY_SERVER_PROFILES_CHANGED = Notification.Name(rawValue: "NOTIFY_SERVER_PROFILES_CHANGED") 12 | 13 | let NOTIFY_CONF_CHANGED = Notification.Name(rawValue: "NOTIFY_CONF_CHANGED") 14 | 15 | let NOTIFY_TOGGLE_RUNNING_SHORTCUT = Notification.Name(rawValue: "NOTIFY_TOGGLE_RUNNING_SHORTCUT") 16 | let NOTIFY_SWITCH_PROXY_MODE_SHORTCUT = Notification.Name(rawValue: "NOTIFY_SWITCH_PROXY_MODE_SHORTCUT") 17 | 18 | let NOTIFY_FOUND_SS_URL = Notification.Name(rawValue: "NOTIFY_FOUND_SS_URL") 19 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/UIStepper+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIStepper+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Yuta ToKoRo on 9/1/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension Reactive where Base: UIStepper { 15 | 16 | /// Reactive wrapper for `value` property. 17 | public var value: ControlProperty { 18 | return base.rx.controlPropertyWithDefaultEvents( 19 | getter: { stepper in 20 | stepper.value 21 | }, setter: { stepper, value in 22 | stepper.value = value 23 | } 24 | ) 25 | } 26 | } 27 | 28 | #endif 29 | 30 | -------------------------------------------------------------------------------- /Pods/RxCocoa/Platform/DataStructures/InfiniteSequence.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InfiniteSequence.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 6/13/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Sequence that repeats `repeatedValue` infinite number of times. 10 | struct InfiniteSequence : Sequence { 11 | typealias Iterator = AnyIterator 12 | 13 | private let repeatedValue: Element 14 | 15 | init(repeatedValue: Element) { 16 | self.repeatedValue = repeatedValue 17 | } 18 | 19 | func makeIterator() -> Iterator { 20 | let repeatedValue = self.repeatedValue 21 | return AnyIterator { repeatedValue } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Pods/RxSwift/Platform/DataStructures/InfiniteSequence.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InfiniteSequence.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 6/13/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Sequence that repeats `repeatedValue` infinite number of times. 10 | struct InfiniteSequence : Sequence { 11 | typealias Iterator = AnyIterator 12 | 13 | private let repeatedValue: Element 14 | 15 | init(repeatedValue: Element) { 16 | self.repeatedValue = repeatedValue 17 | } 18 | 19 | func makeIterator() -> Iterator { 20 | let repeatedValue = self.repeatedValue 21 | return AnyIterator { repeatedValue } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/UISlider+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UISlider+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Alexander van der Werff on 28/05/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | 11 | import RxSwift 12 | import UIKit 13 | 14 | extension Reactive where Base: UISlider { 15 | 16 | /// Reactive wrapper for `value` property. 17 | public var value: ControlProperty { 18 | return base.rx.controlPropertyWithDefaultEvents( 19 | getter: { slider in 20 | slider.value 21 | }, setter: { slider, value in 22 | slider.value = value 23 | } 24 | ) 25 | } 26 | 27 | } 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Subjects/SubjectType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SubjectType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 3/1/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents an object that is both an observable sequence as well as an observer. 10 | public protocol SubjectType : ObservableType { 11 | /// The type of the observer that represents this subject. 12 | /// 13 | /// Usually this type is type of subject itself, but it doesn't have to be. 14 | associatedtype Observer: ObserverType 15 | 16 | /// Returns observer interface for subject. 17 | /// 18 | /// - returns: Observer interface for subject. 19 | func asObserver() -> Observer 20 | 21 | } 22 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwift/RxSwift.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CODE_SIGN_IDENTITY = 3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxSwift 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxSwift 10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 12 | SKIP_INSTALL = YES 13 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 14 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/Common/SectionedViewDataSourceType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SectionedViewDataSourceType.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 1/10/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Data source with access to underlying sectioned model. 12 | public protocol SectionedViewDataSourceType { 13 | /// Returns model at index path. 14 | /// 15 | /// In case data source doesn't contain any sections when this method is being called, `RxCocoaError.ItemsNotYetBound(object: self)` is thrown. 16 | 17 | /// - parameter indexPath: Model index path 18 | /// - returns: Model at index path. 19 | func model(at indexPath: IndexPath) throws -> Any 20 | } 21 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwift/RxSwift.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CODE_SIGN_IDENTITY = 3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxSwift 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxSwift 10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 12 | SKIP_INSTALL = YES 13 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 14 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/macOS/NSSlider+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NSSlider+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Junior B. on 24/05/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(macOS) 10 | 11 | import RxSwift 12 | import Cocoa 13 | 14 | extension Reactive where Base: NSSlider { 15 | 16 | /// Reactive wrapper for `value` property. 17 | public var value: ControlProperty { 18 | return self.base.rx.controlProperty( 19 | getter: { control -> Double in 20 | return control.doubleValue 21 | }, 22 | setter: { control, value in 23 | control.doubleValue = value 24 | } 25 | ) 26 | } 27 | 28 | } 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/UIRefreshControl+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIRefreshControl+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Yosuke Ishikawa on 1/31/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension Reactive where Base: UIRefreshControl { 15 | /// Bindable sink for `beginRefreshing()`, `endRefreshing()` methods. 16 | public var isRefreshing: Binder { 17 | return Binder(self.base) { refreshControl, refresh in 18 | if refresh { 19 | refreshControl.beginRefreshing() 20 | } else { 21 | refreshControl.endRefreshing() 22 | } 23 | } 24 | } 25 | 26 | } 27 | 28 | #endif 29 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Disposables/NopDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NopDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/15/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents a disposable that does nothing on disposal. 10 | /// 11 | /// Nop = No Operation 12 | private struct NopDisposable : Disposable { 13 | 14 | fileprivate static let noOp: Disposable = NopDisposable() 15 | 16 | private init() { 17 | 18 | } 19 | 20 | /// Does nothing. 21 | public func dispose() { 22 | } 23 | } 24 | 25 | extension Disposables { 26 | /** 27 | Creates a disposable that does nothing on disposal. 28 | */ 29 | static public func create() -> Disposable { NopDisposable.noOp } 30 | } 31 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MASShortcut/MASShortcut.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CODE_SIGN_IDENTITY = 3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MASShortcut 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | OTHER_LDFLAGS = $(inherited) -framework "AppKit" -framework "Carbon" 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MASShortcut 10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 12 | SKIP_INSTALL = YES 13 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 14 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/UIActivityIndicatorView+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIActivityIndicatorView+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Ivan Persidskiy on 02/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension Reactive where Base: UIActivityIndicatorView { 15 | /// Bindable sink for `startAnimating()`, `stopAnimating()` methods. 16 | public var isAnimating: Binder { 17 | Binder(self.base) { activityIndicator, active in 18 | if active { 19 | activityIndicator.startAnimating() 20 | } else { 21 | activityIndicator.stopAnimating() 22 | } 23 | } 24 | } 25 | } 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /Pods/Target Support Files/GCDWebServer/GCDWebServer.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CODE_SIGN_IDENTITY = 3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GCDWebServer 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | OTHER_LDFLAGS = $(inherited) -l"z" -framework "SystemConfiguration" 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/GCDWebServer 10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 12 | SKIP_INSTALL = YES 13 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 14 | -------------------------------------------------------------------------------- /Pods/Target Support Files/GCDWebServer/GCDWebServer.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CODE_SIGN_IDENTITY = 3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/GCDWebServer 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | OTHER_LDFLAGS = $(inherited) -l"z" -framework "SystemConfiguration" 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/GCDWebServer 10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 12 | SKIP_INSTALL = YES 13 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 14 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MASShortcut/MASShortcut.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CODE_SIGN_IDENTITY = 3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/MASShortcut 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | OTHER_LDFLAGS = $(inherited) -framework "AppKit" -framework "Carbon" 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_ROOT = ${SRCROOT} 9 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MASShortcut 10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 11 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 12 | SKIP_INSTALL = YES 13 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 14 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-proxy_conf_helper/Pods-proxy_conf_helper.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/BRLOptionParser" 4 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BRLOptionParser" 5 | OTHER_LDFLAGS = $(inherited) -ObjC -l"BRLOptionParser" 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 12 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-proxy_conf_helper/Pods-proxy_conf_helper.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/BRLOptionParser" 4 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/BRLOptionParser" 5 | OTHER_LDFLAGS = $(inherited) -ObjC -l"BRLOptionParser" 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 12 | -------------------------------------------------------------------------------- /Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment this line to define a global platform for your project 2 | # platform :ios, '9.0' 3 | platform :macos, '10.12' 4 | 5 | target 'ShadowsocksX-NG' do 6 | # Comment this line if you're not using Swift and don't want to use dynamic frameworks 7 | use_frameworks! 8 | 9 | # Pods for ShadowsocksX-NG 10 | pod 'Alamofire', '~> 5.4.3' 11 | pod "GCDWebServer", "~> 3.0" 12 | pod 'MASShortcut', '~> 2' 13 | 14 | # https://github.com/ReactiveX/RxSwift/blob/master/Documentation/GettingStarted.md 15 | pod 'RxSwift', '~> 6.2.0' 16 | pod 'RxCocoa', '~> 6.2.0' 17 | 18 | target 'ShadowsocksX-NGTests' do 19 | inherit! :search_paths 20 | # Pods for testing 21 | end 22 | 23 | end 24 | 25 | target 'proxy_conf_helper' do 26 | pod 'BRLOptionParser', '~> 0.3.1' 27 | end 28 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/Traits/Driver/ControlEvent+Driver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ControlEvent+Driver.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 9/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | extension ControlEvent { 12 | /// Converts `ControlEvent` to `Driver` trait. 13 | /// 14 | /// `ControlEvent` already can't fail, so no special case needs to be handled. 15 | public func asDriver() -> Driver { 16 | return self.asDriver { _ -> Driver in 17 | #if DEBUG 18 | rxFatalError("Somehow driver received error from a source that shouldn't fail.") 19 | #else 20 | return Driver.empty() 21 | #endif 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/Foundation/KVORepresentable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // KVORepresentable.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 11/14/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Type that is KVO representable (KVO mechanism can be used to observe it). 10 | public protocol KVORepresentable { 11 | /// Associated KVO type. 12 | associatedtype KVOType 13 | 14 | /// Constructs `Self` using KVO value. 15 | init?(KVOValue: KVOType) 16 | } 17 | 18 | extension KVORepresentable { 19 | /// Initializes `KVORepresentable` with optional value. 20 | init?(KVOValue: KVOType?) { 21 | guard let KVOValue = KVOValue else { 22 | return nil 23 | } 24 | 25 | self.init(KVOValue: KVOValue) 26 | } 27 | } 28 | 29 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/Traits/Signal/ControlEvent+Signal.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ControlEvent+Signal.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 11/1/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | extension ControlEvent { 12 | /// Converts `ControlEvent` to `Signal` trait. 13 | /// 14 | /// `ControlEvent` already can't fail, so no special case needs to be handled. 15 | public func asSignal() -> Signal { 16 | return self.asSignal { _ -> Signal in 17 | #if DEBUG 18 | rxFatalError("Somehow signal received error from a source that shouldn't fail.") 19 | #else 20 | return Signal.empty() 21 | #endif 22 | } 23 | } 24 | } 25 | 26 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/Traits/Driver/ControlProperty+Driver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ControlProperty+Driver.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 9/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | extension ControlProperty { 12 | /// Converts `ControlProperty` to `Driver` trait. 13 | /// 14 | /// `ControlProperty` already can't fail, so no special case needs to be handled. 15 | public func asDriver() -> Driver { 16 | return self.asDriver { _ -> Driver in 17 | #if DEBUG 18 | rxFatalError("Somehow driver received error from a source that shouldn't fail.") 19 | #else 20 | return Driver.empty() 21 | #endif 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Alamofire/Alamofire.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CODE_SIGN_IDENTITY = 3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Alamofire 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | OTHER_LDFLAGS = $(inherited) -framework "CFNetwork" 6 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_ROOT = ${SRCROOT} 10 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Alamofire 11 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 12 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 13 | SKIP_INSTALL = YES 14 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 15 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Alamofire/Alamofire.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CODE_SIGN_IDENTITY = 3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Alamofire 4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 5 | OTHER_LDFLAGS = $(inherited) -framework "CFNetwork" 6 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_ROOT = ${SRCROOT} 10 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Alamofire 11 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 12 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 13 | SKIP_INSTALL = YES 14 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 15 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MASShortcut/MASShortcut-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "MASKeyCodes.h" 14 | #import "MASKeyMasks.h" 15 | #import "MASShortcut.h" 16 | #import "MASShortcutValidator.h" 17 | #import "MASHotKey.h" 18 | #import "MASShortcutMonitor.h" 19 | #import "Shortcut.h" 20 | #import "MASLocalization.h" 21 | #import "MASShortcutView+Bindings.h" 22 | #import "MASShortcutView.h" 23 | #import "MASDictionaryTransformer.h" 24 | #import "MASShortcutBinder.h" 25 | 26 | FOUNDATION_EXPORT double MASShortcutVersionNumber; 27 | FOUNDATION_EXPORT const unsigned char MASShortcutVersionString[]; 28 | 29 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxRelay/RxRelay.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CODE_SIGN_IDENTITY = 3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxRelay 4 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 5 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 6 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_ROOT = ${SRCROOT} 10 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxRelay 11 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 12 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 13 | SKIP_INSTALL = YES 14 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 15 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/Proxies/RxTableViewDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTableViewDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/15/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | /// For more information take a look at `DelegateProxyType`. 15 | open class RxTableViewDelegateProxy 16 | : RxScrollViewDelegateProxy 17 | , UITableViewDelegate { 18 | 19 | /// Typed parent object. 20 | public weak private(set) var tableView: UITableView? 21 | 22 | /// - parameter tableView: Parent object for delegate proxy. 23 | public init(tableView: UITableView) { 24 | self.tableView = tableView 25 | super.init(scrollView: tableView) 26 | } 27 | 28 | } 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxRelay/RxRelay.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CODE_SIGN_IDENTITY = 3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxRelay 4 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 5 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 6 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_ROOT = ${SRCROOT} 10 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxRelay 11 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 12 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 13 | SKIP_INSTALL = YES 14 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 15 | -------------------------------------------------------------------------------- /ShadowsocksX-NGTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE) 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | 1 21 | 22 | 23 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Observable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Observable.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// A type-erased `ObservableType`. 10 | /// 11 | /// It represents a push style sequence. 12 | public class Observable : ObservableType { 13 | init() { 14 | #if TRACE_RESOURCES 15 | _ = Resources.incrementTotal() 16 | #endif 17 | } 18 | 19 | public func subscribe(_ observer: Observer) -> Disposable where Observer.Element == Element { 20 | rxAbstractMethod() 21 | } 22 | 23 | public func asObservable() -> Observable { self } 24 | 25 | deinit { 26 | #if TRACE_RESOURCES 27 | _ = Resources.decrementTotal() 28 | #endif 29 | } 30 | } 31 | 32 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Observers/AnonymousObserver.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AnonymousObserver.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | final class AnonymousObserver: ObserverBase { 10 | typealias EventHandler = (Event) -> Void 11 | 12 | private let eventHandler : EventHandler 13 | 14 | init(_ eventHandler: @escaping EventHandler) { 15 | #if TRACE_RESOURCES 16 | _ = Resources.incrementTotal() 17 | #endif 18 | self.eventHandler = eventHandler 19 | } 20 | 21 | override func onCore(_ event: Event) { 22 | self.eventHandler(event) 23 | } 24 | 25 | #if TRACE_RESOURCES 26 | deinit { 27 | _ = Resources.decrementTotal() 28 | } 29 | #endif 30 | } 31 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Schedulers/HistoricalScheduler.swift: -------------------------------------------------------------------------------- 1 | // 2 | // HistoricalScheduler.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 12/27/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | /// Provides a virtual time scheduler that uses `Date` for absolute time and `NSTimeInterval` for relative time. 12 | public class HistoricalScheduler : VirtualTimeScheduler { 13 | 14 | /** 15 | Creates a new historical scheduler with initial clock value. 16 | 17 | - parameter initialClock: Initial value for virtual clock. 18 | */ 19 | public init(initialClock: RxTime = Date(timeIntervalSince1970: 0)) { 20 | super.init(initialClock: initialClock, converter: HistoricalSchedulerTimeConverter()) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/zh-Hans.lproj/ShareServerProfilesWindowController.strings: -------------------------------------------------------------------------------- 1 | 2 | /* Class = "NSButtonCell"; title = "Save All Server URLs As File"; ObjectID = "9OS-xy-GB1"; */ 3 | "9OS-xy-GB1.title" = "保存所有服务器链接到文件"; 4 | 5 | /* Class = "NSWindow"; title = "Share Server Profiles"; ObjectID = "F0z-JX-Cv5"; */ 6 | "F0z-JX-Cv5.title" = "分享服务器配置"; 7 | 8 | /* Class = "NSButtonCell"; title = "Save QRCode As File"; ObjectID = "IaI-Rj-Kss"; */ 9 | "IaI-Rj-Kss.title" = "保存二维码到文件"; 10 | 11 | /* Class = "NSButtonCell"; title = "Copy URL"; ObjectID = "PHX-gY-lZe"; */ 12 | "PHX-gY-lZe.title" = "复制链接"; 13 | 14 | /* Class = "NSButtonCell"; title = "Copy QRCode"; ObjectID = "PrW-s6-Uab"; */ 15 | "PrW-s6-Uab.title" = "复制二维码"; 16 | 17 | /* Class = "NSButtonCell"; title = "Copy All Server URLs"; ObjectID = "Yt2-p1-4w0"; */ 18 | "Yt2-p1-4w0.title" = "复制所有服务器链接"; 19 | 20 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/kcptun/install_kcptun.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # install_kcptun.sh 4 | # ShadowsocksX-NG 5 | # 6 | # Created by 邱宇舟 on 2018/9/21. 7 | # Copyright © 2018-2019年 qiuyuzhou. All rights reserved. 8 | 9 | # Use kcptune bianry from here which is not support SIP003. 10 | # We use an adatper to handle it. 11 | # https://github.com/xtaci/kcptun/releases 12 | 13 | cd "$(dirname "${BASH_SOURCE[0]}")" 14 | 15 | mkdir -p "$HOME/Library/Application Support/ShadowsocksX-NG/kcptun" 16 | cp -f client "$HOME/Library/Application Support/ShadowsocksX-NG/kcptun/" 17 | 18 | # Delete old kcptun symbol link 19 | rm -f "$HOME/Library/Application Support/ShadowsocksX-NG/plugins/kcptun" 20 | 21 | # Copy adapter shell script to plugin folder 22 | cp -f kcptun.sh "$HOME/Library/Application Support/ShadowsocksX-NG/plugins/kcptun" 23 | 24 | echo "install kcptun done" 25 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/Protocols/RxPickerViewDataSourceType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxPickerViewDataSourceType.swift 3 | // RxCocoa 4 | // 5 | // Created by Sergey Shulga on 05/07/2017. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | /// Marks data source as `UIPickerView` reactive data source enabling it to be used with one of the `bindTo` methods. 15 | public protocol RxPickerViewDataSourceType { 16 | /// Type of elements that can be bound to picker view. 17 | associatedtype Element 18 | 19 | /// New observable sequence event observed. 20 | /// 21 | /// - parameter pickerView: Bound picker view. 22 | /// - parameter observedEvent: Event 23 | func pickerView(_ pickerView: UIPickerView, observedEvent: Event) 24 | } 25 | 26 | #endif 27 | -------------------------------------------------------------------------------- /Pods/RxCocoa/Platform/RecursiveLock.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RecursiveLock.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 12/18/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | #if TRACE_RESOURCES 12 | class RecursiveLock: NSRecursiveLock { 13 | override init() { 14 | _ = Resources.incrementTotal() 15 | super.init() 16 | } 17 | 18 | override func lock() { 19 | super.lock() 20 | _ = Resources.incrementTotal() 21 | } 22 | 23 | override func unlock() { 24 | super.unlock() 25 | _ = Resources.decrementTotal() 26 | } 27 | 28 | deinit { 29 | _ = Resources.decrementTotal() 30 | } 31 | } 32 | #else 33 | typealias RecursiveLock = NSRecursiveLock 34 | #endif 35 | -------------------------------------------------------------------------------- /Pods/RxSwift/Platform/RecursiveLock.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RecursiveLock.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 12/18/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | #if TRACE_RESOURCES 12 | class RecursiveLock: NSRecursiveLock { 13 | override init() { 14 | _ = Resources.incrementTotal() 15 | super.init() 16 | } 17 | 18 | override func lock() { 19 | super.lock() 20 | _ = Resources.incrementTotal() 21 | } 22 | 23 | override func unlock() { 24 | super.unlock() 25 | _ = Resources.decrementTotal() 26 | } 27 | 28 | deinit { 29 | _ = Resources.decrementTotal() 30 | } 31 | } 32 | #else 33 | typealias RecursiveLock = NSRecursiveLock 34 | #endif 35 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/ConnectableObservableType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ConnectableObservableType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 3/1/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /** 10 | Represents an observable sequence wrapper that can be connected and disconnected from its underlying observable sequence. 11 | */ 12 | public protocol ConnectableObservableType : ObservableType { 13 | /** 14 | Connects the observable wrapper to its source. All subscribed observers will receive values from the underlying observable sequence as long as the connection is established. 15 | 16 | - returns: Disposable used to disconnect the observable wrapper from its source, causing subscribed observer to stop receiving values from the underlying observable sequence. 17 | */ 18 | func connect() -> Disposable 19 | } 20 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxCocoa/RxCocoa.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CODE_SIGN_IDENTITY = 3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa 4 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 5 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 6 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_ROOT = ${SRCROOT} 10 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxCocoa 11 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 12 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 13 | SKIP_INSTALL = YES 14 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 15 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxCocoa/RxCocoa.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CODE_SIGN_IDENTITY = 3 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa 4 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 5 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 6 | OTHER_SWIFT_FLAGS = $(inherited) -D COCOAPODS 7 | PODS_BUILD_DIR = ${BUILD_DIR} 8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 9 | PODS_ROOT = ${SRCROOT} 10 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/RxCocoa 11 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 12 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 13 | SKIP_INSTALL = YES 14 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 15 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Observers/ObserverBase.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ObserverBase.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/15/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | class ObserverBase : Disposable, ObserverType { 10 | private let isStopped = AtomicInt(0) 11 | 12 | func on(_ event: Event) { 13 | switch event { 14 | case .next: 15 | if load(self.isStopped) == 0 { 16 | self.onCore(event) 17 | } 18 | case .error, .completed: 19 | if fetchOr(self.isStopped, 1) == 0 { 20 | self.onCore(event) 21 | } 22 | } 23 | } 24 | 25 | func onCore(_ event: Event) { 26 | rxAbstractMethod() 27 | } 28 | 29 | func dispose() { 30 | fetchOr(self.isStopped, 1) 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/Runtime/include/_RXDelegateProxy.h: -------------------------------------------------------------------------------- 1 | // 2 | // _RXDelegateProxy.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface _RXDelegateProxy : NSObject 14 | 15 | @property (nonatomic, weak, readonly) id _forwardToDelegate; 16 | 17 | -(void)_setForwardToDelegate:(id __nullable)forwardToDelegate retainDelegate:(BOOL)retainDelegate NS_SWIFT_NAME(_setForwardToDelegate(_:retainDelegate:)) ; 18 | 19 | -(BOOL)hasWiredImplementationForSelector:(SEL)selector; 20 | -(BOOL)voidDelegateMethodsContain:(SEL)selector; 21 | 22 | -(void)_sentMessage:(SEL)selector withArguments:(NSArray*)arguments; 23 | -(void)_methodInvoked:(SEL)selector withArguments:(NSArray*)arguments; 24 | 25 | @end 26 | 27 | NS_ASSUME_NONNULL_END 28 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/Protocols/RxTableViewDataSourceType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTableViewDataSourceType.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/26/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | /// Marks data source as `UITableView` reactive data source enabling it to be used with one of the `bindTo` methods. 15 | public protocol RxTableViewDataSourceType /*: UITableViewDataSource*/ { 16 | 17 | /// Type of elements that can be bound to table view. 18 | associatedtype Element 19 | 20 | /// New observable sequence event observed. 21 | /// 22 | /// - parameter tableView: Bound table view. 23 | /// - parameter observedEvent: Event 24 | func tableView(_ tableView: UITableView, observedEvent: Event) 25 | } 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /Pods/Target Support Files/BRLOptionParser/BRLOptionParser.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/BRLOptionParser 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/BRLOptionParser" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/BRLOptionParser" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/BRLOptionParser 9 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 13 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MASShortcut/ResourceBundle-MASShortcut-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleIdentifier 8 | ${PRODUCT_BUNDLE_IDENTIFIER} 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundleName 12 | ${PRODUCT_NAME} 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 2.3.6 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | NSPrincipalClass 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Pods/MASShortcut/Framework/User Defaults Storage/MASDictionaryTransformer.h: -------------------------------------------------------------------------------- 1 | extern NSString *const MASDictionaryTransformerName; 2 | 3 | /** 4 | Converts shortcuts for storage in user defaults. 5 | 6 | User defaults can’t stored custom types directly, they have to 7 | be serialized to `NSData` or some other supported type like an 8 | `NSDictionary`. In Cocoa Bindings, the conversion can be done 9 | using value transformers like this one. 10 | 11 | There’s a built-in transformer (`NSKeyedUnarchiveFromDataTransformerName`) 12 | that converts any `NSCoding` types to `NSData`, but with shortcuts 13 | it makes sense to use a dictionary instead – the defaults look better 14 | when inspected with the `defaults` command-line utility and the 15 | format is compatible with an older sortcut library called Shortcut 16 | Recorder. 17 | */ 18 | @interface MASDictionaryTransformer : NSValueTransformer 19 | @end 20 | -------------------------------------------------------------------------------- /Pods/Target Support Files/BRLOptionParser/BRLOptionParser.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/BRLOptionParser 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/BRLOptionParser" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/BRLOptionParser" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_ROOT = ${SRCROOT} 8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/BRLOptionParser 9 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 11 | SKIP_INSTALL = YES 12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 13 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MASShortcut/ResourceBundle-MASShortcut-MASShortcut-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleIdentifier 8 | ${PRODUCT_BUNDLE_IDENTIFIER} 9 | CFBundleInfoDictionaryVersion 10 | 6.0 11 | CFBundleName 12 | ${PRODUCT_NAME} 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 2.4.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1 21 | NSPrincipalClass 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/macOS/NSButton+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NSButton+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 5/17/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(macOS) 10 | 11 | import RxSwift 12 | import Cocoa 13 | 14 | extension Reactive where Base: NSButton { 15 | 16 | /// Reactive wrapper for control event. 17 | public var tap: ControlEvent { 18 | self.controlEvent 19 | } 20 | 21 | /// Reactive wrapper for `state` property`. 22 | public var state: ControlProperty { 23 | return self.base.rx.controlProperty( 24 | getter: { control in 25 | return control.state 26 | }, setter: { (control: NSButton, state: NSControl.StateValue) in 27 | control.state = state 28 | } 29 | ) 30 | } 31 | } 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Schedulers/Internal/ScheduledItem.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ScheduledItem.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 9/2/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | struct ScheduledItem 10 | : ScheduledItemType 11 | , InvocableType { 12 | typealias Action = (T) -> Disposable 13 | 14 | private let action: Action 15 | private let state: T 16 | 17 | private let disposable = SingleAssignmentDisposable() 18 | 19 | var isDisposed: Bool { 20 | self.disposable.isDisposed 21 | } 22 | 23 | init(action: @escaping Action, state: T) { 24 | self.action = action 25 | self.state = state 26 | } 27 | 28 | func invoke() { 29 | self.disposable.setDisposable(self.action(self.state)) 30 | } 31 | 32 | func dispose() { 33 | self.disposable.dispose() 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/ShortcutsController.m: -------------------------------------------------------------------------------- 1 | // 2 | // ShortcutsController.m 3 | // ShadowsocksX-NG 4 | // 5 | // Created by 邱宇舟 on 2017/3/10. 6 | // Copyright © 2017年 qiuyuzhou. All rights reserved. 7 | // 8 | 9 | #import "ShortcutsController.h" 10 | 11 | #import 12 | 13 | 14 | @implementation ShortcutsController 15 | 16 | + (void)bindShortcuts { 17 | MASShortcutBinder* binder = [MASShortcutBinder sharedBinder]; 18 | [binder 19 | bindShortcutWithDefaultsKey: @"ToggleRunning" 20 | toAction:^{ 21 | [[NSNotificationCenter defaultCenter] postNotificationName: @"NOTIFY_TOGGLE_RUNNING_SHORTCUT" object: nil]; 22 | }]; 23 | [binder 24 | bindShortcutWithDefaultsKey: @"SwitchProxyMode" 25 | toAction:^{ 26 | [[NSNotificationCenter defaultCenter] postNotificationName: @"NOTIFY_SWITCH_PROXY_MODE_SHORTCUT" object: nil]; 27 | }]; 28 | } 29 | 30 | @end 31 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/Common/RxTarget.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTarget.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | import RxSwift 12 | 13 | class RxTarget : NSObject 14 | , Disposable { 15 | 16 | private var retainSelf: RxTarget? 17 | 18 | override init() { 19 | super.init() 20 | self.retainSelf = self 21 | 22 | #if TRACE_RESOURCES 23 | _ = Resources.incrementTotal() 24 | #endif 25 | 26 | #if DEBUG 27 | MainScheduler.ensureRunningOnMainThread() 28 | #endif 29 | } 30 | 31 | func dispose() { 32 | #if DEBUG 33 | MainScheduler.ensureRunningOnMainThread() 34 | #endif 35 | self.retainSelf = nil 36 | } 37 | 38 | #if TRACE_RESOURCES 39 | deinit { 40 | _ = Resources.decrementTotal() 41 | } 42 | #endif 43 | } 44 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Observables/Never.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Never.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | extension ObservableType { 10 | 11 | /** 12 | Returns a non-terminating observable sequence, which can be used to denote an infinite duration. 13 | 14 | - seealso: [never operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html) 15 | 16 | - returns: An observable sequence whose observers will never get called. 17 | */ 18 | public static func never() -> Observable { 19 | NeverProducer() 20 | } 21 | } 22 | 23 | final private class NeverProducer: Producer { 24 | override func subscribe(_ observer: Observer) -> Disposable where Observer.Element == Element { 25 | Disposables.create() 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/Protocols/RxCollectionViewDataSourceType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxCollectionViewDataSourceType.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | /// Marks data source as `UICollectionView` reactive data source enabling it to be used with one of the `bindTo` methods. 15 | public protocol RxCollectionViewDataSourceType /*: UICollectionViewDataSource*/ { 16 | 17 | /// Type of elements that can be bound to collection view. 18 | associatedtype Element 19 | 20 | /// New observable sequence event observed. 21 | /// 22 | /// - parameter collectionView: Bound collection view. 23 | /// - parameter observedEvent: Event 24 | func collectionView(_ collectionView: UICollectionView, observedEvent: Event) 25 | } 26 | 27 | #endif 28 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/Runtime/include/_RXKVOObserver.h: -------------------------------------------------------------------------------- 1 | // 2 | // _RXKVOObserver.h 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/11/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | /** 12 | ################################################################################ 13 | This file is part of RX private API 14 | ################################################################################ 15 | */ 16 | 17 | // Exists because if written in Swift, reading unowned is disabled during dealloc process 18 | @interface _RXKVOObserver : NSObject 19 | 20 | -(instancetype)initWithTarget:(id)target 21 | retainTarget:(BOOL)retainTarget 22 | keyPath:(NSString*)keyPath 23 | options:(NSKeyValueObservingOptions)options 24 | callback:(void (^)(id))callback; 25 | 26 | -(void)dispose; 27 | 28 | @end 29 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxCocoa/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 4.1.2 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwift/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 4.1.2 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/RxCocoa/Platform/Platform.Linux.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Platform.Linux.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 12/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(Linux) 10 | 11 | import Foundation 12 | 13 | extension Thread { 14 | 15 | static func setThreadLocalStorageValue(_ value: T?, forKey key: String) { 16 | if let newValue = value { 17 | Thread.current.threadDictionary[key] = newValue 18 | } 19 | else { 20 | Thread.current.threadDictionary[key] = nil 21 | } 22 | } 23 | 24 | static func getThreadLocalStorageValueForKey(_ key: String) -> T? { 25 | let currentThread = Thread.current 26 | let threadDictionary = currentThread.threadDictionary 27 | 28 | return threadDictionary[key] as? T 29 | } 30 | } 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /Pods/RxSwift/Platform/Platform.Linux.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Platform.Linux.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 12/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(Linux) 10 | 11 | import Foundation 12 | 13 | extension Thread { 14 | 15 | static func setThreadLocalStorageValue(_ value: T?, forKey key: String) { 16 | if let newValue = value { 17 | Thread.current.threadDictionary[key] = newValue 18 | } 19 | else { 20 | Thread.current.threadDictionary[key] = nil 21 | } 22 | } 23 | 24 | static func getThreadLocalStorageValueForKey(_ key: String) -> T? { 25 | let currentThread = Thread.current 26 | let threadDictionary = currentThread.threadDictionary 27 | 28 | return threadDictionary[key] as? T 29 | } 30 | } 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Alamofire/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 4.7.2 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/GCDWebServer/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 3.4.2 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MASShortcut/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 2.3.6 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/MASShortcut/Framework/Monitoring/MASShortcutMonitor.h: -------------------------------------------------------------------------------- 1 | #import "MASShortcut.h" 2 | 3 | /** 4 | Executes action when a shortcut is pressed. 5 | 6 | There can only be one instance of this class, otherwise things 7 | will probably not work. (There’s a Carbon event handler inside 8 | and there can only be one Carbon event handler of a given type.) 9 | */ 10 | @interface MASShortcutMonitor : NSObject 11 | 12 | - (instancetype) init __unavailable; 13 | + (instancetype) sharedMonitor; 14 | 15 | /** 16 | Register a shortcut along with an action. 17 | 18 | Attempting to insert an already registered shortcut probably won’t work. 19 | It may burn your house or cut your fingers. You have been warned. 20 | */ 21 | - (BOOL) registerShortcut: (MASShortcut*) shortcut withAction: (dispatch_block_t) action; 22 | - (BOOL) isShortcutRegistered: (MASShortcut*) shortcut; 23 | 24 | - (void) unregisterShortcut: (MASShortcut*) shortcut; 25 | - (void) unregisterAllShortcuts; 26 | 27 | @end 28 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxCocoa/RxCocoa-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 6.2.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxRelay/RxRelay-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 6.2.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/RxSwift/RxSwift-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 6.2.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Observables/Empty.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Empty.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | extension ObservableType { 10 | /** 11 | Returns an empty observable sequence, using the specified scheduler to send out the single `Completed` message. 12 | 13 | - seealso: [empty operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html) 14 | 15 | - returns: An observable sequence with no elements. 16 | */ 17 | public static func empty() -> Observable { 18 | EmptyProducer() 19 | } 20 | } 21 | 22 | final private class EmptyProducer: Producer { 23 | override func subscribe(_ observer: Observer) -> Disposable where Observer.Element == Element { 24 | observer.on(.completed) 25 | return Disposables.create() 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Alamofire/Alamofire-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 5.4.3 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ShadowsocksX-NG/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/MASShortcut/Framework/Model/MASKeyMasks.h: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | // https://github.com/shpakovski/MASShortcut/issues/99 4 | // 5 | // Long story short: NSControlKeyMask and friends were replaced with NSEventModifierFlagControl 6 | // and similar in macOS Sierra. The project builds fine & clean, but including MASShortcut in 7 | // a project with deployment target set to 10.12 results in several deprecation warnings because 8 | // of the control masks. Simply replacing the old symbols with the new ones isn’t an option, 9 | // since it breaks the build on older SDKs – in Travis, for example. 10 | // 11 | // It should be safe to remove this whole thing once the 10.12 SDK is ubiquitous. 12 | 13 | #if __MAC_OS_X_VERSION_MAX_ALLOWED < 101200 14 | #define NSEventModifierFlagCommand NSCommandKeyMask 15 | #define NSEventModifierFlagControl NSControlKeyMask 16 | #define NSEventModifierFlagOption NSAlternateKeyMask 17 | #define NSEventModifierFlagShift NSShiftKeyMask 18 | #endif 19 | -------------------------------------------------------------------------------- /Pods/Target Support Files/GCDWebServer/GCDWebServer-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 3.5.4 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/MASShortcut/MASShortcut-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 2.4.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ShadowsocksX-NGTests/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ShadowsocksX-NG/Pods-ShadowsocksX-NG-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/Proxies/RxCollectionViewDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxCollectionViewDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 6/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | /// For more information take a look at `DelegateProxyType`. 15 | open class RxCollectionViewDelegateProxy 16 | : RxScrollViewDelegateProxy 17 | , UICollectionViewDelegate 18 | , UICollectionViewDelegateFlowLayout { 19 | 20 | /// Typed parent object. 21 | public weak private(set) var collectionView: UICollectionView? 22 | 23 | /// Initializes `RxCollectionViewDelegateProxy` 24 | /// 25 | /// - parameter collectionView: Parent object for delegate proxy. 26 | public init(collectionView: UICollectionView) { 27 | self.collectionView = collectionView 28 | super.init(scrollView: collectionView) 29 | } 30 | } 31 | 32 | #endif 33 | -------------------------------------------------------------------------------- /Pods/Target Support Files/GCDWebServer/GCDWebServer-umbrella.h: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | #import "GCDWebServer.h" 14 | #import "GCDWebServerConnection.h" 15 | #import "GCDWebServerFunctions.h" 16 | #import "GCDWebServerHTTPStatusCodes.h" 17 | #import "GCDWebServerRequest.h" 18 | #import "GCDWebServerResponse.h" 19 | #import "GCDWebServerDataRequest.h" 20 | #import "GCDWebServerFileRequest.h" 21 | #import "GCDWebServerMultiPartFormRequest.h" 22 | #import "GCDWebServerURLEncodedFormRequest.h" 23 | #import "GCDWebServerDataResponse.h" 24 | #import "GCDWebServerErrorResponse.h" 25 | #import "GCDWebServerFileResponse.h" 26 | #import "GCDWebServerStreamedResponse.h" 27 | 28 | FOUNDATION_EXPORT double GCDWebServerVersionNumber; 29 | FOUNDATION_EXPORT const unsigned char GCDWebServerVersionString[]; 30 | 31 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ShadowsocksX-NGTests/Pods-ShadowsocksX-NGTests-Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | ${EXECUTABLE_NAME} 9 | CFBundleIdentifier 10 | ${PRODUCT_BUNDLE_IDENTIFIER} 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | ${PRODUCT_NAME} 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | ${CURRENT_PROJECT_VERSION} 23 | NSPrincipalClass 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /.github/workflows/feature.yml: -------------------------------------------------------------------------------- 1 | name: Feature Building 2 | 3 | on: 4 | push: 5 | branches: 6 | - '*' 7 | pull_request: 8 | branches: 9 | - '*' 10 | 11 | jobs: 12 | build: 13 | 14 | runs-on: macos-latest 15 | 16 | steps: 17 | 18 | - name: Checkout 19 | uses: actions/checkout@v3 20 | with: 21 | submodules: recursive 22 | fetch-depth: 0 23 | 24 | - name: Build 25 | run: | 26 | brew install automake 27 | brew install autoconf 28 | brew install libtool 29 | make VERSION="${GITHUB_SHA::7}" debug 30 | make debug-dmg 31 | shasum -a 256 build/Debug/ShadowsocksX-NG.dmg > build/Debug/ShadowsocksX-NG.dmg.checksum 32 | 33 | - name: Upload artifacts 34 | uses: actions/upload-artifact@v3 35 | with: 36 | name: ShadowsocksX-NG 37 | path: | 38 | build/Debug/ShadowsocksX-NG.dmg 39 | build/Debug/ShadowsocksX-NG.dmg.checksum 40 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ShadowsocksX-NGTests/Pods-ShadowsocksX-NGTests-acknowledgements.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreferenceSpecifiers 6 | 7 | 8 | FooterText 9 | This application makes use of the following third party libraries: 10 | Title 11 | Acknowledgements 12 | Type 13 | PSGroupSpecifier 14 | 15 | 16 | FooterText 17 | Generated by CocoaPods - https://cocoapods.org 18 | Title 19 | 20 | Type 21 | PSGroupSpecifier 22 | 23 | 24 | StringsTable 25 | Acknowledgements 26 | Title 27 | Acknowledgements 28 | 29 | 30 | -------------------------------------------------------------------------------- /Pods/MASShortcut/Framework/UI/MASShortcutView.h: -------------------------------------------------------------------------------- 1 | @class MASShortcut, MASShortcutValidator; 2 | 3 | extern NSString *const MASShortcutBinding; 4 | 5 | typedef NS_ENUM(NSInteger, MASShortcutViewStyle) { 6 | MASShortcutViewStyleDefault = 0, // Height = 19 px 7 | MASShortcutViewStyleTexturedRect, // Height = 25 px 8 | MASShortcutViewStyleRounded, // Height = 43 px 9 | MASShortcutViewStyleFlat 10 | }; 11 | 12 | @interface MASShortcutView : NSView 13 | 14 | @property (nonatomic, strong) MASShortcut *shortcutValue; 15 | @property (nonatomic, strong) MASShortcutValidator *shortcutValidator; 16 | @property (nonatomic, getter = isRecording) BOOL recording; 17 | @property (nonatomic, getter = isEnabled) BOOL enabled; 18 | @property (nonatomic, copy) void (^shortcutValueChange)(MASShortcutView *sender); 19 | @property (nonatomic, assign) MASShortcutViewStyle style; 20 | 21 | /// Returns custom class for drawing control. 22 | + (Class)shortcutCellClass; 23 | 24 | - (void)setAcceptsFirstResponder:(BOOL)value; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/Utils.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Utils.swift 3 | // ShadowsocksX-NG 4 | // 5 | // Created by 邱宇舟 on 16/6/7. 6 | // Copyright © 2016年 qiuyuzhou. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | extension String { 12 | var localized: String { 13 | return NSLocalizedString(self, tableName: "Localizable", comment: "") 14 | } 15 | 16 | func localized(withComment:String) -> String { 17 | return NSLocalizedString(self, tableName: "Localizable", comment: withComment) 18 | } 19 | } 20 | 21 | extension Data { 22 | func sha1() -> String { 23 | let data = self 24 | var digest = [UInt8](repeating: 0, count: Int(CC_SHA1_DIGEST_LENGTH)) 25 | CC_SHA1((data as NSData).bytes, CC_LONG(data.count), &digest) 26 | let hexBytes = digest.map { String(format: "%02hhx", $0) } 27 | return hexBytes.joined(separator: "") 28 | } 29 | } 30 | 31 | enum ProxyType { 32 | case pac 33 | case global 34 | } 35 | 36 | struct Globals { 37 | static var proxyType = ProxyType.pac 38 | } 39 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/UISwitch+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UISwitch+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Carlos García on 8/7/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension Reactive where Base: UISwitch { 15 | 16 | /// Reactive wrapper for `isOn` property. 17 | public var isOn: ControlProperty { 18 | value 19 | } 20 | 21 | /// Reactive wrapper for `isOn` property. 22 | /// 23 | /// ⚠️ Versions prior to iOS 10.2 were leaking `UISwitch`'s, so on those versions 24 | /// underlying observable sequence won't complete when nothing holds a strong reference 25 | /// to `UISwitch`. 26 | public var value: ControlProperty { 27 | return base.rx.controlPropertyWithDefaultEvents( 28 | getter: { uiSwitch in 29 | uiSwitch.isOn 30 | }, setter: { uiSwitch, value in 31 | uiSwitch.isOn = value 32 | } 33 | ) 34 | } 35 | 36 | } 37 | 38 | #endif 39 | -------------------------------------------------------------------------------- /ShadowsocksX-NGTests/ShadowsocksX_NGTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ShadowsocksX_NGTests.swift 3 | // ShadowsocksX-NGTests 4 | // 5 | // Created by 邱宇舟 on 2021/6/24. 6 | // Copyright © 2021 qiuyuzhou. All rights reserved. 7 | // 8 | 9 | import XCTest 10 | 11 | class ShadowsocksX_NGTests: XCTestCase { 12 | 13 | override func setUpWithError() throws { 14 | // Put setup code here. This method is called before the invocation of each test method in the class. 15 | } 16 | 17 | override func tearDownWithError() throws { 18 | // Put teardown code here. This method is called after the invocation of each test method in the class. 19 | } 20 | 21 | func testExample() throws { 22 | // This is an example of a functional test case. 23 | // Use XCTAssert and related functions to verify your tests produce the correct results. 24 | } 25 | 26 | func testPerformanceExample() throws { 27 | // This is an example of a performance test case. 28 | measure { 29 | // Put the code you want to measure the time of here. 30 | } 31 | } 32 | 33 | } 34 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Disposables/BooleanDisposable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BooleanDisposable.swift 3 | // RxSwift 4 | // 5 | // Created by Junior B. on 10/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents a disposable resource that can be checked for disposal status. 10 | public final class BooleanDisposable : Cancelable { 11 | 12 | internal static let BooleanDisposableTrue = BooleanDisposable(isDisposed: true) 13 | private var disposed = false 14 | 15 | /// Initializes a new instance of the `BooleanDisposable` class 16 | public init() { 17 | } 18 | 19 | /// Initializes a new instance of the `BooleanDisposable` class with given value 20 | public init(isDisposed: Bool) { 21 | self.disposed = isDisposed 22 | } 23 | 24 | /// - returns: Was resource disposed. 25 | public var isDisposed: Bool { 26 | self.disposed 27 | } 28 | 29 | /// Sets the status to disposed, which can be observer through the `isDisposed` property. 30 | public func dispose() { 31 | self.disposed = true 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Observables/Error.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Error.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 8/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | extension ObservableType { 10 | /** 11 | Returns an observable sequence that terminates with an `error`. 12 | 13 | - seealso: [throw operator on reactivex.io](http://reactivex.io/documentation/operators/empty-never-throw.html) 14 | 15 | - returns: The observable sequence that terminates with specified error. 16 | */ 17 | public static func error(_ error: Swift.Error) -> Observable { 18 | ErrorProducer(error: error) 19 | } 20 | } 21 | 22 | final private class ErrorProducer: Producer { 23 | private let error: Swift.Error 24 | 25 | init(error: Swift.Error) { 26 | self.error = error 27 | } 28 | 29 | override func subscribe(_ observer: Observer) -> Disposable where Observer.Element == Element { 30 | observer.on(.error(self.error)) 31 | return Disposables.create() 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /Pods/MASShortcut/Framework/UI/MASShortcutView+Bindings.h: -------------------------------------------------------------------------------- 1 | #import "MASShortcutView.h" 2 | 3 | /** 4 | A simplified interface to bind the recorder value to user defaults. 5 | 6 | You can bind the `shortcutValue` to user defaults using the standard 7 | `bind:toObject:withKeyPath:options:` call, but since that’s a lot to type 8 | and read, here’s a simpler option. 9 | 10 | Setting the `associatedUserDefaultsKey` binds the view’s shortcut value 11 | to the given user defaults key. You can supply a value transformer to convert 12 | values between user defaults and `MASShortcut`. If you don’t supply 13 | a transformer, the `NSUnarchiveFromDataTransformerName` will be used 14 | automatically. 15 | 16 | Set `associatedUserDefaultsKey` to `nil` to disconnect the binding. 17 | */ 18 | @interface MASShortcutView (Bindings) 19 | 20 | @property(copy) NSString *associatedUserDefaultsKey; 21 | 22 | - (void) setAssociatedUserDefaultsKey: (NSString*) newKey withTransformer: (NSValueTransformer*) transformer; 23 | - (void) setAssociatedUserDefaultsKey: (NSString*) newKey withTransformerName: (NSString*) transformerName; 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /LaunchHelper/LaunchHelper/Base.lproj/MainMenu.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /Pods/RxCocoa/Platform/Platform.Darwin.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Platform.Darwin.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 12/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) 10 | 11 | import Darwin 12 | import Foundation 13 | 14 | extension Thread { 15 | static func setThreadLocalStorageValue(_ value: T?, forKey key: NSCopying) { 16 | let currentThread = Thread.current 17 | let threadDictionary = currentThread.threadDictionary 18 | 19 | if let newValue = value { 20 | threadDictionary[key] = newValue 21 | } 22 | else { 23 | threadDictionary[key] = nil 24 | } 25 | } 26 | 27 | static func getThreadLocalStorageValueForKey(_ key: NSCopying) -> T? { 28 | let currentThread = Thread.current 29 | let threadDictionary = currentThread.threadDictionary 30 | 31 | return threadDictionary[key] as? T 32 | } 33 | } 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /Pods/RxSwift/Platform/Platform.Darwin.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Platform.Darwin.swift 3 | // Platform 4 | // 5 | // Created by Krunoslav Zaher on 12/29/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) 10 | 11 | import Darwin 12 | import Foundation 13 | 14 | extension Thread { 15 | static func setThreadLocalStorageValue(_ value: T?, forKey key: NSCopying) { 16 | let currentThread = Thread.current 17 | let threadDictionary = currentThread.threadDictionary 18 | 19 | if let newValue = value { 20 | threadDictionary[key] = newValue 21 | } 22 | else { 23 | threadDictionary[key] = nil 24 | } 25 | } 26 | 27 | static func getThreadLocalStorageValueForKey(_ key: NSCopying) -> T? { 28 | let currentThread = Thread.current 29 | let threadDictionary = currentThread.threadDictionary 30 | 31 | return threadDictionary[key] as? T 32 | } 33 | } 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /Pods/RxCocoa/LICENSE.md: -------------------------------------------------------------------------------- 1 | **The MIT License** 2 | **Copyright © 2015 Krunoslav Zaher, Shai Mishali** 3 | **All rights reserved.** 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /Pods/RxRelay/LICENSE.md: -------------------------------------------------------------------------------- 1 | **The MIT License** 2 | **Copyright © 2015 Krunoslav Zaher, Shai Mishali** 3 | **All rights reserved.** 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /Pods/RxSwift/LICENSE.md: -------------------------------------------------------------------------------- 1 | **The MIT License** 2 | **Copyright © 2015 Krunoslav Zaher, Shai Mishali** 3 | **All rights reserved.** 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 6 | 7 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 8 | 9 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 10 | -------------------------------------------------------------------------------- /Pods/MASShortcut/Framework/Monitoring/MASHotKey.m: -------------------------------------------------------------------------------- 1 | #import "MASHotKey.h" 2 | 3 | FourCharCode const MASHotKeySignature = 'MASS'; 4 | 5 | @interface MASHotKey () 6 | @property(assign) EventHotKeyRef hotKeyRef; 7 | @property(assign) UInt32 carbonID; 8 | @end 9 | 10 | @implementation MASHotKey 11 | 12 | - (instancetype) initWithShortcut: (MASShortcut*) shortcut 13 | { 14 | self = [super init]; 15 | 16 | static UInt32 CarbonHotKeyID = 0; 17 | 18 | _carbonID = ++CarbonHotKeyID; 19 | EventHotKeyID hotKeyID = { .signature = MASHotKeySignature, .id = _carbonID }; 20 | 21 | OSStatus status = RegisterEventHotKey([shortcut carbonKeyCode], [shortcut carbonFlags], 22 | hotKeyID, GetEventDispatcherTarget(), 0, &_hotKeyRef); 23 | 24 | if (status != noErr) { 25 | return nil; 26 | } 27 | 28 | return self; 29 | } 30 | 31 | + (instancetype) registeredHotKeyWithShortcut: (MASShortcut*) shortcut 32 | { 33 | return [[self alloc] initWithShortcut:shortcut]; 34 | } 35 | 36 | - (void) dealloc 37 | { 38 | if (_hotKeyRef) { 39 | UnregisterEventHotKey(_hotKeyRef); 40 | _hotKeyRef = NULL; 41 | } 42 | } 43 | 44 | @end 45 | -------------------------------------------------------------------------------- /Pods/Alamofire/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2014-2021 Alamofire Software Foundation (http://alamofire.org/) 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Pods/BRLOptionParser/LICENSE: -------------------------------------------------------------------------------- 1 | (The MIT License) 2 | 3 | Copyright © 2013-2015 Stephen Celis () 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 9 | of the Software, and to permit persons to whom the Software is furnished to do 10 | so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /Pods/RxRelay/RxRelay/PublishRelay.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PublishRelay.swift 3 | // RxRelay 4 | // 5 | // Created by Krunoslav Zaher on 3/28/15. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | /// PublishRelay is a wrapper for `PublishSubject`. 12 | /// 13 | /// Unlike `PublishSubject` it can't terminate with error or completed. 14 | public final class PublishRelay: ObservableType { 15 | private let subject: PublishSubject 16 | 17 | // Accepts `event` and emits it to subscribers 18 | public func accept(_ event: Element) { 19 | self.subject.onNext(event) 20 | } 21 | 22 | /// Initializes with internal empty subject. 23 | public init() { 24 | self.subject = PublishSubject() 25 | } 26 | 27 | /// Subscribes observer 28 | public func subscribe(_ observer: Observer) -> Disposable where Observer.Element == Element { 29 | self.subject.subscribe(observer) 30 | } 31 | 32 | /// - returns: Canonical interface for push style sequence 33 | public func asObservable() -> Observable { 34 | self.subject.asObservable() 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "shadowsocks-libev"] 2 | path = deps/shadowsocks-libev 3 | url = https://github.com/shadowsocks/shadowsocks-libev 4 | [submodule "libsodium"] 5 | path = deps/libsodium 6 | url = https://github.com/jedisct1/libsodium 7 | [submodule "mbedtls"] 8 | path = deps/mbedtls 9 | url = https://github.com/Mbed-TLS/mbedtls 10 | [submodule "c-ares"] 11 | path = deps/c-ares 12 | url = https://github.com/c-ares/c-ares 13 | [submodule "deps/shadowsocks-libev"] 14 | path = deps/shadowsocks-libev 15 | url = https://github.com/shadowsocks/shadowsocks-libev 16 | [submodule "deps/libsodium"] 17 | path = deps/libsodium 18 | url = https://github.com/jedisct1/libsodium 19 | [submodule "deps/mbedtls"] 20 | path = deps/mbedtls 21 | url = https://github.com/Mbed-TLS/mbedtls 22 | [submodule "deps/c-ares"] 23 | path = deps/c-ares 24 | url = https://github.com/c-ares/c-ares 25 | [submodule "deps/v2ray-plugin"] 26 | path = deps/v2ray-plugin 27 | url = https://github.com/shadowsocks/v2ray-plugin 28 | [submodule "deps/kcptun"] 29 | path = deps/kcptun 30 | url = https://github.com/xtaci/kcptun 31 | [submodule "deps/simple-obfs"] 32 | path = deps/simple-obfs 33 | url = https://github.com/shadowsocks/simple-obfs 34 | -------------------------------------------------------------------------------- /LaunchHelper/LaunchHelper/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "mac", 5 | "size" : "16x16", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "mac", 10 | "size" : "16x16", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "mac", 15 | "size" : "32x32", 16 | "scale" : "1x" 17 | }, 18 | { 19 | "idiom" : "mac", 20 | "size" : "32x32", 21 | "scale" : "2x" 22 | }, 23 | { 24 | "idiom" : "mac", 25 | "size" : "128x128", 26 | "scale" : "1x" 27 | }, 28 | { 29 | "idiom" : "mac", 30 | "size" : "128x128", 31 | "scale" : "2x" 32 | }, 33 | { 34 | "idiom" : "mac", 35 | "size" : "256x256", 36 | "scale" : "1x" 37 | }, 38 | { 39 | "idiom" : "mac", 40 | "size" : "256x256", 41 | "scale" : "2x" 42 | }, 43 | { 44 | "idiom" : "mac", 45 | "size" : "512x512", 46 | "scale" : "1x" 47 | }, 48 | { 49 | "idiom" : "mac", 50 | "size" : "512x512", 51 | "scale" : "2x" 52 | } 53 | ], 54 | "info" : { 55 | "version" : 1, 56 | "author" : "xcode" 57 | } 58 | } -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/Foundation/NotificationCenter+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NotificationCenter+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 5/2/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import RxSwift 11 | 12 | extension Reactive where Base: NotificationCenter { 13 | /** 14 | Transforms notifications posted to notification center to observable sequence of notifications. 15 | 16 | - parameter name: Optional name used to filter notifications. 17 | - parameter object: Optional object used to filter notifications. 18 | - returns: Observable sequence of posted notifications. 19 | */ 20 | public func notification(_ name: Notification.Name?, object: AnyObject? = nil) -> Observable { 21 | return Observable.create { [weak object] observer in 22 | let nsObserver = self.base.addObserver(forName: name, object: object, queue: nil) { notification in 23 | observer.on(.next(notification)) 24 | } 25 | 26 | return Disposables.create { 27 | self.base.removeObserver(nsObserver) 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /LaunchHelper/LaunchHelper/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIconFile 10 | 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.0 21 | CFBundleVersion 22 | 2 23 | LSBackgroundOnly 24 | 25 | LSMinimumSystemVersion 26 | $(MACOSX_DEPLOYMENT_TARGET) 27 | NSHumanReadableCopyright 28 | Copyright © 2017年 qiuyuzhou. All rights reserved. 29 | NSMainNibFile 30 | MainMenu 31 | NSPrincipalClass 32 | NSApplication 33 | 34 | 35 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/Proxies/RxSearchBarDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxSearchBarDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Krunoslav Zaher on 7/4/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension UISearchBar: HasDelegate { 15 | public typealias Delegate = UISearchBarDelegate 16 | } 17 | 18 | /// For more information take a look at `DelegateProxyType`. 19 | open class RxSearchBarDelegateProxy 20 | : DelegateProxy 21 | , DelegateProxyType 22 | , UISearchBarDelegate { 23 | 24 | /// Typed parent object. 25 | public weak private(set) var searchBar: UISearchBar? 26 | 27 | /// - parameter searchBar: Parent object for delegate proxy. 28 | public init(searchBar: ParentObject) { 29 | self.searchBar = searchBar 30 | super.init(parentObject: searchBar, delegateProxy: RxSearchBarDelegateProxy.self) 31 | } 32 | 33 | // Register known implementations 34 | public static func registerKnownImplementations() { 35 | self.register { RxSearchBarDelegateProxy(searchBar: $0) } 36 | } 37 | } 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/v2ray-plugin/install_v2ray_plugin.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # install_v2ray_plugin.sh 4 | # ShadowsocksX-NG 5 | # 6 | # Created by lkebin on 2019/2/18. 7 | # Copyright © 2019 qiuyuzhou. All rights reserved. 8 | # https://github.com/shadowsocks/v2ray-plugin/ 9 | 10 | # v2ray-core/v4 v4.38.3 11 | # build by go1.16.4 12 | # 13 | # v2ray-plugin_darwin_universal: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64] 14 | # v2ray-plugin_darwin_universal (for architecture x86_64): Mach-O 64-bit executable x86_64 15 | # v2ray-plugin_darwin_universal (for architecture arm64): Mach-O 64-bit executable arm64 16 | 17 | cd "$(dirname "${BASH_SOURCE[0]}")" 18 | 19 | mkdir -p "$HOME/Library/Application Support/ShadowsocksX-NG/v2ray-plugin" 20 | cp -f v2ray-plugin "$HOME/Library/Application Support/ShadowsocksX-NG/v2ray-plugin/" 21 | 22 | ln -sfh "$HOME/Library/Application Support/ShadowsocksX-NG/v2ray-plugin/v2ray-plugin" "$HOME/Library/Application Support/ShadowsocksX-NG/plugins/v2ray-plugin" 23 | ln -sfh "$HOME/Library/Application Support/ShadowsocksX-NG/v2ray-plugin/v2ray-plugin" "$HOME/Library/Application Support/ShadowsocksX-NG/plugins/v2ray" 24 | 25 | echo "install v2ray-plugin done" 26 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Extensions/Bag+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Bag+Rx.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 10/19/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | 10 | // MARK: forEach 11 | 12 | @inline(__always) 13 | func dispatch(_ bag: Bag<(Event) -> Void>, _ event: Event) { 14 | bag._value0?(event) 15 | 16 | if bag._onlyFastPath { 17 | return 18 | } 19 | 20 | let pairs = bag._pairs 21 | for i in 0 ..< pairs.count { 22 | pairs[i].value(event) 23 | } 24 | 25 | if let dictionary = bag._dictionary { 26 | for element in dictionary.values { 27 | element(event) 28 | } 29 | } 30 | } 31 | 32 | /// Dispatches `dispose` to all disposables contained inside bag. 33 | func disposeAll(in bag: Bag) { 34 | bag._value0?.dispose() 35 | 36 | if bag._onlyFastPath { 37 | return 38 | } 39 | 40 | let pairs = bag._pairs 41 | for i in 0 ..< pairs.count { 42 | pairs[i].value.dispose() 43 | } 44 | 45 | if let dictionary = bag._dictionary { 46 | for element in dictionary.values { 47 | element.dispose() 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release Building 2 | 3 | on: 4 | push: 5 | tags: 6 | - '*' 7 | 8 | jobs: 9 | build: 10 | 11 | runs-on: macos-latest 12 | 13 | steps: 14 | 15 | - name: Checkout 16 | uses: actions/checkout@v3 17 | with: 18 | submodules: recursive 19 | fetch-depth: 0 20 | 21 | - name: Build 22 | run: | 23 | brew install automake 24 | brew install autoconf 25 | brew install libtool 26 | make VERSION="${GITHUB_REF_NAME}" release 27 | make release-dmg 28 | shasum -a 256 build/Release/ShadowsocksX-NG.dmg > build/Release/ShadowsocksX-NG.dmg.checksum 29 | 30 | - name: Upload artifacts 31 | uses: actions/upload-artifact@v3 32 | with: 33 | name: ShadowsocksX-NG 34 | path: | 35 | build/Release/ShadowsocksX-NG.dmg 36 | build/Release/ShadowsocksX-NG.dmg.checksum 37 | 38 | - name: Release 39 | uses: softprops/action-gh-release@v1 40 | with: 41 | generate_release_notes: true 42 | files: | 43 | build/Release/ShadowsocksX-NG.dmg 44 | build/Release/ShadowsocksX-NG.dmg.checksum 45 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/Proxies/RxPickerViewDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxPickerViewDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Segii Shulga on 5/12/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | 11 | import RxSwift 12 | import UIKit 13 | 14 | extension UIPickerView: HasDelegate { 15 | public typealias Delegate = UIPickerViewDelegate 16 | } 17 | 18 | open class RxPickerViewDelegateProxy 19 | : DelegateProxy 20 | , DelegateProxyType 21 | , UIPickerViewDelegate { 22 | 23 | /// Typed parent object. 24 | public weak private(set) var pickerView: UIPickerView? 25 | 26 | /// - parameter pickerView: Parent object for delegate proxy. 27 | public init(pickerView: ParentObject) { 28 | self.pickerView = pickerView 29 | super.init(parentObject: pickerView, delegateProxy: RxPickerViewDelegateProxy.self) 30 | } 31 | 32 | // Register known implementationss 33 | public static func registerKnownImplementations() { 34 | self.register { RxPickerViewDelegateProxy(pickerView: $0) } 35 | } 36 | } 37 | #endif 38 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | VERSION ?= 0.0.0 2 | 3 | .PHONY: all 4 | all: debug 5 | 6 | .PHONY: debug 7 | debug: deps/dist set-version 8 | xcodebuild -workspace ShadowsocksX-NG.xcworkspace -scheme ShadowsocksX-NG -configuration Debug SYMROOT=$${PWD}/build 9 | 10 | .PHONY: release 11 | release: deps/dist set-version 12 | xcodebuild -workspace ShadowsocksX-NG.xcworkspace -scheme ShadowsocksX-NG -configuration Release SYMROOT=$${PWD}/build 13 | 14 | .PHONY: debug-dmg release-dmg 15 | debug-dmg release-dmg: TARGET = $(subst -dmg,,$@) 16 | debug-dmg release-dmg: 17 | t="$(TARGET)" && t="`tr '[:lower:]' '[:upper:]' <<< $${t:0:1}`$${t:1}" \ 18 | && rm -rf build/$${t}/ShadowsocksX-NG/ \ 19 | && mkdir build/$${t}/ShadowsocksX-NG \ 20 | && cp -r build/$${t}/ShadowsocksX-NG.app build/$${t}/ShadowsocksX-NG/ \ 21 | && ln -s /Applications build/$${t}/ShadowsocksX-NG/Applications \ 22 | && hdiutil create build/$${t}/ShadowsocksX-NG.dmg -ov -volname "ShadowsocksX-NG" -fs HFS+ -srcfolder build/$${t}/ShadowsocksX-NG/ \ 23 | && rm -rf build/$${t}/ShadowsocksX-NG/ 24 | 25 | .PHONY: set-version 26 | set-version: 27 | agvtool new-marketing-version $(VERSION) 28 | 29 | deps/dist: 30 | $(MAKE) -C deps 31 | 32 | .PHONY: clean 33 | clean: 34 | $(MAKE) -C deps clean 35 | -------------------------------------------------------------------------------- /Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Alamofire (5.4.3) 3 | - BRLOptionParser (0.3.1) 4 | - GCDWebServer (3.5.4): 5 | - GCDWebServer/Core (= 3.5.4) 6 | - GCDWebServer/Core (3.5.4) 7 | - MASShortcut (2.4.0) 8 | - RxCocoa (6.2.0): 9 | - RxRelay (= 6.2.0) 10 | - RxSwift (= 6.2.0) 11 | - RxRelay (6.2.0): 12 | - RxSwift (= 6.2.0) 13 | - RxSwift (6.2.0) 14 | 15 | DEPENDENCIES: 16 | - Alamofire (~> 5.4.3) 17 | - BRLOptionParser (~> 0.3.1) 18 | - GCDWebServer (~> 3.0) 19 | - MASShortcut (~> 2) 20 | - RxCocoa (~> 6.2.0) 21 | - RxSwift (~> 6.2.0) 22 | 23 | SPEC REPOS: 24 | trunk: 25 | - Alamofire 26 | - BRLOptionParser 27 | - GCDWebServer 28 | - MASShortcut 29 | - RxCocoa 30 | - RxRelay 31 | - RxSwift 32 | 33 | SPEC CHECKSUMS: 34 | Alamofire: e447a2774a40c996748296fa2c55112fdbbc42f9 35 | BRLOptionParser: a03256a8ff003ca1f5376c55f55f210e085a3958 36 | GCDWebServer: 2c156a56c8226e2d5c0c3f208a3621ccffbe3ce4 37 | MASShortcut: d9e4909e878661cc42877cc9d6efbe638273ab57 38 | RxCocoa: 4baf94bb35f2c0ab31bc0cb9f1900155f646ba42 39 | RxRelay: e72dbfd157807478401ef1982e1c61c945c94b2f 40 | RxSwift: d356ab7bee873611322f134c5f9ef379fa183d8f 41 | 42 | PODFILE CHECKSUM: 5e6ee339e4466d456309238c104e8625cd1e3e41 43 | 44 | COCOAPODS: 1.10.1 45 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/Proxies/RxTextStorageDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTextStorageDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Segii Shulga on 12/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import RxSwift 12 | import UIKit 13 | 14 | extension NSTextStorage: HasDelegate { 15 | public typealias Delegate = NSTextStorageDelegate 16 | } 17 | 18 | open class RxTextStorageDelegateProxy 19 | : DelegateProxy 20 | , DelegateProxyType 21 | , NSTextStorageDelegate { 22 | 23 | /// Typed parent object. 24 | public weak private(set) var textStorage: NSTextStorage? 25 | 26 | /// - parameter textStorage: Parent object for delegate proxy. 27 | public init(textStorage: NSTextStorage) { 28 | self.textStorage = textStorage 29 | super.init(parentObject: textStorage, delegateProxy: RxTextStorageDelegateProxy.self) 30 | } 31 | 32 | // Register known implementations 33 | public static func registerKnownImplementations() { 34 | self.register { RxTextStorageDelegateProxy(textStorage: $0) } 35 | } 36 | } 37 | #endif 38 | -------------------------------------------------------------------------------- /Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Alamofire (5.4.3) 3 | - BRLOptionParser (0.3.1) 4 | - GCDWebServer (3.5.4): 5 | - GCDWebServer/Core (= 3.5.4) 6 | - GCDWebServer/Core (3.5.4) 7 | - MASShortcut (2.4.0) 8 | - RxCocoa (6.2.0): 9 | - RxRelay (= 6.2.0) 10 | - RxSwift (= 6.2.0) 11 | - RxRelay (6.2.0): 12 | - RxSwift (= 6.2.0) 13 | - RxSwift (6.2.0) 14 | 15 | DEPENDENCIES: 16 | - Alamofire (~> 5.4.3) 17 | - BRLOptionParser (~> 0.3.1) 18 | - GCDWebServer (~> 3.0) 19 | - MASShortcut (~> 2) 20 | - RxCocoa (~> 6.2.0) 21 | - RxSwift (~> 6.2.0) 22 | 23 | SPEC REPOS: 24 | trunk: 25 | - Alamofire 26 | - BRLOptionParser 27 | - GCDWebServer 28 | - MASShortcut 29 | - RxCocoa 30 | - RxRelay 31 | - RxSwift 32 | 33 | SPEC CHECKSUMS: 34 | Alamofire: e447a2774a40c996748296fa2c55112fdbbc42f9 35 | BRLOptionParser: a03256a8ff003ca1f5376c55f55f210e085a3958 36 | GCDWebServer: 2c156a56c8226e2d5c0c3f208a3621ccffbe3ce4 37 | MASShortcut: d9e4909e878661cc42877cc9d6efbe638273ab57 38 | RxCocoa: 4baf94bb35f2c0ab31bc0cb9f1900155f646ba42 39 | RxRelay: e72dbfd157807478401ef1982e1c61c945c94b2f 40 | RxSwift: d356ab7bee873611322f134c5f9ef379fa183d8f 41 | 42 | PODFILE CHECKSUM: 5e6ee339e4466d456309238c104e8625cd1e3e41 43 | 44 | COCOAPODS: 1.10.1 45 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/Proxies/RxTabBarControllerDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTabBarControllerDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Yusuke Kita on 2016/12/07. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension UITabBarController: HasDelegate { 15 | public typealias Delegate = UITabBarControllerDelegate 16 | } 17 | 18 | /// For more information take a look at `DelegateProxyType`. 19 | open class RxTabBarControllerDelegateProxy 20 | : DelegateProxy 21 | , DelegateProxyType 22 | , UITabBarControllerDelegate { 23 | 24 | /// Typed parent object. 25 | public weak private(set) var tabBar: UITabBarController? 26 | 27 | /// - parameter tabBar: Parent object for delegate proxy. 28 | public init(tabBar: ParentObject) { 29 | self.tabBar = tabBar 30 | super.init(parentObject: tabBar, delegateProxy: RxTabBarControllerDelegateProxy.self) 31 | } 32 | 33 | // Register known implementations 34 | public static func registerKnownImplementations() { 35 | self.register { RxTabBarControllerDelegateProxy(tabBar: $0) } 36 | } 37 | } 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /Pods/MASShortcut/Framework/Model/MASShortcutValidator.h: -------------------------------------------------------------------------------- 1 | #import "MASShortcut.h" 2 | 3 | /** 4 | This class is used by the recording control to tell which shortcuts are acceptable. 5 | 6 | There are two kinds of shortcuts that are not considered acceptable: shortcuts that 7 | are too simple (like single letter keys) and shortcuts that are already used by the 8 | operating system. 9 | */ 10 | @interface MASShortcutValidator : NSObject 11 | 12 | /** 13 | Set to `YES` if you want to accept Option-something shortcuts. 14 | 15 | `NO` by default, since Option-something shortcuts are often used by system, 16 | for example Option-G will type the © sign. This also applies to Option-Shift 17 | shortcuts – in other words, shortcut recorder will not accept shortcuts like 18 | Option-Shift-K by default. (Again, since Option-Shift-K inserts the Apple 19 | logo sign by default.) 20 | */ 21 | @property(assign) BOOL allowAnyShortcutWithOptionModifier; 22 | 23 | + (instancetype) sharedValidator; 24 | 25 | - (BOOL) isShortcutValid: (MASShortcut*) shortcut; 26 | - (BOOL) isShortcut: (MASShortcut*) shortcut alreadyTakenInMenu: (NSMenu*) menu explanation: (NSString**) explanation; 27 | - (BOOL) isShortcutAlreadyTakenBySystem: (MASShortcut*) shortcut explanation: (NSString**) explanation; 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Observables/Decode.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Decode.swift 3 | // RxSwift 4 | // 5 | // Created by Shai Mishali on 24/07/2020. 6 | // Copyright © 2020 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public extension ObservableType where Element == Data { 12 | /// Attempt to decode the emitted `Data` using a provided decoder. 13 | /// 14 | /// - parameter type: A `Decodable`-conforming type to attempt to decode to 15 | /// - parameter decoder: A capable decoder, e.g. `JSONDecoder` or `PropertyListDecoder` 16 | /// 17 | /// - note: If using a custom decoder, it must conform to the `DataDecoder` protocol. 18 | /// 19 | /// - returns: An `Observable` of the decoded type 20 | func decode(type: Item.Type, 22 | decoder: Decoder) -> Observable { 23 | map { try decoder.decode(type, from: $0) } 24 | } 25 | } 26 | 27 | /// Represents an entity capable of decoding raw `Data` 28 | /// into a concrete `Decodable` type 29 | public protocol DataDecoder { 30 | func decode(_ type: Item.Type, from data: Data) throws -> Item 31 | } 32 | 33 | extension JSONDecoder: DataDecoder {} 34 | extension PropertyListDecoder: DataDecoder {} 35 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/UIDatePicker+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // UIDatePicker+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Daniel Tartaglia on 5/31/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | 11 | import RxSwift 12 | import UIKit 13 | 14 | extension Reactive where Base: UIDatePicker { 15 | /// Reactive wrapper for `date` property. 16 | public var date: ControlProperty { 17 | value 18 | } 19 | 20 | /// Reactive wrapper for `date` property. 21 | public var value: ControlProperty { 22 | return base.rx.controlPropertyWithDefaultEvents( 23 | getter: { datePicker in 24 | datePicker.date 25 | }, setter: { datePicker, value in 26 | datePicker.date = value 27 | } 28 | ) 29 | } 30 | 31 | /// Reactive wrapper for `countDownDuration` property. 32 | public var countDownDuration: ControlProperty { 33 | return base.rx.controlPropertyWithDefaultEvents( 34 | getter: { datePicker in 35 | datePicker.countDownDuration 36 | }, setter: { datePicker, value in 37 | datePicker.countDownDuration = value 38 | } 39 | ) 40 | } 41 | } 42 | 43 | #endif 44 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/Proxies/RxSearchControllerDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxSearchControllerDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Segii Shulga on 3/17/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) 10 | 11 | import RxSwift 12 | import UIKit 13 | 14 | extension UISearchController: HasDelegate { 15 | public typealias Delegate = UISearchControllerDelegate 16 | } 17 | 18 | /// For more information take a look at `DelegateProxyType`. 19 | open class RxSearchControllerDelegateProxy 20 | : DelegateProxy 21 | , DelegateProxyType 22 | , UISearchControllerDelegate { 23 | 24 | /// Typed parent object. 25 | public weak private(set) var searchController: UISearchController? 26 | 27 | /// - parameter searchController: Parent object for delegate proxy. 28 | public init(searchController: UISearchController) { 29 | self.searchController = searchController 30 | super.init(parentObject: searchController, delegateProxy: RxSearchControllerDelegateProxy.self) 31 | } 32 | 33 | // Register known implementations 34 | public static func registerKnownImplementations() { 35 | self.register { RxSearchControllerDelegateProxy(searchController: $0) } 36 | } 37 | } 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/ObserverType.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ObserverType.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 2/8/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Supports push-style iteration over an observable sequence. 10 | public protocol ObserverType { 11 | /// The type of elements in sequence that observer can observe. 12 | associatedtype Element 13 | 14 | /// Notify observer about sequence event. 15 | /// 16 | /// - parameter event: Event that occurred. 17 | func on(_ event: Event) 18 | } 19 | 20 | /// Convenience API extensions to provide alternate next, error, completed events 21 | extension ObserverType { 22 | 23 | /// Convenience method equivalent to `on(.next(element: Element))` 24 | /// 25 | /// - parameter element: Next element to send to observer(s) 26 | public func onNext(_ element: Element) { 27 | self.on(.next(element)) 28 | } 29 | 30 | /// Convenience method equivalent to `on(.completed)` 31 | public func onCompleted() { 32 | self.on(.completed) 33 | } 34 | 35 | /// Convenience method equivalent to `on(.error(Swift.Error))` 36 | /// - parameter error: Swift.Error to send to observer(s) 37 | public func onError(_ error: Swift.Error) { 38 | self.on(.error(error)) 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/GroupedObservable.swift: -------------------------------------------------------------------------------- 1 | // 2 | // GroupedObservable.swift 3 | // RxSwift 4 | // 5 | // Created by Tomi Koskinen on 01/12/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | /// Represents an observable sequence of elements that have a common key. 10 | public struct GroupedObservable : ObservableType { 11 | /// Gets the common key. 12 | public let key: Key 13 | 14 | private let source: Observable 15 | 16 | /// Initializes grouped observable sequence with key and source observable sequence. 17 | /// 18 | /// - parameter key: Grouped observable sequence key 19 | /// - parameter source: Observable sequence that represents sequence of elements for the key 20 | /// - returns: Grouped observable sequence of elements for the specific key 21 | public init(key: Key, source: Observable) { 22 | self.key = key 23 | self.source = source 24 | } 25 | 26 | /// Subscribes `observer` to receive events for this sequence. 27 | public func subscribe(_ observer: Observer) -> Disposable where Observer.Element == Element { 28 | self.source.subscribe(observer) 29 | } 30 | 31 | /// Converts `self` to `Observable` sequence. 32 | public func asObservable() -> Observable { 33 | self.source 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/Bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | 5 | --- 6 | 7 | **Describe the bug** 8 | A clear and concise description of what the bug is. 9 | 10 | **To Reproduce** 11 | Steps to reproduce the behavior 12 | 13 | **Expected behavior** 14 | A clear and concise description of what you expected to happen. 15 | 16 | **Screenshots** 17 | If applicable, add screenshots to help explain your problem. 18 | 19 | **System and Shadowsocksx-NG version: (please complete the following information):** 20 | - OS Version: [e.g. 10.13.1] 21 | - Version [e.g. 22] 22 | 23 | **Diagnoisis file:** 24 | 25 | Please first upgrade to the latest version. 26 | Then export the diagnosis file and upload it to here. 27 | 28 | **ss-local.log** 29 | 30 | Please upload the ss-local.log file here the file is in `~/Library/Logs` 31 | 1) Open 'Advanced Settings -> enable Verbose Mode' 32 | 2) Continue run `Shadowsocksx-NG` for 5 minutes 33 | 3) Upload the `~/Library/Logs/ss-local.log` here (with or without compress) 34 | 35 | **Application log** 36 | 37 | Open the `Console.app` and search `Shadowsocksx-NG` 38 | Copy paste the log here 39 | 40 | **Crash Log** 41 | 42 | If the app crashes and pop up a crash log, please copy and paste here 43 | 44 | **Additional context** 45 | Add any other context about the problem here. 46 | -------------------------------------------------------------------------------- /Pods/MASShortcut/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012-2013, Vadim Shpakovski 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | 1. Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 2. Redistributions in binary form must reproduce the above copyright notice, 10 | this list of conditions and the following disclaimer in the documentation 11 | and/or other materials provided with the distribution. 12 | 13 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 14 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 15 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 16 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 17 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 18 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 19 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 20 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 22 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Traits/Infallible/ObservableConvertibleType+Infallible.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ObservableConvertibleType+Infallible.swift 3 | // RxSwift 4 | // 5 | // Created by Shai Mishali on 27/08/2020. 6 | // Copyright © 2020 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | public extension ObservableConvertibleType { 10 | /// Convert to an `Infallible` 11 | /// 12 | /// - returns: `Infallible` 13 | func asInfallible(onErrorJustReturn element: Element) -> Infallible { 14 | Infallible(self.asObservable().catchAndReturn(element)) 15 | } 16 | 17 | /// Convert to an `Infallible` 18 | /// 19 | /// - parameter onErroFallbackTo: Fall back to this provided infallible on error 20 | /// 21 | /// 22 | /// - returns: `Infallible` 23 | func asInfallible(onErrorFallbackTo infallible: Infallible) -> Infallible { 24 | Infallible(self.asObservable().catch { _ in infallible.asObservable() }) 25 | } 26 | 27 | /// Convert to an `Infallible` 28 | /// 29 | /// - parameter onErrorRecover: Recover with the this infallible closure 30 | /// 31 | /// - returns: `Infallible` 32 | func asInfallible(onErrorRecover: @escaping (Swift.Error) -> Infallible) -> Infallible { 33 | Infallible(asObservable().catch { onErrorRecover($0).asObservable() }) 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /LaunchHelper/LaunchHelper/AppDelegate.m: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.m 3 | // LaunchHelper 4 | // 5 | // Created by 邱宇舟 on 2017/3/28. 6 | // Copyright © 2017年 qiuyuzhou. All rights reserved. 7 | // 8 | 9 | #import "AppDelegate.h" 10 | 11 | @interface AppDelegate () 12 | 13 | @property (weak) IBOutlet NSWindow *window; 14 | @end 15 | 16 | @implementation AppDelegate 17 | 18 | - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 19 | // Insert code here to initialize your application 20 | NSLog(@"ShadowsocksX-NG LaunchHelper"); 21 | 22 | NSWorkspace* ws = [NSWorkspace sharedWorkspace]; 23 | BOOL bLaunched = NO; 24 | bLaunched = [ws launchApplication: @"/Applications/ShadowsocksX-NG.app"]; 25 | if (!bLaunched) { 26 | bLaunched = [ws launchApplication: @"ShadowsocksX-NG.app"]; 27 | } 28 | if (!bLaunched) { 29 | NSArray *pathComponents = [[[NSBundle mainBundle] bundlePath] pathComponents]; 30 | pathComponents = [pathComponents subarrayWithRange:NSMakeRange(0, [pathComponents count] - 4)]; 31 | NSString *path = [NSString pathWithComponents:pathComponents]; 32 | [[NSWorkspace sharedWorkspace] launchApplication:path]; 33 | } 34 | [NSApp terminate:nil]; 35 | } 36 | 37 | 38 | - (void)applicationWillTerminate:(NSNotification *)aNotification { 39 | // Insert code here to tear down your application 40 | } 41 | 42 | 43 | @end 44 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/Proxies/RxWKNavigationDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxWKNavigationDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Giuseppe Lanza on 14/02/2020. 6 | // Copyright © 2020 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(macOS) 10 | 11 | import RxSwift 12 | import WebKit 13 | 14 | @available(iOS 8.0, OSX 10.10, OSXApplicationExtension 10.10, *) 15 | open class RxWKNavigationDelegateProxy 16 | : DelegateProxy 17 | , DelegateProxyType 18 | , WKNavigationDelegate { 19 | 20 | /// Typed parent object. 21 | public weak private(set) var webView: WKWebView? 22 | 23 | /// - parameter webView: Parent object for delegate proxy. 24 | public init(webView: ParentObject) { 25 | self.webView = webView 26 | super.init(parentObject: webView, delegateProxy: RxWKNavigationDelegateProxy.self) 27 | } 28 | 29 | // Register known implementations 30 | public static func registerKnownImplementations() { 31 | self.register { RxWKNavigationDelegateProxy(webView: $0) } 32 | } 33 | 34 | public static func currentDelegate(for object: WKWebView) -> WKNavigationDelegate? { 35 | object.navigationDelegate 36 | } 37 | 38 | public static func setCurrentDelegate(_ delegate: WKNavigationDelegate?, to object: WKWebView) { 39 | object.navigationDelegate = delegate 40 | } 41 | } 42 | 43 | #endif 44 | -------------------------------------------------------------------------------- /Pods/RxRelay/RxRelay/BehaviorRelay.swift: -------------------------------------------------------------------------------- 1 | // 2 | // BehaviorRelay.swift 3 | // RxRelay 4 | // 5 | // Created by Krunoslav Zaher on 10/7/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import RxSwift 10 | 11 | /// BehaviorRelay is a wrapper for `BehaviorSubject`. 12 | /// 13 | /// Unlike `BehaviorSubject` it can't terminate with error or completed. 14 | public final class BehaviorRelay: ObservableType { 15 | private let subject: BehaviorSubject 16 | 17 | /// Accepts `event` and emits it to subscribers 18 | public func accept(_ event: Element) { 19 | self.subject.onNext(event) 20 | } 21 | 22 | /// Current value of behavior subject 23 | public var value: Element { 24 | // this try! is ok because subject can't error out or be disposed 25 | return try! self.subject.value() 26 | } 27 | 28 | /// Initializes behavior relay with initial value. 29 | public init(value: Element) { 30 | self.subject = BehaviorSubject(value: value) 31 | } 32 | 33 | /// Subscribes observer 34 | public func subscribe(_ observer: Observer) -> Disposable where Observer.Element == Element { 35 | self.subject.subscribe(observer) 36 | } 37 | 38 | /// - returns: Canonical interface for push style sequence 39 | public func asObservable() -> Observable { 40 | self.subject.asObservable() 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-proxy_conf_helper/Pods-proxy_conf_helper-acknowledgements.markdown: -------------------------------------------------------------------------------- 1 | # Acknowledgements 2 | This application makes use of the following third party libraries: 3 | 4 | ## BRLOptionParser 5 | 6 | (The MIT License) 7 | 8 | Copyright © 2013-2015 Stephen Celis () 9 | 10 | Permission is hereby granted, free of charge, to any person obtaining a copy of 11 | this software and associated documentation files (the "Software"), to deal in 12 | the Software without restriction, including without limitation the rights to 13 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 14 | of the Software, and to permit persons to whom the Software is furnished to do 15 | so, subject to the following conditions: 16 | 17 | The above copyright notice and this permission notice shall be included in all 18 | copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 26 | SOFTWARE. 27 | 28 | 29 | Generated by CocoaPods - https://cocoapods.org 30 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ##### 2 | # OS X temporary files that should never be committed 3 | .DS_Store 4 | *.swp 5 | *.lock 6 | profile 7 | 8 | #### 9 | # Xcode temporary files that should never be committed 10 | *~.nib 11 | 12 | #### 13 | # Objective-C/Swift specific 14 | *.hmap 15 | *.ipa 16 | 17 | #### 18 | # Xcode build files 19 | DerivedData/ 20 | build/ 21 | Builds/ 22 | 23 | ##### 24 | # Xcode private settings (window sizes, bookmarks, breakpoints, custom executables, smart groups) 25 | *.pbxuser 26 | *.mode1v3 27 | *.mode2v3 28 | *.perspectivev3 29 | !default.pbxuser 30 | !default.mode1v3 31 | !default.mode2v3 32 | !default.perspectivev3 33 | 34 | #### 35 | # Xcode 4 36 | xcuserdata 37 | !xcschemes 38 | # Xcode 4 39 | *.moved-aside 40 | 41 | #### 42 | # XCode 4 workspaces - more detailed 43 | !xcshareddata 44 | !default.xcworkspace 45 | *.xcworkspacedata 46 | 47 | 48 | #### 49 | # Xcode 5 50 | *.xccheckout 51 | *.xcuserstate 52 | 53 | #### 54 | # Xcode 7 55 | *.xcscmblueprint 56 | 57 | #### 58 | # AppCode 59 | .idea/ 60 | 61 | #### 62 | # Other Xcode files 63 | profile 64 | *.hmap 65 | *.ipa 66 | 67 | #### 68 | # Carthage 69 | Carthage/Build 70 | 71 | IDEWorkspaceChecks.plist 72 | 73 | #### 74 | # Dependencies 75 | deps/dist 76 | deps/pcre* 77 | deps/libev* 78 | deps/privoxy* 79 | 80 | ShadowsocksX-NG/kcptun/client 81 | ShadowsocksX-NG/privoxy/privoxy 82 | ShadowsocksX-NG/simple-obfs/obfs-local 83 | ShadowsocksX-NG/ss-local/ss-local 84 | ShadowsocksX-NG/v2ray-plugin/v2ray-plugin 85 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/Credits.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg936\cocoartf2509 2 | \cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fnil\fcharset134 STHeitiSC-Light;} 3 | {\colortbl;\red255\green255\blue255;} 4 | {\*\expandedcolortbl;;} 5 | \paperw12240\paperh15840\margl1440\margr1440\vieww12420\viewh9780\viewkind0 6 | \pard\tx560\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 7 | {\field{\*\fldinst{HYPERLINK "https://github.com/shadowsocks/shadowsocks-libev"}}{\fldrslt 8 | \f0\fs24 \cf0 ss-local}} 9 | \f0\fs24 v3.2.5\ 10 | \pard\tx560\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 11 | {\field{\*\fldinst{HYPERLINK "https://github.com/shadowsocks/kcptun"}}{\fldrslt \cf0 kcptun}} v20190905\ 12 | \pard\tx560\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 13 | {\field{\*\fldinst{HYPERLINK "https://github.com/shadowsocks/simple-obfs"}}{\fldrslt \cf0 simple-obfs}} v0.0.5\ 14 | \pard\tx560\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 15 | {\field{\*\fldinst{HYPERLINK "https://www.privoxy.org/"}}{\fldrslt \cf0 privoxy}} v3.0.26\ 16 | \pard\tx560\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural\partightenfactor0 17 | {\field{\*\fldinst{HYPERLINK "https://github.com/shadowsocks/v2ray-plugin"}}{\fldrslt \cf0 v2ray-plugin}} v1.2.0\ 18 | } -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Observables/First.swift: -------------------------------------------------------------------------------- 1 | // 2 | // First.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 7/31/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | private final class FirstSink : Sink, ObserverType where Observer.Element == Element? { 10 | typealias Parent = First 11 | 12 | func on(_ event: Event) { 13 | switch event { 14 | case .next(let value): 15 | self.forwardOn(.next(value)) 16 | self.forwardOn(.completed) 17 | self.dispose() 18 | case .error(let error): 19 | self.forwardOn(.error(error)) 20 | self.dispose() 21 | case .completed: 22 | self.forwardOn(.next(nil)) 23 | self.forwardOn(.completed) 24 | self.dispose() 25 | } 26 | } 27 | } 28 | 29 | final class First: Producer { 30 | private let source: Observable 31 | 32 | init(source: Observable) { 33 | self.source = source 34 | } 35 | 36 | override func run(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element? { 37 | let sink = FirstSink(observer: observer, cancel: cancel) 38 | let subscription = self.source.subscribe(sink) 39 | return (sink: sink, subscription: subscription) 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/Proxies/RxNavigationControllerDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxNavigationControllerDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Diogo on 13/04/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension UINavigationController: HasDelegate { 15 | public typealias Delegate = UINavigationControllerDelegate 16 | } 17 | 18 | /// For more information take a look at `DelegateProxyType`. 19 | open class RxNavigationControllerDelegateProxy 20 | : DelegateProxy 21 | , DelegateProxyType 22 | , UINavigationControllerDelegate { 23 | 24 | /// Typed parent object. 25 | public weak private(set) var navigationController: UINavigationController? 26 | 27 | /// - parameter navigationController: Parent object for delegate proxy. 28 | public init(navigationController: ParentObject) { 29 | self.navigationController = navigationController 30 | super.init(parentObject: navigationController, delegateProxy: RxNavigationControllerDelegateProxy.self) 31 | } 32 | 33 | // Register known implementations 34 | public static func registerKnownImplementations() { 35 | self.register { RxNavigationControllerDelegateProxy(navigationController: $0) } 36 | } 37 | } 38 | #endif 39 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/NSTextStorage+Rx.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NSTextStorage+Rx.swift 3 | // RxCocoa 4 | // 5 | // Created by Segii Shulga on 12/30/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | import RxSwift 11 | import UIKit 12 | 13 | extension Reactive where Base: NSTextStorage { 14 | 15 | /// Reactive wrapper for `delegate`. 16 | /// 17 | /// For more information take a look at `DelegateProxyType` protocol documentation. 18 | public var delegate: DelegateProxy { 19 | return RxTextStorageDelegateProxy.proxy(for: base) 20 | } 21 | 22 | /// Reactive wrapper for `delegate` message. 23 | public var didProcessEditingRangeChangeInLength: Observable<(editedMask: NSTextStorage.EditActions, editedRange: NSRange, delta: Int)> { 24 | return delegate 25 | .methodInvoked(#selector(NSTextStorageDelegate.textStorage(_:didProcessEditing:range:changeInLength:))) 26 | .map { a in 27 | let editedMask = NSTextStorage.EditActions(rawValue: try castOrThrow(UInt.self, a[1]) ) 28 | let editedRange = try castOrThrow(NSValue.self, a[2]).rangeValue 29 | let delta = try castOrThrow(Int.self, a[3]) 30 | 31 | return (editedMask, editedRange, delta) 32 | } 33 | } 34 | } 35 | #endif 36 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/LaunchAtLoginController.h: -------------------------------------------------------------------------------- 1 | // 2 | // LaunchAtLoginController.h 3 | // 4 | // Copyright 2011 Tomáš Znamenáček 5 | // Copyright 2010 Ben Clark-Robinson 6 | // 7 | // Permission is hereby granted, free of charge, to any person obtaining 8 | // a copy of this software and associated documentation files (the ‘Software’), 9 | // to deal in the Software without restriction, including without limitation 10 | // the rights to use, copy, modify, merge, publish, distribute, sublicense, 11 | // and/or sell copies of the Software, and to permit persons to whom the 12 | // Software is furnished to do so, subject to the following conditions: 13 | // 14 | // The above copyright notice and this permission notice shall be 15 | // included in all copies or substantial portions of the Software. 16 | // 17 | // THE SOFTWARE IS PROVIDED ‘AS IS’, WITHOUT WARRANTY OF ANY KIND, 18 | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 | // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 20 | // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 21 | // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 22 | // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 23 | // SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 24 | #import 25 | 26 | @interface LaunchAtLoginController : NSObject 27 | 28 | @property(assign) BOOL launchAtLogin; 29 | 30 | + (instancetype) shared; 31 | 32 | @end 33 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Observables/StartWith.swift: -------------------------------------------------------------------------------- 1 | // 2 | // StartWith.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 4/6/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | extension ObservableType { 10 | 11 | /** 12 | Prepends a sequence of values to an observable sequence. 13 | 14 | - seealso: [startWith operator on reactivex.io](http://reactivex.io/documentation/operators/startwith.html) 15 | 16 | - parameter elements: Elements to prepend to the specified sequence. 17 | - returns: The source sequence prepended with the specified values. 18 | */ 19 | public func startWith(_ elements: Element ...) 20 | -> Observable { 21 | return StartWith(source: self.asObservable(), elements: elements) 22 | } 23 | } 24 | 25 | final private class StartWith: Producer { 26 | let elements: [Element] 27 | let source: Observable 28 | 29 | init(source: Observable, elements: [Element]) { 30 | self.source = source 31 | self.elements = elements 32 | super.init() 33 | } 34 | 35 | override func run(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element { 36 | for e in self.elements { 37 | observer.on(.next(e)) 38 | } 39 | 40 | return (sink: Disposables.create(), subscription: self.source.subscribe(observer)) 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/Proxies/RxTextViewDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTextViewDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Yuta ToKoRo on 7/19/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | /// For more information take a look at `DelegateProxyType`. 15 | open class RxTextViewDelegateProxy 16 | : RxScrollViewDelegateProxy 17 | , UITextViewDelegate { 18 | 19 | /// Typed parent object. 20 | public weak private(set) var textView: UITextView? 21 | 22 | /// - parameter textview: Parent object for delegate proxy. 23 | public init(textView: UITextView) { 24 | self.textView = textView 25 | super.init(scrollView: textView) 26 | } 27 | 28 | // MARK: delegate methods 29 | 30 | /// For more information take a look at `DelegateProxyType`. 31 | @objc open func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool { 32 | /** 33 | We've had some issues with observing text changes. This is here just in case we need the same hack in future and that 34 | we wouldn't need to change the public interface. 35 | */ 36 | let forwardToDelegate = self.forwardToDelegate() as? UITextViewDelegate 37 | return forwardToDelegate?.textView?(textView, 38 | shouldChangeTextIn: range, 39 | replacementText: text) ?? true 40 | } 41 | } 42 | 43 | #endif 44 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ShadowsocksX-NGTests/Pods-ShadowsocksX-NGTests.debug.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/GCDWebServer" "${PODS_CONFIGURATION_BUILD_DIR}/MASShortcut" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GCDWebServer/GCDWebServer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MASShortcut/MASShortcut.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa/RxCocoa.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay/RxRelay.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift/RxSwift.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -l"z" -framework "Alamofire" -framework "AppKit" -framework "CFNetwork" -framework "Carbon" -framework "GCDWebServer" -framework "MASShortcut" -framework "RxCocoa" -framework "RxRelay" -framework "RxSwift" -framework "SystemConfiguration" 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 12 | -------------------------------------------------------------------------------- /Pods/Target Support Files/Pods-ShadowsocksX-NGTests/Pods-ShadowsocksX-NGTests.release.xcconfig: -------------------------------------------------------------------------------- 1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO 2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire" "${PODS_CONFIGURATION_BUILD_DIR}/GCDWebServer" "${PODS_CONFIGURATION_BUILD_DIR}/MASShortcut" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift" 3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/Alamofire/Alamofire.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/GCDWebServer/GCDWebServer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MASShortcut/MASShortcut.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxCocoa/RxCocoa.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxRelay/RxRelay.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/RxSwift/RxSwift.framework/Headers" 5 | OTHER_LDFLAGS = $(inherited) -l"z" -framework "Alamofire" -framework "AppKit" -framework "CFNetwork" -framework "Carbon" -framework "GCDWebServer" -framework "MASShortcut" -framework "RxCocoa" -framework "RxRelay" -framework "RxSwift" -framework "SystemConfiguration" 6 | PODS_BUILD_DIR = ${BUILD_DIR} 7 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 8 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 9 | PODS_ROOT = ${SRCROOT}/Pods 10 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates 11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES 12 | -------------------------------------------------------------------------------- /Pods/Alamofire/Source/Alamofire.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Alamofire.swift 3 | // 4 | // Copyright (c) 2014-2021 Alamofire Software Foundation (http://alamofire.org/) 5 | // 6 | // Permission is hereby granted, free of charge, to any person obtaining a copy 7 | // of this software and associated documentation files (the "Software"), to deal 8 | // in the Software without restriction, including without limitation the rights 9 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | // copies of the Software, and to permit persons to whom the Software is 11 | // furnished to do so, subject to the following conditions: 12 | // 13 | // The above copyright notice and this permission notice shall be included in 14 | // all copies or substantial portions of the Software. 15 | // 16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22 | // THE SOFTWARE. 23 | // 24 | 25 | /// Reference to `Session.default` for quick bootstrapping and examples. 26 | public let AF = Session.default 27 | 28 | /// Current Alamofire version. Necessary since SPM doesn't use dynamic libraries. Plus this will be more accurate. 29 | let version = "5.4.3" 30 | -------------------------------------------------------------------------------- /Pods/GCDWebServer/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2012-2014, Pierre-Olivier Latour 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | * Redistributions of source code must retain the above copyright 7 | notice, this list of conditions and the following disclaimer. 8 | * Redistributions in binary form must reproduce the above copyright 9 | notice, this list of conditions and the following disclaimer in the 10 | documentation and/or other materials provided with the distribution. 11 | * The name of Pierre-Olivier Latour may not be used to endorse 12 | or promote products derived from this software without specific 13 | prior written permission. 14 | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 16 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 | DISCLAIMED. IN NO EVENT SHALL PIERRE-OLIVIER LATOUR BE LIABLE FOR ANY 19 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Observables/AddRef.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AddRef.swift 3 | // RxSwift 4 | // 5 | // Created by Junior B. on 30/10/15. 6 | // Copyright © 2015 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | final class AddRefSink : Sink, ObserverType { 10 | typealias Element = Observer.Element 11 | 12 | override init(observer: Observer, cancel: Cancelable) { 13 | super.init(observer: observer, cancel: cancel) 14 | } 15 | 16 | func on(_ event: Event) { 17 | switch event { 18 | case .next: 19 | self.forwardOn(event) 20 | case .completed, .error: 21 | self.forwardOn(event) 22 | self.dispose() 23 | } 24 | } 25 | } 26 | 27 | final class AddRef : Producer { 28 | 29 | private let source: Observable 30 | private let refCount: RefCountDisposable 31 | 32 | init(source: Observable, refCount: RefCountDisposable) { 33 | self.source = source 34 | self.refCount = refCount 35 | } 36 | 37 | override func run(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element { 38 | let releaseDisposable = self.refCount.retain() 39 | let sink = AddRefSink(observer: observer, cancel: cancel) 40 | let subscription = Disposables.create(releaseDisposable, self.source.subscribe(sink)) 41 | 42 | return (sink: sink, subscription: subscription) 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Traits/Infallible/Infallible+Create.swift: -------------------------------------------------------------------------------- 1 | // 2 | // Infallible+Create.swift 3 | // RxSwift 4 | // 5 | // Created by Shai Mishali on 27/08/2020. 6 | // Copyright © 2020 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | 11 | public enum InfallibleEvent { 12 | /// Next element is produced. 13 | case next(Element) 14 | 15 | /// Sequence completed successfully. 16 | case completed 17 | } 18 | 19 | extension Infallible { 20 | public typealias InfallibleObserver = (InfallibleEvent) -> Void 21 | 22 | /** 23 | Creates an observable sequence from a specified subscribe method implementation. 24 | 25 | - seealso: [create operator on reactivex.io](http://reactivex.io/documentation/operators/create.html) 26 | 27 | - parameter subscribe: Implementation of the resulting observable sequence's `subscribe` method. 28 | - returns: The observable sequence with the specified implementation for the `subscribe` method. 29 | */ 30 | public static func create(subscribe: @escaping (@escaping InfallibleObserver) -> Disposable) -> Infallible { 31 | let source = Observable.create { observer in 32 | subscribe { event in 33 | switch event { 34 | case .next(let element): 35 | observer.onNext(element) 36 | case .completed: 37 | observer.onCompleted() 38 | } 39 | } 40 | } 41 | 42 | return Infallible(source) 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /Pods/RxCocoa/RxCocoa/iOS/Proxies/RxTabBarDelegateProxy.swift: -------------------------------------------------------------------------------- 1 | // 2 | // RxTabBarDelegateProxy.swift 3 | // RxCocoa 4 | // 5 | // Created by Jesse Farless on 5/14/16. 6 | // Copyright © 2016 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | #if os(iOS) || os(tvOS) 10 | 11 | import UIKit 12 | import RxSwift 13 | 14 | extension UITabBar: HasDelegate { 15 | public typealias Delegate = UITabBarDelegate 16 | } 17 | 18 | /// For more information take a look at `DelegateProxyType`. 19 | open class RxTabBarDelegateProxy 20 | : DelegateProxy 21 | , DelegateProxyType 22 | , UITabBarDelegate { 23 | 24 | /// Typed parent object. 25 | public weak private(set) var tabBar: UITabBar? 26 | 27 | /// - parameter tabBar: Parent object for delegate proxy. 28 | public init(tabBar: ParentObject) { 29 | self.tabBar = tabBar 30 | super.init(parentObject: tabBar, delegateProxy: RxTabBarDelegateProxy.self) 31 | } 32 | 33 | // Register known implementations 34 | public static func registerKnownImplementations() { 35 | self.register { RxTabBarDelegateProxy(tabBar: $0) } 36 | } 37 | 38 | /// For more information take a look at `DelegateProxyType`. 39 | open class func currentDelegate(for object: ParentObject) -> UITabBarDelegate? { 40 | object.delegate 41 | } 42 | 43 | /// For more information take a look at `DelegateProxyType`. 44 | open class func setCurrentDelegate(_ delegate: UITabBarDelegate?, to object: ParentObject) { 45 | object.delegate = delegate 46 | } 47 | } 48 | 49 | #endif 50 | -------------------------------------------------------------------------------- /Pods/RxSwift/RxSwift/Observables/AsMaybe.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AsMaybe.swift 3 | // RxSwift 4 | // 5 | // Created by Krunoslav Zaher on 3/12/17. 6 | // Copyright © 2017 Krunoslav Zaher. All rights reserved. 7 | // 8 | 9 | private final class AsMaybeSink : Sink, ObserverType { 10 | typealias Element = Observer.Element 11 | 12 | private var element: Event? 13 | 14 | func on(_ event: Event) { 15 | switch event { 16 | case .next: 17 | if self.element != nil { 18 | self.forwardOn(.error(RxError.moreThanOneElement)) 19 | self.dispose() 20 | } 21 | 22 | self.element = event 23 | case .error: 24 | self.forwardOn(event) 25 | self.dispose() 26 | case .completed: 27 | if let element = self.element { 28 | self.forwardOn(element) 29 | } 30 | self.forwardOn(.completed) 31 | self.dispose() 32 | } 33 | } 34 | } 35 | 36 | final class AsMaybe: Producer { 37 | private let source: Observable 38 | 39 | init(source: Observable) { 40 | self.source = source 41 | } 42 | 43 | override func run(_ observer: Observer, cancel: Cancelable) -> (sink: Disposable, subscription: Disposable) where Observer.Element == Element { 44 | let sink = AsMaybeSink(observer: observer, cancel: cancel) 45 | let subscription = self.source.subscribe(sink) 46 | return (sink: sink, subscription: subscription) 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /ShadowsocksX-NG/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "16x16", 5 | "idiom" : "mac", 6 | "filename" : "Icon_16x16.png", 7 | "scale" : "1x" 8 | }, 9 | { 10 | "size" : "16x16", 11 | "idiom" : "mac", 12 | "filename" : "Icon_16x16@2x.png", 13 | "scale" : "2x" 14 | }, 15 | { 16 | "size" : "32x32", 17 | "idiom" : "mac", 18 | "filename" : "Icon_32x32.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "32x32", 23 | "idiom" : "mac", 24 | "filename" : "Icon_32x32@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "128x128", 29 | "idiom" : "mac", 30 | "filename" : "Icon_128x128.png", 31 | "scale" : "1x" 32 | }, 33 | { 34 | "size" : "128x128", 35 | "idiom" : "mac", 36 | "filename" : "Icon_128x128@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "256x256", 41 | "idiom" : "mac", 42 | "filename" : "Icon_256x256.png", 43 | "scale" : "1x" 44 | }, 45 | { 46 | "size" : "256x256", 47 | "idiom" : "mac", 48 | "filename" : "Icon_256x256@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "512x512", 53 | "idiom" : "mac", 54 | "filename" : "Icon_512x512.png", 55 | "scale" : "1x" 56 | }, 57 | { 58 | "size" : "512x512", 59 | "idiom" : "mac", 60 | "filename" : "Icon_512x512@2x.png", 61 | "scale" : "2x" 62 | } 63 | ], 64 | "info" : { 65 | "version" : 1, 66 | "author" : "xcode" 67 | } 68 | } --------------------------------------------------------------------------------