sing-box-python 1.13.18__tar.gz → 1.13.20__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1041) hide show
  1. sing_box_python-1.13.20/.go-version +1 -0
  2. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/MANIFEST.in +3 -0
  3. {sing_box_python-1.13.18/sing_box_python.egg-info → sing_box_python-1.13.20}/PKG-INFO +44 -12
  4. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/README.md +43 -11
  5. sing_box_python-1.13.20/UPSTREAM_COMMIT +1 -0
  6. sing_box_python-1.13.20/UPSTREAM_VERSION +1 -0
  7. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/pyproject.toml +17 -9
  8. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/setup.py +7 -2
  9. {sing_box_python-1.13.18 → sing_box_python-1.13.20/sing_box_python.egg-info}/PKG-INFO +44 -12
  10. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/sing_box_python.egg-info/SOURCES.txt +5 -0
  11. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/.github/build_alpine_apk.sh +0 -0
  12. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/.github/build_openwrt_apk.sh +0 -0
  13. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/.github/deb2ipk.sh +0 -0
  14. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/.github/detect_track.sh +0 -0
  15. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/.github/setup_go_for_macos1013.sh +0 -0
  16. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/.github/setup_go_for_windows7.sh +0 -0
  17. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/.github/update_clients.sh +0 -0
  18. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/.github/update_cronet.sh +0 -0
  19. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/.github/update_cronet_dev.sh +0 -0
  20. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/.github/update_dependencies.sh +0 -0
  21. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/.github/workflows/build.yml +26 -25
  22. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/experimental.go +8 -0
  23. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/inbound.go +2 -2
  24. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/internal/update_apple_version/main.go +11 -1
  25. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd.go +4 -1
  26. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/geosite/compat_test.go +5 -1
  27. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/geosite/reader.go +21 -12
  28. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/srs/binary.go +25 -47
  29. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/srs/compat_test.go +2 -2
  30. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/srs/ip_cidr.go +7 -3
  31. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/srs/ip_set.go +22 -18
  32. sing_box_python-1.13.20/singbox-go/common/srs/malformed_test.go +53 -0
  33. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/dhcp/dhcp.go +1 -7
  34. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/dhcp/dhcp_shared.go +28 -39
  35. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/changelog.md +8 -0
  36. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/rule.md +2 -2
  37. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/rule.zh.md +1 -1
  38. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/installation/tools/install.sh +0 -0
  39. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/cachefile/cache.go +17 -15
  40. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/cachefile/fakeip.go +9 -1
  41. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/clashapi/connections.go +4 -4
  42. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/clashapi/proxies.go +34 -0
  43. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/clashapi/server.go +3 -1
  44. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/command_server.go +1 -1
  45. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/profile_import.go +6 -4
  46. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/go.mod +4 -5
  47. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/go.sum +8 -10
  48. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/log/export.go +6 -2
  49. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/log/observable.go +69 -29
  50. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/direct/outbound.go +4 -0
  51. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/group/urltest.go +28 -6
  52. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/ssh/outbound.go +18 -6
  53. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/tailscale/endpoint.go +12 -1
  54. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/config/openwrt.init +0 -0
  55. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/config/openwrt.prerm +0 -0
  56. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/config/sing-box.initd +0 -0
  57. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/local/common.sh +0 -0
  58. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/local/debug.sh +0 -0
  59. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/local/enable.sh +0 -0
  60. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/local/install.sh +0 -0
  61. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/local/install_go.sh +0 -0
  62. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/local/reinstall.sh +0 -0
  63. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/local/uninstall.sh +0 -0
  64. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/local/update.sh +0 -0
  65. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/network.go +9 -4
  66. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/router.go +0 -1
  67. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/match_state.go +14 -4
  68. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_abstract.go +49 -26
  69. sing_box_python-1.13.20/singbox-go/route/rule/rule_dns_address_filter_test.go +392 -0
  70. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_rule_set.go +3 -1
  71. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_set_local.go +3 -1
  72. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_set_remote.go +3 -1
  73. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_set_semantics_test.go +18 -6
  74. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/service/oomkiller/service.go +4 -4
  75. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/service/oomkiller/service_stub.go +3 -3
  76. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/service/oomkiller/service_timer.go +4 -4
  77. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2raywebsocket/client.go +8 -13
  78. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2raywebsocket/conn.go +20 -22
  79. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/tests/test_binding.py +2 -1
  80. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/CMakeLists.txt +0 -0
  81. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/LICENSE +0 -0
  82. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/setup.cfg +0 -0
  83. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/sing_box_python.egg-info/dependency_links.txt +0 -0
  84. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/sing_box_python.egg-info/not-zip-safe +0 -0
  85. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/sing_box_python.egg-info/top_level.txt +0 -0
  86. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox/__init__.py +0 -0
  87. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox/_native.pyi +0 -0
  88. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox/py.typed +0 -0
  89. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/.fpm_openwrt +0 -0
  90. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/.fpm_pacman +0 -0
  91. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/.fpm_systemd +0 -0
  92. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/.github/CRONET_GO_VERSION +0 -0
  93. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/.github/FUNDING.yml +0 -0
  94. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  95. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/.github/ISSUE_TEMPLATE/bug_report_zh.yml +0 -0
  96. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/.github/renovate.json +0 -0
  97. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/.github/workflows/docker.yml +0 -0
  98. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/.github/workflows/lint.yml +0 -0
  99. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/.github/workflows/linux.yml +0 -0
  100. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/.github/workflows/stale.yml +0 -0
  101. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/.gitignore +0 -0
  102. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/.gitmodules +0 -0
  103. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/.golangci.yml +0 -0
  104. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/Dockerfile +0 -0
  105. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/Dockerfile.binary +0 -0
  106. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/LICENSE +0 -0
  107. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/Makefile +0 -0
  108. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/README.md +0 -0
  109. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/certificate.go +0 -0
  110. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/connections.go +0 -0
  111. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/dns.go +0 -0
  112. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/endpoint/adapter.go +0 -0
  113. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/endpoint/manager.go +0 -0
  114. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/endpoint/registry.go +0 -0
  115. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/endpoint.go +0 -0
  116. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/fakeip.go +0 -0
  117. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/fakeip_metadata.go +0 -0
  118. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/handler.go +0 -0
  119. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/inbound/adapter.go +0 -0
  120. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/inbound/manager.go +0 -0
  121. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/inbound/registry.go +0 -0
  122. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/lifecycle.go +0 -0
  123. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/lifecycle_legacy.go +0 -0
  124. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/network.go +0 -0
  125. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/outbound/adapter.go +0 -0
  126. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/outbound/manager.go +0 -0
  127. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/outbound/registry.go +0 -0
  128. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/outbound.go +0 -0
  129. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/platform.go +0 -0
  130. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/prestart.go +0 -0
  131. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/router.go +0 -0
  132. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/rule.go +0 -0
  133. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/service/adapter.go +0 -0
  134. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/service/manager.go +0 -0
  135. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/service/registry.go +0 -0
  136. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/service.go +0 -0
  137. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/ssm.go +0 -0
  138. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/time.go +0 -0
  139. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/upstream.go +0 -0
  140. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/upstream_legacy.go +0 -0
  141. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/adapter/v2ray.go +0 -0
  142. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/binding/cronet_purego.go +0 -0
  143. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/binding/main.go +0 -0
  144. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/box.go +0 -0
  145. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/internal/app_store_connect/main.go +0 -0
  146. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/internal/build/main.go +0 -0
  147. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/internal/build_libbox/main.go +0 -0
  148. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/internal/build_shared/sdk.go +0 -0
  149. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/internal/build_shared/tag.go +0 -0
  150. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/internal/format_docs/main.go +0 -0
  151. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/internal/merge_aar/main.go +0 -0
  152. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/internal/merge_apple_xcframework/main.go +0 -0
  153. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/internal/protogen/main.go +0 -0
  154. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/internal/read_tag/main.go +0 -0
  155. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/internal/tun_bench/main.go +0 -0
  156. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/internal/update_android_version/main.go +0 -0
  157. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/internal/update_certificates/main.go +0 -0
  158. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_check.go +0 -0
  159. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_format.go +0 -0
  160. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_generate.go +0 -0
  161. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_generate_ech.go +0 -0
  162. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_generate_tls.go +0 -0
  163. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_generate_vapid.go +0 -0
  164. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_generate_wireguard.go +0 -0
  165. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_geoip.go +0 -0
  166. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_geoip_export.go +0 -0
  167. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_geoip_list.go +0 -0
  168. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_geoip_lookup.go +0 -0
  169. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_geosite.go +0 -0
  170. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_geosite_export.go +0 -0
  171. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_geosite_list.go +0 -0
  172. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_geosite_lookup.go +0 -0
  173. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_geosite_matcher.go +0 -0
  174. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_merge.go +0 -0
  175. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_rule_set.go +0 -0
  176. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_rule_set_compile.go +0 -0
  177. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_rule_set_convert.go +0 -0
  178. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_rule_set_decompile.go +0 -0
  179. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_rule_set_format.go +0 -0
  180. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_rule_set_match.go +0 -0
  181. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_rule_set_merge.go +0 -0
  182. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_rule_set_upgrade.go +0 -0
  183. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_run.go +0 -0
  184. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_tools.go +0 -0
  185. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_tools_connect.go +0 -0
  186. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_tools_fetch.go +0 -0
  187. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_tools_fetch_http3.go +0 -0
  188. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_tools_fetch_http3_stub.go +0 -0
  189. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_tools_synctime.go +0 -0
  190. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/cmd_version.go +0 -0
  191. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/generate_completions.go +0 -0
  192. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/cmd/sing-box/main.go +0 -0
  193. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/badtls/raw_conn.go +0 -0
  194. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/badtls/raw_half_conn.go +0 -0
  195. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/badtls/read_wait.go +0 -0
  196. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/badtls/read_wait_stub.go +0 -0
  197. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/badtls/registry.go +0 -0
  198. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/badtls/registry_utls.go +0 -0
  199. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/badversion/version.go +0 -0
  200. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/badversion/version_json.go +0 -0
  201. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/badversion/version_test.go +0 -0
  202. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/certificate/chrome.go +0 -0
  203. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/certificate/mozilla.go +0 -0
  204. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/certificate/store.go +0 -0
  205. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/compatible/map.go +0 -0
  206. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/convertor/adguard/convertor.go +0 -0
  207. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/convertor/adguard/convertor_test.go +0 -0
  208. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/dialer/default.go +0 -0
  209. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/dialer/default_parallel_interface.go +0 -0
  210. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/dialer/default_parallel_network.go +0 -0
  211. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/dialer/detour.go +0 -0
  212. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/dialer/dialer.go +0 -0
  213. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/dialer/resolve.go +0 -0
  214. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/dialer/router.go +0 -0
  215. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/dialer/tfo.go +0 -0
  216. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/dialer/wireguard.go +0 -0
  217. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/geoip/reader.go +0 -0
  218. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/geosite/geosite_test.go +0 -0
  219. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/geosite/rule.go +0 -0
  220. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/geosite/writer.go +0 -0
  221. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/interrupt/conn.go +0 -0
  222. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/interrupt/context.go +0 -0
  223. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/interrupt/group.go +0 -0
  224. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/ja3/LICENSE +0 -0
  225. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/ja3/README.md +0 -0
  226. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/ja3/error.go +0 -0
  227. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/ja3/ja3.go +0 -0
  228. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/ja3/parser.go +0 -0
  229. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/ktls/ktls.go +0 -0
  230. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/ktls/ktls_alert.go +0 -0
  231. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/ktls/ktls_cipher_suites_linux.go +0 -0
  232. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/ktls/ktls_close.go +0 -0
  233. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/ktls/ktls_const.go +0 -0
  234. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/ktls/ktls_handshake_messages.go +0 -0
  235. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/ktls/ktls_key_update.go +0 -0
  236. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/ktls/ktls_linux.go +0 -0
  237. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/ktls/ktls_prf.go +0 -0
  238. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/ktls/ktls_read.go +0 -0
  239. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/ktls/ktls_read_wait.go +0 -0
  240. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/ktls/ktls_stub_nolinkname.go +0 -0
  241. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/ktls/ktls_stub_nonlinux.go +0 -0
  242. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/ktls/ktls_stub_oldgo.go +0 -0
  243. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/ktls/ktls_write.go +0 -0
  244. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/listener/listener.go +0 -0
  245. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/listener/listener_tcp.go +0 -0
  246. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/listener/listener_udp.go +0 -0
  247. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/mux/client.go +0 -0
  248. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/mux/router.go +0 -0
  249. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/pipelistener/listener.go +0 -0
  250. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/process/searcher.go +0 -0
  251. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/process/searcher_android.go +0 -0
  252. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/process/searcher_darwin.go +0 -0
  253. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/process/searcher_darwin_shared.go +0 -0
  254. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/process/searcher_linux.go +0 -0
  255. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/process/searcher_linux_shared.go +0 -0
  256. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/process/searcher_linux_shared_test.go +0 -0
  257. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/process/searcher_stub.go +0 -0
  258. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/process/searcher_windows.go +0 -0
  259. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/redir/redir_darwin.go +0 -0
  260. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/redir/redir_linux.go +0 -0
  261. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/redir/redir_other.go +0 -0
  262. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/redir/tproxy_linux.go +0 -0
  263. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/redir/tproxy_other.go +0 -0
  264. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/settings/proxy_android.go +0 -0
  265. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/settings/proxy_darwin.go +0 -0
  266. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/settings/proxy_linux.go +0 -0
  267. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/settings/proxy_stub.go +0 -0
  268. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/settings/proxy_windows.go +0 -0
  269. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/settings/system_proxy.go +0 -0
  270. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/settings/wifi.go +0 -0
  271. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/settings/wifi_linux.go +0 -0
  272. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/settings/wifi_linux_connman.go +0 -0
  273. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/settings/wifi_linux_iwd.go +0 -0
  274. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/settings/wifi_linux_nm.go +0 -0
  275. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/settings/wifi_linux_wpa.go +0 -0
  276. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/settings/wifi_stub.go +0 -0
  277. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/settings/wifi_windows.go +0 -0
  278. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/sniff/bittorrent.go +0 -0
  279. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/sniff/bittorrent_test.go +0 -0
  280. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/sniff/dns.go +0 -0
  281. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/sniff/dns_test.go +0 -0
  282. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/sniff/dtls.go +0 -0
  283. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/sniff/dtls_test.go +0 -0
  284. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/sniff/http.go +0 -0
  285. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/sniff/http_test.go +0 -0
  286. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/sniff/internal/qtls/qtls.go +0 -0
  287. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/sniff/ntp.go +0 -0
  288. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/sniff/ntp_test.go +0 -0
  289. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/sniff/quic.go +0 -0
  290. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/sniff/quic_blacklist.go +0 -0
  291. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/sniff/quic_capture_test.go +0 -0
  292. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/sniff/quic_test.go +0 -0
  293. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/sniff/rdp.go +0 -0
  294. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/sniff/rdp_test.go +0 -0
  295. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/sniff/sniff.go +0 -0
  296. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/sniff/ssh.go +0 -0
  297. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/sniff/ssh_test.go +0 -0
  298. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/sniff/stun.go +0 -0
  299. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/sniff/stun_test.go +0 -0
  300. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/sniff/tls.go +0 -0
  301. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/taskmonitor/monitor.go +0 -0
  302. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/tls/acme.go +0 -0
  303. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/tls/acme_contstant.go +0 -0
  304. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/tls/acme_stub.go +0 -0
  305. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/tls/client.go +0 -0
  306. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/tls/common.go +0 -0
  307. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/tls/config.go +0 -0
  308. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/tls/ech.go +0 -0
  309. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/tls/ech_shared.go +0 -0
  310. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/tls/ech_tag_stub.go +0 -0
  311. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/tls/ktls.go +0 -0
  312. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/tls/mkcert.go +0 -0
  313. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/tls/reality_client.go +0 -0
  314. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/tls/reality_server.go +0 -0
  315. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/tls/reality_stub.go +0 -0
  316. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/tls/server.go +0 -0
  317. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/tls/std_client.go +0 -0
  318. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/tls/std_server.go +0 -0
  319. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/tls/time_wrapper.go +0 -0
  320. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/tls/utls_client.go +0 -0
  321. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/tls/utls_stub.go +0 -0
  322. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/tlsfragment/conn.go +0 -0
  323. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/tlsfragment/conn_test.go +0 -0
  324. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/tlsfragment/index.go +0 -0
  325. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/tlsfragment/index_test.go +0 -0
  326. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/tlsfragment/wait_darwin.go +0 -0
  327. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/tlsfragment/wait_linux.go +0 -0
  328. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/tlsfragment/wait_stub.go +0 -0
  329. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/tlsfragment/wait_windows.go +0 -0
  330. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/uot/router.go +0 -0
  331. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/common/urltest/urltest.go +0 -0
  332. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/certificate.go +0 -0
  333. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/cgo.go +0 -0
  334. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/cgo_disabled.go +0 -0
  335. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/dhcp.go +0 -0
  336. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/dns.go +0 -0
  337. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/err.go +0 -0
  338. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/goos/gengoos.go +0 -0
  339. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/goos/goos.go +0 -0
  340. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/goos/zgoos_aix.go +0 -0
  341. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/goos/zgoos_android.go +0 -0
  342. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/goos/zgoos_darwin.go +0 -0
  343. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/goos/zgoos_dragonfly.go +0 -0
  344. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/goos/zgoos_freebsd.go +0 -0
  345. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/goos/zgoos_hurd.go +0 -0
  346. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/goos/zgoos_illumos.go +0 -0
  347. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/goos/zgoos_ios.go +0 -0
  348. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/goos/zgoos_js.go +0 -0
  349. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/goos/zgoos_linux.go +0 -0
  350. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/goos/zgoos_netbsd.go +0 -0
  351. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/goos/zgoos_openbsd.go +0 -0
  352. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/goos/zgoos_plan9.go +0 -0
  353. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/goos/zgoos_solaris.go +0 -0
  354. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/goos/zgoos_windows.go +0 -0
  355. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/goos/zgoos_zos.go +0 -0
  356. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/hysteria2.go +0 -0
  357. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/network.go +0 -0
  358. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/os.go +0 -0
  359. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/path.go +0 -0
  360. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/path_unix.go +0 -0
  361. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/protocol.go +0 -0
  362. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/proxy.go +0 -0
  363. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/quic.go +0 -0
  364. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/quic_stub.go +0 -0
  365. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/rule.go +0 -0
  366. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/speed.go +0 -0
  367. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/time.go +0 -0
  368. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/timeout.go +0 -0
  369. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/v2ray.go +0 -0
  370. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/constant/version.go +0 -0
  371. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/daemon/deprecated.go +0 -0
  372. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/daemon/instance.go +0 -0
  373. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/daemon/platform.go +0 -0
  374. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/daemon/started_service.go +0 -0
  375. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/daemon/started_service.pb.go +0 -0
  376. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/daemon/started_service.proto +0 -0
  377. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/daemon/started_service_grpc.pb.go +0 -0
  378. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/debug.go +0 -0
  379. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/debug_http.go +0 -0
  380. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/debug_stub.go +0 -0
  381. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/debug_unix.go +0 -0
  382. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/client.go +0 -0
  383. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/client_log.go +0 -0
  384. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/client_truncate.go +0 -0
  385. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/extension_edns0_subnet.go +0 -0
  386. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/rcode.go +0 -0
  387. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/router.go +0 -0
  388. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/conn_pool.go +0 -0
  389. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/fakeip/fakeip.go +0 -0
  390. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/fakeip/memory.go +0 -0
  391. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/fakeip/store.go +0 -0
  392. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/hosts/hosts.go +0 -0
  393. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/hosts/hosts_file.go +0 -0
  394. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/hosts/hosts_test.go +0 -0
  395. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/hosts/hosts_unix.go +0 -0
  396. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/hosts/hosts_windows.go +0 -0
  397. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/hosts/testdata/hosts +0 -0
  398. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/https.go +0 -0
  399. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/https_transport.go +0 -0
  400. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/local/local.go +0 -0
  401. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/local/local_darwin.go +0 -0
  402. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/local/local_darwin_dhcp.go +0 -0
  403. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/local/local_darwin_nodhcp.go +0 -0
  404. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/local/local_resolved.go +0 -0
  405. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/local/local_resolved_linux.go +0 -0
  406. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/local/local_resolved_stub.go +0 -0
  407. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/local/local_shared.go +0 -0
  408. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/local/resolv.go +0 -0
  409. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/local/resolv_default.go +0 -0
  410. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/local/resolv_test.go +0 -0
  411. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/local/resolv_unix.go +0 -0
  412. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/local/resolv_windows.go +0 -0
  413. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/quic/http3.go +0 -0
  414. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/quic/quic.go +0 -0
  415. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/tcp.go +0 -0
  416. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/tls.go +0 -0
  417. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport/udp.go +0 -0
  418. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport_adapter.go +0 -0
  419. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport_dialer.go +0 -0
  420. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport_manager.go +0 -0
  421. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/dns/transport_registry.go +0 -0
  422. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/CNAME +0 -0
  423. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/assets/icon.svg +0 -0
  424. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/clients/android/features.md +0 -0
  425. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/clients/android/index.md +0 -0
  426. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/clients/apple/features.md +0 -0
  427. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/clients/apple/index.md +0 -0
  428. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/clients/general.md +0 -0
  429. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/clients/index.md +0 -0
  430. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/clients/index.zh.md +0 -0
  431. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/clients/privacy.md +0 -0
  432. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/certificate/index.md +0 -0
  433. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/certificate/index.zh.md +0 -0
  434. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/fakeip.md +0 -0
  435. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/fakeip.zh.md +0 -0
  436. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/index.md +0 -0
  437. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/index.zh.md +0 -0
  438. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/rule_action.md +0 -0
  439. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/rule_action.zh.md +0 -0
  440. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/server/dhcp.md +0 -0
  441. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/server/dhcp.zh.md +0 -0
  442. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/server/fakeip.md +0 -0
  443. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/server/fakeip.zh.md +0 -0
  444. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/server/hosts.md +0 -0
  445. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/server/hosts.zh.md +0 -0
  446. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/server/http3.md +0 -0
  447. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/server/http3.zh.md +0 -0
  448. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/server/https.md +0 -0
  449. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/server/https.zh.md +0 -0
  450. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/server/index.md +0 -0
  451. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/server/index.zh.md +0 -0
  452. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/server/legacy.md +0 -0
  453. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/server/legacy.zh.md +0 -0
  454. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/server/local.md +0 -0
  455. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/server/local.zh.md +0 -0
  456. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/server/quic.md +0 -0
  457. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/server/quic.zh.md +0 -0
  458. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/server/resolved.md +0 -0
  459. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/server/resolved.zh.md +0 -0
  460. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/server/tailscale.md +0 -0
  461. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/server/tailscale.zh.md +0 -0
  462. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/server/tcp.md +0 -0
  463. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/server/tcp.zh.md +0 -0
  464. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/server/tls.md +0 -0
  465. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/server/tls.zh.md +0 -0
  466. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/server/udp.md +0 -0
  467. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/dns/server/udp.zh.md +0 -0
  468. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/endpoint/index.md +0 -0
  469. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/endpoint/index.zh.md +0 -0
  470. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/endpoint/tailscale.md +0 -0
  471. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/endpoint/tailscale.zh.md +0 -0
  472. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/endpoint/wireguard.md +0 -0
  473. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/endpoint/wireguard.zh.md +0 -0
  474. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/experimental/cache-file.md +0 -0
  475. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/experimental/cache-file.zh.md +0 -0
  476. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/experimental/clash-api.md +0 -0
  477. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/experimental/clash-api.zh.md +0 -0
  478. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/experimental/index.md +0 -0
  479. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/experimental/index.zh.md +0 -0
  480. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/experimental/v2ray-api.md +0 -0
  481. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/experimental/v2ray-api.zh.md +0 -0
  482. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/anytls.md +0 -0
  483. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/anytls.zh.md +0 -0
  484. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/direct.md +0 -0
  485. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/direct.zh.md +0 -0
  486. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/http.md +0 -0
  487. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/http.zh.md +0 -0
  488. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/hysteria.md +0 -0
  489. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/hysteria.zh.md +0 -0
  490. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/hysteria2.md +0 -0
  491. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/hysteria2.zh.md +0 -0
  492. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/index.md +0 -0
  493. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/index.zh.md +0 -0
  494. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/mixed.md +0 -0
  495. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/mixed.zh.md +0 -0
  496. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/naive.md +0 -0
  497. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/naive.zh.md +0 -0
  498. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/redirect.md +0 -0
  499. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/redirect.zh.md +0 -0
  500. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/shadowsocks.md +0 -0
  501. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/shadowsocks.zh.md +0 -0
  502. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/shadowtls.md +0 -0
  503. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/shadowtls.zh.md +0 -0
  504. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/socks.md +0 -0
  505. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/socks.zh.md +0 -0
  506. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/tproxy.md +0 -0
  507. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/tproxy.zh.md +0 -0
  508. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/trojan.md +0 -0
  509. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/trojan.zh.md +0 -0
  510. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/tuic.md +0 -0
  511. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/tuic.zh.md +0 -0
  512. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/tun.md +0 -0
  513. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/tun.zh.md +0 -0
  514. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/vless.md +0 -0
  515. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/vless.zh.md +0 -0
  516. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/vmess.md +0 -0
  517. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/inbound/vmess.zh.md +0 -0
  518. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/index.md +0 -0
  519. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/index.zh.md +0 -0
  520. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/log/index.md +0 -0
  521. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/log/index.zh.md +0 -0
  522. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/ntp/index.md +0 -0
  523. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/ntp/index.zh.md +0 -0
  524. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/anytls.md +0 -0
  525. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/anytls.zh.md +0 -0
  526. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/block.md +0 -0
  527. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/block.zh.md +0 -0
  528. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/direct.md +0 -0
  529. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/direct.zh.md +0 -0
  530. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/dns.md +0 -0
  531. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/dns.zh.md +0 -0
  532. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/http.md +0 -0
  533. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/http.zh.md +0 -0
  534. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/hysteria.md +0 -0
  535. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/hysteria.zh.md +0 -0
  536. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/hysteria2.md +0 -0
  537. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/hysteria2.zh.md +0 -0
  538. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/index.md +0 -0
  539. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/index.zh.md +0 -0
  540. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/naive.md +0 -0
  541. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/naive.zh.md +0 -0
  542. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/selector.md +0 -0
  543. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/selector.zh.md +0 -0
  544. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/shadowsocks.md +0 -0
  545. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/shadowsocks.zh.md +0 -0
  546. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/shadowtls.md +0 -0
  547. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/shadowtls.zh.md +0 -0
  548. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/socks.md +0 -0
  549. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/socks.zh.md +0 -0
  550. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/ssh.md +0 -0
  551. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/ssh.zh.md +0 -0
  552. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/tor.md +0 -0
  553. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/tor.zh.md +0 -0
  554. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/trojan.md +0 -0
  555. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/trojan.zh.md +0 -0
  556. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/tuic.md +0 -0
  557. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/tuic.zh.md +0 -0
  558. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/urltest.md +0 -0
  559. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/urltest.zh.md +0 -0
  560. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/vless.md +0 -0
  561. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/vless.zh.md +0 -0
  562. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/vmess.md +0 -0
  563. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/vmess.zh.md +0 -0
  564. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/wireguard.md +0 -0
  565. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/outbound/wireguard.zh.md +0 -0
  566. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/route/geoip.md +0 -0
  567. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/route/geoip.zh.md +0 -0
  568. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/route/geosite.md +0 -0
  569. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/route/geosite.zh.md +0 -0
  570. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/route/index.md +0 -0
  571. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/route/index.zh.md +0 -0
  572. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/route/rule.md +0 -0
  573. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/route/rule.zh.md +0 -0
  574. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/route/rule_action.md +0 -0
  575. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/route/rule_action.zh.md +0 -0
  576. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/route/sniff.md +0 -0
  577. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/route/sniff.zh.md +0 -0
  578. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/rule-set/adguard.md +0 -0
  579. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/rule-set/adguard.zh.md +0 -0
  580. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/rule-set/headless-rule.md +0 -0
  581. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/rule-set/headless-rule.zh.md +0 -0
  582. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/rule-set/index.md +0 -0
  583. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/rule-set/index.zh.md +0 -0
  584. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/rule-set/source-format.md +0 -0
  585. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/rule-set/source-format.zh.md +0 -0
  586. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/service/ccm.md +0 -0
  587. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/service/ccm.zh.md +0 -0
  588. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/service/derp.md +0 -0
  589. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/service/derp.zh.md +0 -0
  590. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/service/index.md +0 -0
  591. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/service/index.zh.md +0 -0
  592. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/service/ocm.md +0 -0
  593. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/service/ocm.zh.md +0 -0
  594. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/service/resolved.md +0 -0
  595. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/service/resolved.zh.md +0 -0
  596. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/service/ssm-api.md +0 -0
  597. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/service/ssm-api.zh.md +0 -0
  598. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/shared/dial.md +0 -0
  599. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/shared/dial.zh.md +0 -0
  600. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/shared/dns01_challenge.md +0 -0
  601. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/shared/dns01_challenge.zh.md +0 -0
  602. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/shared/listen.md +0 -0
  603. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/shared/listen.zh.md +0 -0
  604. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/shared/multiplex.md +0 -0
  605. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/shared/multiplex.zh.md +0 -0
  606. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/shared/pre-match.md +0 -0
  607. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/shared/pre-match.zh.md +0 -0
  608. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/shared/tcp-brutal.md +0 -0
  609. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/shared/tcp-brutal.zh.md +0 -0
  610. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/shared/tls.md +0 -0
  611. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/shared/tls.zh.md +0 -0
  612. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/shared/udp-over-tcp.md +0 -0
  613. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/shared/udp-over-tcp.zh.md +0 -0
  614. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/shared/v2ray-transport.md +0 -0
  615. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/shared/v2ray-transport.zh.md +0 -0
  616. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/shared/wifi-state.md +0 -0
  617. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/configuration/shared/wifi-state.zh.md +0 -0
  618. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/deprecated.md +0 -0
  619. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/deprecated.zh.md +0 -0
  620. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/index.md +0 -0
  621. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/index.zh.md +0 -0
  622. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/installation/build-from-source.md +0 -0
  623. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/installation/build-from-source.zh.md +0 -0
  624. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/installation/docker.md +0 -0
  625. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/installation/docker.zh.md +0 -0
  626. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/installation/package-manager.md +0 -0
  627. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/installation/package-manager.zh.md +0 -0
  628. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/installation/tools/arch-install.sh +0 -0
  629. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/installation/tools/deb-install.sh +0 -0
  630. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/installation/tools/rpm-install.sh +0 -0
  631. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/installation/tools/sing-box.repo +0 -0
  632. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/manual/misc/anytls-client-metadata.md +0 -0
  633. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/manual/misc/anytls-client-metadata.zh.md +0 -0
  634. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/manual/misc/tunnelvision.md +0 -0
  635. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/manual/proxy/client.md +0 -0
  636. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/manual/proxy/server.md +0 -0
  637. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/manual/proxy-protocol/hysteria2.md +0 -0
  638. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/manual/proxy-protocol/shadowsocks.md +0 -0
  639. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/manual/proxy-protocol/trojan.md +0 -0
  640. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/migration.md +0 -0
  641. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/migration.zh.md +0 -0
  642. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/sponsors.md +0 -0
  643. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/support.md +0 -0
  644. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/docs/support.zh.md +0 -0
  645. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/cachefile/rdrc.go +0 -0
  646. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/clashapi/api_meta.go +0 -0
  647. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/clashapi/api_meta_group.go +0 -0
  648. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/clashapi/api_meta_upgrade.go +0 -0
  649. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/clashapi/cache.go +0 -0
  650. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/clashapi/common.go +0 -0
  651. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/clashapi/configs.go +0 -0
  652. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/clashapi/ctxkeys.go +0 -0
  653. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/clashapi/dns.go +0 -0
  654. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/clashapi/errors.go +0 -0
  655. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/clashapi/profile.go +0 -0
  656. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/clashapi/provider.go +0 -0
  657. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/clashapi/ruleprovider.go +0 -0
  658. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/clashapi/rules.go +0 -0
  659. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/clashapi/script.go +0 -0
  660. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/clashapi/server_fs.go +0 -0
  661. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/clashapi/server_resources.go +0 -0
  662. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/clashapi/trafficontrol/manager.go +0 -0
  663. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/clashapi/trafficontrol/tracker.go +0 -0
  664. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/clashapi.go +0 -0
  665. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/deprecated/constants.go +0 -0
  666. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/deprecated/manager.go +0 -0
  667. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/deprecated/stderr.go +0 -0
  668. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/build_info.go +0 -0
  669. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/command.go +0 -0
  670. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/command_client.go +0 -0
  671. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/command_types.go +0 -0
  672. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/config.go +0 -0
  673. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/connection_owner_darwin.go +0 -0
  674. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/deprecated.go +0 -0
  675. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/dns.go +0 -0
  676. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/fdroid.go +0 -0
  677. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/fdroid_mirrors.go +0 -0
  678. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/ffi.json +0 -0
  679. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/http.go +0 -0
  680. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/internal/procfs/procfs.go +0 -0
  681. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/iterator.go +0 -0
  682. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/link_flags_stub.go +0 -0
  683. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/link_flags_unix.go +0 -0
  684. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/log.go +0 -0
  685. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/memory.go +0 -0
  686. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/monitor.go +0 -0
  687. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/panic.go +0 -0
  688. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/pidfd_android.go +0 -0
  689. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/platform.go +0 -0
  690. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/pprof.go +0 -0
  691. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/remote_profile.go +0 -0
  692. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/semver.go +0 -0
  693. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/semver_test.go +0 -0
  694. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/service.go +0 -0
  695. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/service_other.go +0 -0
  696. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/service_windows.go +0 -0
  697. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/setup.go +0 -0
  698. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/tun.go +0 -0
  699. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/tun_darwin.go +0 -0
  700. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/tun_name_darwin.go +0 -0
  701. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/tun_name_linux.go +0 -0
  702. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/libbox/tun_name_other.go +0 -0
  703. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/locale/locale.go +0 -0
  704. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/locale/locale_zh_CN.go +0 -0
  705. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/v2rayapi/server.go +0 -0
  706. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/v2rayapi/stats.go +0 -0
  707. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/v2rayapi/stats.pb.go +0 -0
  708. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/v2rayapi/stats.proto +0 -0
  709. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/v2rayapi/stats_grpc.pb.go +0 -0
  710. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/experimental/v2rayapi.go +0 -0
  711. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/include/ccm.go +0 -0
  712. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/include/ccm_stub.go +0 -0
  713. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/include/ccm_stub_darwin.go +0 -0
  714. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/include/clashapi.go +0 -0
  715. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/include/clashapi_stub.go +0 -0
  716. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/include/dhcp.go +0 -0
  717. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/include/dhcp_stub.go +0 -0
  718. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/include/naive_outbound.go +0 -0
  719. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/include/naive_outbound_stub.go +0 -0
  720. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/include/ocm.go +0 -0
  721. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/include/ocm_stub.go +0 -0
  722. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/include/oom_killer.go +0 -0
  723. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/include/quic.go +0 -0
  724. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/include/quic_stub.go +0 -0
  725. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/include/registry.go +0 -0
  726. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/include/tailscale.go +0 -0
  727. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/include/tailscale_stub.go +0 -0
  728. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/include/tz_android.go +0 -0
  729. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/include/tz_ios.go +0 -0
  730. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/include/v2rayapi.go +0 -0
  731. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/include/v2rayapi_stub.go +0 -0
  732. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/include/wireguard.go +0 -0
  733. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/include/wireguard_stub.go +0 -0
  734. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/log/factory.go +0 -0
  735. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/log/format.go +0 -0
  736. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/log/id.go +0 -0
  737. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/log/level.go +0 -0
  738. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/log/log.go +0 -0
  739. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/log/nop.go +0 -0
  740. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/log/override.go +0 -0
  741. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/log/platform.go +0 -0
  742. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/mkdocs.yml +0 -0
  743. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/anytls.go +0 -0
  744. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/ccm.go +0 -0
  745. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/certificate.go +0 -0
  746. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/debug.go +0 -0
  747. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/direct.go +0 -0
  748. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/dns.go +0 -0
  749. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/dns_record.go +0 -0
  750. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/endpoint.go +0 -0
  751. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/experimental.go +0 -0
  752. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/group.go +0 -0
  753. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/hysteria.go +0 -0
  754. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/hysteria2.go +0 -0
  755. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/inbound.go +0 -0
  756. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/multiplex.go +0 -0
  757. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/naive.go +0 -0
  758. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/ntp.go +0 -0
  759. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/ocm.go +0 -0
  760. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/oom_killer.go +0 -0
  761. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/options.go +0 -0
  762. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/outbound.go +0 -0
  763. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/platform.go +0 -0
  764. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/redir.go +0 -0
  765. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/resolved.go +0 -0
  766. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/route.go +0 -0
  767. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/rule.go +0 -0
  768. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/rule_action.go +0 -0
  769. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/rule_dns.go +0 -0
  770. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/rule_set.go +0 -0
  771. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/service.go +0 -0
  772. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/shadowsocks.go +0 -0
  773. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/shadowsocksr.go +0 -0
  774. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/shadowtls.go +0 -0
  775. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/simple.go +0 -0
  776. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/ssh.go +0 -0
  777. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/ssmapi.go +0 -0
  778. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/tailscale.go +0 -0
  779. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/tls.go +0 -0
  780. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/tls_acme.go +0 -0
  781. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/tor.go +0 -0
  782. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/trojan.go +0 -0
  783. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/tuic.go +0 -0
  784. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/tun.go +0 -0
  785. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/tun_platform.go +0 -0
  786. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/types.go +0 -0
  787. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/udp_over_tcp.go +0 -0
  788. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/v2ray.go +0 -0
  789. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/v2ray_transport.go +0 -0
  790. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/vless.go +0 -0
  791. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/vmess.go +0 -0
  792. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/option/wireguard.go +0 -0
  793. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/anytls/client_metadata.go +0 -0
  794. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/anytls/inbound.go +0 -0
  795. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/anytls/outbound.go +0 -0
  796. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/block/outbound.go +0 -0
  797. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/direct/inbound.go +0 -0
  798. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/dns/handle.go +0 -0
  799. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/dns/outbound.go +0 -0
  800. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/group/selector.go +0 -0
  801. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/http/inbound.go +0 -0
  802. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/http/outbound.go +0 -0
  803. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/hysteria/inbound.go +0 -0
  804. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/hysteria/outbound.go +0 -0
  805. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/hysteria2/inbound.go +0 -0
  806. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/hysteria2/outbound.go +0 -0
  807. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/mixed/inbound.go +0 -0
  808. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/naive/inbound.go +0 -0
  809. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/naive/inbound_conn.go +0 -0
  810. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/naive/outbound.go +0 -0
  811. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/naive/quic/inbound_init.go +0 -0
  812. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/redirect/redirect.go +0 -0
  813. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/redirect/tproxy.go +0 -0
  814. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/shadowsocks/inbound.go +0 -0
  815. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/shadowsocks/inbound_multi.go +0 -0
  816. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/shadowsocks/inbound_relay.go +0 -0
  817. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/shadowsocks/outbound.go +0 -0
  818. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/shadowtls/inbound.go +0 -0
  819. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/shadowtls/outbound.go +0 -0
  820. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/socks/inbound.go +0 -0
  821. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/socks/outbound.go +0 -0
  822. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/tailscale/dns_transport.go +0 -0
  823. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/tailscale/tun_device_unix.go +0 -0
  824. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/tailscale/tun_device_windows.go +0 -0
  825. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/tor/outbound.go +0 -0
  826. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/tor/proxy.go +0 -0
  827. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/trojan/inbound.go +0 -0
  828. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/trojan/outbound.go +0 -0
  829. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/tuic/inbound.go +0 -0
  830. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/tuic/outbound.go +0 -0
  831. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/tun/hook.go +0 -0
  832. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/tun/inbound.go +0 -0
  833. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/vless/inbound.go +0 -0
  834. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/vless/outbound.go +0 -0
  835. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/vmess/inbound.go +0 -0
  836. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/vmess/outbound.go +0 -0
  837. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/protocol/wireguard/endpoint.go +0 -0
  838. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/DEFAULT_BUILD_TAGS +0 -0
  839. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/DEFAULT_BUILD_TAGS_OTHERS +0 -0
  840. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/DEFAULT_BUILD_TAGS_WINDOWS +0 -0
  841. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/LDFLAGS +0 -0
  842. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/completions/sing-box.bash +0 -0
  843. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/completions/sing-box.fish +0 -0
  844. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/completions/sing-box.zsh +0 -0
  845. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/config/config.json +0 -0
  846. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/config/openwrt.conf +0 -0
  847. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/config/openwrt.keep +0 -0
  848. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/config/sing-box-split-dns.xml +0 -0
  849. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/config/sing-box.confd +0 -0
  850. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/config/sing-box.postinst +0 -0
  851. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/config/sing-box.rules +0 -0
  852. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/config/sing-box.service +0 -0
  853. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/config/sing-box.sysusers +0 -0
  854. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/config/sing-box@.service +0 -0
  855. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/release/local/sing-box.service +0 -0
  856. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/conn.go +0 -0
  857. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/dns.go +0 -0
  858. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/platform_searcher.go +0 -0
  859. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/process_cache.go +0 -0
  860. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/route.go +0 -0
  861. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_abstract_test.go +0 -0
  862. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_action.go +0 -0
  863. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_default.go +0 -0
  864. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_default_interface_address.go +0 -0
  865. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_dns.go +0 -0
  866. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_headless.go +0 -0
  867. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_interface_address.go +0 -0
  868. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_adguard.go +0 -0
  869. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_auth_user.go +0 -0
  870. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_cidr.go +0 -0
  871. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_clash_mode.go +0 -0
  872. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_client.go +0 -0
  873. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_domain.go +0 -0
  874. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_domain_keyword.go +0 -0
  875. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_domain_regex.go +0 -0
  876. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_inbound.go +0 -0
  877. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_ip_accept_any.go +0 -0
  878. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_ip_is_private.go +0 -0
  879. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_ipversion.go +0 -0
  880. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_network.go +0 -0
  881. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_network_is_constrained.go +0 -0
  882. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_network_is_expensive.go +0 -0
  883. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_network_type.go +0 -0
  884. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_outbound.go +0 -0
  885. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_package_name.go +0 -0
  886. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_port.go +0 -0
  887. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_port_range.go +0 -0
  888. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_preferred_by.go +0 -0
  889. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_process_name.go +0 -0
  890. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_process_path.go +0 -0
  891. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_process_path_regex.go +0 -0
  892. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_protocol.go +0 -0
  893. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_query_type.go +0 -0
  894. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_user.go +0 -0
  895. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_user_id.go +0 -0
  896. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_wifi_bssid.go +0 -0
  897. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_item_wifi_ssid.go +0 -0
  898. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_network_interface_address.go +0 -0
  899. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule/rule_set.go +0 -0
  900. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/route/rule_conds.go +0 -0
  901. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/service/ccm/credential.go +0 -0
  902. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/service/ccm/credential_darwin.go +0 -0
  903. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/service/ccm/credential_other.go +0 -0
  904. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/service/ccm/service.go +0 -0
  905. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/service/ccm/service_usage.go +0 -0
  906. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/service/ccm/service_user.go +0 -0
  907. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/service/derp/service.go +0 -0
  908. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/service/ocm/credential.go +0 -0
  909. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/service/ocm/credential_darwin.go +0 -0
  910. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/service/ocm/credential_other.go +0 -0
  911. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/service/ocm/service.go +0 -0
  912. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/service/ocm/service_usage.go +0 -0
  913. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/service/ocm/service_user.go +0 -0
  914. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/service/ocm/service_websocket.go +0 -0
  915. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/service/oomkiller/config.go +0 -0
  916. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/service/resolved/resolve1.go +0 -0
  917. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/service/resolved/service.go +0 -0
  918. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/service/resolved/stub.go +0 -0
  919. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/service/resolved/transport.go +0 -0
  920. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/service/ssmapi/api.go +0 -0
  921. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/service/ssmapi/cache.go +0 -0
  922. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/service/ssmapi/server.go +0 -0
  923. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/service/ssmapi/traffic.go +0 -0
  924. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/service/ssmapi/user.go +0 -0
  925. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/box_test.go +0 -0
  926. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/brutal_test.go +0 -0
  927. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/clash_darwin_test.go +0 -0
  928. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/clash_other_test.go +0 -0
  929. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/clash_test.go +0 -0
  930. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/config/hysteria-client.json +0 -0
  931. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/config/hysteria-server.json +0 -0
  932. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/config/hysteria2-client.yml +0 -0
  933. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/config/hysteria2-server.yml +0 -0
  934. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/config/naive-nginx.conf +0 -0
  935. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/config/naive-quic.json +0 -0
  936. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/config/naive.json +0 -0
  937. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/config/nginx.conf +0 -0
  938. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/config/shadowsocksr.json +0 -0
  939. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/config/trojan.json +0 -0
  940. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/config/tuic-client.json +0 -0
  941. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/config/tuic-server.json +0 -0
  942. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/config/vless-server.json +0 -0
  943. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/config/vless-tls-client.json +0 -0
  944. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/config/vless-tls-server.json +0 -0
  945. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/config/vmess-client.json +0 -0
  946. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/config/vmess-grpc-client.json +0 -0
  947. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/config/vmess-grpc-server.json +0 -0
  948. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/config/vmess-mux-client.json +0 -0
  949. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/config/vmess-server.json +0 -0
  950. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/config/vmess-ws-client.json +0 -0
  951. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/config/vmess-ws-server.json +0 -0
  952. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/config/wireguard.conf +0 -0
  953. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/direct_test.go +0 -0
  954. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/docker_test.go +0 -0
  955. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/domain_inbound_test.go +0 -0
  956. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/ech_test.go +0 -0
  957. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/go.mod +0 -0
  958. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/go.sum +0 -0
  959. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/http_test.go +0 -0
  960. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/hysteria2_test.go +0 -0
  961. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/hysteria_test.go +0 -0
  962. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/inbound_detour_test.go +0 -0
  963. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/ktls_test.go +0 -0
  964. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/mkcert.go +0 -0
  965. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/mux_cool_test.go +0 -0
  966. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/mux_test.go +0 -0
  967. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/naive_self_test.go +0 -0
  968. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/naive_test.go +0 -0
  969. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/reality_test.go +0 -0
  970. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/shadowsocks_legacy_test.go +0 -0
  971. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/shadowsocks_test.go +0 -0
  972. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/shadowtls_test.go +0 -0
  973. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/socks_test.go +0 -0
  974. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/ss_plugin_test.go +0 -0
  975. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/tfo_test.go +0 -0
  976. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/tls_test.go +0 -0
  977. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/trojan_test.go +0 -0
  978. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/tuic_test.go +0 -0
  979. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/v2ray_api_test.go +0 -0
  980. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/v2ray_grpc_test.go +0 -0
  981. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/v2ray_httpupgrade_test.go +0 -0
  982. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/v2ray_transport_test.go +0 -0
  983. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/v2ray_ws_test.go +0 -0
  984. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/vmess_test.go +0 -0
  985. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/test/wrapper_test.go +0 -0
  986. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/simple-obfs/README.md +0 -0
  987. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/simple-obfs/http.go +0 -0
  988. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/simple-obfs/tls.go +0 -0
  989. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/sip003/args.go +0 -0
  990. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/sip003/obfs.go +0 -0
  991. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/sip003/plugin.go +0 -0
  992. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/sip003/v2ray.go +0 -0
  993. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/trojan/mux.go +0 -0
  994. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/trojan/protocol.go +0 -0
  995. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/trojan/protocol_wait.go +0 -0
  996. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/trojan/service.go +0 -0
  997. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/trojan/service_wait.go +0 -0
  998. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2ray/grpc.go +0 -0
  999. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2ray/grpc_lite.go +0 -0
  1000. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2ray/quic.go +0 -0
  1001. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2ray/transport.go +0 -0
  1002. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2raygrpc/client.go +0 -0
  1003. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2raygrpc/conn.go +0 -0
  1004. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2raygrpc/credentials/credentials.go +0 -0
  1005. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2raygrpc/credentials/spiffe.go +0 -0
  1006. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2raygrpc/credentials/syscallconn.go +0 -0
  1007. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2raygrpc/credentials/util.go +0 -0
  1008. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2raygrpc/custom_name.go +0 -0
  1009. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2raygrpc/server.go +0 -0
  1010. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2raygrpc/stream.pb.go +0 -0
  1011. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2raygrpc/stream.proto +0 -0
  1012. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2raygrpc/stream_grpc.pb.go +0 -0
  1013. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2raygrpc/tls_credentials.go +0 -0
  1014. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2raygrpclite/client.go +0 -0
  1015. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2raygrpclite/conn.go +0 -0
  1016. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2raygrpclite/server.go +0 -0
  1017. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2rayhttp/client.go +0 -0
  1018. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2rayhttp/conn.go +0 -0
  1019. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2rayhttp/force_close.go +0 -0
  1020. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2rayhttp/pool.go +0 -0
  1021. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2rayhttp/server.go +0 -0
  1022. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2rayhttpupgrade/client.go +0 -0
  1023. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2rayhttpupgrade/server.go +0 -0
  1024. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2rayquic/client.go +0 -0
  1025. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2rayquic/init.go +0 -0
  1026. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2rayquic/server.go +0 -0
  1027. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2rayquic/stream.go +0 -0
  1028. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2raywebsocket/server.go +0 -0
  1029. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/v2raywebsocket/writer.go +0 -0
  1030. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/wireguard/client_bind.go +0 -0
  1031. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/wireguard/device.go +0 -0
  1032. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/wireguard/device_nat.go +0 -0
  1033. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/wireguard/device_stack.go +0 -0
  1034. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/wireguard/device_stack_gonet.go +0 -0
  1035. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/wireguard/device_stack_stub.go +0 -0
  1036. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/wireguard/device_system.go +0 -0
  1037. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/wireguard/device_system_stack.go +0 -0
  1038. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/wireguard/endpoint.go +0 -0
  1039. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/singbox-go/transport/wireguard/endpoint_options.go +0 -0
  1040. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/src/cronet.c +0 -0
  1041. {sing_box_python-1.13.18 → sing_box_python-1.13.20}/src/singbox.cpp +0 -0
@@ -0,0 +1 @@
1
+ 1.25.12
@@ -7,3 +7,6 @@ include LICENSE
7
7
  include README.md
8
8
  include pyproject.toml
9
9
  include setup.py
10
+ include .go-version
11
+ include UPSTREAM_COMMIT
12
+ include UPSTREAM_VERSION
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sing-box-python
3
- Version: 1.13.18
3
+ Version: 1.13.20
4
4
  Summary: Python binding for sing-box
5
5
  License: GPL-3.0-or-later
6
6
  Project-URL: Source, https://github.com/LorenEteval/sing-box-python
@@ -47,7 +47,8 @@ Binary wheels are published for Linux x86-64 and ARM64, Windows x86-64 and ARM64
47
47
  A source distribution is also published as a fallback. If pip cannot find a compatible wheel, it may build the native
48
48
  binding from source. A source build requires:
49
49
 
50
- * [Go 1.24.7](https://go.dev/doc/install) in `PATH`.
50
+ * The [Go toolchain version recorded in `.go-version`](https://go.dev/doc/install), or a newer compatible release, in
51
+ `PATH`. The pinned version matches the compiler used by the synchronized upstream release workflow.
51
52
  * A working C and C++ compiler toolchain.
52
53
  * MinGW-w64 on Windows x86-64, or LLVM-MinGW on Windows ARM64, with `gcc` and `g++` available in `PATH`.
53
54
 
@@ -157,19 +158,50 @@ DATA
157
158
  __all__ = ['SingBox', 'SingBoxError', '__version__', 'startFromJSON']
158
159
 
159
160
  VERSION
160
- v1.13.18
161
+ vX.Y.Z
161
162
  ```
162
163
 
163
- ## Source Code Modification
164
+ ## Vendored Upstream Source
164
165
 
165
- This repository, including the package that distributes to pypi,
166
- contains [sing-box](https://github.com/SagerNet/sing-box) source code and the additional binding code required to build
167
- the Python extension and its API.
166
+ This repository and its PyPI source distribution contain a vendored copy of
167
+ [sing-box](https://github.com/SagerNet/sing-box). Vendoring keeps source installs independent of Git submodule support.
168
+ All regular files under `singbox-go` come directly from the upstream release except these explicit additions:
168
169
 
169
- To make installation of this package easier, the original [sing-box](https://github.com/SagerNet/sing-box) source code
170
- is embedded instead of being added as a submodule. The official source files are unchanged. The binding is implemented
171
- by the added `singbox-go/binding` package and the C++/Python packaging files in this repository. To track the difference,
172
- compare `singbox-go` with the upstream commit while excluding the added `binding` directory.
170
+ * `singbox-go/binding/main.go`
171
+ * `singbox-go/binding/cronet_purego.go`
172
+
173
+ Upstream's `clients/android` and `clients/apple` Git submodule links are intentionally not vendored because they are not
174
+ used to build the Python package. The initial Windows import normalized executable bits on upstream shell scripts; file
175
+ paths and blob contents remain identical to upstream. Synchronization runs on Linux and preserves upstream modes.
176
+
177
+ ### Upstream Release Synchronization
178
+
179
+ `.github/workflows/sync-upstream.yml` checks the latest stable upstream release daily and can also be started manually
180
+ from the Actions page. Drafts and prereleases are rejected. `UPSTREAM_VERSION` is the single version source for both the
181
+ Python distribution version and the sing-box version embedded in the native library, while `UPSTREAM_COMMIT` pins the
182
+ commit to which that release tag resolved during import. The root `.go-version` pins the exact Go compiler used by
183
+ upstream's release workflow; this is intentionally independent of the minimum language version in `singbox-go/go.mod`.
184
+
185
+ The synchronization script checks the current vendor tree against its exact upstream tag, fetches the requested tag,
186
+ replaces only upstream-owned files, restores the two binding additions, updates `UPSTREAM_VERSION`, `UPSTREAM_COMMIT`,
187
+ and `.go-version`, and verifies every vendored upstream path and Git blob. The Go pin is extracted from exact
188
+ `go-version` entries in upstream's build workflow; synchronization fails instead of guessing if no single exact version
189
+ can be identified. Repeated checks are no-ops when the stable release is already synchronized.
190
+
191
+ Run the same operations locally from the repository root:
192
+
193
+ ```shell
194
+ python scripts/sync-sing-box.py check
195
+ python scripts/sync-sing-box.py verify --tag v1.13.18
196
+ python scripts/sync-sing-box.py sync --tag vX.Y.Z
197
+ ```
198
+
199
+ For an automated update, the sync workflow installs the synchronized `.go-version` toolchain and compiles the Go
200
+ binding before committing `chore: sync sing-box vX.Y.Z` to `main`. It then explicitly dispatches the existing
201
+ build-and-publish workflow at that commit. The latter uses the same exact Go version for every wheel platform, builds
202
+ and tests every distribution, then creates the `vX.Y.Z` tag, publishes `X.Y.Z` to PyPI through Trusted Publishing, and
203
+ creates the GitHub Release. Explicit dispatch is required because pushes made with GitHub's `GITHUB_TOKEN` do not
204
+ trigger new push workflows.
173
205
 
174
206
  ## Binary Wheel Platforms
175
207
 
@@ -186,7 +218,7 @@ The distributions are built and tested in [GitHub Actions](https://github.com/Lo
186
218
 
187
219
  Naive outbound is included on all wheel platforms in the table. Cronet is bundled as an isolated shared runtime on
188
220
  macOS, Linux, and Windows. The macOS runtime is produced from the pinned static archive during the wheel build. The
189
- Cronet artifact comes from the platform module and exact version already pinned by sing-box v1.13.18's `go.mod` and
221
+ Cronet artifact comes from the platform module and exact version already pinned by the vendored sing-box `go.mod` and
190
222
  verified by `go.sum`; the workflow does not build an unrelated Cronet revision.
191
223
  Custom source builds can override the complete sing-box tag list with the `SINGBOX_BUILD_TAGS` environment variable.
192
224
 
@@ -20,7 +20,8 @@ Binary wheels are published for Linux x86-64 and ARM64, Windows x86-64 and ARM64
20
20
  A source distribution is also published as a fallback. If pip cannot find a compatible wheel, it may build the native
21
21
  binding from source. A source build requires:
22
22
 
23
- * [Go 1.24.7](https://go.dev/doc/install) in `PATH`.
23
+ * The [Go toolchain version recorded in `.go-version`](https://go.dev/doc/install), or a newer compatible release, in
24
+ `PATH`. The pinned version matches the compiler used by the synchronized upstream release workflow.
24
25
  * A working C and C++ compiler toolchain.
25
26
  * MinGW-w64 on Windows x86-64, or LLVM-MinGW on Windows ARM64, with `gcc` and `g++` available in `PATH`.
26
27
 
@@ -130,19 +131,50 @@ DATA
130
131
  __all__ = ['SingBox', 'SingBoxError', '__version__', 'startFromJSON']
131
132
 
132
133
  VERSION
133
- v1.13.18
134
+ vX.Y.Z
134
135
  ```
135
136
 
136
- ## Source Code Modification
137
+ ## Vendored Upstream Source
137
138
 
138
- This repository, including the package that distributes to pypi,
139
- contains [sing-box](https://github.com/SagerNet/sing-box) source code and the additional binding code required to build
140
- the Python extension and its API.
139
+ This repository and its PyPI source distribution contain a vendored copy of
140
+ [sing-box](https://github.com/SagerNet/sing-box). Vendoring keeps source installs independent of Git submodule support.
141
+ All regular files under `singbox-go` come directly from the upstream release except these explicit additions:
141
142
 
142
- To make installation of this package easier, the original [sing-box](https://github.com/SagerNet/sing-box) source code
143
- is embedded instead of being added as a submodule. The official source files are unchanged. The binding is implemented
144
- by the added `singbox-go/binding` package and the C++/Python packaging files in this repository. To track the difference,
145
- compare `singbox-go` with the upstream commit while excluding the added `binding` directory.
143
+ * `singbox-go/binding/main.go`
144
+ * `singbox-go/binding/cronet_purego.go`
145
+
146
+ Upstream's `clients/android` and `clients/apple` Git submodule links are intentionally not vendored because they are not
147
+ used to build the Python package. The initial Windows import normalized executable bits on upstream shell scripts; file
148
+ paths and blob contents remain identical to upstream. Synchronization runs on Linux and preserves upstream modes.
149
+
150
+ ### Upstream Release Synchronization
151
+
152
+ `.github/workflows/sync-upstream.yml` checks the latest stable upstream release daily and can also be started manually
153
+ from the Actions page. Drafts and prereleases are rejected. `UPSTREAM_VERSION` is the single version source for both the
154
+ Python distribution version and the sing-box version embedded in the native library, while `UPSTREAM_COMMIT` pins the
155
+ commit to which that release tag resolved during import. The root `.go-version` pins the exact Go compiler used by
156
+ upstream's release workflow; this is intentionally independent of the minimum language version in `singbox-go/go.mod`.
157
+
158
+ The synchronization script checks the current vendor tree against its exact upstream tag, fetches the requested tag,
159
+ replaces only upstream-owned files, restores the two binding additions, updates `UPSTREAM_VERSION`, `UPSTREAM_COMMIT`,
160
+ and `.go-version`, and verifies every vendored upstream path and Git blob. The Go pin is extracted from exact
161
+ `go-version` entries in upstream's build workflow; synchronization fails instead of guessing if no single exact version
162
+ can be identified. Repeated checks are no-ops when the stable release is already synchronized.
163
+
164
+ Run the same operations locally from the repository root:
165
+
166
+ ```shell
167
+ python scripts/sync-sing-box.py check
168
+ python scripts/sync-sing-box.py verify --tag v1.13.18
169
+ python scripts/sync-sing-box.py sync --tag vX.Y.Z
170
+ ```
171
+
172
+ For an automated update, the sync workflow installs the synchronized `.go-version` toolchain and compiles the Go
173
+ binding before committing `chore: sync sing-box vX.Y.Z` to `main`. It then explicitly dispatches the existing
174
+ build-and-publish workflow at that commit. The latter uses the same exact Go version for every wheel platform, builds
175
+ and tests every distribution, then creates the `vX.Y.Z` tag, publishes `X.Y.Z` to PyPI through Trusted Publishing, and
176
+ creates the GitHub Release. Explicit dispatch is required because pushes made with GitHub's `GITHUB_TOKEN` do not
177
+ trigger new push workflows.
146
178
 
147
179
  ## Binary Wheel Platforms
148
180
 
@@ -159,7 +191,7 @@ The distributions are built and tested in [GitHub Actions](https://github.com/Lo
159
191
 
160
192
  Naive outbound is included on all wheel platforms in the table. Cronet is bundled as an isolated shared runtime on
161
193
  macOS, Linux, and Windows. The macOS runtime is produced from the pinned static archive during the wheel build. The
162
- Cronet artifact comes from the platform module and exact version already pinned by sing-box v1.13.18's `go.mod` and
194
+ Cronet artifact comes from the platform module and exact version already pinned by the vendored sing-box `go.mod` and
163
195
  verified by `go.sum`; the workflow does not build an unrelated Cronet revision.
164
196
  Custom source builds can override the complete sing-box tag list with the `SINGBOX_BUILD_TAGS` environment variable.
165
197
 
@@ -0,0 +1 @@
1
+ 56f91dfeabd6f4edbd437dfcc1e5b0ebc856b778
@@ -0,0 +1 @@
1
+ v1.13.20
@@ -10,17 +10,14 @@ build-backend = "setuptools.build_meta"
10
10
 
11
11
  [tool.cibuildwheel]
12
12
  build = [
13
- "cp38-*",
14
13
  "cp39-*",
15
14
  "cp310-*",
16
15
  "cp311-*",
17
16
  "cp312-*",
18
17
  "cp313-*",
19
- "cp313t-*",
20
18
  "cp314-*",
21
19
  "cp314t-*",
22
20
  ]
23
- enable = ["cpython-freethreading"]
24
21
  skip = "*-musllinux_*"
25
22
  build-verbosity = 1
26
23
  test-requires = ["pytest>=8"]
@@ -33,27 +30,38 @@ test-command = [
33
30
  ]
34
31
 
35
32
  [tool.cibuildwheel.linux]
36
- before-all = """
33
+ manylinux-x86_64-image = "manylinux2014"
34
+ manylinux-aarch64-image = "manylinux2014"
35
+ before-all = '''
36
+ go_version="$(
37
+ tr -d '\r\n' < "{project}/.go-version"
38
+ )"
39
+ if ! printf '%s\n' "${go_version}" | grep -Eq '^[0-9]+\.[0-9]+\.[0-9]+$'; then
40
+ echo "Invalid Go version in .go-version: ${go_version}" >&2
41
+ exit 1
42
+ fi
37
43
  case "$(uname -m)" in
38
44
  x86_64)
39
45
  go_arch='amd64'
40
- go_sha256='da18191ddb7db8a9339816f3e2b54bdded8047cdc2a5d67059478f8d1595c43f'
41
46
  ;;
42
47
  aarch64|arm64)
43
48
  go_arch='arm64'
44
- go_sha256='fd2bccce882e29369f56c86487663bb78ba7ea9e02188a5b0269303a0c3d33ab'
45
49
  ;;
46
50
  *)
47
51
  echo "Unsupported Linux architecture: $(uname -m)" >&2
48
52
  exit 1
49
53
  ;;
50
54
  esac
51
- go_archive="/tmp/go1.24.7.linux-${go_arch}.tar.gz"
52
- curl -fsSLo "${go_archive}" "https://go.dev/dl/go1.24.7.linux-${go_arch}.tar.gz"
55
+ go_archive="/tmp/go${go_version}.linux-${go_arch}.tar.gz"
56
+ go_checksum="${go_archive}.sha256"
57
+ go_url="https://dl.google.com/go/go${go_version}.linux-${go_arch}.tar.gz"
58
+ curl -fsSLo "${go_archive}" "${go_url}"
59
+ curl -fsSLo "${go_checksum}" "${go_url}.sha256"
60
+ go_sha256="$(tr -d '\r\n' < "${go_checksum}")"
53
61
  echo "${go_sha256} ${go_archive}" | sha256sum -c -
54
62
  tar -C /usr/local -xzf "${go_archive}"
55
63
  /usr/local/go/bin/go version
56
- """
64
+ '''
57
65
  environment = { PATH = "/usr/local/go/bin:$PATH", GOTOOLCHAIN = "local" }
58
66
 
59
67
  [tool.cibuildwheel.macos]
@@ -2,6 +2,7 @@ import json
2
2
  import os
3
3
  import pathlib
4
4
  import platform
5
+ import re
5
6
  import shlex
6
7
  import shutil
7
8
  import subprocess
@@ -13,8 +14,12 @@ from setuptools.command.build_ext import build_ext
13
14
 
14
15
  ROOT_DIR = pathlib.Path(__file__).parent.resolve()
15
16
  GO_SOURCE_DIR = ROOT_DIR / 'singbox-go'
16
- PACKAGE_VERSION = '1.13.18'
17
- UPSTREAM_VERSION = 'v1.13.18'
17
+ UPSTREAM_VERSION = (ROOT_DIR / 'UPSTREAM_VERSION').read_text(encoding='utf-8').strip()
18
+
19
+ if not re.fullmatch(r'v\d+\.\d+\.\d+', UPSTREAM_VERSION):
20
+ raise RuntimeError(f'Invalid upstream version: {UPSTREAM_VERSION!r}')
21
+
22
+ PACKAGE_VERSION = UPSTREAM_VERSION[1:]
18
23
 
19
24
 
20
25
  class CMakeExtension(Extension):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sing-box-python
3
- Version: 1.13.18
3
+ Version: 1.13.20
4
4
  Summary: Python binding for sing-box
5
5
  License: GPL-3.0-or-later
6
6
  Project-URL: Source, https://github.com/LorenEteval/sing-box-python
@@ -47,7 +47,8 @@ Binary wheels are published for Linux x86-64 and ARM64, Windows x86-64 and ARM64
47
47
  A source distribution is also published as a fallback. If pip cannot find a compatible wheel, it may build the native
48
48
  binding from source. A source build requires:
49
49
 
50
- * [Go 1.24.7](https://go.dev/doc/install) in `PATH`.
50
+ * The [Go toolchain version recorded in `.go-version`](https://go.dev/doc/install), or a newer compatible release, in
51
+ `PATH`. The pinned version matches the compiler used by the synchronized upstream release workflow.
51
52
  * A working C and C++ compiler toolchain.
52
53
  * MinGW-w64 on Windows x86-64, or LLVM-MinGW on Windows ARM64, with `gcc` and `g++` available in `PATH`.
53
54
 
@@ -157,19 +158,50 @@ DATA
157
158
  __all__ = ['SingBox', 'SingBoxError', '__version__', 'startFromJSON']
158
159
 
159
160
  VERSION
160
- v1.13.18
161
+ vX.Y.Z
161
162
  ```
162
163
 
163
- ## Source Code Modification
164
+ ## Vendored Upstream Source
164
165
 
165
- This repository, including the package that distributes to pypi,
166
- contains [sing-box](https://github.com/SagerNet/sing-box) source code and the additional binding code required to build
167
- the Python extension and its API.
166
+ This repository and its PyPI source distribution contain a vendored copy of
167
+ [sing-box](https://github.com/SagerNet/sing-box). Vendoring keeps source installs independent of Git submodule support.
168
+ All regular files under `singbox-go` come directly from the upstream release except these explicit additions:
168
169
 
169
- To make installation of this package easier, the original [sing-box](https://github.com/SagerNet/sing-box) source code
170
- is embedded instead of being added as a submodule. The official source files are unchanged. The binding is implemented
171
- by the added `singbox-go/binding` package and the C++/Python packaging files in this repository. To track the difference,
172
- compare `singbox-go` with the upstream commit while excluding the added `binding` directory.
170
+ * `singbox-go/binding/main.go`
171
+ * `singbox-go/binding/cronet_purego.go`
172
+
173
+ Upstream's `clients/android` and `clients/apple` Git submodule links are intentionally not vendored because they are not
174
+ used to build the Python package. The initial Windows import normalized executable bits on upstream shell scripts; file
175
+ paths and blob contents remain identical to upstream. Synchronization runs on Linux and preserves upstream modes.
176
+
177
+ ### Upstream Release Synchronization
178
+
179
+ `.github/workflows/sync-upstream.yml` checks the latest stable upstream release daily and can also be started manually
180
+ from the Actions page. Drafts and prereleases are rejected. `UPSTREAM_VERSION` is the single version source for both the
181
+ Python distribution version and the sing-box version embedded in the native library, while `UPSTREAM_COMMIT` pins the
182
+ commit to which that release tag resolved during import. The root `.go-version` pins the exact Go compiler used by
183
+ upstream's release workflow; this is intentionally independent of the minimum language version in `singbox-go/go.mod`.
184
+
185
+ The synchronization script checks the current vendor tree against its exact upstream tag, fetches the requested tag,
186
+ replaces only upstream-owned files, restores the two binding additions, updates `UPSTREAM_VERSION`, `UPSTREAM_COMMIT`,
187
+ and `.go-version`, and verifies every vendored upstream path and Git blob. The Go pin is extracted from exact
188
+ `go-version` entries in upstream's build workflow; synchronization fails instead of guessing if no single exact version
189
+ can be identified. Repeated checks are no-ops when the stable release is already synchronized.
190
+
191
+ Run the same operations locally from the repository root:
192
+
193
+ ```shell
194
+ python scripts/sync-sing-box.py check
195
+ python scripts/sync-sing-box.py verify --tag v1.13.18
196
+ python scripts/sync-sing-box.py sync --tag vX.Y.Z
197
+ ```
198
+
199
+ For an automated update, the sync workflow installs the synchronized `.go-version` toolchain and compiles the Go
200
+ binding before committing `chore: sync sing-box vX.Y.Z` to `main`. It then explicitly dispatches the existing
201
+ build-and-publish workflow at that commit. The latter uses the same exact Go version for every wheel platform, builds
202
+ and tests every distribution, then creates the `vX.Y.Z` tag, publishes `X.Y.Z` to PyPI through Trusted Publishing, and
203
+ creates the GitHub Release. Explicit dispatch is required because pushes made with GitHub's `GITHUB_TOKEN` do not
204
+ trigger new push workflows.
173
205
 
174
206
  ## Binary Wheel Platforms
175
207
 
@@ -186,7 +218,7 @@ The distributions are built and tested in [GitHub Actions](https://github.com/Lo
186
218
 
187
219
  Naive outbound is included on all wheel platforms in the table. Cronet is bundled as an isolated shared runtime on
188
220
  macOS, Linux, and Windows. The macOS runtime is produced from the pinned static archive during the wheel build. The
189
- Cronet artifact comes from the platform module and exact version already pinned by sing-box v1.13.18's `go.mod` and
221
+ Cronet artifact comes from the platform module and exact version already pinned by the vendored sing-box `go.mod` and
190
222
  verified by `go.sum`; the workflow does not build an unrelated Cronet revision.
191
223
  Custom source builds can override the complete sing-box tag list with the `SINGBOX_BUILD_TAGS` environment variable.
192
224
 
@@ -1,7 +1,10 @@
1
+ .go-version
1
2
  CMakeLists.txt
2
3
  LICENSE
3
4
  MANIFEST.in
4
5
  README.md
6
+ UPSTREAM_COMMIT
7
+ UPSTREAM_VERSION
5
8
  pyproject.toml
6
9
  setup.py
7
10
  sing_box_python.egg-info/PKG-INFO
@@ -252,6 +255,7 @@ singbox-go/common/srs/binary.go
252
255
  singbox-go/common/srs/compat_test.go
253
256
  singbox-go/common/srs/ip_cidr.go
254
257
  singbox-go/common/srs/ip_set.go
258
+ singbox-go/common/srs/malformed_test.go
255
259
  singbox-go/common/taskmonitor/monitor.go
256
260
  singbox-go/common/tls/acme.go
257
261
  singbox-go/common/tls/acme_contstant.go
@@ -847,6 +851,7 @@ singbox-go/route/rule/rule_action.go
847
851
  singbox-go/route/rule/rule_default.go
848
852
  singbox-go/route/rule/rule_default_interface_address.go
849
853
  singbox-go/route/rule/rule_dns.go
854
+ singbox-go/route/rule/rule_dns_address_filter_test.go
850
855
  singbox-go/route/rule/rule_headless.go
851
856
  singbox-go/route/rule/rule_interface_address.go
852
857
  singbox-go/route/rule/rule_item_adguard.go
@@ -1098,35 +1098,36 @@ jobs:
1098
1098
  echo "ASC_KEY_ID=$ASC_KEY_ID" >> "$GITHUB_ENV"
1099
1099
  echo "ASC_KEY_ISSUER_ID=$ASC_KEY_ISSUER_ID" >> "$GITHUB_ENV"
1100
1100
  env:
1101
- ASC_KEY: ${{ secrets.ASC_KEY }}
1102
- ASC_KEY_ID: ${{ secrets.ASC_KEY_ID }}
1103
- ASC_KEY_ISSUER_ID: ${{ secrets.ASC_KEY_ISSUER_ID }}
1101
+ ASC_KEY: ${{ secrets.LEGACY_ASC_KEY }}
1102
+ ASC_KEY_ID: ${{ secrets.LEGACY_ASC_KEY_ID }}
1103
+ ASC_KEY_ISSUER_ID: ${{ secrets.LEGACY_ASC_KEY_ISSUER_ID }}
1104
1104
  - name: Install Apple provisioning profiles
1105
1105
  if: matrix.if && matrix.type != 'jailbreak'
1106
1106
  run: |-
1107
1107
  PROFILES_ZIP_PATH=$RUNNER_TEMP/AppleProvisioningProfiles.zip
1108
- printf '%s%s%s%s%s%s%s%s' \
1109
- "$PROVISIONING_PROFILES_1" \
1110
- "$PROVISIONING_PROFILES_2" \
1111
- "$PROVISIONING_PROFILES_3" \
1112
- "$PROVISIONING_PROFILES_4" \
1113
- "$PROVISIONING_PROFILES_5" \
1114
- "$PROVISIONING_PROFILES_6" \
1115
- "$PROVISIONING_PROFILES_7" \
1116
- "$PROVISIONING_PROFILES_8" \
1117
- | base64 --decode -o $PROFILES_ZIP_PATH
1108
+ for variable in $(compgen -v | grep -E '^PROVISIONING_PROFILES_[0-9]+$' | sort -t_ -k3 -n); do
1109
+ printf '%s' "${!variable}"
1110
+ done | base64 --decode -o $PROFILES_ZIP_PATH
1118
1111
  PROFILES_PATH="$HOME/Library/Developer/Xcode/UserData/Provisioning Profiles"
1119
1112
  mkdir -p "$PROFILES_PATH"
1120
1113
  unzip -q $PROFILES_ZIP_PATH -d "$PROFILES_PATH"
1121
1114
  env:
1122
- PROVISIONING_PROFILES_1: ${{ secrets.APPLE_PROVISIONING_PROFILES_1 }}
1123
- PROVISIONING_PROFILES_2: ${{ secrets.APPLE_PROVISIONING_PROFILES_2 }}
1124
- PROVISIONING_PROFILES_3: ${{ secrets.APPLE_PROVISIONING_PROFILES_3 }}
1125
- PROVISIONING_PROFILES_4: ${{ secrets.APPLE_PROVISIONING_PROFILES_4 }}
1126
- PROVISIONING_PROFILES_5: ${{ secrets.APPLE_PROVISIONING_PROFILES_5 }}
1127
- PROVISIONING_PROFILES_6: ${{ secrets.APPLE_PROVISIONING_PROFILES_6 }}
1128
- PROVISIONING_PROFILES_7: ${{ secrets.APPLE_PROVISIONING_PROFILES_7 }}
1129
- PROVISIONING_PROFILES_8: ${{ secrets.APPLE_PROVISIONING_PROFILES_8 }}
1115
+ PROVISIONING_PROFILES_1: ${{ secrets.LEGACY_APPLE_PROVISIONING_PROFILES_1 }}
1116
+ PROVISIONING_PROFILES_2: ${{ secrets.LEGACY_APPLE_PROVISIONING_PROFILES_2 }}
1117
+ PROVISIONING_PROFILES_3: ${{ secrets.LEGACY_APPLE_PROVISIONING_PROFILES_3 }}
1118
+ PROVISIONING_PROFILES_4: ${{ secrets.LEGACY_APPLE_PROVISIONING_PROFILES_4 }}
1119
+ PROVISIONING_PROFILES_5: ${{ secrets.LEGACY_APPLE_PROVISIONING_PROFILES_5 }}
1120
+ PROVISIONING_PROFILES_6: ${{ secrets.LEGACY_APPLE_PROVISIONING_PROFILES_6 }}
1121
+ PROVISIONING_PROFILES_7: ${{ secrets.LEGACY_APPLE_PROVISIONING_PROFILES_7 }}
1122
+ PROVISIONING_PROFILES_8: ${{ secrets.LEGACY_APPLE_PROVISIONING_PROFILES_8 }}
1123
+ PROVISIONING_PROFILES_9: ${{ secrets.LEGACY_APPLE_PROVISIONING_PROFILES_9 }}
1124
+ PROVISIONING_PROFILES_10: ${{ secrets.LEGACY_APPLE_PROVISIONING_PROFILES_10 }}
1125
+ PROVISIONING_PROFILES_11: ${{ secrets.LEGACY_APPLE_PROVISIONING_PROFILES_11 }}
1126
+ PROVISIONING_PROFILES_12: ${{ secrets.LEGACY_APPLE_PROVISIONING_PROFILES_12 }}
1127
+ PROVISIONING_PROFILES_13: ${{ secrets.LEGACY_APPLE_PROVISIONING_PROFILES_13 }}
1128
+ PROVISIONING_PROFILES_14: ${{ secrets.LEGACY_APPLE_PROVISIONING_PROFILES_14 }}
1129
+ PROVISIONING_PROFILES_15: ${{ secrets.LEGACY_APPLE_PROVISIONING_PROFILES_15 }}
1130
+ PROVISIONING_PROFILES_16: ${{ secrets.LEGACY_APPLE_PROVISIONING_PROFILES_16 }}
1130
1131
  - name: Setup Apple Development certificate
1131
1132
  if: matrix.if && matrix.type != 'jailbreak'
1132
1133
  run: |-
@@ -1143,8 +1144,8 @@ jobs:
1143
1144
  security find-identity -v -p codesigning $KEYCHAIN_PATH
1144
1145
  echo "APPLE_DEVELOPMENT_KEYCHAIN_PATH=$KEYCHAIN_PATH" >> "$GITHUB_ENV"
1145
1146
  env:
1146
- APPLE_DEVELOPMENT_CERTIFICATES_P12: ${{ secrets.APPLE_DEVELOPMENT_CERTIFICATES_P12 }}
1147
- P12_PASSWORD: ${{ secrets.APPLE_DEVELOPMENT_P12_PASSWORD }}
1147
+ APPLE_DEVELOPMENT_CERTIFICATES_P12: ${{ secrets.LEGACY_APPLE_DEVELOPMENT_CERTIFICATES_P12 }}
1148
+ P12_PASSWORD: ${{ secrets.LEGACY_APPLE_DEVELOPMENT_P12_PASSWORD }}
1148
1149
  KEYCHAIN_PASSWORD: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
1149
1150
  - name: Setup Developer ID certificates
1150
1151
  if: matrix.if && matrix.type == 'standalone'
@@ -1162,8 +1163,8 @@ jobs:
1162
1163
  security find-identity -v -p codesigning $KEYCHAIN_PATH
1163
1164
  echo "SIGNING_KEYCHAIN_PATH=$KEYCHAIN_PATH" >> "$GITHUB_ENV"
1164
1165
  env:
1165
- DEVELOPER_ID_CERTIFICATES_P12: ${{ secrets.DEVELOPER_ID_CERTIFICATES_P12 }}
1166
- P12_PASSWORD: ${{ secrets.DEVELOPER_ID_P12_PASSWORD }}
1166
+ DEVELOPER_ID_CERTIFICATES_P12: ${{ secrets.LEGACY_DEVELOPER_ID_CERTIFICATES_P12 }}
1167
+ P12_PASSWORD: ${{ secrets.LEGACY_DEVELOPER_ID_P12_PASSWORD }}
1167
1168
  KEYCHAIN_PASSWORD: ${{ secrets.APPLE_KEYCHAIN_PASSWORD }}
1168
1169
  - name: Setup notarization credentials
1169
1170
  if: matrix.if && matrix.type == 'standalone' && github.event_name == 'workflow_dispatch'
@@ -7,6 +7,7 @@ import (
7
7
  "io"
8
8
  "time"
9
9
 
10
+ E "github.com/sagernet/sing/common/exceptions"
10
11
  "github.com/sagernet/sing/common/observable"
11
12
  "github.com/sagernet/sing/common/varbin"
12
13
  )
@@ -103,6 +104,9 @@ func (s *SavedBinary) UnmarshalBinary(data []byte) error {
103
104
  if err != nil {
104
105
  return err
105
106
  }
107
+ if contentLength > uint64(reader.Len()) {
108
+ return E.New("invalid content length: ", contentLength)
109
+ }
106
110
  s.Content = make([]byte, contentLength)
107
111
  _, err = io.ReadFull(reader, s.Content)
108
112
  if err != nil {
@@ -118,6 +122,9 @@ func (s *SavedBinary) UnmarshalBinary(data []byte) error {
118
122
  if err != nil {
119
123
  return err
120
124
  }
125
+ if etagLength > uint64(reader.Len()) {
126
+ return E.New("invalid etag length: ", etagLength)
127
+ }
121
128
  etagBytes := make([]byte, etagLength)
122
129
  _, err = io.ReadFull(reader, etagBytes)
123
130
  if err != nil {
@@ -136,6 +143,7 @@ type OutboundGroup interface {
136
143
  type URLTestGroup interface {
137
144
  OutboundGroup
138
145
  URLTest(ctx context.Context) (map[string]uint16, error)
146
+ PerformUpdateCheck()
139
147
  }
140
148
 
141
149
  func OutboundTag(detour Outbound) string {
@@ -94,7 +94,7 @@ type InboundContext struct {
94
94
  SourcePortMatch bool
95
95
  DestinationAddressMatch bool
96
96
  DestinationPortMatch bool
97
- DidMatch bool
97
+ DefinitiveMatchStates uint16
98
98
  IgnoreDestinationIPCIDRMatch bool
99
99
  }
100
100
 
@@ -109,7 +109,7 @@ func (c *InboundContext) ResetRuleMatchCache() {
109
109
  c.SourcePortMatch = false
110
110
  c.DestinationAddressMatch = false
111
111
  c.DestinationPortMatch = false
112
- c.DidMatch = false
112
+ c.DefinitiveMatchStates = 0
113
113
  }
114
114
 
115
115
  type inboundContextKey struct{}
@@ -8,6 +8,7 @@ import (
8
8
  "strings"
9
9
 
10
10
  "github.com/sagernet/sing-box/cmd/internal/build_shared"
11
+ "github.com/sagernet/sing-box/common/badversion"
11
12
  "github.com/sagernet/sing-box/log"
12
13
  "github.com/sagernet/sing/common"
13
14
 
@@ -76,11 +77,20 @@ func findAndReplace(objectsMap map[string]any, projectContent string, bundleIDLi
76
77
  continue
77
78
  }
78
79
  updated = true
79
- projectContent = projectContent[:versionStart] + "\"" + newVersion + "\"" + projectContent[versionEnd:]
80
+ projectContent = projectContent[:versionStart] + formatProjectVersion(newVersion) + projectContent[versionEnd:]
80
81
  }
81
82
  return projectContent, updated
82
83
  }
83
84
 
85
+ // Xcode serializes a version without quotes unless it contains a pre-release
86
+ // part; always quoting makes Xcode rewrite the value on the next save.
87
+ func formatProjectVersion(version string) string {
88
+ if badversion.Parse(version).PreReleaseIdentifier == "" {
89
+ return version
90
+ }
91
+ return "\"" + version + "\""
92
+ }
93
+
84
94
  func findAndReplaceProjectVersion(objectsMap map[string]any, projectContent string, directoryList []string, newVersion string) (string, bool) {
85
95
  objectKeyList := findObjectKeyByDirectory(objectsMap, directoryList)
86
96
  var updated bool
@@ -10,6 +10,7 @@ import (
10
10
  "github.com/sagernet/sing-box/experimental/deprecated"
11
11
  "github.com/sagernet/sing-box/include"
12
12
  "github.com/sagernet/sing-box/log"
13
+ "github.com/sagernet/sing/common"
13
14
  "github.com/sagernet/sing/service"
14
15
  "github.com/sagernet/sing/service/filemanager"
15
16
 
@@ -52,7 +53,9 @@ func preRun(cmd *cobra.Command, args []string) {
52
53
  globalCtx = filemanager.WithDefault(globalCtx, "", "", sudoUID, sudoGID)
53
54
  }
54
55
  if disableColor {
55
- log.SetStdLogger(log.NewDefaultFactory(context.Background(), log.Formatter{BaseTime: time.Now(), DisableColors: true}, os.Stderr, "", nil, false).Logger())
56
+ logFactory := log.NewDefaultFactory(context.Background(), log.Formatter{BaseTime: time.Now(), DisableColors: true}, os.Stderr, "", nil, false)
57
+ common.Must(logFactory.Start())
58
+ log.SetStdLogger(logFactory.Logger())
56
59
  }
57
60
  if workingDir != "" {
58
61
  _, err := os.Stat(workingDir)
@@ -211,7 +211,11 @@ func TestGeositeWriteReadCompat(t *testing.T) {
211
211
  for code, expectedItems := range tc.input {
212
212
  items, err := reader.Read(code)
213
213
  require.NoError(t, err)
214
- require.Equal(t, expectedItems, items, "items mismatch for code: %s", code)
214
+ if len(expectedItems) == 0 {
215
+ require.Empty(t, items, "items mismatch for code: %s", code)
216
+ } else {
217
+ require.Equal(t, expectedItems, items, "items mismatch for code: %s", code)
218
+ }
215
219
  }
216
220
  })
217
221
  }