hiddifypanel 3.0.0.dev63__cp39-cp39-manylinux2014_x86_64.whl → 3.0.0.dev65__cp39-cp39-manylinux2014_x86_64.whl

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 (72) hide show
  1. hiddifypanel/Events.py +27 -4
  2. hiddifypanel/VERSION +1 -1
  3. hiddifypanel/VERSION.py +1 -3
  4. hiddifypanel/__init__.py +7 -3
  5. hiddifypanel/__main__.py +13 -3
  6. hiddifypanel/base.py +88 -3
  7. hiddifypanel/base2.py +40 -3
  8. hiddifypanel/models/__init__.py +10 -3
  9. hiddifypanel/models/child.py +26 -4
  10. hiddifypanel/models/config.py +105 -4
  11. hiddifypanel/models/config_enum.py +207 -4
  12. hiddifypanel/models/domain.py +106 -4
  13. hiddifypanel/models/proxy.py +55 -3
  14. hiddifypanel/models/usage.py +58 -3
  15. hiddifypanel/models/user.py +171 -3
  16. hiddifypanel/panel/__init__.py +7 -4
  17. hiddifypanel/panel/admin/Actions.py +170 -3
  18. hiddifypanel/panel/admin/Backup.py +80 -4
  19. hiddifypanel/panel/admin/ChildAdmin.py +122 -3
  20. hiddifypanel/panel/admin/ConfigAdmin.py +54 -4
  21. hiddifypanel/panel/admin/Dashboard.py +70 -4
  22. hiddifypanel/panel/admin/DomainAdmin.py +195 -4
  23. hiddifypanel/panel/admin/ProxyAdmin.py +128 -3
  24. hiddifypanel/panel/admin/QuickSetup.py +127 -4
  25. hiddifypanel/panel/admin/SettingAdmin.py +224 -3
  26. hiddifypanel/panel/admin/Terminal.py +51 -4
  27. hiddifypanel/panel/admin/UserAdmin.py +277 -4
  28. hiddifypanel/panel/admin/__init__.py +82 -4
  29. hiddifypanel/panel/admin/adminlte.py +13 -4
  30. hiddifypanel/panel/admin/commercial_info.py +23 -3
  31. hiddifypanel/panel/admin/templates/config.html +1 -1
  32. hiddifypanel/panel/admin/templates/proxy.html +2 -2
  33. hiddifypanel/panel/admin/websocket.py +9 -3
  34. hiddifypanel/panel/admin_2.py +33 -3
  35. hiddifypanel/panel/asset.py +17 -3
  36. hiddifypanel/panel/cf_api.py +35 -4
  37. hiddifypanel/panel/clean_ip.py +125 -3
  38. hiddifypanel/panel/cli.py +172 -3
  39. hiddifypanel/panel/commercial/CommercialDashboard.py +59 -4
  40. hiddifypanel/panel/commercial/CommercialSettings.py +224 -3
  41. hiddifypanel/panel/commercial/ProxyDetailsAdmin.py +38 -4
  42. hiddifypanel/panel/commercial/__init__.py +50 -4
  43. hiddifypanel/panel/commercial/restapi/__init__.py +14 -3
  44. hiddifypanel/panel/commercial/restapi/tgbot.py +57 -3
  45. hiddifypanel/panel/commercial/telegrambot/DefaultResponse.py +11 -3
  46. hiddifypanel/panel/commercial/telegrambot/Usage.py +71 -3
  47. hiddifypanel/panel/commercial/telegrambot/__init__.py +6 -4
  48. hiddifypanel/panel/commercial/telegrambot/admin.py +120 -3
  49. hiddifypanel/panel/commercial/telegrambot/information.py +123 -3
  50. hiddifypanel/panel/common.py +98 -3
  51. hiddifypanel/panel/custom_widgets.py +71 -4
  52. hiddifypanel/panel/database.py +18 -3
  53. hiddifypanel/panel/hiddify.py +655 -4
  54. hiddifypanel/panel/hiddify_api.py +70 -3
  55. hiddifypanel/panel/init_db.py +393 -3
  56. hiddifypanel/panel/usage.py +85 -3
  57. hiddifypanel/panel/user/__init__.py +25 -4
  58. hiddifypanel/panel/user/link_maker.py +416 -3
  59. hiddifypanel/panel/user/templates/home/multi.html +1 -1
  60. hiddifypanel/panel/user/user.py +233 -3
  61. hiddifypanel/static/css/custom.css +11 -0
  62. hiddifypanel/templates/500.html +1 -1
  63. hiddifypanel/xray_api.py +109 -3
  64. {hiddifypanel-3.0.0.dev63.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/METADATA +1 -1
  65. {hiddifypanel-3.0.0.dev63.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/RECORD +69 -71
  66. hiddifypanel-3.0.0.dev65.dist-info/top_level.txt +1 -0
  67. hiddifypanel-3.0.0.dev63.dist-info/top_level.txt +0 -2
  68. pyarmor_runtime_000000/__init__.py +0 -4
  69. pyarmor_runtime_000000/pyarmor_runtime.so +0 -0
  70. {hiddifypanel-3.0.0.dev63.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/LICENSE +0 -0
  71. {hiddifypanel-3.0.0.dev63.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/WHEEL +0 -0
  72. {hiddifypanel-3.0.0.dev63.dist-info → hiddifypanel-3.0.0.dev65.dist-info}/entry_points.txt +0 -0
@@ -1,5 +1,72 @@
1
- # 2023-04-08T15:11:20.631421
2
- from pyarmor_runtime_000000 import __pyarmor__
3
- __pyarmor__(__name__, __file__, b'PY000000\x00\x03\t\x00a\r\r\n\x80\x00\x01\x00\x08\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00\xb6\x14\x00\x00\x12\t\x04\x00\x12\xd2\x97\x7f>-\xc8\x18>\xd3\xabA\xdc&b\x02\x00\x00\x00\x00\x00\x00\x00\x00\xcbz\x1d\xbc\xd1\x9dO\x97\xb2\xdfx\xfd\x88\xa5\xda\xac\x7f\xba\r\xa8,\xca\xe3\xc9\x93\xae\xd2\xc7[\xcd\x0c%\xe84\xf0\xfap\xe6\xa3x\xe9$\xda\x9cwD\x90\x0f\xe0k\x92t_\xa4\x9eb\x93\\\xa2\x91y{\x9a\xb3y\xea\x0c\x85\xfc\xed\x1ci\x00K\xbc\x8bEJ\tu\x95\xcbJf\xf6s+6w U\x82\xef\x8dq\x0e\x11\x9c\xc4\xda\xad\xad\x97\xc6Z\xd6\xf5(\x84H\xa6|}\x9cK^\x98\x80\xbd\x8f"8\xc2E-\xcf\x97p=g\xb5s\xe9\x7f\xd2H;r\x83\x7f \xe5\xc8\xcc_\x11y\xe5i\xfcY\xa6\xb8\xb8\x96:\xc1\xc3\xf4\xe4\x9b\xf5\x01\x81\xf5\x1f\xb9/\xdb\xdc\xe8\x97\x01U\x89R\x97\xfb\xaa\xa4\x86\x10\x14\xfb\x1aBZ=;\xb4\x98\xd3"\xdd{\x172\x904\xf9\xcdlJ|h\xa1d\x95\x8f\xf5\x03\x98$\xf2\x16F-J\x80\xba\xde\x1a\x1b}\x9d\x8a\x0fVn\xa9c\xab\x1e\xbet\x87F\x1f!\xb9\rs$A\xb1*xh\x9eOo\x03v\xaeT\x0e\xf5\xac\x1b=5H5\x95?\x03\xb8\xd3\x8c\xb5J#\xc7\xb6\xf4\xf7b\x80~\xc6\xd2e(\xe0\xa0\xbd\x90HNX\x08\x84]\xe9\xcd?\xb3\xd6P\x9e\xe0\xfd\xc2\x04\x8cQ\xf2\xe23D\xb0\x84e\xc5\xce\xc8\xfc\x92\xe6/\xac\x85TH\x19\x8f\x92\x8c?\xed\xad\xc9L\x131\xfa\xf4.\xec3~\x9aD6\xf56\xad\xecVI%2U\xad\'Fz\xd4\x7f$\xa05\xd5\xc7A$\x95\xf6A\xae]\x83\xb1\xa2\xb3\x8fK?\xe0V\x96\x83\xc5\xd1\xea\xf7\x9ba1\xe4\x19w\xca+6\x06O\xe3slT\x9e`\xd5\x17\xf6Jk\xc3\xd6a\xdc\xdd,\xe4vD\xf2\xc6\x15\xca\xdf\t\x087\x96\xbd\x13\xe4Y\x0c\xbau\xc7\xfe\xba\x1a\x7f\x99[\xf0b\xd5\xa846\xf3\x0c\x1b\x0cQ\xc5\xd0\x9fO\x96\xceOB\xd2\x0c\x83;\x8a\xa6\xa3d\xf0\x9ax\x04\xd7C\x827\x81i2\xa6\xfflM\n[\xa8j\x92\x03\xb7\xe7\x8a\xe0\x06\x14\xb8\xbc\x1b\xca\x11\xf4\x8c\xc5eG\x80\x95~a\x1d\xfa"\xb5\xbe\xa9,\x08\xb3S\xe7\x0c\xea\xd0\xf3;\xd9\x15\xd4\x97\xb1P\xaf`\x17\x85\xec\xa1\xdf:\xff\xff\xb6\x14\xa0?\x04(\xccI\nc\xbd\xefx\xfenCe0\x8fy\xb74P,>\x99X\x0er\xfcX#\xad\xf3\x01l&\x85]h\xa4\x9f\xd0\x03\x0b\xd1A\x82\xea(\x0b_\xe8\x96\xd4#\x0c\xe2\xd8\xca\xf7\x82\xae\x80\xcc"\xbe\x91b\x88\xe5g\xbfU\x9by]A\xde\x03\xf1\xd1\xccK\x00\xf5\xa0%m\xb1\x9b\xbe\xfa\xf07L\xa6\x9d\xba\xff_0\xd0eAu\xc8\t\x08\xe6\xa5\xd2\xca.b@\xdaT\x14HP\x0c\xf1y\xb8\x8413\xbc\xce\xb7\xea\x17\x19\xfaJ\xff\xeb\xb9\xa6\x1e\xc7\x90A}\x0f\xc1\\`@\x9b\x11\xd6\x9d\xbf_Ks\xe2\x8b\xc63\xa9\x95\'\x16\xdf\x9a2\xf3\xe9};F\xdc\xb9$\x94\x93\xaf\xb3.\x9f\x96/\xccNH-\xf3\xd2)\x9a\xdan\x96\xa2x,\xee\x19\x997\xed\xc5\xd6s\x15\xb1\x1ak\x0c\xab#\xb7\xb5\x04\xa7\xc8J3\xce\xac\x80\xae\xba\x9a\x16\x9e\x90?\xdf\x81\xa8\xda\xae\x15\xc9\x15;:\x0ch\x83:t\x7f\xec\xb8\xc4l\xa1\x87\xe9S2r\x0e\x9f\xdc\xd6\xa4$\xa4\x8a\xd0R|\xdd\xd0}\xc6\xc1t\xbeiNgTx\xdb(\t\xdd-=\xf0/\x8f\xd24ou\x1f=\xbd\xcd\x8ep\xe7[\xa5\x04\x89\x83\xb2:\xba\xd6:F\xf6\xe1\x16\xc4P\xe2zX\xb8?\x17\x9a\x9b\x94\x01\xc7\x1b\x9dy\xc4\xd4\xdd\xeb\xc0n/\xeb\xa0\xf8K\xa8\xf0\xd4\x93V\xbe~\x9f\xb8Mtf\x10\n\xd5g\xfeC\xe7\x01\xe0I\x14\x84\x10\xbe\xb6\xbc\xe5\x90\x8b\xae\xa0\xdf\xb4\xfb\x8d!C\xae\x07\x8b[\xff\xe7I\xaa\xa1\xabf\xdd\x92\xf6\xdfh\xb8\x1d{\x86\xdeH\xe2\xdd\xb5\xf9yu\xcf[\xce\x84\x93)\xd2X\xfc\xc3\xc3\x87jg@l\x86[\xcc5\x83\xaelI\xdc\xf7|\xf7\x84\xff\x9cFKR\xaa\x84\x9a\x9f_\x16\xd4.\xe3L\x9c\x9d\xee5\xd2\xd3\xf1\xfe)\x15&@\xac\xd4\xebF\xa3\x8f\x9e\xee\xa7\xbcl\x10%b\n\x0e\xfe#\xcb.\r\xb4\x95\xd8\xb4\xd9vt<\xa6\\\x02\x95\xc5n\xd4\xd2\x14\xde\xd3Z\n\xdd\xd0Z\xde\xfcP\x18Z\xcb":\x98P\xc2%\'\x1a\xe8\x9c\x97A\xec\xe9{q\x8c\x14-/\x1a\x05\x95+b*djai"\xeeEYD\x98\x16\xb7"2\xf6\xfep\xad\xd0\xb8H{\xb7\x9f\xb4\xa9\x80\x91o\n\xcc\xc8\xab\x18@\x00x<[g\xb2\xc3\xadh}9\xd1\xe3o\x9cKd\x83S\xa0\xcf\x1a\x96g<\xd3\x1f\x15e\x98\xabL\xdd;\xb2\x9e\xacxT\xb8\xc9{\xb2\x968K5\xea|\xe9\x9e\x8e"\x97\xce\x9c\x92\xf8>\t\xd7:\xa8\x1a\xec]\x8b\x8cs\xc8\xfaD!.\x9f*)\xb5\xe5\x91)\xe8w2\x11\x9a\x94\x99X\xe6_\x83\xd75\xd4=\x7f\xd0(\xf1\xb9=\\\xca\x919\xef"\x05w@qP\x19\xad\x94_%\x912%\xdb\xbaI\xc3\xf4\xe8\xa5L\xed\xb1\xf0\xde\xc5\x82C\xc89\xebX\xc2\xec\x02@-\xbd\xf5\xebg\xaac\x15\xa8\x9aJ\xb8^F\x0fS\xb4\xa8[<Y\xc8\x17\x88\xa4w8bb\xb3\x81\xc4\r\x9apd\x82\xd1r\xf44xY\xe6\tw\xb8\xe4\xe6\x07\xccmR\xd96\xd5\xf1\x8agG\xa3;^!\xd3\x83`\xcb\x9f1%\xb3F\xd9\xea\xc3\xf6N.&\xc1l\x1e\x92:S\xae\x00Gw\xf7\x04u)\xec\xdf)@i\x8cg\x8a/\x85\xbf^\x90\x13\x1f\xf5\x9d\x99\x8d\xedf\xc3\x17k%l$?Bth\xfa:x\xaa\xcck\xc8\x14\x17\xcd\xeb\xf1\x94\xb2\xeat\xe4bS\xde7;\r\xe26\xa6\xd5{^\r\x0b\x96\x8aJCM\xb4\x13\x89M\x96+c\x89+\xe2P0>\xcea\x9cuuQ\xd5\xc3\\&\x90E\xd9\xc9\x10\x99t\xc5\x85\xad\x86\x8e\x85\xde\x91W\xb7v\x1e\x1f\xe2\x89ZR\x03\t\xc6\n\xbd*\xbf\xb6\x0cOv\xd5e\xafYU\x7f@\x7fa\x92p\xb2\x96\n\xeb}r\x1b\xcb\x8avF\xf5-\xb6)\xf4\xa2\xde8\xf1 \xa5\xcf\x9b\xb3\x1f8\xa3"\xbf\x18\xb9\x98\xf3\x1a\x11\xc9\nX\xc4\x18X\x00c\xa0\x01\xa0\xbb\x82\'\x12\xbd\xff\xb5\xf9\x15\x8e\xac\x94E:\xab\x10I\xe0:Bg\x8e\xa5\x176\xcdj\x81\x12B3\x87\xf9\xf8\xab\x96Q\x1a\x84p\x1d\xa9"\x1d\xdc\xe1l{L\xd6\xc5\x8a\xa6\xe4\x13\xd9\xcf\x97\xb9\xbfz\xa5\xe2\xa8*<1Q\xfb\xd8_P\xb3\xc7\xa8OP\xefW.\xdf\x82\x05\xdd\xd8\xf6\xb0Bt*3\x05k.XQ\xe8v\x1f\x9e\xa9\xf030|{\xc2X\x06R\x8f\xad\xcb\xd2L\xfa9p\x8b\x87\x01^|s\x01[\r:n\x8b?\x1a\x91\x95\x81[\xc9PG\x80C\xd2\xec\x90\xb8\xe1\x80q\x82O\xaf|^\xf1\xfe\xe9N\x16]\xaf\xa4E\xc2\x16GV\xe0\t\xeb\xe1ey\x99\xed\\5\xa1\xf5Vrn\xc7\xbf\xa6w\xfc\xdf\xd8vK\x8d\xad$\xc1\xa3@-[\x8cn\xf7\xfcV\xb22\xf1\x14\xe7\xea\x97\x9c\xc3;\xda\xd4\xc5K\x13\xa4E\xf3\x056\xf5\x97\x99p\x93\xd0D\xd4*\xd7\x16\x10\xfc\xc9?.\x90l-%w~\xfc\xcf\x13\xac\xc3vI\x08Z\x89\r\xb1\x05.\xd8\x86f!\xca\xe1*\x1c\x84\x13\xb7u\x9b\xdf\x02\x80\x0b\xed\xf0\x8f\xb0\xc6\x8eoW-\xa1\xfc\xa2\x021\xe3r8\xe5\xa2\x0f\xad\xb1\xf3\x04\xbd\x15IO\x9c\xb7\xa9O\xf4\xa8\x7f\x0b\x06\x1a\xb3$\xf7$N\x11B\xcd\xb7\xc0O\xd9\xbc\xa9\x14\x81~>s\x91T\x1c!\x8a\x9f\r\r~a(\x13\xdf\x95(\x1f\xfe?\x03d\xa4\xa9\xfe\x0b\x0f_Z\xdem\xb0\xb0\xfb\xa3\xecW\xd8"\xdc\xc4\xbex1\x8bM\x95\xa6\xb0\xae\xc8\xc8\x1d\xa2\xd2\xf3\xd4\x1dC-R8D\xa1\xf145qF\xd7:I\x04MJRg\xd9\n\x04\xc6\xff\x0c\xf6\n\x9f\xf5\xf7\xb3\xf2\xea\xa1\x94P\xdb\x1bU\xd4O-\xda\xcbG|R\x06\xfa\xc0\xd5\x8c\xd4^S\x04\xbf^\x08\xb0\xfbQ#_A\xe1\tX\xa2\xff\xd9\xe0\x91jR\x9c\x0c-\x96JV\x839\x9b\xa6w\x82\x92\xd7\x12\x13\xd94\xf3\x8b\xe1%X\xa1\x06\xb7!\xde#\x9d6\xeb\x1b9\xf6;\xfd\x91\x04\x1f\xfc\xa5!\xc2\xaa\x06.\x18\xea\xd3a#\xb4yg\x11\xe5Ma\xa8U\r5\xa5,\xda\x0f\x17\x17\x9a\xa2\xbc!\x11\x10\xa8\x00o-IJ\xa8]=\x7fZ\xf8c]X\x87\xcc=\xe2\xd1\xc8\xb0\xc2\xcag\xe4Xm\x01\x8a\x88hZe\x83?|DA\xe8r\x11v,\xa4C\xef\xfaq\x8b&\xbf\xd7\xddz-\x84\xea\xc2d\xb1\x07\xb5\xd8f \xf4\xf1\xf3eA\xac\xc8\x14\xe9\xad>\xeb~\ra?\xe2\xcetlc#\xd4\x8e\xbb\x9a\x17)\xdb\xa9q\xc2~\xd0\x91\x00\x15\x06.\x8d\xad\xa0T\x1e\xb4)\xb8B\xf8\x1a\xd9\xbc\x05\xec\xa9\x88\xa4,\xb4\xf7m1\x9d\xffl\xc5*OY\x8e\xe1\xebV\xf6\x0bQ$\x86\x1d4|\xdb\x01\xe7I\xf2L\xa2\xde\xcc\x1a\x8b\x07n\xf3\x18B#)\xb0\xd1\x88\xee\xb8h\xdb\xfb\xfaKi/?\xab\xac\xe8\x0c\x18;{\xd5yHor\x8d\x13\x11\xba\xc3\nY\xf3\x00f0\xa0\xaf\xe5QE\x01\xf6\xa7D\xd4\x0c\x1e\x89|j\x1d\'\xb1E\xcc\xfc\x0bX)-\xb3PF\xdc2^~D\xb5\xd2+\x8c Nz\xc7\x87\x90\x91\xa1\x05G\x9a\xc1\x18\x9d8\x81\xbc*\x88\xc5\xedf\xab\xe2\x95\xa4K\xbe\x9bS\x1b\xef\xa7\x9a\x98Nq\xca\xea\xac\xa5\xd8\x87\xef\x85\xe5\xc1\xd56\xd2\xe5I\xd9\x03\xf2L(k-\x8e\x8fK\xf2\xbf\xf0\xb8\xa4\x8a7\x0ca\xf8\xf8g~h9\xab\x03,yt\xa6b8H\xf5\x12\xb4\xb6\xb1\xcd\xcd\xf5\x8d\xfen\x90n\xa3\xd4\x0f~|J\x83\x13\xd2Y\xf0\x9f3\x02k$o\xff[\x02\xabv\xbfH\x0f\xf7Gv*\x18,\xd0{\x83\x96Y\x87!\xe9\x06\xe5\xf2A\xc0 \xa1\xbf+\x9e\x04snt\x88\xa4\xfa\xc6\xd5y\x1eK\x95\xe6\xc5\xc1\x01\xefV\xe6J71\xcf\xe3\xb1+\xde\x02\x8a\x16\xe3f\xe6=WYB4\xc6\x1d\x815\x93\xf9\x03t\xfa\xaa\xd8\xadl4\xf4:\x00\x8b\x19\x10\xe5\x08Z\x8e\x85\xf9\xe9\xc2\xad\x90\x88\x0e\x7fm\\\xef\xfa@.\xc6\xdaD|\x8ab%\x91\x01\x1a:\xdb\xb0%\x1c\x1bgh\x95e<\xedw\xa37\xcd\xa6\xf6\x1f\xcaV\xd9 \x9fx\xa3gA\x9f\x9c6\x17\xc5d\xf1\'\x0b<8q\xf4ED%\x8b\xa4s\xd1\xe8\x91H\x1d,\xa0\xb5\xdf\x9fk:\xecm\x89\xb4\x00\x04\x1f\xbb\x97\xf2\r7\x8a\xb5k8\xbc\xec)p\xfbu\x92\xf4\xcb\x18\xc4\x02\xf1\xfd\'f\x8e\x94B\x1b\x9c\xc3\xa8o\xdcD\xd42-\x14\xf6\x94\xca\x18j0u>!\xcfx<&~h\x08\x82Y\x87?\xf8OP[\xb2\xd6\x0c\xc3\xe9\xbe\x8e&\x1d\xa6\xdf\x14\x80\x87o\xd3A\xd3h\xe6)\x84\x9bPFZ\xc6k\xdbQ\x912\x8e\xf2{Y\x93\xa0\x12\xf1\xeaN\x81y?\x9f\x03:\x98\xbe\xc5\x81\xc1\xe5\x96\x17\xb7D\xd8\x17S*e\xddOO\\\xe0\xffF\xaad\xee\x01\x11\x13\x19T:\xadd\xc1<\xf9\x0e\x9d\xe7\x97\xf5\x9aC\xc3\xf7\x89\x88\x06\x99\x99\x95\xdfK\xf4\xadT;y58\xa3\xd8\x13h\xbdX\xfe\xa3\xe8\xe6\x93*q\xdc\xde\x14\xd9\xe8$\xbe\xa8\x015\x15\xf6\xcd?\xc8\xda\x99\xd5\xb8\xdf\xa3a\x82\xf4SZ\xa2W\xae\xc4@\'\xc9%\xf1\xe6?\x7f-\xe3\xbf\xc6\x91e\x8f\xfb\x89\xd9\x0b\xd8h\xf3\xe0\xe8\xbc\xda\x86\x0e}\x9avk\x88\x904R\xfd\xbeX\xce\x017s\x92\xff\xcft\x14\x18\xed\\\x12\xf3\xd9\x1c\xf0{KQ\xa2LP\xb4mLe\xa8\xa2\xa0*\x8d\xc8~u;\t\xb3\xf5)\xe1Cuc\xa1!\xac\xd0\nx\xb6=\xd7\x93\xcc$\x11\xeb\xaeZ?\xd7f\x81\xd2\x9b\xe8Kd\t\xb3\xa6=Y\xfa\x9e\x00\x84\x97#\x90\x98\x12\xf4\xf2\x91o)\xde<j\xcb( \x1aTk\x04\xcfZ"m\x91\xf6\xd3&qp\xf4~(\xe5\x7f:\xc2\x9e\xe4N\xdc\xa0`\xc5\x9a\xf2T\x924R\xfc\xa1\xdc\x0b\xd5\xaa\x93A\xb1ja\xa7\xa6\x81\xfcH\xd8s\xe1\xa7P\x90\'\x7f\xc1\xb1:\xe6\xf9}\xb4\x83GH\xf3M\xd8\x98\xb4\x11{\x84N\xc9 8\xc8\x826\x1c\x03\xd8\xff\xec\\@"U\x99B\xf6\x8c\x9e\x15\x87\xa5\xee\xa5\x8a@\xdd\x7f%h\xce[\xf0\x01\xb0IWw @y\xd3kZ\xec&{F\x11\x8a\x10\xb7\x10A\xcc\xfa\x00\xb5~Y\xcdnR\xc7\xda\x98\x0f7\x82\x84D\xe2\xaf\xf4\xa2\x8fU\x92Au\t\xd8}\x1c\xc2w;\xac\xe0\xa3\xfc\xce\x80X(\xdb\xeaH\xaf\xb9\xff\xbd\xf3\xb4g\x80\xcd\x9a\x17\xdf\\k\xbb/g6fe\xdb\xa1\xafzNi\x8a_.9\xb4\x8e\x8aKA\xe8Q\x8e\xe7\x08\xb3\'\x0e\xfa\x8f\n\x8cJU\x94kF\xc2.\xe2GQ@\xc9\xb2S\x06\xa9Kn;\xbe0\nT{\xa1\xa6\xc8\x85\x01\n\xeb\xff\xfb\x8dY5\xf2]\xda\xacl5\xee\x82B\xe0\x9b\xa1\x11W\xa2\xe1YcV\xa5B\x80 .\xf3\x83$\xe3*\xeeN\xdfr\xac\xb3\xe5Qy\xa5A\x90\xec\x97\xb3\x05"\x1a\x04XE@\x14\xf1\xe2$\n?\x80\xe4[\x19\xc7-\xbcq\xf6\x1f\xdb\x94\xe0\xf2\x08\x90\xad\xfd\x1c\x8cZ\x91\x04\xbaw\x1bz\xd7\xfb\xce\x84\xdd\x8e\x98b\xff\xae\xc4\x18\x89\x12\xc5\x850\xfe)\xcfs\x00\xbe5\xef\x88#\x8c\x99\x0e~\x85\x92\x8b\x9c\x8a\xba\xcb-\xfe\x98\x07\x163!\xae\x95\x0f\x99\xb7\xb92\x7fI\x95ABll&\x9c\xc2\x16pT\xb2\x070Io\x9d\x9eV\xf1B.\xda\xc9\xd8"5\xc0\x05\x87\xef\xf4I\xa0U\xa44[\xcb\xb1\x1b\x1bV+\xc6;\x0fv3\x1a\xfbA\x11\x8a\x8d\xe2\xe4\x8eT\x1f\xb2\x15\x04\xb3}\x91\xc0\xd6&\xed\xf7\xc9\x819\xa3\x1a\xb0\x02M\x05\r\xce\x9e\xe5\x9eu\x11\x82?\xefa\x922\xfd\xa3l\n\x89\x85\xc0\xb4\xdb \x13\xc4\xffT\xf4\x8c\x96\xec\xd1,\t\x9b\x0c\xc6*;\xda\xf1z\x1dO\x02\xca}^\x14\xea\x06Y\x06\x9d\x81\xf8\xf9E\xde\\ZL\xde\x9b\x85\xcc7\xe5\x89\xdb\xa4\xec\xca\xfa\xeb@\x9a\xf9\xf9\x88:<\xfdw"\x998\xe2)ep\xf0i\xdc\x7fd-Y\xa0n\xe1\x98aUl\x91\xe8\xe6\xb3\x16\x0c9\xda\x84\xe2%I\x0e]3\xb1\xed\xd0\x0b\xd9a\xfc \x9e\x95\nG\xba\x8d\xed\xbbJ\xc3\x7f\xff?;\xd1]VS\xed\xcc]x"\xcc\xe7%\xb9\xdb\xc2_;\'V\x1f\xf5M\xba\xe2\x99\x1b;\xa8t\x9a\xad\rZ2\x17y:^\x19\xf5\x1cv\xd4\x80>\xd6V\x9b9bl\xb7\xc4\x9e\xb7\xf3\xe2\x03i\xc3\xed\x82\x9e\xda\x81\xe6\xbb\x98\x93\x890V\xbd\xa1\x0c\x97gV\xed\x91x\xa2{d\x08}\x913\xf4\xdf#M{\x8c\xbd\xe8\xcd8\x18\x7f\x00Z\x95\xd0\xb4N\x1cK\x9b8\xba\x8e\xfc\xae\xf2\x868m\x93\xf1kEw\xa5\xd9\xd3B\xab\xd9\x01\xfb\xc5\xebZA\xb8\xe2\x98\t\x01\xed\xe3\xed\x80hHr\xc3\x9f4\xdd\x15\x00\xaf\xf2L\xff:K\xc1*\xdc\x18\xdf\x80\x9c\x99\xda\xa9.{\x1e\xc9#\xbaj+\xfb \xe4,\xe2m=\xb2\x9f\x92\xdb\x8b\xb6)\x19\\q\'\xd6Msn\xa2\xf6\x16u\xa0I\xfc\xa4\x80\'\x1f\xc7\x08y\xd9bK\xdc\xdaI\xae\xeer\xcc]\xd8y\xaa\xc1\xf30\rT\xec\xf7D\xc2\x00\xd8X\xea0\x9c\xea8\x16L\xb0\x8eP\x87X\xc9\x1d^\x9es\xacOB\xe6O<@|0\xa7\x956\xf0\xb9`^\t\x10v \xdf0\\\xb0"2Qul\xb8\x95\xc3B\x8a\xa2\x161\xc14\xd7\x1e\xff\xd0,\xc0\xa5\xad\x93\xbdvp\xc4L\xf2\xc29h\x99\x07\xcb\xf8\xfc\x1c\x8f\x95\xf0d\xdf[0\xa3\xfe\xcb\xe4(\xb6\x82Y\t\x8a\x12\x80\x8f\xe1\x0cx\x8e\xcc\xbe\n3\xc2\x13\x8e\xc8\x1f\x99\x1c7\xa7%\xe6\x84\x03\xf1\x84)q\x9b\xad\xee\xacG\xb7\xef|\\\x8bj\xf4bI;F\\T\xad\xa4\xb3\x01=\xceM\xfc\xaa\x0b>\xf2\x9b\xda\x9d\xb6h&q6\xb1\xe3K\x1e\xf2\xd6E\xecRB\xb7\x8c\xdb\xbb\x88\xf0,\x19\x1f\xf2\xb0E\x8b\xddUP\x1e\xfaE\xc0\xda[\xe4\xd4s\xab !H\x08mCi\xe6\x85\x98*6l\xca*x\xf7`\xa2\xc1\xe5\xf8~\x9a\x92\xb5\xa3@q\xa8P\xbe\xcc\xdd\xc5\x93\x04\x05*\xaa\xca\x12s\xa1\xa8\xc0\xa1\x88:\xf1\xcf\xd5<\xba\x1b\\\xcb\x12\xadMJ\xbf\x9f\xb2\xbd~W5V%=3\xed\xc6\xb2\xf7$\x0b?+\t\x04k~<\xd4+KS\x19D}\x1fV\xb38\x9c(H8\x7f\xd4\x94j9\xad\xc9)\xce\xbd\xcaD#`\x1ag\xd7(;A\xa0,u\xbf0\x05\xea\x11\xb1zJpmm\xf5\xad\xa3\x88^\xff\x8dvy\x0fz\x06 XD\xf8\xc0\x07.\xb4\x117\x9e(eu;\x84\xa1i"\n\x9c^SZ\xb8\x0e\xd6\x8e\xba\xd5\xd5\x96\xa0oWHK,\x90\xd7\n\x99\x80\xa2\xdc\xd0\x07Z\xeei\xe8\xed"\xfc\x10Y\x1a\xa9\xec \x06\xfc\xdc\xb5k\xe9\x18\x05v \xf3\xb8\x1c\xb9\xf8<\x8d\xd2t\xf6\x16\x08\xdf{O\x8a\xe9Kt@\xf5\xcf\x19x\xef\x90:\x94\x18\xda\xe2;\xab\xe4P\xe7*\t\xa0\xe2%c\xb4.\xab\x9f\xab+_\xc3\n\xf3\xb6\x0fy8\xe7"\x92v\xc7jt\xef\x1e\x91E\xda\x0e\xecW]n"\x85w|p\xb1B\x04\xbe\xf3|\x92y\x85Fc\x11\xfdzS\xd9\xfc\xa8c\x84\xe7\xf4U\xeb\x91*TQ\xce\r\x98\xad\xd8\x1d\xaf\xb2|\xab\r\xf0\x82l\x7f\xb4\xfc\xee\xe4\x03\x0e\xf9\xa5\x1f\xd7"\xb2=C\xd833B{\xbdy\xd4er\xf0Xs\xbcLEA\xc5\x97\x15\x1e(\xa9\x0e\xc9\xa1A\xdcn\xb1\xfaF\xcb\xe0\xa8`<Cw{\xf1e0j\xb0\xfd\xa3\xe9v\x86\xf7\x92\xf4\xf9P\xa2\xd3\xa3e;\xe8F\x8b\xd8=\xf3e\xda\x11"\tV\x83[\x898\x82\xb0\x9d0M}\x9fecu\xfc\x1a\x80\xb8\xf3\x8dzC\xf0S\xf0-^\xaa\xfbHY\xf1\xdf\xd8M\x88\xee5\xe8\xd3\xf4\xfc\xfc\x88\xba\xe7\xb8H\xb1\xbd\xb2RO\xb2D\xe2\xb39\\B\x85\xd5\xed\xa9+\x19\xc8F\x94\xc6\xa4\xef\x08\xbb\x0e\xe9\xc4?\xcdz\xa2\x90N\xeb{\x14\nc\xaa\x82I\xa7\xfeo\xd1[\x82\xfd\xe78m\xe0\x05\xbf85\xb8">\xcaGSF\x91\xda\xae\xbbn\x1b\xa5\xdd\x1bi\xd6\x15hX\xa3a[\xf7\xa5\xce`o=x\x10\xfe\x18\xb8\x1fL\xa4\x7f\xa0M\x90\x03\xe5\x0c\xaf\x8b\x98M\x92\x894:d!vg\xcc\xb0\xad\x1a\xb7S\x02j\xef\x81\xc56\xe1\xbe\xffGl\xfa\x9f\xdf\x13Q1\xfb\x1c\\8\x80\xee\xcb\xaed\xb3^\xd0\xdd\xcf\xac\xd7\r\xc1\x8e\xf63\xd0\r%\xc6\x04r\xdb\xfd6]\xa1\xea\xc6\xd3\x83(\x8d\xcc\x84\x0f#^\x1b\xf2\x9c\xc77\nZ\x9a\xef\tpA\xb4\x1c\xd9&\xf9F\xd1\x18n\x8f\xf1EB\xcd\x0c\xdap-h-\x01\x01(\xfd\xc0\xd9\x9ar&&x\x18\x9f^\xa8\xd7u \xd5Y\x16\xa7r7\xc3)\xde\x8e\xccC\xbf8\x1f\xb7{\xbcB\x9eo\xeb\xcfx\x02\x92\xe2\x8d\xd59\xbf\xd1N\xc7\xe1\x9cgi"\xa1\xf3y\x87\x051\xc3\xd8DQ\xf0#\x1ch=(.l\xd1\xff\x03O\x18\xd5\x07Z\xfa+\x06\xc4,\xe9\x89Z\x98m\xf3F\xea\x7f"\xe7q;\x07:\xffYs\xc7O\xb9!^\xaf\xf3)Tg\x19`\xe0~\xb6\xbd\xa3\xc3$4wK\xf6>nz\x1eg\x9e\xbe\x8e\x89n\x01=\x92B\x1aTy\x84\x1b\xcb\xba9\xd0\n\xa8OAc\x0b\xa3\xa7\xd7\x94J5\x8a\xe0\xb7\x0b!\xaaw\x03q\x1b\x93\\\x15\x99\xfa.\xef\xf6)=O\xa6\xaf\x87\x85\x14\x9b~\xe3ks\xcd\xbc\xd6C\xab\xe5\x8e\x8dG\xdbNS\x82\x0bw\xf3P\x85Y\xdeL\x90\ro\x1d$W\rW\xc3y\x14\xf6/K\x07\xe5f\xbf\x84\xf8\x8e\xbd<\xf3h\xc9n\x13E\xd7\xdeBm\xcce\xb7 Eo={Pm\xa4\xdc\xb2\xcb\n\xf8\xbf\xe7\xfcP\x1c\x15Yr\x11\xce\xac\xa8P\xc9\xc1\x07\xe1h\xef\rR\xc0C\xdf\xdeYd\xd8\x7f\xd3\x9c\x1c$?\x14\x8f\xfa\x8e[G\xd2\x0e*\r{\x81E\x12\xca\xe5\x82\xbb\x82\xb7\xc2<$\xb1Re\xc2[c\xc64\xa4\xccS\xfbt\x9f\x16)\xa8\x88\xe8\xb4\x83~\x9f\xc6\x81N>\xd5F\xc6\x8a\x16W\xfaI\xbcx\xa9\xc9\x04\xdc\x95\x12\xb0W\xdf\xad\x83\xb2\xd9\x9f\xc7\x9b\xd0j\x85\x8f\xd5\x04\x95(`\x12\n\xc4\xf5\xad:\xc5"\xf1c\x9d\xee\xd4\xe3,\x02\x14\xe6\x8d\x16x/\xda\x921\xf7\xfb,\xe0>\x0e\xe7\xbf\x9b\x18\xe0\xf7<\x9f\x1a/\xb3S\xb4\xd4\xe6\xb1\xac\xc6E\x1e}\xa6$%\xc6\xc5\x15\xea\xec\x08\x82\xcd\xe7\x86,\xb3\xc9\xa5\xc3\x17\x89\xe0\xd6\xc4\xf0t&\xa1\x9c\xfb\xbfI\x16\xa2py\xa5hG\xe2\x1b\xe1\x96\xc7\x9d]\x0b7\x03\x98\xaanq\x8c\xa9#\\\xd6\x95%\x0b\xb5\xbc\x1ata\xc5\xf8[\x0fm\xdc\xc3VnM\xe7T\xd8nU\x8e!\x87\xa7\x18\xcb\x81x\xf5?$\rG\x9cS7jT\x99\x9dA\xbd2[\xb8\x14\xd3dZ&coS\x83\xf3\x9d\x0f\xd8\xa0\xc8\xbd.2\xf0~D\x85\xca\x07\xe1c\x15\x9d\x14\xd7w\xc7\xd5 \xc5\x15W$c\xd2b\x9a,EX!\x82\xca-\xa9\xd5u\xecx\xae\xe2g')
4
- #واقعا برای 5 دلار میخوای کرک میکنی؟ حاجی ارزش وقت خودت بیشتره
1
+ from flask_admin.contrib import sqla
2
+ from hiddifypanel.panel.database import db
3
+ import datetime
4
+ from hiddifypanel.models import *
5
+ from flask import Markup,g
6
+ from wtforms.validators import Regexp,ValidationError
7
+ import re,uuid
8
+ from hiddifypanel import xray_api
9
+
10
+ # from gettext import gettext as _
11
+ from flask_babelex import gettext as __
12
+ from flask_babelex import lazy_gettext as _
13
+ from hiddifypanel.panel import hiddify
14
+ from hiddifypanel.panel.hiddify import flash
15
+ from wtforms.fields import StringField,IntegerField
16
+ from flask_bootstrap import SwitchField
17
+ from wtforms import TextAreaField
18
+ from wtforms.widgets import TextArea
19
+ from flask_admin.contrib.sqla import ModelView
20
+
21
+
22
+ class DaysLeftField(IntegerField):
23
+ def process_data(self, value):
24
+ if value is not None:
25
+ days_left = (value - datetime.date.today()).days
26
+ self.data = days_left
27
+ else:
28
+ self.data = None
29
+
30
+ def process_formdata(self, valuelist):
31
+ if valuelist and valuelist[0]:
32
+ days_left = valuelist[0]
33
+ new_date_value = datetime.date.today() + datetime.timedelta(days=int(days_left))
34
+ self.data = new_date_value
35
+ else:
36
+ self.data = None
37
+
38
+ class LastResetField(IntegerField):
39
+ def process_data(self, value):
40
+ if value is not None:
41
+ days_left = (datetime.date.today()-value).days
42
+ self.data = days_left
43
+ else:
44
+ self.data = None
45
+
46
+ def process_formdata(self, valuelist):
47
+ if valuelist and valuelist[0]:
48
+ days_left = valuelist[0]
49
+ new_date_value = datetime.date.today() - datetime.timedelta(days=int(days_left))
50
+ self.data = new_date_value
51
+ else:
52
+ self.data = None
53
+
54
+
55
+ class CKTextAreaWidget(TextArea):
56
+ def __call__(self, field, **kwargs):
57
+ if kwargs.get('class'):
58
+ kwargs['class'] += ' ckeditor'
59
+ else:
60
+ kwargs.setdefault('class', 'ckeditor')
61
+ return super(CKTextAreaWidget, self).__call__(field, **kwargs)
62
+
63
+ class CKTextAreaField(TextAreaField):
64
+ widget = CKTextAreaWidget()
65
+
66
+ class MessageAdmin(ModelView):
67
+ extra_js = ['//cdn.ckeditor.com/4.6.0/standard/ckeditor.js']
68
+
69
+ form_overrides = {
70
+ 'body': CKTextAreaField
71
+ }#واقعا برای 5 دلار میخوای کرک میکنی؟ حاجی ارزش وقت خودت بیشتره
5
72
  #Email hiddify@gmail.com for free permium version. Do not crack this cheap product
@@ -1,5 +1,20 @@
1
- # 2023-04-08T15:11:20.612375
2
- from pyarmor_runtime_000000 import __pyarmor__
3
- __pyarmor__(__name__, __file__, b'PY000000\x00\x03\t\x00a\r\r\n\x80\x00\x01\x00\x08\x00\x00\x00\x04\x00\x00\x00@\x00\x00\x00G\x03\x00\x00\x12\t\x04\x00t\x94\xdd\xd6R\xf4\x85,H]Rn\xa7\xaf\x82#\x00\x00\x00\x00\x00\x00\x00\x00\xf3\x1b4\x11\xcd\xddB\x07\xc7\x04bB#\x96m]\x84\xc2:0\xa6u\xd5\xde\x964\x00\t\xa9\xad\x08^\xcfVW\xd2o\x11\x05\xc3&N\x89*yk\x99Ix+\x1f\xb4Y\xd5\x9a\xaek4\x94\x11\xd9\x0c\xf8\x15"\x19X^\x06l42y{\xd6F\xfe\xe3=0\xf8YV\xa2\xc9\x1d\xdf=c\xea%V$V\xc3\x80\xc1.\x8c9\xd4\x96%\x8f@\x04_\xe62+q\xe6;5\xd3\x0bM\x90\xfb\xc6;\xe1\xd8O\x18^n\n\xb5\xbfP\xd0\xbcK/\xb3\xc3\x17c\xc0\xd25lD26\xc3\xd7\xef\\\x84*\xbd\xc6\xc7\xa7T\xbd%\x95\xae\x90\xf6$\xf2\xbd\xf4s\xa67\xb2\x06?\x95\xff\x11z\xbb[\xb9\xc0\x9e\x12w"&?Zeu\xd1\'\xbd\xccYj]\x11=\xe2n\xd817\xfa\x94.\x86\xf5\x13I\x19\n8\x98\xaf\xc3\xffv\xd9\xfe\xf5\xd9\xc0[\xab\x93E\xe5\x16\xab\xc9L\x91.\xbbH\xf2\xbe\x8d\xaeK|0\x8a\xb7W\x1e\xb9\xb4\x85 \xdf\xc9\x17<\xcc\x87\xf0u`\x98\x8f\xf2\t\xd2\xf5\x9aR\xb4\x8e(\x0cd\xe4\xaa\x11\x14\xe3\xe1\x11q&\xa4I\x8f\xf3\xdfQ\xaa\x15\x00\xa2\xdc\xc5\x86\xca\xef\xd9\xb5\xb9\xebfl\xdb\xa7\xa0\xf7\x0cS\x8f\xe3]\x02\x1d\x0f\xd5\xa0\xceSe!\xca\xcd8<\xf8\x83\xf84\xd4=\x183;z\xea\xcd\x8c\n\xe5_XN\xae1g\xf2\xcf\x98T\xae\xfb\xe9\xcet3\xcc07\x7f=\xf1\xcf]\t\xdf2\x14\x99\xf1x\x85\xe4D9X\xb5\x1b\x84\xa4@\xc93\xb1Mmy\x0b\x8b\x84\xa8F\x99\x8f\xde[\xea5\xa63\xc8\x04\xf5!\xca9\xa2z\xd9\xb5B\x8c\xeb`\xbcL\xb7\xe0\xbc4\x9dl\xaa\xa8UR\xaeB\x87\xa4p\xf8\xd0-\xc9\x05\x83\xd9\xd35\x04\xec\x95\xa6\x95\x93Vkl_A\xbf/\x11!zf2\xe9l\xdc\xeb\x05\xfc\x03\x04\xc5w\x96g\xf2\x981\xbd\xbbN\xab\xe3\xa8\xc7o(\x11J\x9d\xae\x13\x83:pq8\x96\xaa\xbf\xaa \xf1\x82\xf0\xd1\x9e\x02\xfc$5\xad\x84i\xbcR\xab\\\xa3P\xcb~\xb4|\xe0\xb1D\x0b!\xf4\xd7tw4GXzlz\x04,L6a\xc0f\xa5\xd6\xda\x19\xd3\xba\x18To/\x02\x89s\x15\xb7\xcc\xca\xc2\xb5\xb8\x8d\xcb1S\x1e\xc0\xbd?\xe5\xe9k\xed\xf1\xd2`\x8f"\xf3*\xc4\x80`,\xab!H0\xc6Y\xd0\x1e\xd9\xa5\xe4\rF\xc0\x93o\xbbb\xd8\x14\xca\xd7\xe0\xd3\xbfz\x8f\xa6\xffMK/\xb3\xe0\x0b\xcdt]\xc7\xef\x16\xc4HT\x19M-\xed&k\x8cB\x84\xae\xe9\xa4\xee\xdcV\xd8\xe5*\xad\xee*\x8d\xe9Z=\x11\xcfN8\xca\xf1\x14\t\x13s\x0fq\xe4\x9d\xa4\xe48E\xe9Z=\x99\x7fS\x91\xea&\xf1$`\xa5S\x03\xb9\xe2\xb9\xc5\xbe"\x07\xfe\x14\xe3\x9e\x0f4\xd5\xfcNH\x9as\x83\x15\xab\xbd#\xca-\xb4\x8aL\xcb\x85s\xb7\x9a\xb5}\xa9\x06\x94\xe2\xe9su\xda*\xea\x04c\x99u\xfe\xae\\@\x11\xe3A.i\xaf\xe02\x17w^3;~^\x8dr[\x01\x17E4\x9c\xd8\x8d\xc0a*\xa2m\xe5\x85\xd8\xdd\x00\xd8\x19\x9e\xb0\x03\x04\xdbw5\x9c\xd6\xc5\n\xcaZ=\x1f\x1c\x13\x01d\xf1\xfb\xf1\x06\x10\xe1]\x8e`\x98\xcd\x8c\xaf!k\x9c\n\xaf!%w\x8f\x10\xf4{\xdb\xfd\xc1"\xae\xb8(\xa3\xdbw\xd4\x11\xf6\xfa\\\x8e\xd2')
1
+ from flask_sqlalchemy import SQLAlchemy
2
+ from sqlalchemy_utils import UUIDType
3
+
4
+
5
+ db = SQLAlchemy()
6
+ db.UUID=UUIDType
7
+
8
+ def init_app(app):
9
+ app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
10
+ db.init_app(app)
11
+
12
+ # db.create_all(app)
13
+ # app.jinja_env.globals['get_locale'] = get_locale
14
+
15
+
16
+
17
+
18
+
4
19
  #واقعا برای 5 دلار میخوای کرک میکنی؟ حاجی ارزش وقت خودت بیشتره
5
20
  #Email hiddify@gmail.com for free permium version. Do not crack this cheap product