请教 Windows 桌面开发选择 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
JustinL
V2EX    Windows

请教 Windows 桌面开发选择

  •  1
     
  •   JustinL 2023-12-15 12:00:02 +08:00 via iPhone 20543 次点击
    这是一个创建于 711 天前的主题,其中的信息可能已经有所发展或是发生改变。
    先说一下背景:建筑行业公司,内部工程师用,因此只需要 Windows 即可,同时公司所有电脑已经是 Win11 ,不用兼容 xp 那种包袱,可以考虑上最新的技术。内部使用铺开后如果反馈不错,有可能对外销售。

    做了一些 study ,感觉主要是这几种:
    1. Delphi/Lazarus 。在前公司用过,确实很方便,但是 Delphi 需要授权,Lazarus 社区也比较小,领导不喜欢,pass
    2. C#+WPF 。主要担心被反编译问题,但是貌似很多软件也是 C#,请问是否多虑?搜了一下没有太好的解决方案。
    3. C++ qt 。主要担心上手难度问题,团队没写过 C++,不过兴趣很大,就是怕交付时间不能保证。
    4. C#写界面,C++写核心算法。不知道里面有没有什么调用的坑?

    限定在 Windows 就行了,不需要讨论跨平台。

    陷入选择困难症了……请有经验的大佬们指点一二~
    第 1 条附言    2023-12-15 12:43:35 +08:00

    经提醒,qt可能也有授权问题。我之前一直理解是动态链接就没问题,刚马上搜了一下,情况可能会比较复杂,因为qt使用的协议很多,不同模块有可能不同。

    第 2 条附言    2023-12-19 13:30:54 +08:00

    感谢诸位的帮助

    准备使用C# + Avalonia,尽可能地使用 aot 编译。

    但正如我在留言中提及,私心希望学点新东西,所以自己会学一下 go + wails,希望下次选型能用上。

    再次感谢大家。

    134 条回复    2023-12-17 21:18:23 +08:00
    1  2  
    ShadowPower
        1
    ShadowPower  
       2023-12-15 12:04:30 +08:00
    选 3 ,这玩意非常简单,整体难度大概是 Java Swing 的程度
    Goooooos
        2
    Goooooos  
       2023-12-15 12:07:32 +08:00 via Android
    qt 不是不能免费商用吗
    jeeyong
        3
    jeeyong  
       2023-12-15 12:09:19 +08:00
    我一直是 python+tkinter 干.
    如果对样式有要求, 也有一些基于 tkinter 的花式样式库.
    打包的时候别压缩到一个文件.
    速度还可以...
    Tumblr
        4
    Tumblr  
       2023-12-15 12:10:41 +08:00
    hmm 。。。你这 4 个选项相当于只有选项 2 啊。。。
    选项 1 涉及授权问题,最主要是领导不喜欢;剩下的 2 个,如果团队没有 C++经验,那完全是给自己挖坑啊,能不能填起来还不敢保证。保险起见,选项 2 是唯一解。
    zsxzy
        5
    zsxzy  
       2023-12-15 12:11:41 +08:00
    qt 肯定会找你们要钱的, UI 不复杂用 duilib 就行
    zjsxwc
        6
    zjsxwc  
       2023-12-15 12:12:19 +08:00
    知乎上看到有人用 electron 搞船舶的,开发确实是 electron 快

    https://www.zhihu.com/question/264999651/answer/848101852
    rwecho
        7
    rwecho  
       2023-12-15 12:26:39 +08:00
    Wpf 把敏感的逻辑封装下,interop
    tool2d
        8
    tool2d  
       2023-12-15 12:27:00 +08:00
    用 html 写界面,能最大限度去兼容团队成员不同的水平。

    只要套一层 electron ,需要计算的地方用 nodejs 去调用 c++模块就可以了。
    rwecho
        9
    rwecho  
       2023-12-15 12:28:44 +08:00
    C#调用 c++,应该是一开始就有的,很多年成熟的技术了
    rwecho
        10
    rwecho  
       2023-12-15 12:29:29 +08:00
    另外可以考虑 wpf+blazor+c++
    shijingshijing
        11
    shijingshijing  
       2023-12-15 12:29:30 +08:00
    不要选 C#,不好招人,简单的上 PySide 用 Python ,复杂的上 Qt 直接 C++。
    shijingshijing
        12
    shijingshijing  
       2023-12-15 12:30:36 +08:00
    C#如果做大了,微软也会找你们收钱的啊
    a33291
        13
    a33291  
       2023-12-15 12:31:45 +08:00
    C#用 SmartAssembly 加密一下就行,完全防破解这几种技术都不好使,只能增加逆向成本
    另外直接套一个 webview2 或者 cef,页面用 h5,交互调用 C#直接暴露函数到 js 端也是可以的,现在 ui 部分我更喜欢 h5 实现,简单快捷轮子多
    a33291
        14
    a33291  
       2023-12-15 12:32:43 +08:00
    @shijingshijing #12 你这说话有点搞笑啊朋友,微软收 u3d 的 C#使用费了?
    JustinL
        15
    JustinL  
    OP
       2023-12-15 12:32:51 +08:00 via iPhone
    @ShadowPower really? 还没试过,但是网上都说很复杂……
    JustinL
        16
    JustinL  
    OP
       2023-12-15 12:35:51 +08:00 via iPhone
    @Tumblr c++是有兴趣学习,因为私心是多学一个技能以后可以用在别的地方
    ktqFDx9m2Bvfq3y4
        17
    ktqFDx9m2Bvfq3y4  
       2023-12-15 12:36:08 +08:00
    内部使用的话,哪个出活快用哪个。我选的话我会选 2 ,等对外销售的时候再说。市面上破解的软件也不是只能破解 C#的。
    JustinL
        18
    JustinL  
    OP
       2023-12-15 12:36:46 +08:00 via iPhone   1
    @zjsxwc sounds good! 没想到传统软件也有用 web 方案
    ktqFDx9m2Bvfq3y4
        19
    ktqFDx9m2Bvfq3y4  
       2023-12-15 12:37:27 +08:00
    C#+Winform 出活儿更快,所见即所得。就是分辨率适配会有点儿问题,以及后期对界面美化的控制不如 WPF
    JustinL
        20
    JustinL  
    OP
       2023-12-15 12:38:56 +08:00 via iPhone
    @shijingshijing 不同于互联网行业,建筑行业还是很多 C#的
    Dogtler
        21
    Dogtler  
       2023-12-15 12:42:45 +08:00 via iPhone
    Flutter……
    JustinL
        22
    JustinL  
    OP
       2023-12-15 12:44:28 +08:00 via iPhone
    @jeeyong 请问 python 怎样保护源代码?
    acctv2
        23
    acctv2  
       2023-12-15 12:47:51 +08:00
    C#好像是付费的保护方案吧,帮你做混淆的
    ShadowPower
        24
    ShadowPower  
       2023-12-15 12:48:10 +08:00
    @Goooooos 可以免费商用,用 LGPL 协议的版本
    acctv2     25
    acctv2  
       2023-12-15 12:48:25 +08:00
    Qt 协议很复杂,而且你们团队还没 C++经验,这就是绝对的隐患了
    yolee599
        26
    yolee599  
       2023-12-15 12:48:57 +08:00 via Android
    Qt 是 LGPL 啊,动态链接应该可以商用吧
    enihcam
        27
    enihcam  
       2023-12-15 12:49:13 +08:00
    听起来就是 C#了。

    别听上面胡扯八道:微软永远不会找你收钱,没有公司会这么傻。
    ktqFDx9m2Bvfq3y4
        28
    ktqFDx9m2Bvfq3y4  
       2023-12-15 12:49:45 +08:00
    @shijingshijing #12

    C#和 WPF 这两个东西微软怎么收钱???你要说 IDE 还有可能(但也有方案)
    goodryb
        29
    goodryb  
       2023-12-15 12:50:03 +08:00
    @Chad0000 #17 说的对,前期先不要考虑那么复杂的事情,搞出来先看看
    enihcam
        30
    enihcam  
       2023-12-15 12:52:06 +08:00
    C#支持.net native ,按 release 发布,stripe 所有 symbols ,请问怎么反编译?上面那位满嘴跑火车的来回答一下。
    ShadowPower
        31
    ShadowPower  
       2023-12-15 12:52:47 +08:00
    @JustinL 网上很多人看到 C++三个字就说难了……
    我从 0 学会 Qt 只花了 7 天
    tangmanger
        32
    tangmanger  
       2023-12-15 12:54:31 +08:00
    wpf 啊 还用想,,,反编译 可以买商业混淆或者开源混淆
    cnbatch
        33
    cnbatch  
       2023-12-15 12:54:46 +08:00
    怕 qt 的授权?那么可以选 wxWidgets ,还可以在 vcpkg 内一键安装
    ktqFDx9m2Bvfq3y4
        34
    ktqFDx9m2Bvfq3y4  
       2023-12-15 12:54:47 +08:00
    @ShadowPower #31
    要比上手速度,那么我可以说从 0 到学会 Winform 只需要七分钟甚至更少。Winform 的上手风格完全就是现在所谓的低代码平台编辑器的样子。
    jones2000
        35
    jones2000  
       2023-12-15 12:56:46 +08:00
    win32+CEF.
    ShadowPower
        36
    ShadowPower  
       2023-12-15 13:00:44 +08:00
    @Chad0000 这得综合考虑 OP 的需求,里面还包括反编译难度。如果用 Qt Widgets 的话,界面也可以拖,只是交互方式和 VS 不太一样。
    zogwosh
        37
    zogwosh  
       2023-12-15 13:00:47 +08:00
    那你只用 webview 不就好了,win11 不都有吗。用 c 写个兼容层就好了。思路类似于 tauri
    maxxfire
        38
    maxxfire  
       2023-12-15 13:07:58 +08:00
    electron ,虽然它有点臃肿,有点前端娱乐。但它有网络互联的基因,天生的标准。
    shijingshijing
        39
    shijingshijing  
       2023-12-15 13:12:49 +08:00
    @Chad0000
    @JustinL
    @a33291

    当然是 Visual Studio IDE 收钱,如果用了某些库,还会单独收授权费。Win 10 以后微软各种暗藏的 Telemetry Service 背后运行,取证不要太方便,Win 11 搜集信息的能力更厉害。
    loophole12
        40
    loophole12  
       2023-12-15 13:17:16 +08:00 via Android   1
    不是内部工程师用吗,为什么要担心被反编译?
    buxudashi
        41
    buxudashi  
       2023-12-15 13:18:04 +08:00
    aardio,tarui,flutter. c#
    0o0O0o0O0o
        42
    0o0O0o0O0o  
       2023-12-15 13:19:48 +08:00 via iPhone
    如果担心被反编译的话,不是靠选语言选框架就行的,也不是靠#30 那样改改编译选项就可以的,建议挑选过程中把商业化保护方案考虑在其中
    JustinL
        43
    JustinL  
    OP
       2023-12-15 13:21:46 +08:00 via iPhone
    @loophole12 不同部门,而且普通工程师也是有可能给其他公司的工程师用的
    ktqFDx9m2Bvfq3y4
        44
    ktqFDx9m2Bvfq3y4  
       2023-12-15 13:22:14 +08:00
    @shijingshijing #39

    OP 使用免费的 Visual Studio Community 版开发呢?就算 OP 公司发财了要买,VS Pro $499 是买不起么?其他免费方式我没搞过因为我个人使用 Community 版,公司给买的 Pro (还附带 Azure 每月大几十刀体验额度,快白给了),不需要考虑其他方案。
    shijingshijing
        45
    shijingshijing  
       2023-12-15 13:28:25 +08:00
    @Chad0000 我没记错的话 Community 还有以前的 Express 版本,是无法开发和编译 Winform 的,WPF 的我不知道。
    shijingshijing
        46
    shijingshijing  
       2023-12-15 13:32:40 +08:00
    #45 错了,Community 不确定,Express 我确定是无法使用 Form Designer 来直接拖拽控件开发的。
    ktqFDx9m2Bvfq3y4
        47
    ktqFDx9m2Bvfq3y4  
       2023-12-15 13:33:29 +08:00
    @shijingshijing
    我开发 Winform 和 WPF 好多年,虽然这几年大部分搞 Web 了但 Community 无法开发 Winform 是头次听说。你最好不要乱说,Community 只是没有高级的一些调试和监控功能而已(说实话我用 Pro 也用不到这些高级功能)。
    0n2ynu
        48
    0n2ynu  
       2023-12-15 13:41:18 +08:00
    windows 桌面开发, C#毫无疑问
    jeeyong
        49
    jeeyong  
       2023-12-15 13:41:21 +08:00
    @JustinL pyinstaller 或者 nuitka 打包发布啊.
    ysc3839
        50
    ysc3839  
       2023-12-15 13:42:29 +08:00 via Android
    没有好的选择,要防止反编译的话个人还是会选择 C++。
    具体得看搞什么功能,用 Win32 写起来可能很麻烦。MFC 也许能省一点事,但是也是淘汰的技术,个人不推荐使用。
    还可以考虑 WinUI ,但是系统至少要 Win10 1903 。WinUI 有个“分支”是 React Native ,界面逻辑用 js 写,底层界面库还是用 WinUI ,同时也可以用 C++写功能暴露给 js 调用。
    也可以考虑 C++ + WebView ,但前端部分感觉很容易被反编译。
    不建议 C# + C++,你用 C++写的都是做成 DLL 给 C#调用,那别人完全可以把你的 DLL 弄过去换壳直接使用。
    Dorian101
        51
    Dorian101  
       2023-12-15 13:45:10 +08:00
    @rwecho 敏感的部分可以 AOT
    JustinL
        52
    JustinL  
    OP
       2023-12-15 13:46:05 +08:00 via iPhone
    @jeeyong 这是打包吧,源码还是可以很容易得到?
    Dorian101
        53
    Dorian101  
       2023-12-15 13:46:51 +08:00
    @shijingshijing .NET 的所有方面都是开放源代码,包括类库、运行时、编译器、语言、ASP.NET Core Web 框架、Windows 桌面框架以及 Entity Framework Core 数据访问库等。
    xieren58
        54
    xieren58  
       2023-12-15 13:48:09 +08:00
    JustinL
        55
    JustinL  
    OP
       2023-12-15 13:50:14 +08:00 via iPhone
    @ysc3839 楼上确实很多人建议套 web 做界面。另外说到 C#调用 C++ dll 的问题,可不可以在 dll 里面做一些鉴权的措施?例如在公司网络下才能以调用?
    ktqFDx9m2Bvfq3y4
        56
    ktqFDx9m2Bvfq3y4  
       2023-12-15 13:51:09 +08:00
    OP 这么关心反编译,直接找相关技术是否有付费的方案,价格多少就行了。免费的又不能保证还得自己研究,如果付费的可负担还浪费啥。
    JustinL
        57
    JustinL  
    OP
       2023-12-15 13:54:40 +08:00 via iPhone
    @xieren58 我理解除了跨平台特性,这个框架和 WPF 并无二致?
    majianglin
        58
    majianglin  
       2023-12-15 13:58:34 +08:00
    我推荐 Electron ,web 前端开发人员上手太快了,JS 编译后很难反编译的

    也可以用 C++开发 NodeJS 插件来做加密鉴权和密集计算模块
    ggvoking
        59
    ggvoking  
       2023-12-15 14:07:34 +08:00
    没看懂这么多人推荐 Electron ,话说如果本来就是 C#技术栈,那 wpf 肯定是最佳选择。
    elechi
        60
    elechi  
       2023-12-15 14:11:37 +08:00
    WPF 加个 MVVM
    jeeyong
        61
    jeeyong  
       2023-12-15 14:15:34 +08:00
    @JustinL 我一直理解的是 nuitka 是转义一次然后打包? 还真没太在意源码的问题. 我交付的时候源码都是直接给的.哈哈
    Mithril
        62
    Mithril  
       2023-12-15 14:17:22 +08:00
    C# + WebView2 ,前端一套写界面,后端直接就是个 webserver 。
    这是前后端开发都最简单的方案。

    至于加密和破解,这就是个成本问题。如果你只想上个难度,那代码混淆也就够了。非要硬搞的话就上基于虚拟机的解决方案,但个人觉得压根没必要。你一个行业内部软件,除非做得特别好,别人不用不行,或者技术独特,算法非常好。不然没那么多人闲的去反编译的。
    然而算法你最好用专利保护,光靠代码也是防不住的。
    sunmker
        63
    sunmker  
       2023-12-15 14:22:41 +08:00
    用 C#的 winform ,更快
    vvvvvvvv
        64
    vvvvvvvv  
       2023-12-15 14:28:38 +08:00
    有个神奇的东西叫做 aardio
    j519
        65
    j519  
       2023-12-15 14:30:17 +08:00
    选简单的。
    rwecho
        66
    rwecho  
       2023-12-15 14:34:18 +08:00
    @shijingshijing

    你要是不知道可以不说
    afirefish
        67
    afirefish  
       2023-12-15 14:35:37 +08:00
    C# + Avalonia 。C# native 调用 C++代码非常方便,也莫得啥性能损失。
    别听上面人瞎 jb 扯淡。C#免费,开源。而且技术栈非常完善。
    afirefish
        68
    afirefish  
       2023-12-15 14:36:19 +08:00
    @shijingshijing 不知道可以不说。造谣可就违法了~
    xieren58
        69
    xieren58  
       2023-12-15 14:36:22 +08:00
    @JustinL 前段时间用 avalonia 做完一个项目, 比 wpf 爽... .net 8 可以 aot, 难以反编译, 如果不用 net 8 , 核心点还可以用 rust 写 dll, 有相关的库 uniffi-bindgen-cs, 没办法反编译... 我那项目就是 avalonia + rust , 核心点用 rust 写, 速度快, 又不怕反编译...
    xieren58
        70
    xieren58  
       2023-12-15 14:37:25 +08:00
    @JustinL 对了, 原来那项目是 wpf + webview2, 改成了现在的 avalonia + rust...
    rwecho
        71
    rwecho  
       2023-12-15 14:39:10 +08:00
    @JustinL
    反编译的话和你的成本有关系, 如果你的客户端已经被黑客拿到了, 剩下的是攻防问题. 目前说的混淆之类的, 只是防一些入门级别

    最安全的是放在服务端. 让他们拿不到关键代码逻辑.


    @Mithril 说的很好, C# (WPF+winform)+ webview2 目前是能兼具桌面优势和 web 优势的开发技术.

    甚至可以用 MAUI Avaloinia + Blazor + webview2

    真正的攻与防和代码无关. 和成本有关
    rwecho
        72
    rwecho  
       2023-12-15 14:40:24 +08:00
    @xieren58 是桌面项目还是移动端? 很有兴趣,有开源吗?
    keymao
        73
    keymao  
       2023-12-15 14:42:10 +08:00
    electron+cpp 核心模块 免费 无商用风险
    avalon8
        74
    avalon8  
       2023-12-15 14:44:36 +08:00
    electron 套壳
    sunzhuo
        75
    sunzhuo  
       2023-12-15 14:45:45 +08:00
    什么算法?有没有现成的库?
    c2const
        76
    c2const  
       2023-12-15 14:46:42 +08:00
    团队没 C++经验,那 1 、3 、4 可以直接放弃,直接选 2 :)
    ---------------------
    至于 C#的反调试和反逆向,不要自己做、也不要用免费的,用付费方案挡住大部分人即可 :)
    最好是把核心功能放在服务器上,即使破解本地软件也用不了 :)
    xieren58
        77
    xieren58  
       2023-12-15 14:50:27 +08:00
    @rwecho 桌面项目, 商用, 靠这个赚钱, 没办法开源...
    9dP06m83vIV00l72
        78
    9dP06m83vIV00l72  
       2023-12-15 14:50:40 +08:00
    还有如下解决方案:
    1 、Flutter + Dart ,现在手机上用的都是它,它也能开发桌面版;

    2 、GTK + Vala ,用 C# 的原生版开发原生桌面程序,技术很成熟,也能开发大型应用;
    大型 GTK 应用 [袋鼠数据库工具] 用的就是这套方案。
    9dP06m83vIV00l72
        79
    9dP06m83vIV00l72  
       2023-12-15 14:55:46 +08:00
    袋鼠工具相关界面可以从这里看到:
    https://github.com/dbkangaroo/kangaroo
    dhssingle
        80
    dhssingle  
       2023-12-15 14:59:28 +08:00
    Avalonia
    idealhs
        81
    idealhs  
       2023-12-15 15:01:39 +08:00
    没什么好说的必选 WPF ,担心反编译 WPF 纯 UI ,C++写业务。
    nxcdJaNnmyF9O90X
        82
    nxcdJaNnmyF9O90X  
       2023-12-15 15:04:29 +08:00
    用 golang 的 wails https://github.com/tiny-craft/tiny-rdm 这个就是 wails 写的
    snailya
        83
    snailya  
       2023-12-15 15:05:58 +08:00   2
    好多公司明明没啥核心技术,却天天担心泄密了。我说的就是我们公司。
    rwecho
        84
    rwecho  
       202312-15 15:06:03 +08:00
    @xieren58 了解
    SWALLOWW
        85
    SWALLOWW  
       2023-12-15 15:20:19 +08:00
    wpf 一把唆,最后不都混淆的吗,可提供远程协助
    kriko
        86
    kriko  
       2023-12-15 15:23:09 +08:00
    用 unity 游戏引擎做
    shermie
        87
    shermie  
       2023-12-15 15:23:27 +08:00
    上面所有的答案 我觉得都不是最好的 最好的是炫彩 gui http://www.xcgui.com/ 自带设计器生成的是 xml 使用语言加载就可以 你可以搜一下 所有语言都能用 只要能调用 dll
    sunmker
        88
    sunmker  
       2023-12-15 15:25:29 +08:00
    @snailya 我们也是,哈哈
    ysc3839
        89
    ysc3839  
       2023-12-15 15:30:14 +08:00 via Android   1
    @JustinL 当然可以,但是 DLL 仍然是把相关逻辑直接暴露在外了。
    要比喻的话,DLL 就像把房门直接对着外面,虽然门本身有锁,但还是比较薄弱。exe 静态链接的话,就像门外面还有个大院子,要破解得先在院子里绕个半天找到门才行。
    NoobNoob030
        90
    NoobNoob030  
       2023-12-15 15:33:17 +08:00
    2 或者 electron
    hahahabro
        91
    hahahabro  
       2023-12-15 15:38:05 +08:00
    @shijingshijing 胡说八道什么
    JustinL
        92
    JustinL  
    OP
       2023-12-15 15:44:44 +08:00 via iPhone
    @sunmker @snailya
    这个确实没办法,不是一个人能决定的,利益走在技术之前
    anyele
        93
    anyele  
       2023-12-15 15:48:45 +08:00
    windows 桌面开发, C# WPF 毫无疑问
    runliuv
        94
    runliuv  
       2023-12-15 15:55:38 +08:00
    windows 桌面开发, C# WinForm 或 WPF ,毫无疑问。
    怕反编译,找免费的混淆工具或购买 dnguard 等混淆工具。
    hatsuyuki
        95
    hatsuyuki  
       2023-12-15 16:02:48 +08:00
    flutter desktop
    momo1999
        96
    momo1999  
       2023-12-15 16:04:43 +08:00
    我来推荐一个 Flutter ,写个界面轻轻松松
    ly841000
        97
    ly841000  
       2023-12-15 16:23:04 +08:00   1
    @ysc3839 #89 其实.net 8 的 aot 可以静态链接 lib
    xuanbg
        98
    xuanbg  
       2023-12-15 16:25:44 +08:00
    @shijingshijing 奇怪,我完全想不出微软能用什么名义来收钱?

    vs 也有免费版本啊
    liyafe1997
        99
    liyafe1997  
    /div>   2023-12-15 16:27:49 +08:00
    @Goooooos Qt 你只要不修改它的库,用它的 dll 动态链接,并且在程序中声明使用了 Qt 就没问题,完全符合 LGPL 协议。
    nodejsexpress
        100
    nodejsexpress  
       2023-12-15 16:31:25 +08:00
    那么快担心反编译,就是多余的。
    哪天内部觉得这个软件不好用或者没有价值,就砍掉了。

    出活快,就 python ,qt
    1  2  
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3014 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 00:31 PVG 08:31 LAX 16:31 JFK 19:31
    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