hiddifypanel 8.0.0.dev27__py3-none-any.whl → 8.0.0.dev28__py3-none-any.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.
hiddifypanel/VERSION CHANGED
@@ -1 +1 @@
1
- 8.0.0.dev27
1
+ 8.0.0.dev28
hiddifypanel/VERSION.py CHANGED
@@ -1,3 +1,3 @@
1
- __version__='8.0.0.dev27'
1
+ __version__='8.0.0.dev28'
2
2
  from datetime import datetime
3
3
  __release_date__= datetime.strptime('2023-08-10','%Y-%m-%d')
@@ -0,0 +1,41 @@
1
+ from sqlalchemy_serializer import SerializerMixin
2
+ from flask import Flask, flash, request
3
+ from flask_sqlalchemy import SQLAlchemy
4
+ from flask_admin import Admin
5
+ from flask_admin.contrib.sqla import ModelView
6
+ from wtforms import SelectMultipleField
7
+ from urllib.parse import urlparse
8
+ from .config_enum import ConfigEnum, ConfigCategory
9
+ from .config import hconfig
10
+
11
+ from sqlalchemy.orm import backref
12
+
13
+ from flask import Markup
14
+ from dateutil import relativedelta
15
+ from hiddifypanel.panel.database import db
16
+
17
+ import enum
18
+ import datetime
19
+ import uuid as uuid_mod
20
+ from enum import auto
21
+ from strenum import StrEnum
22
+
23
+
24
+ class Report(db.Model, SerializerMixin):
25
+ id = db.Column(db.Integer, primary_key=True, autoincrement=True)
26
+ user_id = db.Column(db.Integer, db.ForeignKey('user.id'), default=0, nullable=False)
27
+ asn_id = db.Column(db.String(200), nullable=False, unique=False)
28
+ city = db.Column(db.String(200))
29
+ country = db.Column(db.String(200))
30
+ latitude = Column(Float,)
31
+ longitude = Column(Float, )
32
+ accuracy_radius = Column(Float, )
33
+
34
+ date = db.Column(db.DateTime, nullable=False, default=datetime.datetime.min)
35
+ details = db.relationship('ReportDetail', cascade="all,delete", backref='report', lazy='dynamic',)
36
+
37
+
38
+ class ReportDetail(db.Model, SerializerMixin):
39
+ report_id = db.Column(db.Integer, db.ForeignKey('report.id'), primary_key=True, )
40
+ proxy_id = db.Column(db.Integer, db.ForeignKey('proxy.id'), primary_key=True, )
41
+ ping = db.Column(db.Integer, default=-1)
@@ -34,6 +34,7 @@ apt.ircf.space APT
34
34
  try:
35
35
  ipasn = maxminddb.open_database('GeoLite2-ASN.mmdb') if os.path.exists('GeoLite2-ASN.mmdb') else {}
36
36
  ipcountry = maxminddb.open_database('GeoLite2-Country.mmdb') if os.path.exists('GeoLite2-Country.mmdb') else {}
37
+ ipcity = maxminddb.open_database('GeoLite2-City.mmdb') if os.path.exists('GeoLite2-City.mmdb') else {}
37
38
  except Exception as e:
38
39
  print("Error can not load maxminddb", file=sys.stderr)
39
40
  ipasn = {}
@@ -63,14 +64,37 @@ asn_map = {
63
64
 
64
65
  def get_asn_short_name(user_ip=None):
65
66
  user_ip = user_ip or get_real_user_ip()
66
- asnres = ipasn.get(user_ip) if ipasn else {'autonomous_system_number': 'unknown'}
67
- asn = f"{asnres.get('autonomous_system_number','unknown')}" if asnres else "unknown"
68
- return asn_map.get(asn, "unknown")
67
+ try:
68
+ asn_id = get_asn_id(user_ip)
69
+ return asn_map.get(asn_id, "unknown")
70
+ except:
71
+ return "unknown"
69
72
 
70
73
 
71
- def get_country(user_ip=None):
74
+ def get_asn_id(user_ip=None):
72
75
  user_ip = user_ip or get_real_user_ip()
73
- return (ipcountry.get(user_ip) or {}).get('country', {}).get('iso_code', 'unknown')
76
+ try:
77
+ asnres = ipasn.get(user_ip)
78
+ return asnres['autonomous_system_number']
79
+ except:
80
+ return "unknown"
81
+
82
+
83
+ def get_country(user_ip=None):
84
+ try:
85
+ user_ip = user_ip or get_real_user_ip()
86
+ return (ipcountry.get(user_ip) or {}).get('country', {}).get('iso_code', 'unknown')
87
+ except:
88
+ return 'unknown'
89
+
90
+
91
+ def get_city(user_ip=None):
92
+ try:
93
+ user_ip = user_ip or get_real_user_ip()
94
+ res = ipcity.get(user_ip)
95
+ return {'city': res.get('city').get('name'), 'latitude': res.get('latitude'), 'longitude': res.get('longitude'), 'accuracy_radius': res.get('accuracy_radius')}
96
+ except:
97
+ return 'unknown'
74
98
 
75
99
 
76
100
  def get_real_user_ip_debug(user_ip=None):
@@ -35,6 +35,13 @@ class UserView(FlaskView):
35
35
  # user_agent = user_agents.parse(request.user_agent.string)
36
36
 
37
37
  # return render_template('home/multi.html',**c,ua=user_agent)
38
+ @route('/auto')
39
+ def auto_sub(self):
40
+ if re.match('^([Cc]lash-verge|[Cc]lash-?[Mm]eta)', request.user_agent.string):
41
+ return self.clash_config(meta_or_normal="meta")
42
+ elif re.match('^([Cc]lash|[Ss]tash)', user_agent):
43
+ return self.clash_config(meta_or_normal="normal")
44
+ return self.all_configs(base64=True)
38
45
 
39
46
  @route('/new/')
40
47
  @route('/new')
@@ -59,6 +66,40 @@ class UserView(FlaskView):
59
66
 
60
67
  return resp
61
68
 
69
+ @route('/report', methods=["POST"])
70
+ def report(self):
71
+ data = request.get_json()
72
+ user_ip = clean_ip.get_real_user_ip()
73
+ report = Report()
74
+ report.asn_id = clean_ip.get_asn_id(user_ip)
75
+ report.country = clean_ip.get_country(user_ip)
76
+
77
+ city_info = clean_ip.get_city(user_ip)
78
+ report.city = city_info['name']
79
+ report.latitude = city_info['latitude']
80
+ report.longitude = city_info['longitude']
81
+ report.accuracy_radius = city_info['accuracy_radius']
82
+
83
+ report.date = datetime.datetime.now()
84
+ sub_update_time = data['sub_update_time']
85
+ sub_url = data['sub_url']
86
+
87
+ db.session.add(report)
88
+ db.session.commit()
89
+ proxy_map = {p.name: p.id for p in Proxy.query.all()}
90
+
91
+ for name, ping in data['pings']:
92
+ detail = ReportDetail()
93
+ detail.report_id = report.id
94
+ detail.proxy_id = proxy_map.get(name, -1)
95
+ del proxy_map[name]
96
+ if detail.proxy_id < 0:
97
+ print("Error. Proxy not found!")
98
+ continue
99
+ detail.ping = ping
100
+ db.session.add(detail)
101
+ db.session.commit()
102
+
62
103
  @route('/clash/<typ>.yml', methods=["GET", "HEAD"])
63
104
  @route('/clash/<meta_or_normal>/<typ>.yml', methods=["GET", "HEAD"])
64
105
  def clash_config(self, meta_or_normal="normal", typ="all.yml"):
@@ -82,13 +123,14 @@ class UserView(FlaskView):
82
123
  if request.method == 'HEAD':
83
124
  resp = ""
84
125
  else:
85
- resp = render_template('singbox_config.json', **c, host_keys=hiddify.get_hostkeys(True), ssh_client_version=hiddify.get_ssh_client_version(user),ssh_ip=hiddify.get_ip(4), base64=False)
126
+ resp = render_template('singbox_config.json', **c, host_keys=hiddify.get_hostkeys(True),
127
+ ssh_client_version=hiddify.get_ssh_client_version(user), ssh_ip=hiddify.get_ip(4), base64=False)
86
128
  return add_headers(resp, c)
87
129
 
88
130
  @route('/all.txt', methods=["GET", "HEAD"])
89
- def all_configs(self):
131
+ def all_configs(self, base64=False):
90
132
  mode = "new" # request.args.get("mode")
91
- base64 = request.args.get("base64", "").lower() == "true"
133
+ base64 = base64 or request.args.get("base64", "").lower() == "true"
92
134
  c = get_common_data(g.user_uuid, mode)
93
135
  # response.content_type = 'text/plain';
94
136
  if request.method == 'HEAD':
@@ -3,8 +3,8 @@ msgid ""
3
3
  msgstr ""
4
4
  "Project-Id-Version: HiddifyPanel\n"
5
5
  "Report-Msgid-Bugs-To: \n"
6
- "POT-Creation-Date: 2023-08-10 10:08+0200\n"
7
- "PO-Revision-Date: 2023-08-07 00:34-0500\n"
6
+ "POT-Creation-Date: 2023-08-10 20:37+0200\n"
7
+ "PO-Revision-Date: 2023-08-10 03:09-0500\n"
8
8
  "Last-Translator: hidden u\n"
9
9
  "Language-Team: English (USA)\n"
10
10
  "Language: en_US\n"
@@ -15,12 +15,12 @@ msgstr ""
15
15
  "Generated-By: Babel 2.12.1\n"
16
16
 
17
17
  # | msgid "This Domain does not exist in the Panel !"
18
- #: hiddifypanel/models/domain.py:134 hiddifypanel/panel/user/user.py:165
18
+ #: hiddifypanel/models/domain.py:134 hiddifypanel/panel/user/user.py:207
19
19
  msgid "This domain does not exist in the panel!"
20
20
  msgstr "This Domain does not exist in the Panel !"
21
21
 
22
22
  # | msgid "Error In Auto CDN IP! It Can Not Be Find, Please Contact Admin"
23
- #: hiddifypanel/panel/clean_ip.py:103
23
+ #: hiddifypanel/panel/clean_ip.py:127
24
24
  msgid "Error! auto cdn ip can not be find, please contact admin."
25
25
  msgstr "Error In Auto CDN IP! It Can Not Be Find, Please Contact Admin"
26
26
 
@@ -3,8 +3,8 @@ msgid ""
3
3
  msgstr ""
4
4
  "Project-Id-Version: HiddifyPanel\n"
5
5
  "Report-Msgid-Bugs-To: \n"
6
- "POT-Creation-Date: 2023-08-10 10:08+0200\n"
7
- "PO-Revision-Date: 2023-08-07 00:34-0500\n"
6
+ "POT-Creation-Date: 2023-08-10 20:37+0200\n"
7
+ "PO-Revision-Date: 2023-08-10 03:09-0500\n"
8
8
  "Last-Translator: hidden u\n"
9
9
  "Language: fa\n"
10
10
  "Language-Team: Persian\n"
@@ -15,13 +15,13 @@ msgstr ""
15
15
  "Generated-By: Babel 2.12.1\n"
16
16
 
17
17
  # | msgid "This Domain does not exist in the Panel !"
18
- #: hiddifypanel/models/domain.py:134 hiddifypanel/panel/user/user.py:165
18
+ #: hiddifypanel/models/domain.py:134 hiddifypanel/panel/user/user.py:207
19
19
  msgid "This domain does not exist in the panel!"
20
20
  msgstr "این دامنه در پنل وجود ندارد!"
21
21
 
22
22
  # | msgid ""
23
23
  # | "Error In Auto CDN IP! It Can Not Be Find, Please Contact Admin"
24
- #: hiddifypanel/panel/clean_ip.py:103
24
+ #: hiddifypanel/panel/clean_ip.py:127
25
25
  msgid "Error! auto cdn ip can not be find, please contact admin."
26
26
  msgstr "خطا! آی پی اتوماتیک نتوانست پیدا شود. لطفا با مدیر تماس بگیرید"
27
27
 
@@ -3,8 +3,8 @@ msgid ""
3
3
  msgstr ""
4
4
  "Project-Id-Version: HiddifyPT\n"
5
5
  "Report-Msgid-Bugs-To: \n"
6
- "POT-Creation-Date: 2023-08-10 10:08+0200\n"
7
- "PO-Revision-Date: 2023-08-07 00:34-0500\n"
6
+ "POT-Creation-Date: 2023-08-10 20:37+0200\n"
7
+ "PO-Revision-Date: 2023-08-10 03:09-0500\n"
8
8
  "Last-Translator: lymanrudni\n"
9
9
  "Language: pt\n"
10
10
  "Language-Team: Portuguese\n"
@@ -15,13 +15,13 @@ msgstr ""
15
15
  "Generated-By: Babel 2.12.1\n"
16
16
 
17
17
  # | msgid "This Domain does not exist in the Panel !"
18
- #: hiddifypanel/models/domain.py:134 hiddifypanel/panel/user/user.py:165
18
+ #: hiddifypanel/models/domain.py:134 hiddifypanel/panel/user/user.py:207
19
19
  msgid "This domain does not exist in the panel!"
20
20
  msgstr "Este Domínio não existe no Painel!"
21
21
 
22
22
  # | msgid ""
23
23
  # | "Error In Auto CDN IP! It Can Not Be Find, Please Contact Admin"
24
- #: hiddifypanel/panel/clean_ip.py:103
24
+ #: hiddifypanel/panel/clean_ip.py:127
25
25
  #, fuzzy
26
26
  msgid "Error! auto cdn ip can not be find, please contact admin."
27
27
  msgstr ""
@@ -3,8 +3,8 @@ msgid ""
3
3
  msgstr ""
4
4
  "Project-Id-Version: HiddifyPanel\n"
5
5
  "Report-Msgid-Bugs-To: \n"
6
- "POT-Creation-Date: 2023-08-10 10:08+0200\n"
7
- "PO-Revision-Date: 2023-08-07 00:34-0500\n"
6
+ "POT-Creation-Date: 2023-08-10 20:37+0200\n"
7
+ "PO-Revision-Date: 2023-08-10 03:09-0500\n"
8
8
  "Last-Translator: hidden u\n"
9
9
  "Language: zh\n"
10
10
  "Language-Team: Chinese\n"
@@ -15,14 +15,14 @@ msgstr ""
15
15
  "Generated-By: Babel 2.12.1\n"
16
16
 
17
17
  # | msgid "This Domain does not exist in the Panel !"
18
- #: hiddifypanel/models/domain.py:134 hiddifypanel/panel/user/user.py:165
18
+ #: hiddifypanel/models/domain.py:134 hiddifypanel/panel/user/user.py:207
19
19
  #, fuzzy
20
20
  msgid "This domain does not exist in the panel!"
21
21
  msgstr "该域名在面板中不存在!"
22
22
 
23
23
  # | msgid ""
24
24
  # | "Error In Auto CDN IP! It Can Not Be Find, Please Contact Admin"
25
- #: hiddifypanel/panel/clean_ip.py:103
25
+ #: hiddifypanel/panel/clean_ip.py:127
26
26
  #, fuzzy
27
27
  msgid "Error! auto cdn ip can not be find, please contact admin."
28
28
  msgstr "自动 CDN IP 错误!找不到,请联系管理员。"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: hiddifypanel
3
- Version: 8.0.0.dev27
3
+ Version: 8.0.0.dev28
4
4
  Summary: hiddifypanel multi proxy panel
5
5
  Home-page: https://github.com/hiddify/hiddify-config/
6
6
  Author: hiddify
@@ -1,6 +1,6 @@
1
1
  hiddifypanel/Events.py,sha256=mkIsfz4YQqegdeFgH4quxvLIx7AundtjAW6HBSP9I-M,719
2
- hiddifypanel/VERSION,sha256=jNKaZM52SwfxQ1lxw4U4xq3fJc7rCH1gQC-1JKZG528,12
3
- hiddifypanel/VERSION.py,sha256=78D5GbBGIOEgXE9rzbCGnk6xL76CMIeUx4-5ISVPsdo,117
2
+ hiddifypanel/VERSION,sha256=al2WuwHwj-7R15lIqut6U7xytLKEi--83xTh92IGUb4,12
3
+ hiddifypanel/VERSION.py,sha256=CvuftKNR5OdFNPvsAe1Fqzea9Fd37uto54wSUNdN0VY,117
4
4
  hiddifypanel/__init__.py,sha256=b4nIILUBiDaAWF1Mnkew84MxzR5OeWogcVbR-gpnbrA,217
5
5
  hiddifypanel/__main__.py,sha256=GaHLsnu3y4zNTh6x-9kuZLOYaShltkG96rRAHOuMLak,270
6
6
  hiddifypanel/base.py,sha256=choHdG5ctEX-jftutIb9hh3Kdu5oV3HOJpQv9KQBt24,2640
@@ -18,13 +18,14 @@ hiddifypanel/models/config_enum.py,sha256=2sVE_Dn8zjq0eIAHrb5pG8GkYvNrLDU1DdW3QG
18
18
  hiddifypanel/models/domain.py,sha256=mHxKPedR5TC2RMz8Lmqo62EJlfda2kJhde638bM12ec,6406
19
19
  hiddifypanel/models/parent_domain.py,sha256=yfcC_OM9xiyMHQBSRIeXpR8WLT2SNtE0CYhM5ouQJiw,2478
20
20
  hiddifypanel/models/proxy.py,sha256=K7rjSaCZoLiU7QsA6qxibQxgvLB0ev8zsvIlt0tUqqQ,2824
21
+ hiddifypanel/models/report.py,sha256=G0IxEPDXy1jZlYzwgMsJFRdWHLzcVjQWLDprryCgAfM,1507
21
22
  hiddifypanel/models/usage.py,sha256=z09tM56OU8ZHYZ_-MFyJUoizhI3sHXf5OAcQ1ObO26A,4175
22
23
  hiddifypanel/models/user.py,sha256=kUdbx77zsC3mQDmZ9QQR5bbCIliT8sy-nvHXMionjEM,12016
23
24
  hiddifypanel/panel/__init__.py,sha256=njms9QqmFhfzKdCBwqH_J_bue1GYGlfg7QdXDS6j1Wo,126
24
25
  hiddifypanel/panel/admin_2.py,sha256=ikpkTEjEcmKivFOqPZv0mi-9aMLf5HeTHjZuSqaJySU,1039
25
26
  hiddifypanel/panel/asset.py,sha256=mb3PWCHIcZnuV0wEN0DgKtLANbV9iAFYtZVuOzGX-Oo,461
26
27
  hiddifypanel/panel/cf_api.py,sha256=CacbS0dbjeJXOXCCQoEGBv5LoHo0bJU7dwYaFtAIokU,1109
27
- hiddifypanel/panel/clean_ip.py,sha256=STV29eCeYPxJacufjGytrHPoDtms2mPpiSqJ0lpT9WA,4308
28
+ hiddifypanel/panel/clean_ip.py,sha256=AGU12ylBYa7GAWzCN4yO_d1FyI30jY8U5muJLgwXZiY,4918
28
29
  hiddifypanel/panel/cli.py,sha256=0KZFlh5GneyFsSHfz6XbMandkeYxEFO1TyG_Cn0_FnE,7654
29
30
  hiddifypanel/panel/common.py,sha256=lJkCRm78SkDmYmwCy3w5CbMsR6QKafi74uQiUcDnFHg,4778
30
31
  hiddifypanel/panel/custom_widgets.py,sha256=GrLc5klxOJhO9bPdl_RHI7RjiG_JK2rG0p-f0k88BJw,2483
@@ -81,7 +82,7 @@ hiddifypanel/panel/commercial/templates/parent_dash.html,sha256=pMZRHQRxb2blYe0f
81
82
  hiddifypanel/panel/user/__init__.py,sha256=C1oDWpEwa_bNdrff9I33_m9h2F_ma0_Ruu6T1QfMlMI,1047
82
83
  hiddifypanel/panel/user/link_maker.html,sha256=g420NAm_fUI8asYjyfCiXyUOIwEQfDPonZA9xh3p0-8,177
83
84
  hiddifypanel/panel/user/link_maker.py,sha256=RS4C7wkWtnd86x7AW0V_yTNEzi9kDZVXYoJ36JBGkLM,19583
84
- hiddifypanel/panel/user/user.py,sha256=4TbdpNHYA4z4i0W4D0KOUgZArCUdxmDLliRNF4dE5r0,10071
85
+ hiddifypanel/panel/user/user.py,sha256=czMktgKm8XxwRZu5_0HA-nL2VAzdYwL8ddqe7EjwmBI,11675
85
86
  hiddifypanel/panel/user/templates/all_configs copy.txt,sha256=ivn6fiOLnn4R7WLoKiPFbW-oOu-v1hdSqOW-sSeYmXA,510
86
87
  hiddifypanel/panel/user/templates/all_configs.txt,sha256=q_Is8KCiiQcowf9-xsPj34YFILgk3cyAGULBfrf7vdg,1126
87
88
  hiddifypanel/panel/user/templates/clash_config copy.yml,sha256=_BIDTWAe6St7f0Q3KhNAYuQsVqQDmx_5ayElt5Gs-fw,7537
@@ -678,17 +679,17 @@ hiddifypanel/templates/macros.html,sha256=lvw_I1hYTx5mq5e9j9kwbNp5n_WDdjFgwKzI3J
678
679
  hiddifypanel/templates/master.html,sha256=VDhR902TCiMu6pnGrHDlsGYCR8PKKvBZcgiX00D4SP8,20817
679
680
  hiddifypanel/templates/static.html,sha256=jp6q4wtx-k2A_cjqJoNiMS7Ee30arE45qI3ev4d5ky4,165
680
681
  hiddifypanel/templates/hiddify-flask-admin/list.html,sha256=St0TD6-ZIJ24A6Akbh51JNkTEOpimFq2iiRydcUjQlA,13642
681
- hiddifypanel/translations/en/LC_MESSAGES/messages.mo,sha256=8JakNDMbWi80B-MxqXYmciG7z8j_OkCIh0iBED5YhJ4,56470
682
- hiddifypanel/translations/en/LC_MESSAGES/messages.po,sha256=dO6eobIkp3uU_wuFP4KhQ_FiVsBUYcFxX3RnIUBqIY8,154384
683
- hiddifypanel/translations/fa/LC_MESSAGES/messages.mo,sha256=rMuzaOnV4hXtyswfBNMx41WgBf2TOiAAvzn6QgZMj3M,76094
684
- hiddifypanel/translations/fa/LC_MESSAGES/messages.po,sha256=MjAGoRAv6X-COxdeh5zqcYRmHj6f4KwEbNvL_uqLxmM,176918
685
- hiddifypanel/translations/pt/LC_MESSAGES/messages.mo,sha256=O0lZXG64qB8j9CVP_rxWm42DFp1LXC151oq8-VCpeOU,58471
686
- hiddifypanel/translations/pt/LC_MESSAGES/messages.po,sha256=y0ofheV8DtQx7biaZ0gXa7JcU-V3kvnphGYKWtagrLk,152557
687
- hiddifypanel/translations/zh/LC_MESSAGES/messages.mo,sha256=OJk2Cnr_tJL3TjCZ22pKXCfU4r2Copf3QMG_WLL75A8,48371
688
- hiddifypanel/translations/zh/LC_MESSAGES/messages.po,sha256=ypj35GZbjQXEwwkauWuPacDrDlovimqWdto8aY6Iqvw,147770
689
- hiddifypanel-8.0.0.dev27.dist-info/LICENSE.md,sha256=oDrt-cUsyiDGnRPjEJh-3dH2ddAuK_bIVBD8ntkOtZw,19807
690
- hiddifypanel-8.0.0.dev27.dist-info/METADATA,sha256=yD5Gye9Bunh1XErp5IoGa1YdTFgA9H7f9yPUZ0KwB2A,2851
691
- hiddifypanel-8.0.0.dev27.dist-info/WHEEL,sha256=5sUXSg9e4bi7lTLOHcm6QEYwO5TIF1TNbTSVFVjcJcc,92
692
- hiddifypanel-8.0.0.dev27.dist-info/entry_points.txt,sha256=Xzpqlh3nwBtZhoV9AANJykano056VJvYzaujxPztJaM,60
693
- hiddifypanel-8.0.0.dev27.dist-info/top_level.txt,sha256=rv-b3qFWUZQTBy0kyBfsr7L6tPpeO7AaQlLHXn-HI5M,13
694
- hiddifypanel-8.0.0.dev27.dist-info/RECORD,,
682
+ hiddifypanel/translations/en/LC_MESSAGES/messages.mo,sha256=o1eU10wDDknUWZuA8hO6OsT-8_953mzFZFeECW4yrj8,56470
683
+ hiddifypanel/translations/en/LC_MESSAGES/messages.po,sha256=_l2G-cwx4N_CkJh4vOfiw5pEnRgV6pazAENABzRInS0,154384
684
+ hiddifypanel/translations/fa/LC_MESSAGES/messages.mo,sha256=sMjIgk5qqlLcHIZ_RVtVH0NY-6zueHku9LGXhZ24zHM,76094
685
+ hiddifypanel/translations/fa/LC_MESSAGES/messages.po,sha256=ZG5wGiJKOqTwCAh7Yk4wKdlpJga0AnZziSFpZf9oW-U,176918
686
+ hiddifypanel/translations/pt/LC_MESSAGES/messages.mo,sha256=jarjbWO-W19lks-o6EZXoCpDLPcj3_EfK7oQz2wXifQ,58471
687
+ hiddifypanel/translations/pt/LC_MESSAGES/messages.po,sha256=T4NPQSXJYgnNSn5yzKMRg0XBKoogHTQPWA25ZvQGf28,152557
688
+ hiddifypanel/translations/zh/LC_MESSAGES/messages.mo,sha256=sMtEgjkE8Ui_2blcv3y6FaeHRlAIYN5b_yi_FtxrZVc,48371
689
+ hiddifypanel/translations/zh/LC_MESSAGES/messages.po,sha256=3lglBd41hlmwQqyvK5bbiOLCHx9T3qrJw4uwx-9QZfk,147770
690
+ hiddifypanel-8.0.0.dev28.dist-info/LICENSE.md,sha256=oDrt-cUsyiDGnRPjEJh-3dH2ddAuK_bIVBD8ntkOtZw,19807
691
+ hiddifypanel-8.0.0.dev28.dist-info/METADATA,sha256=ECiA-y_P0M8ccSMajbfnU-RlLIniDKF5VVdKiYr4DPc,2851
692
+ hiddifypanel-8.0.0.dev28.dist-info/WHEEL,sha256=5sUXSg9e4bi7lTLOHcm6QEYwO5TIF1TNbTSVFVjcJcc,92
693
+ hiddifypanel-8.0.0.dev28.dist-info/entry_points.txt,sha256=Xzpqlh3nwBtZhoV9AANJykano056VJvYzaujxPztJaM,60
694
+ hiddifypanel-8.0.0.dev28.dist-info/top_level.txt,sha256=rv-b3qFWUZQTBy0kyBfsr7L6tPpeO7AaQlLHXn-HI5M,13
695
+ hiddifypanel-8.0.0.dev28.dist-info/RECORD,,