分享自己用 Go 写的游戏加速器 IkaGo - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
Sketch
V2EX    分享创造

分享自己用 Go 写的游戏加速器 IkaGo

  •  
  •   Sketch 2020-05-16 16:45:27 +08:00 15657 次点击
    这是一个创建于 2024 天前的主题,其中的信息可能已经有所发展或是发生改变。

    作为在校学生以及任系玩家,闲暇时间一直在 Switch 上玩,但平台上的数款游戏的联机都是玩家间各自通过 UDP 连接完成的。如果没有稳定的 UDP 环境,或者 NAT 类型不佳的话可能就只能享受单机。其中一个简单的解决途径便是使用加速器,但因为不想花钱,所以我就自己实现了一个。

    IkaGo

    IkaGo 是一个以 Go 语言撰写的,用于绕过 UDP 封锁、UDP QoS 以及 NAT 防火墙的代理。

    附上程序框图:

    diagram

    特性

    • 利用了类似 Udp2raw-tunnel 的 FakeTCP 机制,绕过 UDP 封锁与 UDP QoS
    • 利用了代理 ARP 应答指定 IP 地址的请求,实现将自身作为网关处理来自指定 IP 地址的网络流量(也就是类似市面上的加速器,将主机的 IP 地址与网关设为网络环境中不存在的值,由加速器来处理流量)
    • 通过 IkaGo-web,一个相关联的前端项目,监控网络流量
    • 多路复用、跨平台、Full Cone NAT 、加密、KCP 支持……

    与市面上的加速器的比较

    • IkaGo 将所有支持的包通过 FakeTCP 转换为 TCP 包,绕过 UDP 封锁与 UDP QoS
    • 多路复用使得多个主机可以一同被加速
    • 免费(但你还是需要租用 VPS 等服务器)、启动快、无广告、跨平台、设置可自定义、开源……

    一些不得不提的话

    实际上,加速器最重要的是线路而不是技术,市面上的加速器使用的 IPLC 、专线等才是其作为加速器最重要的部分。如果想要真的好好游戏,还是建议选择市面上的产品比较好。

    从本质上看,IkaGo 可以通过串联代理 ARP 、代理以及 Udp2raw-tunnel 来实现,IkaGo 从某种意义上只是简化了大量的中间流程,使得只需要简单的部署就能完成主机加速。

    IkaGo 之所以这样命名,是因为和自己喜欢的游戏有关,イカ+ Go 。

    项目地址


    希望 IkaGo 能帮助到需要解决联机游戏问题的你

    第 1 条附言    2020-05-17 15:18:04 +08:00

    补充

    • 需要游戏加速往往是在游戏中遇到了或是 NAT 穿透失败,或是掉线、高 Ping或是游戏运营商限制玩家 IP 等问题。IkaGo 可以解决这几个问题,但 IkaGo 的设计之初是为了主机加速,也就是应对 NAT 穿透失败这一情况的。由于对加速器而言,线路比技术更重要,如果你想在美服玩游戏并且没有 IPLC,那么选择市面上拥有专线的加速器会更好
    • IkaGo 只能代理来自其他设备的流量,并不能用于代理本地流量。如果你想要加速电脑游戏,那你需要在路由器或是另一台电脑等其他设备上运行 IkaGo。另外,IkaGo 目前不能筛选需要代理的流量而只能代理全部的流量,筛选需要代理的流量这一功能或许会在未来的更新中引入。因此,目前,如果想要加速电脑游戏,我更推荐使用可以通过 PID、PAC 筛选流量的透明代理应用
    • IkaGo 的一个典型使用参数已在 #26#27#29 中提供,如果你依然无法使用 IkaGo,那么可以阅读项目 README 中的 Troubleshoot 一章
    • IkaGo 的一部分实现方法与技术原理已在项目的 开发文档 中提供
    72 条回复    2021-08-07 21:24:38 +08:00
    daya
        1
    daya  
       2020-05-16 17:18:16 +08:00 via iPhone
    很强
    9yu
        2
    9yu  
       2020-05-16 17:24:48 +08:00
    太帅了
    scnace
        3
    scnace  
       2020-05-16 17:24:53 +08:00 via Android
    甚至可以当毕设了(
    labulaka521
        4
    labulaka521  
       2020-05-16 17:45:36 +08:00 via Android
    棒!!!
    timqian
        5
    timqian  
       2020-05-16 18:09:49 +08:00 via Android
    赞,一个月玩一两次动森用户的福音
    donnior
        6
    donnior  
       2020-05-16 18:22:03 +08:00
    @Sketch 感谢楼主,有个问题

    -r addresses: Sources, use comma to separate multiple addresses. Packets with the same source's address will be proxied

    这个参数不太懂是啥意思,要怎么填?
    Sketch
        7
    Sketch  
    OP
       2020-05-16 18:30:10 +08:00 via iPhone
    @donnior 意思就是,转发哪些源地址的流量。
    一个典型的设置是,-publish 10.6.0.1 -r 10.6.0.2,10.6.0.3,然后将被代理设备的网络设置为 IP 10.6.0.2 或 10.6.0.3 网关 10.6.0.1 那就将转发来自 10.6.0.2 和 10.6.0.3 的流量
    NeedforV2
        8
    NeedforV2  
       2020-05-16 19:01:04 +08:00 via Android
    太强了!期待大神弄一个 openwrt 路由上能用的
    lzyliangzheyu
        9
    lzyliangzheyu  
       2020-05-16 19:31:23 +08:00 via Android
    关注一波
    dobelee
        10
    dobelee  
       2020-05-16 19:48:25 +08:00 via iPhone
    不玩游戏的弱弱问一下,游戏加速器和普通代理客户端有什么区别?
    CCIP
        11
    CCIP  
       2020-05-16 19:53:58 +08:00 via Android
    @dobelee 一个本来的作用是加密或者安全 一个是减少延迟和丢包
    Sketch
        12
    Sketch  
    OP
       2020-05-16 20:02:22 +08:00
    @dobelee 正如 @CCIP 说的,游戏加速器主要是用于减少延迟和丢包,所以才说线路是其最主要的一部分。当然,游戏加速器还有一个作用就是使 NAT 穿透失败的用户也能进行游戏,而这是 IkaGo 主要解决的问题
    m0cha
        13
    m0cha  
       2020-05-16 20:11:23 +08:00 via iPhone
    很厉害的大佬,第一次发帖就这么高质量,收藏
    akige
        14
    akige  
       2020-05-16 20:11:32 +08:00 via iPhone
    如果有中国到美国的大带宽光缆资源,可以做什么游戏的加速呢?
    Sketch
        15
    Sketch  
    OP
       2020-05-16 20:35:51 +08:00
    @akige 或许可以通过 IPLC 之类的减少时延,否则可能只有对时延不敏感的游戏可以。所以线路才是加速器最主要的一部分
    donnior
        16
    donnior  
       2020-05-16 20:38:03 +08:00
    mac 上编译不通过,libpcap 已经通过 homebrew 安装了

    # github.com/google/gopacket/pcap
    ../../../go/pkg/mod/github.com/google/[email protected]/pcap/pcap.go:30:22: undefined: pcapErrorNotActivated
    Sketch
        17
    Sketch  
    OP
       2020-05-16 21:03:08 +08:00
    @donnior 感谢反馈,但是我可能很难解决这个问题,因为我并没有 macOS 的系统,所以是通过 GitHub Actions 完成的编译并在其他 macOS 上测试使用的,但一切正常。
    但是有几个细节不知道能不能帮到你。首先是我在 Github Actions 下编译时,并没有配置 libpcap,故 libpcap 可能在 macOS 中已经预装了。另外在 google/gopacket 的 issues 中,也存在类似的案例。因此,这可能是由于 libpcap 的安装,或是 Go 环境配置问题(我更倾向于)导致的
    Sketch
        18
    Sketch  
    OP
       2020-05-16 21:06:30 +08:00
    @donnior 我想再补充一点,在 https://github.com/google/gopacket/issues/629 这一 issue 最后的回复中,有人提到可以 sudo go build 。虽然这并不优雅,但至少 it works 。或许可以帮助到你 : )
    donnior
        19
    donnior  
      &nbp;2020-05-16 21:41:07 +08:00
    @Sketch 我也查到这个 issue 了,折腾无果,放弃编译了;直接使用你发布的 release 包( ubuntu server 和 darwin client ),没有用源码运行;直接在我的 ubuntu 服务器上运行 `./ikago-server -p 38080` ,然后从家里的 mac 中运行客户端时,server 会直接退出,报错如下:

    panic: runtime error: invalid memory address or nil pointer dereference
    [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x67f0a1]

    goroutine 11 [running]:
    log.(*Logger).Output(0x0, 0x2, 0xc000026340, 0x3d, 0x0, 0x0)
    /usr/local/go/src/log/log.go:162 +0x81
    ikago/internal/log.Verbosef(0x8772fd, 0x1b, 0xc000051da0, 0x2, 0x2)
    /mnt/c/Users/Xie/Documents/Code/ikago/internal/log/log.go:82 +0xa0
    ikago/internal/pcap.(*Conn).handshakeSYNACK(0xc000442000, 0xc000063920, 0x0, 0x0)
    /mnt/c/Users/Xie/Documents/Code/ikago/internal/pcap/conn.go:323 +0x7e3
    ikago/internal/pcap.(*Listener).Accept(0xc0003ce180, 0x0, 0x0, 0x0, 0x0)
    /mnt/c/Users/Xie/Documents/Code/ikago/internal/pcap/conn.go:815 +0x8c0
    main.open.func1(0x904c40, 0xc0003ce180)
    /mnt/c/Users/Xie/Documents/Code/ikago/cmd/ikago-server/main.go:555 +0x3b
    created by main.open
    /mnt/c/Users/Xie/Documents/Code/ikago/cmd/ikago-server/main.go:553 +0x7d1

    是不是发布的包有问题?怎么还有你的用户路径?
    Sketch
        20
    Sketch  
    OP
       2020-05-16 21:47:50 +08:00
    @donnior 感谢反馈。抱歉,这 2 份 Linux 的包是在 WSL 下编译的,确实有问题。我已重新在 Linux 下生成并更新了 release 中的 assets 。
    donnior
        21
    donnior  
       2020-05-16 21:54:24 +08:00
    @Sketch 貌似 linux server 包里面实际是 client 的执行文件?
    Sketch
        22
    Sketch  
    OP
       2020-05-16 21:57:25 +08:00
    @donnior 是的,打包打错了,所以又更新了一次
    donnior
        23
    donnior  
       2020-05-16 22:07:17 +08:00
    @Sketch 还是有问题,

    on ubuntu server: `./ikago-server -p 38080`
    on my mac: `sudo ./ikago-client -s $my_server_ip:38080 -r 192.168.1.17 -publish 192.168.1.1`

    连接时候 server 直接挂掉:

    panic: runtime error: invalid memory address or nil pointer dereference
    [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x680d3e]

    goroutine 12 [running]:
    sync.(*Mutex).Lock(...)
    /usr/local/go/src/sync/mutex.go:74
    log.(*Logger).Output(0x0, 0x2, 0xc000026340, 0x3d, 0x0, 0x0)
    /usr/local/go/src/log/log.go:153 +0x6e
    ikago/internal/log.Verbosef(0x890db6, 0x1b, 0xc000055db0, 0x2, 0x2)
    /home/sketch/ikago/internal/log/log.go:82 +0xa0
    ikago/internal/pcap.(*Conn).handshakeSYNACK(0xc000440000, 0xc000067b00, 0x0, 0x0)
    /home/sketch/ikago/internal/pcap/conn.go:323 +0x7cd
    ikago/internal/pcap.(*Listener).Accept(0xc0003d6180, 0x0, 0x0, 0x0, 0x0)
    /home/sketch/ikago/internal/pcap/conn.go:815 +0x9ce
    main.open.func1(0x91adc0, 0xc0003d6180)
    /home/sketch/ikago/cmd/ikago-server/main.go:555 +0x3b
    created by main.open
    /home/sketch/ikago/cmd/ikago-server/main.go:553 +0x7d4
    Sketch
        24
    Sketch  
    OP
       2020-05-16 22:15:31 +08:00
    @donnior 是 issue 。已经解决了,并且重新 release 了版本 v0.4.1 。macOS 我暂时无法打包,所以可以使用 Github Actions 中生成的 artifacts,或者设置 -log 参数。issue 的原因是,即使未设置 log 文件,也打印 verbose 到 log 文件内,导致了空指针引用。十分感谢反馈
    donnior
        25
    donnior  
       2020-05-16 23:17:06 +08:00
    @Sketch 测试了一下,虽然运行成功了,但是没有效果(或者是我用法错了?)

    假设我的设备如下:

    server: 2.3.4.5:38080
    mac : 192.168.1.10
    路由器: 192.168.1.1
    switch 游戏机:192.168.1. 20

    能否帮给个实例配置? 这种方式 swtich 上是否还需要其他配置?
    Sketch
        26
    Sketch  
    OP
       2020-05-16 23:27:53 +08:00
    @donnior macOS 相比起 Windows 的约束更大,所以需要带上代理 ARP 运行,一个典型设置是:
    ikago-client:-rule -p 10.6.0.2 -r 10.6.0.1 -s server:port (配置防火墙,使用代理 ARP 将自身视为 10.6.0.2,代理来自 10.6.0.1 的流量,另外这也是某企鹅加速器的默认设置 )
    Switch 网络设置:IP 地址 10.6.0.1 子网掩码 255.255.255.0 网关 10.6.0.2
    macOS 下务必配置防火墙,具体可参考 README 中的 troubleshoot,或是使用 -rule (如上)并通过 sudo 运行 IkaGo (更推荐)
    Sketch
        27
    Sketch  
    OP
       2020-05-16 23:32:59 +08:00
    @donnior 补充一点,服务器上也建议使用 -rule 并通过 sudo 运行,或是参考 README 中的 troubleshoot 配置防火墙
    AFuture
        28
    AFuture  
       2020-05-16 23:38:49 +08:00 via iPhone
    我差点以为你是一个朋友他也自己用 go 写了一个加速器。
    Sketch
        29
    Sketch  
    OP
       2020-05-16 23:46:02 +08:00 via iPhone
    @donnior 订正一下,#26 中的 -p 应为 -publish
    qbmiller
        30
    qbmiller  
       2020-05-17 00:00:34 +08:00 via iPhone
    在校学生都这么牛逼了吗
    donnior
        31
    donnior  
       2020-05-17 00:15:47 +08:00
    @Sketch 谢谢,貌似已经成功连接了,但是 switch 上实际测试比直连貌似还慢一些 , 后面再多试试看看
    Sketch
        32
    Sketch  
    OP
       2020-05-17 00:21:20 +08:00
    @donnior 不客气,连接慢也有可能是服务器的问题,比如我自己腾讯云,通过 IkaGo 在 Switch 的连接测试里就不怎么样,但是通过 Speedtest 测速就还行,但是游戏的网速要求其实并不高所以没什么大问题。如果还有问题的话可以在 Github 中发 issue : )
    shansing
        33
    shansing  
       2020-05-17 01:05:12 +08:00
    支持一下楼主。顺便问下,因为类似 udp2raw 的方式不确定一些中转服务支不支持,有没有可能后续版本可选去除 fake TCP 呢?
    Sketch
        34
    Sketch  
    OP
       2020-05-17 01:13:34 +08:00   1
    @shansing 其实有使用规范 TCP 传输的功能,仅限通过 config 启动时,在 config 中设置 "tcp": true 开启。但是因为这一功能还不成熟,所以还处于实验性的状态下,并没有写在 README 中
    wangyucn
        35
    wangyucn  
       2020-05-17 05:40:54 +08:00   1
    滋瓷一个
    leafleave
        36
    leafleave  
       2020-05-17 07:28:52 +08:00 via Android
    支持
    TangMonk
        37
    TangMonk  
       2020-05-17 08:40:36 +08:00 via iPhone
    楼主买了 switch online 吗?
    yazoox
        38
    yazoox  
       2020-05-17 09:16:32 +08:00
    厉害!支持一下
    missdeer
        39
    missdeer  
       2020-05-17 10:04:18 +08:00
    牛逼牛逼
    jdlau
        40
    jdlau  
       2020-05-17 11:20:17 +08:00
    学习一下
    liuxu
        41
    liuxu  
       2020-05-17 12:50:40 +08:00
    我用下试试
    Nostopping
        42
    Nostopping  
       2020-05-17 12:59:37 +08:00
    @Sketch 26 楼的例子 client 是运行在路由器上的吗?如果我是 win 下运行 client 并且想代理本机流量应该怎么设置?
    在 win 下我 client -r 本机 ip -s 服务器 ip 这样运行就会不停的 send error: PacketSendPacket failed
    Sketch
        43
    Sketch  
    OP
       2020-05-17 13:07:37 +08:00
    @Nostopping #26 的例子是运行在电脑上的。由于某些众所周知的原因,IkaGo 并不能用于代理本地流量的,它实现的是类似市面上加速器“主机加速”的功能。如果要代理本地流量,Windows 的话可以用某些通过 PID 筛选流量的代理软件 : )
    longgediyi999
        44
    longgediyi999  
       2020-05-17 14:05:41 +08:00
    可以加速 PUBG 吗楼主
    Sketch
        45
    Sketch  
    OP
       2020-05-17 14:27:01 +08:00
    @longgediyi999 理论上 IkaGo 可以代理来自指定源地址所有支持的流量,但也如同 #43 所说的,是无法代理本地流量的,如果要代理 PC 游戏,那么需要再另一台设备上启动 IkaGo 。IkaGo 设计之初就是为主机游戏,Switch 或是 PS4 上的游戏,加速的。另外,正如我一再提及,加速器最重要的其实是线路,所以如果想要认真玩游戏可能还是选择市面上的加速器比较好。
    MartinWu
        46
    MartinWu  
       2020-05-17 14:52:59 +08:00
    一股淡淡的 geek 意味。。强。
    simpx
        47
    simpx  
       2020-05-17 15:39:49 +08:00
    看了下 github 主页,是浙大学弟啊

    学弟大几了,有没有兴趣看看实习
    CheekiBreeki
        48
    CheekiBreeki  
       2020-05-17 16:12:49 +08:00 via Android
    很,先 star
    leetao94
        49
    leetao94  
       2020-05-18 09:06:19 +08:00
    果然兴趣是第一驱动力~~
    KickAssTonight
        50
    KickAssTonight  
       2020-05-18 09:51:15 +08:00
    支持!
    pzh
        51
    pzh  
       2020-05-18 12:04:32 +08:00 via iPhone
    内测人员前来支持
    表示内测时被 intel 网卡驱动和 winpcap 折腾够呛(微星垃圾驱动)
    latteczy
        52
    latteczy  
       2020-05-18 12:14:07 +08:00
    加密是为了绕过 GFW 的探测么?
    Themyth
        53
    Themyth  
       2020-05-18 12:32:16 +08:00
    请问能否 n2n on IkaGo?
    或者 openvpn on IkaGo?
    谢谢
    Sketch
        54
    ketch  
    OP
       2020-05-18 12:35:49 +08:00
    @latteczy 只能是,加密是为了包的完整性,设计 IkaGo 的目的仅仅只是游戏加速。
    Sketch
        55
    Sketch  
    OP
       2020-05-18 12:44:13 +08:00
    @Themyth IkaGo 的本质是代理 ARP + 代理 + Udp2raw-tunnel 。事实上,可以把 IkaGo 的代理 ARP 部分剥离出来,这样就可以接其他的代理了。目前,如果 OpenVPN 的下一级是 IkaGo 的话,可以是可以,但事实上做了代理( OpenVPN )+ 代理 ARP + 代理( IkaGo )+ FakeTCP,有点浪费。
    Themyth
        56
    Themyth  
       2020-05-18 13:26:02 +08:00
    @Sketch 是的,那 IKAGO 默认启用了 Kcp 吗
    Sketch
        57
    Sketch  
    OP
       2020-05-18 13:34:20 +08:00
    @Themyth 默认情况下,IkaGo 不使用 KCP 和加密,只使用 FakeTCP,因为对于游戏加速而言已经足够了。
    ohooooo
        58
    ohooooo  
       2020-05-18 14:52:17 +08:00
    大神的气息。
    killerirving
        59
    killerirving  
       2020-05-20 09:46:22 +08:00
    @Sketch 可以试试 travis 记得可以提供多系统环境
    EasonSummer
        60
    EasonSummer  
       2020-06-13 19:41:31 +08:00
    如果交叉编译能支持 openwrt 嘛?
    Sketch
        61
    Sketch  
    OP
       2020-06-13 21:31:14 +08:00
    @EasonSummer 我没试验过,但是我合并了别人提交的在 Arm 上编译的 PR,GitHub Actions 里有对应的 Artifacts
    labulaka521
        62
    labulaka521  
       2020-06-29 16:54:02 +08:00
    能请教下项目代码 /internal/pcap/fragment.go 这个文件的作用吗
    我看代码里传输层网络层数据链路层构建好后,然后调用了这个文件里面的函数,然后是按照 mtu 值将数据分割位 mtu 值得大小,然后在发出去,
    Sketch
        63
    Sketch  
    OP
       2020-06-29 18:06:34 +08:00
    @labulaka521 你说的没错,这个文件主要包括重组分片与分片(分包) 2 部分。
    Defragmenter 是重组分片器,其中 EasyDefragmenter 是一个规则宽松且支持重组“粘包”(由于 IkaGo 上层是通过 TCP 封装包,而 TCP 是一个流协议,故读出的数据并不完全对应一个包)的重组分片器,StrictDefragmenter 是官方的规则严格的重组分片器的一个封装。CreateIPv4FragmentPackets 是一个创建 IPv4 分片的函数,CreateTCPSegmentPackets 是一个创建 TCP 分段的函数。
    labulaka521
        64
    labulaka521  
       2020-06-30 14:25:36 +08:00 via iPhone
    @Sketch 感谢 学习了
    zjgsamuel
        65
    zjgsamuel  
       2020-07-03 10:47:13 +08:00
    昨晚试在我的 Switch 上试了一下 Win 台式机上装了代理 然后 按照教程 运行了命令 可以运行 显示正常 ~
    但是 在 Switch 上看不出有加速的迹象么? 我怎么样才能知道命令在运行呢?
    当我在 Switch 上 变了 IP 地址 命令行倒是有错误报错
    我更改了 我代理客户端上 允许 GDP 转发 允许局域网共享 , 然后 切换了各种代理的模式 貌似都不行呢
    肯定是我哪里不对
    Sketch
        66
    Sketch  
    OP
       2020-07-03 13:00:33 +08:00
    @zjgsamuel 呃……这个描述稍微有一点乱,要不开个 issue 我看看
    EasonSummer
        67
    EasonSummer  
       2020-07-26 15:08:18 +08:00
    server 端一定要关闭 ip 转发嘛?就是不能同时有 VPN 运行了嘛
    Sketch
        68
    Sketch  
    OP
       2020-07-26 21:18:48 +08:00
    @EasonSummer 是的,不过你也可以看看我后来的 t/683486 这个项目
    horou
        69
    horou  
       2020-12-28 17:50:28 +08:00
    大佬牛皮!!已 star,刚好自己想实现一个 ps4 的加速器,一直找不到思路。^ ^
    hkshawn
        70
    hkshawn  
       2021-03-19 08:28:46 +08:00
    大佬是否考虑改吧改吧投放市场?可以联系联系~
    TG:@GhostShield_Y5
    Rx
        71
    Rx  
       2021-08-05 19:27:55 +08:00 via Android
    厉害
    moksa
        72
    moksa  
       2021-08-07 21:24:38 +08:00
    不明觉厉。。。。希望有傻瓜教程....
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2545 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 10:44 PVG 18:44 LAX 02:44 JFK 05:44
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86