xync-client 0.0.75.dev0__tar.gz → 0.0.75.dev5__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.
- {xync_client-0.0.75.dev0/xync_client.egg-info → xync_client-0.0.75.dev5}/PKG-INFO +1 -1
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/tests/TestEx.py +7 -7
- xync_client-0.0.75.dev5/xync_client/Pms/Payeer/__init__.py +71 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5/xync_client.egg-info}/PKG-INFO +1 -1
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client.egg-info/SOURCES.txt +1 -1
- xync_client-0.0.75.dev0/xync_client/extractor.py +0 -554
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/.env.sample +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/.gitignore +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/.pre-commit-config.yaml +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/README.md +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/__init__.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/makefile +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/pyproject.toml +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/setup.cfg +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/tests/TestAgent.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/tests/TestAsset.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/tests/TestOrder.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/tests/_todo_refact/Binance/test_binance.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/tests/_todo_refact/Bybit/test_bybit.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/tests/_todo_refact/Bybit/test_bybit_p2p.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/tests/_todo_refact/Gate/test_gate.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/tests/_todo_refact/Wallet/test_agent.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/tests/_todo_refact/Wallet/test_ex.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/tests/_todo_refact/__init__.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/tests/_todo_refact/_test_ex.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Abc/Agent.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Abc/Asset.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Abc/Auth.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Abc/BaseTest.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Abc/Ex.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Abc/Exception.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Abc/InAgent.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Abc/Order.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Abc/xtype.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Binance/__init__.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Binance/binance_async.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Binance/earn_api.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Binance/etype/ad.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Binance/etype/pm.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Binance/ex.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Binance/exceptions.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Binance/sapi.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Binance/web_c2c.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/BingX/__init__.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/BingX/agent.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/BingX/base.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/BingX/etype/ad.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/BingX/etype/pm.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/BingX/ex.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/BingX/req.mjs +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/BingX/sign.js +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/BitGet/__init__.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/BitGet/agent.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/BitGet/etype/ad.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/BitGet/ex.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/BitPapa/ex.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Bybit/InAgent.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Bybit/agent.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Bybit/etype/ad.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Bybit/etype/cred.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Bybit/etype/order.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Bybit/ex.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Bybit/order.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Bybit/web_earn.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Bybit/web_p2p.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Bybit/ws.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Gate/etype/ad.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Gate/ex.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Gate/premarket.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Gmail/__init__.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Htx/agent.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Htx/earn.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Htx/etype/__init__.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Htx/etype/ad.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Htx/etype/cred.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Htx/etype/pm.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Htx/etype/test.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Htx/ex.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/KuCoin/etype/ad.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/KuCoin/etype/pm.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/KuCoin/ex.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/KuCoin/web.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Mexc/etype/ad.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Mexc/etype/pm.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Mexc/ex.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Okx/etype/ad.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Okx/etype/pm.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Okx/ex.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Pms/.gitignore +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Pms/Alfa/__init__.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Pms/Alfa/state.json +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Pms/MTS/__init__.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Pms/Ozon/__init__.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Pms/Sber/__init__.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Pms/Tinkoff/__init__.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Pms/Volet/__init__.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Pms/Volet/_todo_req/req.mjs +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Pms/Volet/_todo_req/req.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Pms/Volet/api.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Pms/Volet/pl.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/Pms/Yandex/__init__.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/TgWallet/agent.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/TgWallet/asset.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/TgWallet/auth.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/TgWallet/ex.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/TgWallet/inAgent.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/TgWallet/order.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/TgWallet/pyd.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/TgWallet/pyro.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/TgWallet/web.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/__init__.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/loader.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client/pm_unifier.py +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client.egg-info/dependency_links.txt +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client.egg-info/requires.txt +0 -0
- {xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client.egg-info/top_level.txt +0 -0
|
@@ -25,13 +25,13 @@ class TestEx(BaseTest):
|
|
|
25
25
|
yield clients
|
|
26
26
|
[await cl.close() for cl in clients]
|
|
27
27
|
|
|
28
|
-
#
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
# 0
|
|
29
|
+
async def test_set_coins(self, clients: list[BaseExClient]):
|
|
30
|
+
for client in clients:
|
|
31
|
+
await client.set_coinexs()
|
|
32
|
+
t, _ = await ExStat.update_or_create({"ok": True}, ex=client.ex, action=ExAction.set_coins)
|
|
33
|
+
assert t.ok, "Coins not set"
|
|
34
|
+
logging.info(f"{client.ex.name}: {ExAction.ads.name} - ok")
|
|
35
35
|
|
|
36
36
|
# 0
|
|
37
37
|
async def test_set_pmcurs(self, clients: list[BaseExClient]):
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
import time
|
|
3
|
+
|
|
4
|
+
from x_model import init_db
|
|
5
|
+
from xync_schema import models
|
|
6
|
+
from xync_client.loader import TORM
|
|
7
|
+
from camoufox.async_api import AsyncCamoufox
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
async def _input(page):
|
|
11
|
+
for i in input("email: "):
|
|
12
|
+
await page.keyboard.press(i)
|
|
13
|
+
await page.wait_for_timeout(1000)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
async def payment(page, agent, account, amount):
|
|
17
|
+
await page.goto("https://payeer.com/en/account/send/")
|
|
18
|
+
await page.locator('input[name="param_ACCOUNT_NUMBER"]').fill(account)
|
|
19
|
+
time.sleep(1)
|
|
20
|
+
await page.locator('input[name="sum_receive"]').fill(amount)
|
|
21
|
+
time.sleep(1)
|
|
22
|
+
await page.click(".btn.n-form--btn.n-form--btn-mod")
|
|
23
|
+
time.sleep(1)
|
|
24
|
+
await page.click(".btn.n-form--btn.n-form--btn-mod")
|
|
25
|
+
time.sleep(1)
|
|
26
|
+
await page.locator(".input4").fill(agent.auth.get("master_key"))
|
|
27
|
+
time.sleep(1)
|
|
28
|
+
await page.click(".ok.button_green2")
|
|
29
|
+
await page.goto("https://payeer.com/ru/account/history/")
|
|
30
|
+
await page.click('[class^="history-id-"] a.link')
|
|
31
|
+
time.sleep(1)
|
|
32
|
+
payment = await page.query_selector(".ui-dialog.ui-corner-all")
|
|
33
|
+
await payment.screenshot(path="scrin.png")
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
async def main():
|
|
37
|
+
_ = await init_db(TORM, True)
|
|
38
|
+
agent = await models.PmAgent.filter(pm__norm="payeer", auth__isnull=False).first()
|
|
39
|
+
async with AsyncCamoufox(os=["windows", "macos", "linux"]) as playwright:
|
|
40
|
+
context = await playwright.new_context(storage_state=agent.state, record_video_dir="videos")
|
|
41
|
+
page = await context.new_page()
|
|
42
|
+
# await page.wait_for_timeout(15000)
|
|
43
|
+
await page.goto("https://payeer.com/en/")
|
|
44
|
+
try:
|
|
45
|
+
if not agent.state:
|
|
46
|
+
await asyncio.sleep(1)
|
|
47
|
+
await page.click(".btn.btn--login.white-login")
|
|
48
|
+
time.sleep(2)
|
|
49
|
+
await page.locator('input[name="email"]').fill(agent.auth.get("email"))
|
|
50
|
+
time.sleep(1)
|
|
51
|
+
await page.locator('input[name="password"]').fill(agent.auth.get("passwd"))
|
|
52
|
+
time.sleep(1)
|
|
53
|
+
await page.locator(".login-form__login-btn.step1").click()
|
|
54
|
+
time.sleep(5)
|
|
55
|
+
await page.locator(".login-form__login-btn.step1").click()
|
|
56
|
+
time.sleep(1)
|
|
57
|
+
if await page.locator(".form-input-top").is_visible():
|
|
58
|
+
await _input(page)
|
|
59
|
+
await page.click(".login-form__login-btn.step2")
|
|
60
|
+
agent.state = await page.context.storage_state()
|
|
61
|
+
await agent.save()
|
|
62
|
+
time.sleep(5)
|
|
63
|
+
else:
|
|
64
|
+
await payment(page, agent, "P1132982965", "1")
|
|
65
|
+
time.sleep(5)
|
|
66
|
+
finally:
|
|
67
|
+
await playwright.close()
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
if __name__ == "__main__":
|
|
71
|
+
asyncio.run(main())
|
|
@@ -18,7 +18,6 @@ tests/_todo_refact/Gate/test_gate.py
|
|
|
18
18
|
tests/_todo_refact/Wallet/test_agent.py
|
|
19
19
|
tests/_todo_refact/Wallet/test_ex.py
|
|
20
20
|
xync_client/__init__.py
|
|
21
|
-
xync_client/extractor.py
|
|
22
21
|
xync_client/loader.py
|
|
23
22
|
xync_client/pm_unifier.py
|
|
24
23
|
xync_client.egg-info/PKG-INFO
|
|
@@ -94,6 +93,7 @@ xync_client/Pms/Alfa/__init__.py
|
|
|
94
93
|
xync_client/Pms/Alfa/state.json
|
|
95
94
|
xync_client/Pms/MTS/__init__.py
|
|
96
95
|
xync_client/Pms/Ozon/__init__.py
|
|
96
|
+
xync_client/Pms/Payeer/__init__.py
|
|
97
97
|
xync_client/Pms/Sber/__init__.py
|
|
98
98
|
xync_client/Pms/Tinkoff/__init__.py
|
|
99
99
|
xync_client/Pms/Volet/__init__.py
|
|
@@ -1,554 +0,0 @@
|
|
|
1
|
-
names = {
|
|
2
|
-
"александр",
|
|
3
|
-
"алексей",
|
|
4
|
-
"андрей",
|
|
5
|
-
"антон",
|
|
6
|
-
"артем",
|
|
7
|
-
"борис",
|
|
8
|
-
"вадим",
|
|
9
|
-
"валентин",
|
|
10
|
-
"валерий",
|
|
11
|
-
"василий",
|
|
12
|
-
"виктор",
|
|
13
|
-
"виталий",
|
|
14
|
-
"владимир",
|
|
15
|
-
"владислав",
|
|
16
|
-
"георгий",
|
|
17
|
-
"григорий",
|
|
18
|
-
"денис",
|
|
19
|
-
"дмитрий",
|
|
20
|
-
"евгений",
|
|
21
|
-
"егор",
|
|
22
|
-
"иван",
|
|
23
|
-
"игорь",
|
|
24
|
-
"илья",
|
|
25
|
-
"кирилл",
|
|
26
|
-
"константин",
|
|
27
|
-
"леонид",
|
|
28
|
-
"максим",
|
|
29
|
-
"михаил",
|
|
30
|
-
"никита",
|
|
31
|
-
"николай",
|
|
32
|
-
"олег",
|
|
33
|
-
"павел",
|
|
34
|
-
"петр",
|
|
35
|
-
"роман",
|
|
36
|
-
"сергей",
|
|
37
|
-
"станислав",
|
|
38
|
-
"степан",
|
|
39
|
-
"федор",
|
|
40
|
-
"филипп",
|
|
41
|
-
"юрий",
|
|
42
|
-
"ярослав",
|
|
43
|
-
"аркадий",
|
|
44
|
-
"арсений",
|
|
45
|
-
"богдан",
|
|
46
|
-
"вячеслав",
|
|
47
|
-
"геннадий",
|
|
48
|
-
"даниил",
|
|
49
|
-
"дамир",
|
|
50
|
-
"игнат",
|
|
51
|
-
"лев",
|
|
52
|
-
"леонт",
|
|
53
|
-
"макар",
|
|
54
|
-
"марк",
|
|
55
|
-
"матвей",
|
|
56
|
-
"назар",
|
|
57
|
-
"остап",
|
|
58
|
-
"родион",
|
|
59
|
-
"руслан",
|
|
60
|
-
"святослав",
|
|
61
|
-
"семен",
|
|
62
|
-
"тарас",
|
|
63
|
-
"тимофей",
|
|
64
|
-
"тимур",
|
|
65
|
-
"трофим",
|
|
66
|
-
"устин",
|
|
67
|
-
"эдуард",
|
|
68
|
-
"эрик",
|
|
69
|
-
"юлий",
|
|
70
|
-
"альберт",
|
|
71
|
-
"анатолий",
|
|
72
|
-
"арсентий",
|
|
73
|
-
"артур",
|
|
74
|
-
"афанасий",
|
|
75
|
-
"венедикт",
|
|
76
|
-
"виктор",
|
|
77
|
-
"виссарион",
|
|
78
|
-
"гавриил",
|
|
79
|
-
"давид",
|
|
80
|
-
"демьян",
|
|
81
|
-
"ефим",
|
|
82
|
-
"захар",
|
|
83
|
-
"иннокентий",
|
|
84
|
-
"казимир",
|
|
85
|
-
"клим",
|
|
86
|
-
"лаврентий",
|
|
87
|
-
"леонтий",
|
|
88
|
-
"лука",
|
|
89
|
-
"мирон",
|
|
90
|
-
"модест",
|
|
91
|
-
"нестор",
|
|
92
|
-
"никифор",
|
|
93
|
-
"парфен",
|
|
94
|
-
"прохор",
|
|
95
|
-
"савва",
|
|
96
|
-
"самсон",
|
|
97
|
-
"тихон",
|
|
98
|
-
"трифон",
|
|
99
|
-
"фома",
|
|
100
|
-
"харитон",
|
|
101
|
-
"ермолай",
|
|
102
|
-
"ахмед",
|
|
103
|
-
"мустафа",
|
|
104
|
-
"мухаммед",
|
|
105
|
-
"али",
|
|
106
|
-
"омар",
|
|
107
|
-
"хасан",
|
|
108
|
-
"хуссейн",
|
|
109
|
-
"фарид",
|
|
110
|
-
"амир",
|
|
111
|
-
"халил",
|
|
112
|
-
"ибрагим",
|
|
113
|
-
"исмаил",
|
|
114
|
-
"юсуф",
|
|
115
|
-
"салим",
|
|
116
|
-
"рашид",
|
|
117
|
-
"карим",
|
|
118
|
-
"назим",
|
|
119
|
-
"самир",
|
|
120
|
-
"тарик",
|
|
121
|
-
"заки",
|
|
122
|
-
"рамиз",
|
|
123
|
-
"басим",
|
|
124
|
-
"джамиль",
|
|
125
|
-
"хабиб",
|
|
126
|
-
"адель",
|
|
127
|
-
"анвар",
|
|
128
|
-
"асад",
|
|
129
|
-
"башир",
|
|
130
|
-
"вахид",
|
|
131
|
-
"гасан",
|
|
132
|
-
"дамир",
|
|
133
|
-
"зафар",
|
|
134
|
-
"ильяс",
|
|
135
|
-
"кемаль",
|
|
136
|
-
"лейла",
|
|
137
|
-
"магомед",
|
|
138
|
-
"наиль",
|
|
139
|
-
"осман",
|
|
140
|
-
"рафик",
|
|
141
|
-
"саид",
|
|
142
|
-
"рамиль",
|
|
143
|
-
"фатих",
|
|
144
|
-
"хамид",
|
|
145
|
-
"эльдар",
|
|
146
|
-
"яшар",
|
|
147
|
-
"азиз",
|
|
148
|
-
"акрам",
|
|
149
|
-
"альтаф",
|
|
150
|
-
"александра",
|
|
151
|
-
"алла",
|
|
152
|
-
"анастасия",
|
|
153
|
-
"анна",
|
|
154
|
-
"антонина",
|
|
155
|
-
"валентина",
|
|
156
|
-
"валерия",
|
|
157
|
-
"вера",
|
|
158
|
-
"вероника",
|
|
159
|
-
"виктория",
|
|
160
|
-
"галина",
|
|
161
|
-
"дарья",
|
|
162
|
-
"екатерина",
|
|
163
|
-
"елена",
|
|
164
|
-
"елизавета",
|
|
165
|
-
"жанна",
|
|
166
|
-
"зинаида",
|
|
167
|
-
"зоя",
|
|
168
|
-
"инна",
|
|
169
|
-
"ирина",
|
|
170
|
-
"кристина",
|
|
171
|
-
"ксения",
|
|
172
|
-
"лариса",
|
|
173
|
-
"лидия",
|
|
174
|
-
"любовь",
|
|
175
|
-
"людмила",
|
|
176
|
-
"майя",
|
|
177
|
-
"маргарита",
|
|
178
|
-
"марина",
|
|
179
|
-
"мария",
|
|
180
|
-
"надежда",
|
|
181
|
-
"наталья",
|
|
182
|
-
"нина",
|
|
183
|
-
"оксана",
|
|
184
|
-
"ольга",
|
|
185
|
-
"полина",
|
|
186
|
-
"раиса",
|
|
187
|
-
"светлана",
|
|
188
|
-
"софья",
|
|
189
|
-
"тамара",
|
|
190
|
-
"татьяна",
|
|
191
|
-
"ульяна",
|
|
192
|
-
"юлия",
|
|
193
|
-
"яна",
|
|
194
|
-
"агата",
|
|
195
|
-
"агния",
|
|
196
|
-
"алевтина",
|
|
197
|
-
"алина",
|
|
198
|
-
"алиса",
|
|
199
|
-
"альбина",
|
|
200
|
-
"ангелина",
|
|
201
|
-
"антонида",
|
|
202
|
-
"арина",
|
|
203
|
-
"варвара",
|
|
204
|
-
"василиса",
|
|
205
|
-
"владислава",
|
|
206
|
-
"евгения",
|
|
207
|
-
"евдокия",
|
|
208
|
-
"зинаида",
|
|
209
|
-
"злата",
|
|
210
|
-
"карина",
|
|
211
|
-
"клара",
|
|
212
|
-
"лада",
|
|
213
|
-
"лилия",
|
|
214
|
-
"милена",
|
|
215
|
-
"мирослава",
|
|
216
|
-
"нелли",
|
|
217
|
-
"регина",
|
|
218
|
-
"римма",
|
|
219
|
-
"роза",
|
|
220
|
-
"розалия",
|
|
221
|
-
"руслана",
|
|
222
|
-
"снежана",
|
|
223
|
-
"станислава",
|
|
224
|
-
"стефания",
|
|
225
|
-
"таисия",
|
|
226
|
-
"уляна",
|
|
227
|
-
"фаина",
|
|
228
|
-
"эвелина",
|
|
229
|
-
"эльвира",
|
|
230
|
-
"эмилия",
|
|
231
|
-
"юлиана",
|
|
232
|
-
"ярослава",
|
|
233
|
-
"августа",
|
|
234
|
-
"агафья",
|
|
235
|
-
"аделаида",
|
|
236
|
-
"алёна",
|
|
237
|
-
"анжела",
|
|
238
|
-
"анжелика",
|
|
239
|
-
"белла",
|
|
240
|
-
"богдана",
|
|
241
|
-
"валерьяна",
|
|
242
|
-
"василина",
|
|
243
|
-
"диана",
|
|
244
|
-
"дина",
|
|
245
|
-
"домна",
|
|
246
|
-
"ева",
|
|
247
|
-
"жозефина",
|
|
248
|
-
"изабелла",
|
|
249
|
-
"калерия",
|
|
250
|
-
"камилла",
|
|
251
|
-
"капитолина",
|
|
252
|
-
"каролина",
|
|
253
|
-
"лариса",
|
|
254
|
-
"лиана",
|
|
255
|
-
"лика",
|
|
256
|
-
"лилиана",
|
|
257
|
-
"матрена",
|
|
258
|
-
"милана",
|
|
259
|
-
"мирра",
|
|
260
|
-
"ника",
|
|
261
|
-
"пелагея",
|
|
262
|
-
"прасковья",
|
|
263
|
-
"серафима",
|
|
264
|
-
"эмма",
|
|
265
|
-
"айша",
|
|
266
|
-
"амина",
|
|
267
|
-
"лейла",
|
|
268
|
-
"фатима",
|
|
269
|
-
"зейнаб",
|
|
270
|
-
"хадиджа",
|
|
271
|
-
"марьям",
|
|
272
|
-
"сафия",
|
|
273
|
-
"алия",
|
|
274
|
-
"амира",
|
|
275
|
-
"асия",
|
|
276
|
-
"дина",
|
|
277
|
-
"захра",
|
|
278
|
-
"зарема",
|
|
279
|
-
"камила",
|
|
280
|
-
"карима",
|
|
281
|
-
"лейла",
|
|
282
|
-
"малика",
|
|
283
|
-
"надия",
|
|
284
|
-
"рания",
|
|
285
|
-
"рашида",
|
|
286
|
-
"самира",
|
|
287
|
-
"сара",
|
|
288
|
-
"сафина",
|
|
289
|
-
"фариза",
|
|
290
|
-
"хабиба",
|
|
291
|
-
"ханна",
|
|
292
|
-
"ясмина",
|
|
293
|
-
"азиза",
|
|
294
|
-
"альфия",
|
|
295
|
-
"амаль",
|
|
296
|
-
"асма",
|
|
297
|
-
"гульнара",
|
|
298
|
-
"джамиля",
|
|
299
|
-
"зара",
|
|
300
|
-
"зухра",
|
|
301
|
-
"ильвира",
|
|
302
|
-
"индира",
|
|
303
|
-
"карима",
|
|
304
|
-
"лариса",
|
|
305
|
-
"мадина",
|
|
306
|
-
"нурия",
|
|
307
|
-
"разия",
|
|
308
|
-
"рамиля",
|
|
309
|
-
"регина",
|
|
310
|
-
"римма",
|
|
311
|
-
"роза",
|
|
312
|
-
"софья",
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
import re
|
|
316
|
-
from typing import List, Dict
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
def extract_data_from_text(text: str) -> Dict[str, List[str]]:
|
|
320
|
-
"""
|
|
321
|
-
Извлекает из текста номера телефонов, email-ы, названия банков/платежных систем
|
|
322
|
-
и их реквизиты (номера карт и электронных кошельков).
|
|
323
|
-
"""
|
|
324
|
-
|
|
325
|
-
# Паттерны для поиска
|
|
326
|
-
patterns = {
|
|
327
|
-
"phones": [
|
|
328
|
-
# Российские номера с +7 или 8, различные форматы
|
|
329
|
-
r"(?:\+7|8)[\s\-]?\(?[0-9]{3}\)?[\s\-]?[0-9]{3}[\s\-]?[0-9]{2}[\s\-]?[0-9]{2}",
|
|
330
|
-
# Номера без кода страны
|
|
331
|
-
r"(?<!\d)[0-9]{3}[\s\-]?[0-9]{3}[\s\-]?[0-9]{2}[\s\-]?[0-9]{2}(?!\d)",
|
|
332
|
-
# Короткие номера
|
|
333
|
-
r"(?<!\d)[0-9]{3}[\s\-]?[0-9]{4}(?!\d)",
|
|
334
|
-
],
|
|
335
|
-
"emails": [r"\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b"],
|
|
336
|
-
"banks": [
|
|
337
|
-
# Российские банки
|
|
338
|
-
r"(?i)\b(?:сбербанк|втб|газпромбанк|альфа[\s\-]?банк|тинькофф|открытие|"
|
|
339
|
-
r"россельхозбанк|райффайзен|уралсиб|росбанк|ак барс|мтс[\s\-]?банк|"
|
|
340
|
-
r"совкомбанк|хоум[\s\-]?кредит|ренессанс|промсвязьбанк|кредит[\s\-]?европа)\b",
|
|
341
|
-
# Платежные системы
|
|
342
|
-
r"(?i)\b(?:яндекс[\s\.]?деньги|яндекс[\s\.]?денег|киви|qiwi|webmoney|"
|
|
343
|
-
r"вебмани|paypal|пэйпал|visa|виза|mastercard|мастеркард|мир|"
|
|
344
|
-
r"apple[\s\-]?pay|google[\s\-]?pay|samsung[\s\-]?pay)\b",
|
|
345
|
-
],
|
|
346
|
-
"card_numbers": [
|
|
347
|
-
# Номера банковских карт (группы по 4 цифры)
|
|
348
|
-
r"\b(?:[0-9]{4}[\s\-]?){3}[0-9]{4}\b",
|
|
349
|
-
# Номера карт без разделителей
|
|
350
|
-
r"\b[0-9]{16}\b",
|
|
351
|
-
],
|
|
352
|
-
"wallets": [
|
|
353
|
-
# QIWI кошельки (номер телефона)
|
|
354
|
-
r"(?i)(?:qiwi|киви)[\s\w]*(?:кошел[её]к|wallet)[\s\w]*(?:\+7|8)?[0-9]{10}",
|
|
355
|
-
# Яндекс.Деньги
|
|
356
|
-
r"(?i)(?:яндекс[\s\.]?ден[её]г|yandex[\s\.]?money)[\s\w]*[0-9]{11,16}",
|
|
357
|
-
# WebMoney
|
|
358
|
-
r"(?i)webmoney[\s\w]*[RZE][0-9]{12}",
|
|
359
|
-
# Общие электронные кошельки (последовательности цифр после ключевых слов)
|
|
360
|
-
r"(?i)(?:кошел[её]к|wallet|счет|account)[\s\w]*[0-9]{8,20}",
|
|
361
|
-
],
|
|
362
|
-
"fio": [
|
|
363
|
-
# Имя Отчество Фамилия (полное ФИО)
|
|
364
|
-
r"\b[А-ЯЁ][а-яё]+\s+[А-ЯЁ][а-яё]+\s+[А-ЯЁ][а-яё]+\b",
|
|
365
|
-
# Имя Фамилия (без отчества)
|
|
366
|
-
r"\b[А-ЯЁ][а-яё]+\s+[А-ЯЁ][а-яё]+(?!\s+[А-ЯЁ][а-яё]+)\b",
|
|
367
|
-
# Имя Отчество Ф. (отчество полное, фамилия сокращенная)
|
|
368
|
-
r"\b[А-ЯЁ][а-яё]+\s+[А-ЯЁ][а-яё]+\s+[А-ЯЁ]\.\b",
|
|
369
|
-
# Имя Ф. (имя полное, фамилия сокращенная)
|
|
370
|
-
r"\b[А-ЯЁ][а-яё]+\s+[А-ЯЁ]\.\b",
|
|
371
|
-
],
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
results = {"phones": [], "emails": [], "banks": [], "card_numbers": [], "wallets": [], "fio": []}
|
|
375
|
-
|
|
376
|
-
# Поиск телефонов
|
|
377
|
-
for pattern in patterns["phones"]:
|
|
378
|
-
matches = re.findall(pattern, text)
|
|
379
|
-
results["phones"].extend(matches)
|
|
380
|
-
|
|
381
|
-
# Поиск email-ов
|
|
382
|
-
for pattern in patterns["emails"]:
|
|
383
|
-
matches = re.findall(pattern, text)
|
|
384
|
-
results["emails"].extend(matches)
|
|
385
|
-
|
|
386
|
-
# Поиск банков и платежных систем
|
|
387
|
-
for pattern in patterns["banks"]:
|
|
388
|
-
matches = re.findall(pattern, text)
|
|
389
|
-
results["banks"].extend(matches)
|
|
390
|
-
|
|
391
|
-
# Поиск номеров карт
|
|
392
|
-
for pattern in patterns["card_numbers"]:
|
|
393
|
-
matches = re.findall(pattern, text)
|
|
394
|
-
# Фильтруем только валидные номера карт (начинающиеся с 4, 5, 6, 2 и т.д.)
|
|
395
|
-
valid_cards = []
|
|
396
|
-
for match in matches:
|
|
397
|
-
clean_number = re.sub(r"[\s\-]", "", match)
|
|
398
|
-
if clean_number[0] in "23456" and len(clean_number) == 16:
|
|
399
|
-
valid_cards.append(match)
|
|
400
|
-
results["card_numbers"].extend(valid_cards)
|
|
401
|
-
|
|
402
|
-
# Поиск электронных кошельков
|
|
403
|
-
for pattern in patterns["wallets"]:
|
|
404
|
-
matches = re.findall(pattern, text)
|
|
405
|
-
results["wallets"].extend(matches)
|
|
406
|
-
|
|
407
|
-
# Поиск ФИО
|
|
408
|
-
all_fio_matches = []
|
|
409
|
-
for pattern in patterns["fio"]:
|
|
410
|
-
matches = re.findall(pattern, text)
|
|
411
|
-
all_fio_matches.extend(matches)
|
|
412
|
-
|
|
413
|
-
# Фильтруем ФИО по наличию настоящих имен
|
|
414
|
-
filtered_fio = []
|
|
415
|
-
for fio in all_fio_matches:
|
|
416
|
-
words = fio.split()
|
|
417
|
-
first_word = words[0].lower()
|
|
418
|
-
|
|
419
|
-
# Проверяем, что первое слово - это имя из нашего списка
|
|
420
|
-
if first_word in names:
|
|
421
|
-
# Дополнительно проверяем длину слов
|
|
422
|
-
valid = True
|
|
423
|
-
for word in words:
|
|
424
|
-
clean_word = word.rstrip(".")
|
|
425
|
-
if len(clean_word) < 2:
|
|
426
|
-
valid = False
|
|
427
|
-
break
|
|
428
|
-
|
|
429
|
-
if valid:
|
|
430
|
-
filtered_fio.append(fio)
|
|
431
|
-
|
|
432
|
-
results["fio"] = filtered_fio
|
|
433
|
-
|
|
434
|
-
# Удаляем дубликаты
|
|
435
|
-
for key in results:
|
|
436
|
-
results[key] = list(set(results[key]))
|
|
437
|
-
|
|
438
|
-
return results
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
def clean_phone_number(phone: str) -> int:
|
|
442
|
-
"""Очищает номер телефона от лишних символов."""
|
|
443
|
-
return int(re.sub(r"[+\s\-()]", "", phone))
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
def format_results(results: Dict[str, List[str]]) -> str:
|
|
447
|
-
"""Форматирует результаты для вывода."""
|
|
448
|
-
output = []
|
|
449
|
-
|
|
450
|
-
if results["phones"]:
|
|
451
|
-
output.append("📞 ТЕЛЕФОНЫ:")
|
|
452
|
-
for phone in results["phones"]:
|
|
453
|
-
clean = clean_phone_number(phone)
|
|
454
|
-
output.append(f" • {phone} ({clean})")
|
|
455
|
-
output.append("")
|
|
456
|
-
|
|
457
|
-
if results["emails"]:
|
|
458
|
-
output.append("📧 EMAIL-Ы:")
|
|
459
|
-
for email in results["emails"]:
|
|
460
|
-
output.append(f" • {email}")
|
|
461
|
-
output.append("")
|
|
462
|
-
|
|
463
|
-
if results["banks"]:
|
|
464
|
-
output.append("🏦 БАНКИ И ПЛАТЕЖНЫЕ СИСТЕМЫ:")
|
|
465
|
-
for bank in results["banks"]:
|
|
466
|
-
output.append(f" • {bank}")
|
|
467
|
-
output.append("")
|
|
468
|
-
|
|
469
|
-
if results["card_numbers"]:
|
|
470
|
-
output.append("💳 НОМЕРА КАРТ:")
|
|
471
|
-
for card in results["card_numbers"]:
|
|
472
|
-
masked = card[:4] + " **** **** " + card[-4:]
|
|
473
|
-
output.append(f" • {card} (замаскированный: {masked})")
|
|
474
|
-
output.append("")
|
|
475
|
-
|
|
476
|
-
if results["wallets"]:
|
|
477
|
-
output.append("💰 ЭЛЕКТРОННЫЕ КОШЕЛЬКИ:")
|
|
478
|
-
for wallet in results["wallets"]:
|
|
479
|
-
output.append(f" • {wallet}")
|
|
480
|
-
output.append("")
|
|
481
|
-
|
|
482
|
-
if results["fio"]:
|
|
483
|
-
output.append("👤 ФИО:")
|
|
484
|
-
for fio in results["fio"]:
|
|
485
|
-
# Определяем тип ФИО (только запрошенные форматы)
|
|
486
|
-
words = fio.split()
|
|
487
|
-
if len(words) == 3 and not any("." in word for word in words):
|
|
488
|
-
fio_type = "Имя Отчество Фамилия"
|
|
489
|
-
elif len(words) == 2 and not any("." in word for word in words):
|
|
490
|
-
fio_type = "Имя Фамилия"
|
|
491
|
-
elif len(words) == 3 and words[2].endswith("."):
|
|
492
|
-
fio_type = "Имя Отчество Ф."
|
|
493
|
-
elif len(words) == 2 and words[1].endswith("."):
|
|
494
|
-
fio_type = "Имя Ф."
|
|
495
|
-
else:
|
|
496
|
-
continue # Пропускаем неподходящие форматы
|
|
497
|
-
|
|
498
|
-
output.append(f" • {fio} ({fio_type})")
|
|
499
|
-
output.append("")
|
|
500
|
-
|
|
501
|
-
return "\n".join(output) if output else "Данные не найдены."
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
# Пример использования
|
|
505
|
-
if __name__ == "__main__":
|
|
506
|
-
# Тестовый текст
|
|
507
|
-
test_text = """
|
|
508
|
-
Свяжитесь со мной по телефону +7 (999)123-45-67 или 8-800-555-35-35.
|
|
509
|
-
Email для связи: example@gmail.com или test.user@yandex.ru
|
|
510
|
-
|
|
511
|
-
Принимаю оплату на карту Сбербанка 5536 9137 8765 4321
|
|
512
|
-
Также можете перевести на Тинькофф или через QIWI кошелек +79991234567
|
|
513
|
-
|
|
514
|
-
WebMoney кошелек: R123456789012
|
|
515
|
-
Яндекс.Деньги: 410012345678901
|
|
516
|
-
|
|
517
|
-
Работаю с ВТБ, Альфа-банком, принимаю Visa и MasterCard.
|
|
518
|
-
PayPal тоже подходит: paypal@example.com
|
|
519
|
-
|
|
520
|
-
Контактные лица:
|
|
521
|
-
- Ростов Великий
|
|
522
|
-
- Велкам в клаб
|
|
523
|
-
- зхуй пизда руль
|
|
524
|
-
- опа а
|
|
525
|
-
- Иванов Петр Сергеевич (директор)
|
|
526
|
-
- Смирнова Анна Владимировна (бухгалтер)
|
|
527
|
-
- Петров И. С. (менеджер)
|
|
528
|
-
- Сидоров Анатолий Сидоров. (консультант)
|
|
529
|
-
- Козлов Дмитрий Александрович
|
|
530
|
-
- Волкова Мария Ивановна
|
|
531
|
-
- Федоров П. И.
|
|
532
|
-
- Нестор М.
|
|
533
|
-
- А. С. Пушкин
|
|
534
|
-
- Лермонтов М. Ю.
|
|
535
|
-
"""
|
|
536
|
-
|
|
537
|
-
print("Анализ текста:")
|
|
538
|
-
print("=" * 50)
|
|
539
|
-
print(test_text)
|
|
540
|
-
print("=" * 50)
|
|
541
|
-
|
|
542
|
-
results = extract_data_from_text(test_text)
|
|
543
|
-
formatted_output = format_results(results)
|
|
544
|
-
|
|
545
|
-
print("\nРЕЗУЛЬТАТЫ ИЗВЛЕЧЕНИЯ:")
|
|
546
|
-
print("=" * 50)
|
|
547
|
-
print(formatted_output)
|
|
548
|
-
|
|
549
|
-
# Также можно получить сырые данные
|
|
550
|
-
print("\nСЫРЫЕ ДАННЫЕ (словарь):")
|
|
551
|
-
print("=" * 50)
|
|
552
|
-
for key, values in results.items():
|
|
553
|
-
if values:
|
|
554
|
-
print(f"{key}: {values}")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/tests/_todo_refact/Binance/test_binance.py
RENAMED
|
File without changes
|
|
File without changes
|
{xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/tests/_todo_refact/Bybit/test_bybit_p2p.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xync_client-0.0.75.dev0 → xync_client-0.0.75.dev5}/xync_client.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|