一种支持cam卡在线升级的方法及系统的制作方法

文档序号:7835379阅读:384来源:国知局
一种支持cam卡在线升级的方法及系统的制作方法
【专利摘要】本发明公开了一种支持CAM卡在线升级的方法及系统,包括:数据提供平台将升级镜像文件生成多个子压缩包,计算各个子压缩包的校验值;分别将各个子压缩包分散并封装成两个或两个以上TS包;如果CAM卡在NIT中检测到升级标志,CAM卡启动任务接收TS包,识别出未存储的TS包并存储;将与识别出的未存储的TS包所属的子压缩包号相同的TS包进行拼接,获取与子压缩包号相对应的子拼接数据包;计算子拼接数据包的校验值,当计算出的子拼接数据包的校验值与该子压缩包号对应的子压缩包的校验值相等时,存储该子拼接数据包;设置升级标识,进行CAM卡数据更新。本发明技术方案提高了CAM在线升级的速度以及效率。
【专利说明】一种支持CAM卡在线升级的方法及系统

【技术领域】
[0001]本发明涉及移动通信技术,尤指一种支持条件接收(CAM)卡在线升级的方法及系统。

【背景技术】
[0002]随着数字电视的普及,以及机卡分离方案的快速推广,越来越多的人开始使用条件接收(CAM,Condit1nal Access Module)卡替代传统机顶盒。CAM卡的主要功能是完成广电节目的解扰与解密,其内部包括微处理器、解扰模块、DVB-CI/DTV-CI接口、智能卡接口、存储器芯片等)。与传统机顶盒比,CAM卡具有占用空间小(插在电视内侧,不占用额外空间)、无需单独连线、功耗更低等特点。与机顶盒一样,CAM卡也需内置条件接收(CA)库软件,也需要根据广电前端的改动而更新CAM卡内置CA软件。
[0003]CAM卡的升级方式分为离线升级及在线升级。关于离线升级的方式,存在以下问题:由于CAM卡是在用户家中使用,需要把CAM卡回收进行统一升级,那么这样的方式会使得物流、管理等成本太高。
[0004]目前,CAM卡在线升级包括以下步骤:
[0005]首先,CAM卡厂家(即数据提供平台)准备在线升级用的镜像文件,并按MPEG-2规范将镜像数据分散,封装成传输流(TS,Transport Stream)包格式,形成CAM卡升级TS码流(包含很多TS包,具体TS包数量为镜像文件长度/184字节)。将CAM卡升级信息(包括版本号信息、镜像文件长度等)加入到广电网络的网络信息表(NIT,Network Informat1nTable)表中。将CAM卡升级TS码流复用到广电网络中(发送给数字电视一体机)。
[0006]例如,镜像文件的长度为10K,则TS包数量为((10 X 1024)+184)个。由于MPEG-2规范中规定每个TS包的大小为188字节,之所以划分TS包的大小为184字节,是因为在复用到广电终端时,各个TS包要有身份标识,即各个TS包的包号,所以(188-184) = 4,这4个字节要标识TS包的身份。
[0007]接着,CAM卡接收NIT表,并进行分析。如果检测到升级标志,则启动接收任务接收CAM卡升级TS码流。然后,顺序收集TS码流中的各个TS包,并将其中的镜像数据提取、拼接,将完整的镜像数据保存在备份FLASH内。
[0008]最后,CAM卡重新开机,对CAM卡进行软件更新。存储本次升级的软件版本号标志。
[0009]上述现有CAM卡的在线升级方法中,由于当CAM卡在NIT中检测升级标志时,就顺序的接收各个TS包,在这个过程中由于突然断电或者出现其它故障,CAM卡可能要在下一次广电终端播放循环TS码流中再重新开始顺序的接收各个TS包,这大大的降低了 TS包的接收效率,从而影响了 CAM卡在线升级的速度及效率。


【发明内容】

[0010]为了解决上述技术问题,本发明提供了一种支持CAM卡在线升级的方法及系统,能够提高CAM卡在线升级的速度以及效率。
[0011]为了达到本发明目的,本发明提供了一种支持CAM卡在线升级的方法,应用于一个或一个以上CAM卡中,包括:
[0012]数据提供平台将升级镜像文件生成多个子压缩包,计算各个子压缩包的校验值;分别将各个子压缩包分散并封装成两个或两个以上TS包;其中,每个TS包携带有:身份标识,身份标识包括:所属子压缩包的子压缩包号和TS包号;
[0013]如果CAM卡在NIT中检测到升级标志,CAM卡启动任务接收TS包,识别出未存储的TS包并存储;
[0014]将与识别出的未存储的TS包所属的子压缩包号相同的TS包进行拼接,获取与子压缩包号相对应的子拼接数据包;计算子拼接数据包的校验值,当计算出的子拼接数据包的校验值与该子压缩包号对应的子压缩包的校验值相等时,存储该子拼接数据包;
[0015]设置升级标识,进行CAM卡数据更新。
[0016]进一步地,该方法还包括:上述CAM卡预先设置各个TS包的身份标识与存储情况的一一对应关系;其中,存储情况包括:已存储或者未存储;初始的存储情况均为未存储。
[0017]进一步地,数据提供平台将升级镜像文件生成多个子压缩包,计算各个子压缩包的校验值,具体包括:
[0018]数据提供平台将需要升级的镜像文件划分为第一预设值大小的多个子块;
[0019]将各个子块压缩为子压缩包,计算各个子压缩包的校验值;将计算出的各个子压缩包的校验值和镜像文件信息存入NIT中;其中,镜像文件信息包括:镜像文件版本号和各个子压缩包的长度。
[0020]进一步地,识别出未存储的TS包并存储,包括:
[0021]根据预先设置的对应关系中TS包的存储情况判断TS包是否已存储;当判断出某个TS包未存储时,根据该TS包的身份标识存储该TS包并更改预先设置的对应关系中该TS包的存储情况为已存储。
[0022]进一步地,根据预先设置的对应关系中TS包的存储情况判断TS包是否已存储,包括:
[0023]获取TS包的身份标识,根据身份标识在上述对应关系中查找与该身份标识对应的存储情况;
[0024]根据查找到的存储情况,判断TS包是否已存储。
[0025]进一步地,获取与子压缩包号相对应的子拼接数据包,包括:按照TS包号由小到大的顺序将与识别出的未存储的TS包所属的子压缩包号相同的TS包进行拼接。
[0026]本发明还提供了一种支持CAM卡在线升级的系统,包括:数据提供平台,和一个或一个以上CAM卡;其中,
[0027]数据提供平台,用于将升级镜像文件生成多个子压缩包,计算各个子压缩包的校验值;分别将各个子压缩包分散并封装成两个或两个以上TS包;其中,每个TS包携带有:身份标识,身份标识包括:所属子压缩包的子压缩包号和TS包号;
[0028]CAM卡,用于在NIT中检测到升级标志时,启动任务接收TS包,识别出未存储的TS包并存储;将与识别出的未存储的TS包所属的子压缩包号相同的TS包进行拼接,获取与子压缩包号相对应的子拼接数据包;计算子拼接数据包的校验值,当计算出的子拼接数据包的校验值与该子压缩包号对应的子压缩包的校验值相等时,存储该子拼接数据包;设置升级标识,进行CAM卡数据更新。
[0029]进一步地,上述CAM卡,还用于预先设置各个TS包的身份标识与存储情况的一一对应关系;其中,存储情况包括:已存储或者未存储;初始的存储情况均为未存储。
[0030]进一步地,上述数据提供平台,具体用于:
[0031]将需要升级的镜像文件划分为第一预设值大小的多个子块;
[0032]将各个子块压缩为子压缩包,计算各个子压缩包的校验值;将计算出的各个子压缩包的校验值和镜像文件信息存入NIT中;其中,镜像文件信息包括:镜像文件版本号和各个子压缩包的长度;分别将各个子压缩包分散并封装成两个或两个以上TS包;其中,每个TS包携带有:身份标识,身份标识包括:所属子压缩包的子压缩包号和TS包号。
[0033]进一步地,上述CAM卡,具体用于:
[0034]根据预先设置的对应关系中TS包的存储情况判断TS包是否已存储;当判断出某个TS包未存储时,根据该TS包的身份标识存储该TS包并更改预先设置的对应关系中该TS包的存储情况为已存储。
[0035]进一步地,上述CAM卡根据预先设置的对应关系中TS包的存储情况判断TS包是否已存储,具体包括:
[0036]获取TS包的身份标识,根据身份标识在上述对应关系中查找与该身份标识对应的存储情况;
[0037]根据查找到的存储情况,判断TS包是否已存储。
[0038]进一步地,上述CAM卡,具体用于:按照TS包号由小到大的顺序将与识别出的未存储的TS包所属的子压缩包号相同的TS包进行拼接。
[0039]本发明技术方案包括:数据提供平台将升级镜像文件生成多个子压缩包,计算各个子压缩包的校验值;分别将各个子压缩包分散并封装成两个或两个以上TS包;其中,每个TS包携带有:身份标识,身份标识包括:所属子压缩包的子压缩包号和TS包号;如果CAM卡在NIT中检测到升级标志,CAM卡启动任务接收TS包,识别出未存储的TS包并存储;将与识别出的未存储的TS包所属的子压缩包号相同的TS包进行拼接,获取与子压缩包号相对应的子拼接数据包;计算子拼接数据包的校验值,当计算出的子拼接数据包的校验值与该子压缩包号对应的子压缩包的校验值相等时,存储该子拼接数据包;设置升级标识,进行CAM卡数据更新。本发明技术方案提高了 CAM在线升级的速度以及效率。

【专利附图】

【附图说明】
[0040]此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0041]图1为本发明支持CAM卡在线升级的方法的流程图;
[0042]图2为本发明支持CAM卡在线升级的方法的系统的结构示意图。

【具体实施方式】
[0043]为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
[0044]图1为本发明支持CAM卡在线升级的方法的流程图,如图1,包括:
[0045]步骤101:数据提供平台将升级镜像文件生成多个子压缩包,计算各个子压缩包的校验值;分别将各个子压缩包分散并封装成两个或两个以上TS包;其中,每个TS包携带有:身份标识,身份标识包括:所属子压缩包的子压缩包号和TS包号。
[0046]其中,数据提供平台将升级镜像文件生成多个子压缩包,计算各个子压缩包的校验值,具体包括:数据提供平台将需要升级的镜像文件划分为第一预设值大小的多个子块;
[0047]将各个子块压缩为子压缩包,计算各个子压缩包的校验值;将计算出的各个子压缩包的校验值和镜像文件信息存入NIT中;其中,镜像文件信息包括:镜像文件版本号和各个子压缩包的长度。
[0048]在将各个子压缩包分散并封装成多个TS包之后,该方法还包括:将生成的各个TS包复用到广电网络中(即将生成的各个TS包发送给数字电视一体机)。
[0049]本步骤中,可以采用32位循环冗余校验算法(CRC_32)算法计算各个子压缩包的校验值。需要说明的是,关于如何采用CRC_32算法计算校验值,属于本领域技术人员所熟知的惯用手段,并不用来限制本发明。另外,还可以采用信息摘要(MD)5算法计算校验值。
[0050]进一步地,第一预设值可以取64K,也可以根据实际情况进行取值。
[0051]步骤102:如果CAM卡在NIT中检测到升级标志,CAM卡启动任务接收TS包,识别出未存储的TS包并存储。
[0052]在步骤102之前,该方法还包括:CAM卡预先设置各个TS包的身份标识与存储情况的一一对应关系;其中,存储情况包括:已存储或者未存储;初始的存储情况均为未存储。以及,
[0053]如果CAM卡在NIT中检测到升级标志,保存各个子压缩包的校验值。其中,可以将各个子压缩包的校验值存储在CAM卡的闪存(flash)区域中。
[0054]其中,识别出未存储的TS包并存储,包括:根据预先设置的对应关系中TS包的存储情况判断TS包是否已存储;当判断出某个TS包未存储时,根据该TS包的身份标识存储该TS包并更改预先设置的对应关系中该TS包的存储情况为已存储。
[0055]其中,根据预先设置的对应关系中TS包的存储情况判断TS包是否已存储,包括:获取TS包的身份标识,根据身份标识在所述对应关系中查找与该身份标识对应的存储情况;根据查找到的存储情况,判断TS包是否已存储。
[0056]其中,可以将未存储的TS包存储在CAM卡的flash区域中。
[0057]步骤103:将与识别出的未存储的TS包所属的子压缩包号相同的TS包进行拼接,获取与子压缩包号相对应的子拼接数据包;计算子拼接数据包的校验值,当计算出的子拼接数据包的校验值与该子压缩包号对应的子压缩包的校验值相等时,存储该子拼接数据包。
[0058]具体包括:
[0059]在已存储的TS包获取与识别出的未存储的TS包所属的子压缩包号相同的TS包;
[0060]将获得的与识别出的未存储的TS包所属的子压缩包号相同的TS包和识别出的未存储的TS包按照TS包号由小到大的顺序进行拼接生成与子压缩包号相对应的子拼接数据包;
[0061]计算生成的子拼接数据包的校验值;获取与子压缩包号相对应的相对应的子压缩包的校验值;
[0062]比较计算出的子拼接数据包的校验值和已获得的与子压缩包号相对应的子压缩包的校验值是否相等,若相等,则按照子压缩包号存储该子拼接数据包。
[0063]其中,可以采用CRC_32算法计算生成的子拼接数据包的校验值。也可以采用MD5算法计算生成的子拼接数据包的校验值。
[0064]进一步地,当计算出的子拼接数据包的校验值与该子压缩包的校验值不相等时,返回步骤102。
[0065]举例说明,当第一预设值取64K时,若采用gizp压缩算法对划分后的各个子块进行压缩,则大小为64K的子块压缩后为16K的子压缩包。则在对TS进行拼接的过程中,相同子压缩包号的各个TS包,进行拼接后,总大小应该为16K。
[0066]步骤104:设置升级标识,进行CAM卡数据更新。
[0067]其中,升级标识可以设置为0xa5也可以设置为Oxff。其中,升级标志为0xa5时,认为有待更新的数据,CAM卡启动软件更新流程。其它值则认为是无效的。在软件更新完成后,CAM卡会将升级标识设置为Oxff,Oxff表示此次数据更新完成。
[0068]之所以选择0xa5为有效值,而不是Oxl或0x0等,是出于防止误判断的情况,提高判断的准确率。软件编程及在CAM卡的存储中,某些标志可能会被误擦写,但基本上不可能误擦写成0xa5。
[0069]进一步地,步骤101还包括:将升级镜像文件进行压缩生成压缩镜像文件,计算压缩镜像文件的校验值;相应地,
[0070]在步骤103之后,步骤104之前,本发明方法还包括:对已存储的各个子拼接数据包进行拼接生成拼接数据包,计算拼接数据包的校验值;当计算出的拼接数据包的校验值与压缩镜像文件的校验值不相等时,返回步骤102。其中,可以采用CRC_32算法(或者MD5算法)计算压缩镜像文件的校验值。
[0071]本发明方法中,通过预先对镜像文件进行分块压缩,降低了实际网络传输及备份存储的升级数据文件的资源占用率,减少了升级数据接收时间,减少了对CAM卡的闪存资源的占用,降低了硬件成本;采用不连续收包技术(判断TS包是否已存储,只存储未存储的包),支持从任意时间点启动对升级数据的接收,而无需等到下一次播放循环的开始,较大的减少了接收数据的时间,提高了升级效率;通过对接收到的升级数据的完整性校验,避免了信息传输过程中、数据存储过程中由于数据出错导致的软件更新失败。综上,本发明方法提高了在线升级的成功率和可靠性。
[0072]图2为本发明支持CAM卡在线升级的方法的系统的结构示意图,如图2所示,包括:数据提供平台,和一个或一个以上CAM卡。其中,
[0073]数据提供平台,用于将升级镜像文件生成多个子压缩包,计算各个子压缩包的校验值;分别将各个子压缩包分散并封装成两个或两个以上TS包;其中,每个TS包携带有:身份标识,身份标识包括:所属子压缩包的子压缩包号和TS包号。
[0074]其中,数据提供平台,具体用于:
[0075]将需要升级的镜像文件划分为第一预设值大小的多个子块;
[0076]将各个子块压缩为子压缩包,计算各个子压缩包的校验值;将计算出的各个子压缩包的校验值和镜像文件信息存入NIT中;其中,镜像文件信息包括:镜像文件版本号和各个子压缩包的长度;分别将各个子压缩包分散并封装成两个或两个以上TS包;其中,每个TS包携带有:身份标识,身份标识包括:所属子压缩包的子压缩包号和TS包号。
[0077]其中,数据提供平台可以采用32位循环冗余校验算法(CRC_32)算法计算各个子压缩包的校验值。
[0078]进一步地,数据提供平台,还用于:将生成的各个TS包复用到广电网络中(即将生成的各个TS包发送给数字电视一体机)。
[0079]CAM卡,用于在NIT中检测到升级标志时,启动任务接收TS包,识别出未存储的TS包并存储;将与识别出的未存储的TS包所属的子压缩包号相同的TS包进行拼接,获取与子压缩包号相对应的子拼接数据包;计算子拼接数据包的校验值,当计算出的子拼接数据包的校验值与该子压缩包号对应的子压缩包的校验值相等时,存储该子拼接数据包;设置升级标识,进行CAM卡数据更新。
[0080]其中,CAM卡可以采用CRC_32算法计算子拼接数据包的校验值。也可以采用MD5算法计算生成的子拼接数据包的校验值。
[0081]进一步地,CAM卡,还用于预先设置各个TS包的身份标识与存储情况的一一对应关系;其中,存储情况包括:已存储或者未存储;初始的存储情况均为未存储。以及,
[0082]如果在NIT中检测到升级标志时,保存各个子压缩包的校验值。其中,可以将各个子压缩包的校验值存储在CAM卡的闪存(flash)区域中。
[0083]其中,CAM卡,具体用于:
[0084]根据预先设置的对应关系中TS包的存储情况判断TS包是否已存储;当判断出某个TS包未存储时,根据该TS包的身份标识存储该TS包并更改预先设置的对应关系中该TS包的存储情况为已存储。
[0085]其中,CAM卡根据预先设置的对应关系中TS包的存储情况判断TS包是否已存储,具体包括:获取TS包的身份标识,根据身份标识在所述对应关系中查找与该身份标识对应的存储情况;
[0086]根据查找到的存储情况,判断TS包是否已存储。
[0087]进一步地,CAM卡,还具体用于:按照TS包号由小到大的顺序将与识别出的未存储的TS包所属的子压缩包号相同的TS包进行拼接。
[0088]进一步地,该系统还包括数字电视一体机,用于接收数据提供平台发送的多个TS包,并提供给CAM卡。
[0089]本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本申请不限制于任何特定形式的硬件和软件的结合。
[0090]虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。
【权利要求】
1.一种支持条件接收。舰卡在线升级的方法,应用于一个或一个以上卡中,其特征在于,包括: 数据提供平台将升级镜像文件生成多个子压缩包,计算各个子压缩包的校验值;分别将各个子压缩包分散并封装成两个或两个以上13包;其中,每个13包携带有:身份标识,身份标识包括:所属子压缩包的子压缩包号和13包号; 如果卡在中检测到升级标志,0^1卡启动任务接收13包,识别出未存储的丁3包并存储; 将与识别出的未存储的13包所属的子压缩包号相同的13包进行拼接,获取与子压缩包号相对应的子拼接数据包;计算子拼接数据包的校验值,当计算出的子拼接数据包的校验值与该子压缩包号对应的子压缩包的校验值相等时,存储该子拼接数据包; 设置升级标识,进行卡数据更新。
2.根据权利要求1所述的方法,其特征在于,该方法还包括:所述卡预先设置各个丁3包的身份标识与存储情况的一一对应关系;其中,存储情况包括:已存储或者未存储;初始的存储情况均为未存储。
3.根据权利要求2所述的方法,其特征在于,所述数据提供平台将升级镜像文件生成多个子压缩包,计算各个子压缩包的校验值,具体包括: 数据提供平台将需要升级的镜像文件划分为第一预设值大小的多个子块; 将各个子块压缩为子压缩包,计算各个子压缩包的校验值;将计算出的各个子压缩包的校验值和镜像文件信息存入犯!'中;其中,镜像文件信息包括:镜像文件版本号和各个子压缩包的长度。
4.根据权利要求2或3所述的方法,其特征在于,所述识别出未存储的13包并存储,包括: 根据预先设置的对应关系中13包的存储情况判断13包是否已存储;当判断出某个丁3包未存储时,根据该13包的身份标识存储该13包并更改预先设置的对应关系中该13包的存储情况为已存储。
5.根据权利要求4所述的方法,其特征在于,所述根据预先设置的对应关系中13包的存储情况判断13包是否已存储,包括: 获取13包的身份标识,根据身份标识在所述对应关系中查找与该身份标识对应的存储情况; 根据查找到的存储情况,判断13包是否已存储。
6.根据权利要求1所述的方法,其特征在于,所述获取与子压缩包号相对应的子拼接数据包,包括:按照13包号由小到大的顺序将与识别出的未存储的13包所属的子压缩包号相同的13包进行拼接。
7.—种支持条件接收卡在线升级的系统,其特征在于,包括:数据提供平台,和一个或一个以上卡;其中, 数据提供平台,用于将升级镜像文件生成多个子压缩包,计算各个子压缩包的校验值;分别将各个子压缩包分散并封装成两个或两个以上13包;其中,每个13包携带有:身份标识,身份标识包括:所属子压缩包的子压缩包号和13包号; 八1卡,用于在中检测到升级标志时,启动任务接收13包,识别出未存储的13包并存储;将与识别出的未存储的13包所属的子压缩包号相同的13包进行拼接,获取与子压缩包号相对应的子拼接数据包;计算子拼接数据包的校验值,当计算出的子拼接数据包的校验值与该子压缩包号对应的子压缩包的校验值相等时,存储该子拼接数据包;设置升级标识,进行卡数据更新。
8.根据权利要求7所述的系统,其特征在于,所述卡,还用于预先设置各个13包的身份标识与存储情况的一一对应关系;其中,存储情况包括:已存储或者未存储;初始的存储情况均为未存储。
9.根据权利要求8所述的系统,其特征在于,所述数据提供平台,具体用于: 将需要升级的镜像文件划分为第一预设值大小的多个子块; 将各个子块压缩为子压缩包,计算各个子压缩包的校验值;将计算出的各个子压缩包的校验值和镜像文件信息存入犯!'中;其中,镜像文件信息包括:镜像文件版本号和各个子压缩包的长度;分别将各个子压缩包分散并封装成两个或两个以上13包;其中,每个13包携带有:身份标识,身份标识包括:所属子压缩包的子压缩包号和13包号。
10.根据权利要求8或9所述的系统,其特征在于,所述卡,具体用于: 根据预先设置的对应关系中13包的存储情况判断13包是否已存储;当判断出某个丁3包未存储时,根据该13包的身份标识存储该13包并更改预先设置的对应关系中该13包的存储情况为已存储。
11.根据权利要求10所述的系统,其特征在于,所述卡根据预先设置的对应关系中18包的存储情况判断13包是否已存储,具体包括: 获取13包的身份标识,根据身份标识在所述对应关系中查找与该身份标识对应的存储情况; 根据查找到的存储情况,判断13包是否已存储。
12.根据权利要求7所述的系统,其特征在于,所述卡,具体用于:按照13包号由小到大的顺序将与识别出的未存储的13包所属的子压缩包号相同的13包进行拼接。
【文档编号】H04N21/435GK104506931SQ201510009325
【公开日】2015年4月8日 申请日期:2015年1月8日 优先权日:2015年1月8日
【发明者】王勇, 唐智 申请人:大唐微电子技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1