遇到朋友提交的这种代码该怎么办 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
aprikyblue
V2EX    程序员

遇到朋友提交的这种代码该怎么办

  •  
  •   aprikyblue 2015-08-19 16:55:27 +08:00 12311 次点击
    这是一个创建于 3709 天前的主题,其中的信息可能已经有所发展或是发生改变。

    受朋友委托,然后跟另一个朋友一起开发的,
    一起开发的这个,之前 2 年没联系,

    结果 ........
    看完我一句也不想说




    第 1 条附言    2015-08-19 23:05:15 +08:00
    他的多种命名方式,强迫症表示受不了。。。还有 buxue ()之类....

    有一个 class 里面全是第二张图里面大片这种雷同 method ,就是改了改 magic number...
    我仿佛看到了他无数次的 copy paste

    并且每个 method 也带个 hwnd 参数.. 如果是为了方法灵活性 可重用,也完全没用。。
    因为需要操作的游戏句柄只有一个,调用的 Click ()里也写死了的

    ORZ 其实好像是我要求高了点
    第 2 条附言    2015-08-20 14:31:42 +08:00

    又被顶上来了

    我只是吐槽+问问 V2 各位怎么解决这种情况,绝无任何秀优越

    如觉不适,请立即关掉此贴

    第 3 条附言    2016-01-28 02:33:57 +08:00
    快半年了啊。。。写一下反思,不知道有没有人看得见

    其实怪我当初没沟通好。
    我的想法是做一个类似于基础框架平台的东西,在此基础上用 lua 类似的脚本进行扩展
    而他直截了当地写完了逻辑,而且灵活性不是很好。几乎不修改不能用作其他用途
    so ,团队内部务必及时做好沟通

    而且我当时有些过度提前优化的倾向
    这里推荐一篇文章《克服编程直觉》 http://www.tuicool.com/m/articles/ZV7Zzq
    104 条回复    2015-10-20 21:53:43 +08:00
    1  2  
    tomine
        1
    tomine  
       2015-08-19 16:58:04 +08:00
    把你自己的代码贴上来看看
    NovemberEleven
        2
    NovemberEleven  
       2015-08-19 16:59:37 +08:00
    期待我就是那个朋友系列
    cqcn1991
        3
    cqcn1991  
       2015-08-19 17:00:10 +08:00 via iPhone
    这个 if else 还能怎么写?不是挺正常么…
    TakanashiAzusa
        4
    TakanashiAzusa  
       2015-08-19 17:01:37 +08:00
    @cqcn1991 这里不应该是 switch case 么。。
    Banio
        5
    Banio  
       2015-08-19 17:01:43 +08:00
    是想说 if ( 1 == i ) 这样写才合理么?
    TakanashiAzusa
        6
    TakanashiAzusa  
       2015-08-19 17:01:50 +08:00
    其实我比较好奇为什么是“朋友”提交的代码。。
    harry890829
        7
    harry890829  
       2015-08-19 17:08:07 +08:00
    switch case 和 if...else if 不就是写法上不一样么,还有什么不同么
    JamesRuan
        8
    JamesRuan  
       2015-08-19 17:09:00 +08:00   1
    典型的数据和逻辑分离有问题的设计。
    qinglangee
        9
    qinglangee  
       2015-08-19 17:09:46 +08:00
    我一直觉得会开发外挂的人都很牛 X
    cqcn1991
        10
    cqcn1991  
       2015-08-19 17:11:13 +08:00 via iPhone
    @TakanashiAzusa 可以,但是我觉得只是语言风格,并不算 code smell.
    zhicheng
        11
    zhicheng  
       2015-08-19 17:15:20 +08:00
    命名 OK ,缩进 OK ,代码风格 OK ,注释 OK 。唯一的缺点只有 magic number 。但不是正规则大项目也无所谓。
    在我看来,这些代码段几乎是 perfect 了。
    learnshare
        12
    learnshare  
       2015-08-19 17:16:32 +08:00
    其实应该把这么多数据放在合理的数据结构里,否则以后改到哭
    akira
        13
    akira  
       2015-08-19 17:16:45 +08:00
    图像识别的时候,不要严格依赖颜色,这个颜色在不同电脑上是有可能不一样的。。
    LuoboTixS
        14
    LuoboTixS  
       2015-08-19 17:22:57 +08:00
    槽点是在 hardcode 像素位置吗?
    tiange
        15
    tiange  
       2015-08-19 17:25:21 +08:00
    简单明了
    jianghu52
        16
    jianghu52  
       2015-08-19 17:25:47 +08:00
    有缩进,命名正常,注释不少。还要啥自行车。
    fo2w
        17
    fo2w  
       2015-08-19 17:28:29 +08:00
    @harry890829
    a[0] = 0;
    a[1] = 1;
    a[2] = 2;
    ...
    a[999] = 999;
    好像和写个循环也就是写法上有点区别, 有什么不同么
    cst4you
        18
    cst4you  
       2015-08-19 17:46:57 +08:00
    @akira A 卡 N 卡 2333333
    N 卡压缩颜色的作弊技巧从 Geforce 开始到现在都还在用呢.
    blacktulip
        19
    blacktulip  
       2015-08-19 17:48:35 +08:00
    居然有注释,这已经是很给面子了,楼主还想要怎么样的代码?
    moe3000
        20
    moe3000  
       2015-08-19 17:53:33 +08:00
    我觉的还是说几句吧,是说编码规范么还是那一大推 if ,还是其他?

    @NovemberEleven 我也期待这个系列 doge 脸
    zyc841584303
        21
    zyc841584303  
       2015-08-19 17:58:11 +08:00   1
    第一眼给我的感觉还可以 楼主 你是没见过更烂的....
    ljcarsenal
        22
    ljcarsenal  
       2015-08-19 18:07:15 +08:00
    这是 c#么??写什么外挂的
    iyangyuan
        23
    iyangyuan  
       2015-08-19 18:09:15 +08:00 via iPhone
    如果是*两个月做淘宝系列*,这样已经很不错了
    salmon5
        24
    salmon5  
       2015-08-19 18:49:13 +08:00   2
    https://ooo.0o0.ooo
    存图片的域名略叼
    codeyung
        25
    codeyung  
       2015-08-19 19:04:53 +08:00
    包正 我可是仔细看完了的 算规范了
    kn007
        26
    kn007  
       2015-08-19 19:27:05 +08:00
    不要要求太高了。
    Bardon
        27
    Bardon  
       2015-08-19 19:30:06 +08:00
    期待 我就是那个提交代码的 人系列
    Tink
        28
    Tink  
    PRO
       2015-08-19 19:45:07 +08:00 via iPhone
    我也感觉挺好
    yoa1q7y
        29
    yoa1q7y  
       2015-08-19 19:50:44 +08:00
    还行啊,要啥自行车
    kouch
        30
    kouch  
       2015-08-19 19:50:53 +08:00
    然而你还是上来和大家说了好多句...
    x86
        31
    x86  
       2015-08-19 19:53:39 +08:00
    可以确定关系搞基了
    Bryan0Z
        32
    Bryan0Z  
       2015-08-19 19:58:37 +08:00 via Android
    一直当 Java 代码看,看到 bool 才发现是 C#
    tangqi92
        33
    tangqi92  
       2015-08-19 20:02:16 +08:00
    @Bryan0Z 一直当 Java 代码看,直到看到你的评论才发现是 C#
    m1a0
        34
    m1a0  
       2015-08-19 20:06:51 +08:00
    只看出, 方法命名有 3 种风格, 变量命名也有好几种风格, 感觉是拼凑起来的代码。
    zmj1316
        35
    zmj1316  
       2015-08-19 20:16:37 +08:00
    看到 LZ 吐槽我也顺便晒一个大学时候的队友吧:
    前序:因为那时候上课要写大作业必须组队,我就捡了一个队友回来,平时都联系不到,上课也一直不来,期末的设计也不难,本来我就打算一个人快点解决了,结果他死缠烂打要贡献一下,我就随手给了一个功能给他,结果催了好久过了两周快到 ddl 了用 QQ 传给我了。
    我也没怎么想就把文件加进去了,结果一片红啊,我定睛一看,其中一个错误让我直接把文件删了,真的想砸键盘:
    高潮:
    class Class
    {
    ...
    }
    ...
    fun (){
    Class class;
    class.f ();
    }
    还有这货居然把 private 都拼错了,后面的代码我实在没勇气看下去了。

    所以啊,以后大家遇到那些 911/285 出来的坑货也不要太激动,总会有这么几个人的 T T 。

    PS.这人还用的是 VS 23333333
    tolbkni
        36
    tolbkni  
       2015-08-19 21:06:48 +08:00
    还要啥自行车,我真心觉得编程素颜不错了
    aholic
        37
    aholic  
       2015-08-19 21:19:10 +08:00
    还有注释!
    realpg
        38
    realpg  
    PRO
       2015-08-19 21:20:10 +08:00
    我觉得如果这是一个临时合作的队友,这质量已经远远好于预期了
    还有这么多注释
    jin5354
        39
    jin5354  
       2015-08-19 21:46:51 +08:00
    就看在这么多注释的份上很不容易了
    iamppz
        40
    iamppz  
       2015-08-19 21:48:23 +08:00
    能看懂就可以。。
    动辄上万行的 js 真是让人痛不欲生
    phx13ye
        41
    phx13ye  
       2015-08-19 22:16:15 +08:00
    这么多 ifelse
    这不应该用字典,哈希,映射,对象吗?
    装逼一点就应该上那啥设计模式了, state ?
    WispZhan
        42
    WispZhan  
       2015-08-19 22:22:12 +08:00
    我很好奇,楼主,你把这段代码的算法重构一次,贴上来 让我们来评评。总的来说,已经可以了,起码该有的都有。

    评论总要有个对比
    yylzcom
        43
    yylzcom  
       2015-08-19 22:26:45 +08:00
    @salmon5 我觉得还是点进去这个域名的邮箱更 diao
    “ For abuse complaint, please send details to [email protected]
    tnx2014
        44
    tnx2014  
       2015-08-19 23:03:51 +08:00
    楼主大概被各位吓到了,所以一个字也说不出来。
    publicID001
        45
    publicID001  
       2015-08-19 23:10:45 +08:00
    @iamppz 我们随便一个 Project 纯 CSS 就几万行
    special
        46
    special  
       2015-08-19 23:11:07 +08:00
    buxue 这个函数最直接最能意会了...

    英文不好,对于补血这个我也不好取函数名..
    panlilu
        47
    panlilu  
       2015-08-19 23:14:55 +08:00
    看代码我猜是梦幻西游(或者之类游戏)的挂机外挂。。
    Sn0wM4n
        48
    Sn0wM4n  
       2015-08-19 23:18:32 +08:00
    @NovemberEleven 哈哈,同期待朋友快出现~
    kohnv
        49
    kohnv  
       2015-08-19 23:19:18 +08:00
    这么多数字以后要改死
    evlos
        50
    evlos  
       2015-08-19 23:19:57 +08:00 via iPhone
    那么多注释,代码整齐,缩进都有弄好,其实还好吧
    muzuiget
        51
    muzuiget  
       2015-08-19 23:36:26 +08:00
    看上去写外挂,感觉还 OK ,反正这种一次性的东西,怎么快怎么来。
    an168bang521
        52
    an168bang521  
       2015-08-19 23:41:57 +08:00
    代码整齐,有注释,一眼扫过能理解;
    而且代码思路比较明确;唯一不好的就是耦合度比较高,但是有这么详细的注释;还要啥自行车啊!
    是一名体贴的队友啊!
    husinhu
        53
    husinhu  
       2015-08-19 23:45:15 +08:00
    能找到一起写 demo 功能的同伴就不错了,还挑三拣四
    dbas
        54
    dbas  
       2015-08-19 23:54:32 +08:00
    这代码,可以了,水平也不差,要是写出来大多数看不懂才是问题
    不要以为写什么类,或抽象了就好。
    BlueSky002
        55
    BlueSky002  
       2015-08-20 00:07:07 +08:00
    请收下我的膝盖
    aprikyblue
        56
    aprikyblue  
    OP
       2015-08-20 01:03:16 +08:00
    @dbas

    public static int IfVerify ()
    {

    Bitmap a = Piccolor.GetWindow (hwnd );
    if (ColorTranslator.ToWin32 (a.GetPixel (347, 219 )) == 16776960 && ColorTranslator.ToWin32 (a.GetPixel (516, 411 )) == 3407871 )
    {
    int key =ColorTranslator.ToWin32 (a.GetPixel (418, 305 )) +
    ColorTranslator.ToWin32 (a.GetPixel (418, 326 )) +
    ColorTranslator.ToWin32 (a.GetPixel (529, 305 )) +
    ColorTranslator.ToWin32 (a.GetPixel (529, 326 )) +
    ColorTranslator.ToWin32 (a.GetPixel (654, 305 )) +
    ColorTranslator.ToWin32 (a.GetPixel (654, 326 )) +
    ColorTranslator.ToWin32 (a.GetPixel (793, 305 )) +
    ColorTranslator.ToWin32 (a.GetPixel (793, 326 ));
    if (ConfigManager.hashTable.ContainsKey (key ))
    {
    a.Dispose ();
    switch (ConfigManager.hashTable[key].ToString ())
    {
    case "1":
    Common.Click (418, 305 );
    break;
    case "2":
    Common.Click (529, 305 );
    break;
    case "3":
    Common.Click (654, 305 );
    break;
    case "4":
    Common.Click (793, 305 );
    break;
    }

    return 1;
    }
    else
    {
    string path = "C:/" + key + ".jpg";
    a.Save (path );
    Common.SendFile (path );
    a.Dispose ();
    return 2;
    }

    }
    a.Dispose ();
    return -1;
    }




    以此段为例:
    Dispose.调的满天飞。。
    RGB 直接加起来做 key..
    hashTable[key]取出来不进行类型转换,直接调了继承自 objcet 的 ToString ()。。。
    临时文件直接写到 C 盘根。。

    先不说类。。这么干没问题?
    theoractice
        57
    theoractice  
       2015-08-20 01:14:15 +08:00
    要是写外挂的就别吐槽这个了,每次游戏更新之后要重写的不是一点点,在这个领域里谈什么代码质量没有太大意义。
    LZ 没有思想准备的话别弄了,你估计做不下去的。
    aprikyblue
        58
    aprikyblue  
    OP
       2015-08-20 01:32:12 +08:00
    @theoractice

    其实之前干过一次,就是随便写快速开发。。最后恶心的不成样子, bug 八千八,无奈放弃维护

    这次受委托,于是全部重写== 没打算盈利,纯粹是因为朋友委托的 关系多年很好
    这游戏更新不是很大,(也没啥修改数据来的作弊功能,最主要是挂机。。一般就是出什么新内容再扩展下功能

    然而 异常都不管,也不检查啥,遇到 N 次 蹦空引用异常直接挂。。。
    还有逻辑错误,甚至不测试就给你扔 git 上。。感觉一直跟后边给擦屁股
    msg7086
        59
    msg7086  
       2015-08-20 05:43:48 +08:00
    和我写的山口山外挂的代码几乎如出一辙。
    master13
        60
    master13  
       2015-08-20 08:20:55 +08:00
    Go faster, go alone.
    Go further, go together.
    hdbean
        61
    hdbean  
       2015-08-20 09:20:52 +08:00
    我就是那个朋友
    soundofu
        62
    soundofu  
       2015-08-20 09:22:02 +08:00
    @fo2w 似乎这种写法与 for 写法的唯一区别就是: for 是(执行)时间(更慢)换(程序)空间(更大),然而可以通过调整优化器优化等级来实现某些代码在编译阶段展开,所以并没有什么(卵)区别...

    本人做嵌入式设备开发的,执行效率和存储空间都要考虑
    XuanYuan
        63
    XuanYuan  
       2015-08-20 09:34:55 +08:00
    @blacktulip 你是 DRLer 么?
    visonme
        64
    visonme  
       2015-08-20 09:36:28 +08:00
    我代码命令格式一般也有两种方式(下划线 和 驼峰) 所以不少人看我代码也误解是不是两个人。
    hfli
        65
    hfli  
       2015-08-20 09:44:37 +08:00
    这种代码,自己还能写下去啊?

    单单那个 if else 就受不了了;
    那么多 magic number , 出了问题,怎么去调试?写的时候获取清楚,写完了再去 review ,自己都看不懂了。
    fwings260
        66
    fwings260  
       2015-08-20 09:52:37 +08:00
    楼主太年轻。。。没见过更烂的而已。。。。
    init
        67
    init  
       2015-08-20 09:55:05 +08:00
    @special RecoverHP 如何
    init
        68
    init  
       2015-08-20 09:56:47 +08:00
    你们怎么看出来是外挂的??
    Phariel
        69
    Phariel  
       2015-08-20 10:04:56 +08:00 via Android
    我觉得这已经非常不错了啊楼主 所谓的大公司正统赚钱业务的核心代码比这个要屎的多你敢信?
    mzer0
        70
    mzer0  
       2015-08-20 10:06:19 +08:00
    代码质量是一个信仰问题. 在有些人看来, 不使用 smart pointer 而直接使用原生指针, 本身就令人无法忍受, 但编程语言支持 GC 所以并不太重要. 另外一点是, if 嵌套 if 也可能作为令人无法忍受的理由, ----干嘛你不用个 struct 呢? 这可是 C 语言基本功. magic number 也是一个信仰问题, 事实证明, 在那种只会使用同一个 magic number 一次或两次的场合中, magic number 比编译器常量更好用......一味想着代码的重复利用, 最后只会创造出一堆看起来能用很多次但实际上只用了一次的代码.

    另外是一些大家没注意到的效率问题, 例如, 应避免 ... + ... + ..., 取而代之的是... += ... += ..., 但是编程语言本身支持 move 语义, 所以这个效率问题又不复存在了.

    因此我认为, 唯一值得黑的地方, 仅仅在于: 没有使用结构体进行因果优化. 但如果 @aprikyblue 也没注意到这个问题, 那可能是他也不会做因果优化, 所以最后的结论是: 这仅仅只是个信仰问题, 你写的代码不一定比别人好到哪儿去...
    fo2w
        71
    fo2w  
       2015-08-20 10:12:02 +08:00
    @soundofu 我觉得你想多了, 我仅仅觉得这是智商的区别
    1000 条连续赋值不知道写 for 的我至今未见
    radicalshu
        72
    radicalshu  
       2015-08-20 10:13:28 +08:00
    感觉好像 coc 的外挂
    Rosay
        73
    Rosay  
       2015-08-20 10:15:27 +08:00
    怎么看出是外挂的?
    sniperhgy
        74
    sniperhgy  
       2015-08-20 10:22:19 +08:00
    @Rosay BUXUE = 补血?还有根据一些情况点击不同的地方:
    case "1":
    Common.Click (418, 305 );
    break;
    case "2":
    Common.Click (529, 305 );
    看起来应该是外挂了。
    hualuogeng
        75
    hualuogeng  
       2015-08-20 10:30:17 +08:00
    @zmj1316 911/285 ,哈哈
    kkwezard
        76
    kkwezard  
       2015-08-20 10:37:58 +08:00
    放弃做程序猿就永远不会有这种烦恼了。
    stgzr
        77
    stgzr  
       2015-08-20 10:48:00 +08:00
    没必要贴出来吧...
    iamppz
        78
    iamppz  
       2015-08-20 11:12:30 +08:00
    @publicID001 10000 行一般都是一个函数,或者一个事件绑定。。
    w88975
        79
    w88975  
       2015-08-20 11:18:57 +08:00
    代码质量还行 做外挂就别要求那么高了
    w88975
        80
    w88975  
       2015-08-20 11:20:40 +08:00
    楼主可以私信一下我吗? 我最近也在想做一个游戏的挂机辅助,希望传授点经验
    tchekai704
        81
    tchekai704  
       2015-08-20 12:35:56 +08:00
    @mzer0 你说的使用结构体进行因果优化, 是指使用 hash/map/dict 之类的数据结构,从而隐藏 if/else 的逻辑吗??
    branchzero
        82
    branchzero  
       2015-08-20 12:36:34 +08:00
    撕逼预订。
    这是吐槽命名有些凑了拼音么?
    而且貌似判断变量的值的代码风格有好多种。
    感觉不是一个人写的,或者说他精分了?
    O21
        83
    O21  
       2015-08-20 12:52:03 +08:00
    矫情。
    Clarencep
        84
    Clarencep  
       2015-08-20 13:06:35 +08:00
    不能一起愉快玩耍就分吧
    ifconfig
        85
    ifconfig  
       2015-08-20 13:19:42 +08:00
    楼主你太年轻了,这样的队友算真心好队友了,我维护过几千行无注释数十个 if else 硬塞成 mvc 的项目,那叫一个想死
    Jaylee
        86
    Jaylee  
       2015-08-20 13:55:23 +08:00
    把你自己的代码贴上来看看
    billwang
        87
    billwang  
       2015-08-20 14:12:36 +08:00
    楼主是在踩着别人秀自己高大上的吗?
    yeqiu
        88
    yeqiu  
       2015-08-20 14:49:18 +08:00
    楼主要是觉得你的队友不行,请联系我。

    @前面说只是编码风格不同的
    我们排除易读性和健壮性,单去看看 CLR 就能知道效率差多少了吧。
    yeqiu
        89
    yeqiu  
       2015-08-20 14:52:13 +08:00
    @yeqi CLR=>CIL
    karlakte
        90
    karlakte  
       2015-08-20 16:11:44 +08:00
    首先说 C#应该是驼峰命名法 方法名 /属性名首字母要大写, 然后这么多魔法值 维护起来有点麻烦。代码整洁就看个人了
    tuimaochang
        91
    tuimaochang  
       2015-08-20 17:32:52 +08:00
    要不是你朋友,连注释都不写。
    hitmanx
        92
    hitmanx  
       2015-08-20 18:37:09 +08:00
    @harry890829 是不是还有效率上的区别,记得 switch case 有些编译器会优化出一个 jump table 啥的,只要计算一次, O (1 )的时间,不排除记错了。。

    不过话说,这个注释真是详细,已经很幸福了。。
    bk201
        93
    bk201  
       2015-08-20 20:01:59 +08:00
    一句都不想说你还发帖子说一下。。
    代码风格这东西没啥说头,只问你能不能看懂,功能实现没有,代码不要做无用功简洁就 ok 拉,要不楼主 t 贴个自己的代码对比下?
    w88975
        94
    w88975  
       2015-08-20 20:48:21 +08:00
    @init 看注释你就应该知道是游戏了,但是如果是游戏的代码,不可能判断颜色区域的,所以就是外挂了啊
    harry890829
        95
    harry890829  
       2015-08-21 09:38:49 +08:00
    @fo2w 你这样就不能好好聊天了……你这么说循环的话,就已经到达质变的情况了,要是只是说 switch case 和 if else 的话,在字符上并没有很大的差别,如果像 @hitmanx 说的那样, switch case 会被编译器优化的话后,那么就确实会有差别了(并没有检查)
    kaedea
        96
    kaedea  
       2015-08-21 10:57:12 +08:00
    @theoractice 交出头像
    halfcrazy
        97
    halfcrazy  
       2015-08-21 11:04:26 +08:00
    这种代码风格,让我想起了一个小伙伴
    soundofu
        98
    soundofu  
       2015-08-21 11:20:59 +08:00
    @hitmanx 不同平台的编译上确实有区别,例如在 TI DSP 上,如果 CCS 编译,会有一个.switch 区域,执行的时候会接近 O (1 ),此时通过人工修改更高命中率的 case 的次序应该是没有什么效果的。但是 51 平台上用伟福或者 Keil uV2 会出现 switch 执行时间的陷阱,不知还有没有人遇到过...

    @fo2w 在嵌入式 MCU 里面确实会有这种情况。如果用 for ,每次赋值之间起码增加了一次 ACC 和一次判断跳转,对于带有流水线并且没有分支预测或乱序执行的 CPU ,执行效率大大降低。况且遇到这种需要批量生成的代码,也是直接 excel 里拖一下,然后 Ctrl+C , Ctrl+V 过去的。
    theoractice
        99
    theoractice  
       2015-08-21 16:59:37 +08:00
    @kaedea 我的头像?只是一张手机拍的风景照啊。
    tjxjj
        100
    tjxjj  
       2015-08-26 11:18:31 +08:00
    都是程序员,何苦难为程序员
    1  2  
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5754 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 06:07 PVG 14:07 LAX 23:07 JFK 02:07
    Do have faith in what you're doing.
    ubao 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