采矿与矿物 采矿是《生存战争》中获取资源的核心环节。不同方块需要用对应的工具才能高效开采,矿物的分布深度和挖掘韧性也各不相同。本页整理了挖掘机制、矿物分布的核心数据。关于具体的工具属性和武器数值,请参阅工具与武器。对于联机版快照新地形的矿石生成机制,参阅联机版新地形。
挖掘机制 挖掘机制由三个核心参数控制:挖掘方式决定了用哪种工具效率最高,挖掘韧性决定了方块被"敲碎"需要多久,工具等级则决定了能不能挖到东西。理解这三者的关系,是避免"徒手挖钻石"等低效操作的基础。
挖掘方式 游戏中的挖掘方式有4种:徒手挖掘、用锹挖掘、用镐挖掘、用斧挖掘。
每个方块有一个挖掘增益属性,表示用哪种工具挖掘效率最高。如果用不对应的工具挖掘,速度会大幅降低。
挖掘韧性 挖掘韧性表示方块的"硬度",值越大挖掘所需时间越长:
方块挖掘韧性挖掘增益雪1锹泥土/草地/耕地1.5锹沙子1.5锹冰4镐木板5斧石灰岩12镐砂岩12镐煤矿石/铜矿石14镐花岗岩/圆石14镐砖块14镐石砖18镐铁矿石/硫磺矿石/钻石矿石/锗矿石/玄武岩22镐基岩Infinity镐(不可破坏)通俗解释:挖掘韧性就像方块的"血量条",玩家每帧挖掘行为会增加 工具力量 / 韧性 的进度,进度达到1时方块就碎裂。韧性越高、工具力量越低,挖得就越慢。
工具等级要求 每个方块有 挖掘等级 属性,表示挖掘该方块至少需要的工具等级。如果手持工具的 工具等级 低于此值,挖掘后不会掉落任何物品。
不同于Minecraft等其他同类型的游戏,目前游戏中所有矿石和常见方块的 挖掘等级 均为 0,意味着徒手也能挖掘并掉落物品——只是速度极慢。
方块要求工具等级绝大多数方块(泥土、石头、矿石等)0(徒手即可)基岩Infinity(不可破坏)矿物 矿石是获取金属等高级材料的唯一来源。不同矿石的韧性、掉落数量和经验值各异,分布深度也有规律可循。掌握矿石数据和分布提示,可以帮助你规划高效的采矿路线。
矿石数据 各种矿石的基础数据,按方块索引排列:
矿石id掉落物掉落数量经验挖掘韧性挖掘增益煤矿23煤炭3114镐铜矿24孔雀石3114镐铁矿25铁矿石2122镐硫磺矿26硫磺3122镐钻石矿27钻石2322镐锗矿28锗矿石2122镐硝石矿29硝石2112镐规律:
煤矿和铜矿最容易挖掘(韧性14),硝石次之(12),其余矿石均为22钻石矿提供3点经验,是其他矿石的3倍铁矿、钻石矿、锗矿每次只掉落2个,其余为3个,掉落数量是固定的生成机制 矿物并非均匀分布,而是以"矿脉"形式成群出现。理解生成规律,能让你在正确的深度和岩石类型中高效寻矿。
世界生成时,地形生成器会为每个区块(16×16)及其周围8个邻区生成矿脉。所有矿石的生成数量都与山脉因子挂钩——山区附近矿物更丰富。
分布提示 本小节来自游戏内帮助文本,根据 帮助手册 中的矿物描述:
石灰岩:地表附近、水域附近生成,较脆,甚至可徒手开采砂岩:干旱沙地下方,较脆,可徒手开采,内含硝石矿脉花岗岩:地下深层,较硬玄武岩:深层地下火山岩,最硬,内含硫磺和铁矿脉,更深处偶见钻石各矿石生成参数 矿石基础矿脉数/区块生成深度伴生岩石矿脉规模估算煤矿石5~8Y=5~200花岗岩中(4~12条子脉×3~8块)铜矿石6~8Y=20~65花岗岩中(4~10条子脉×3~6块)铁矿石5~7Y=2~40玄武岩中小(3~7条子脉×3~6块)硝石矿石3~6Y=50~90砂岩大(8~16条子脉×4~8块)硫磺矿石3~5Y=2~40玄武岩中(4~10条子脉×3~6块)钻石矿石0.5~2.5Y=2~15玄武岩极小(2~6条子脉×3~6块)锗矿石3~5Y=2~50玄武岩中(4~10条子脉×3~6块)通俗解释:
深度:Y坐标,0是最底层基岩,64是海平面。数字越小代表越深。基础矿脉数:每个区块最少/最多能生成几条独立矿脉,山区会额外增加。伴生岩石:矿脉只会替换特定岩石生成。例如钻石只出现在玄武岩中,挖花岗岩永远找不到钻石。矿脉规模:矿脉由多条"子矿脉"交织而成,子矿脉越多、越长,总储量越大。生成规律总结 矿物生成三要素:山区附近、对应深度、对应岩石。关键规律:
煤矿石:分布最广(5~200层),几乎覆盖所有地下深度,是地表附近唯一能见到的矿石。铜矿石:集中在20~65层的中浅层花岗岩中,比煤稍深。铁/硫磺/锗:均生成于2~40层的玄武岩中,铁矿略多于硫磺和锗。硝石:唯一生成于砂岩(50~90层)的矿石,矿脉规模最大但深度较浅。钻石:生成量最少(基础仅0.5条/区块),深度最浅(2~15层),矿脉也最小,是名副其实的稀有矿物。山区加成:所有矿石在山区都会获得额外生成量,最高可达基础数量的1.5~2倍。写给开发者 本小节整理了挖掘系统的核心源码结构和关键逻辑,方便模组开发者在添加新方块、新工具或调整挖掘规则时快速定位相关代码。内容基于当前版本的源码快照,如有更新请以最新代码为准。
资料暂存
本小节内容暂时存放于此,后续会移动至"MOD开发"章节。
开发概览挖掘系统架构 核心文件:Survivalcraft/Block/Block.cs
方块基类中定义的关键字段:
csharppublic BlockDigMethod DigMethod; // 挖掘方式
public float DigResilience = 1f; // 挖掘韧性
public int RequiredToolLevel; // 所需最低工具等级
public float ShovelPower = 1f; // 锹力
public float QuarryPower = 1f; // 镐力
public float HackPower = 1f; // 斧力
public int ToolLevel; // 工具等级
public int Durability = -1; // 耐久(-1无限)12345678以及对应的虚方法:
csharppublic virtual BlockDigMethod GetBlockDigMethod(int value) => DigMethod;
public virtual float GetDigResilience(int value) => DigResilience;
public virtual float GetShovelPower(int value) => ShovelPower;
public virtual float GetQuarryPower(int value) => QuarryPower;
public virtual float GetHackPower(int value) => HackPower;12345掉落规则 Block.GetDropValues 中的关键判定:
csharpif (toolLevel < RequiredToolLevel) {
return; // 工具等级不足,不掉落任何东西
}123这意味着模组开发者在设计新方块时,可通过设置 RequiredToolLevel 来限制低等级工具开采高级方块。
工具类继承结构 Block(基类)
└── PickaxeBlock(抽象)
├── CopperPickaxeBlock
├── IronPickaxeBlock
└── DiamondPickaxeBlock12345类似结构适用于 AxeBlock、ShovelBlock、RakeBlock 等。
挖掘速度公式(推测) 游戏中挖掘进度的具体计算在 ComponentMiner 或 SubsystemBlockDestruction 中,核心逻辑大致为:
每帧进度 += 对应工具力量 / 方块挖掘韧性
当进度 >= 1 时,方块碎裂12例如用铁镐(镐力13)挖玄武岩(韧性22):
每帧进度 = 13/22 ≈ 0.59约需 1/0.59 ≈ 1.7 帧(实际还受游戏速度、玩家状态影响)用徒手(默认力量1)挖玄武岩(韧性22):
每帧进度 = 1/22 ≈ 0.045约需 22 帧,速度是铁镐的约1/13IyDph4fnn7/kuI7nn7/niakKCumHh+efv+aYr+OAiueUn+WtmOaImOS6ieOAi+S4reiOt+WPlui1hOa6kOeahOaguOW/g+eOr+iKguOAguS4jeWQjOaWueWdl+mcgOimgeeUqOWvueW6lOeahOW3peWFt+aJjeiDvemrmOaViOW8gOmHh++8jOefv+eJqeeahOWIhuW4g+a3seW6puWSjOaMluaOmOmfp+aAp+S5n+WQhOS4jeebuOWQjOOAguacrOmhteaVtOeQhuS6huaMluaOmOacuuWItuOAgeefv+eJqeWIhuW4g+eahOaguOW/g+aVsOaNruOAguWFs+S6juWFt+S9k+eahOW3peWFt+WxnuaAp+WSjOatpuWZqOaVsOWAvO+8jOivt+WPgumYhVvlt6XlhbfkuI7mrablmahdKC90aGVvcnkvdG9vbHMtd2VhcG9ucynjgILlr7nkuo7ogZTmnLrniYjlv6vnhafmlrDlnLDlvaLnmoTnn7/nn7PnlJ/miJDmnLrliLbvvIzlj4LpmIVb6IGU5py654mI5paw5Zyw5b2iXSgvdGhlb3J5L2Jpb21lcyMlRTglODElOTQlRTYlOUMlQkElRTclODklODglRTYlOTYlQjAlRTUlOUMlQjAlRTUlQkQlQTIp44CCCgojIyDmjJbmjpjmnLrliLYKCuaMluaOmOacuuWItueUseS4ieS4quaguOW/g+WPguaVsOaOp+WItu+8muaMluaOmOaWueW8j+WGs+WumuS6hueUqOWTquenjeW3peWFt+aViOeOh+acgOmrmO+8jOaMluaOmOmfp+aAp+WGs+WumuS6huaWueWdl+iiqyLmlbLnoo4i6ZyA6KaB5aSa5LmF77yM5bel5YW3562J57qn5YiZ5Yaz5a6a5LqG6IO95LiN6IO95oyW5Yiw5Lic6KW/44CC55CG6Kej6L+Z5LiJ6ICF55qE5YWz57O777yM5piv6YG/5YWNIuW+kuaJi+aMlumSu+efsyLnrYnkvY7mlYjmk43kvZznmoTln7rnoYDjgIIKCiMjIyDmjJbmjpjmlrnlvI8KCua4uOaIj+S4reeahOaMluaOmOaWueW8j+aciTTnp43vvJrlvpLmiYvmjJbmjpjjgIHnlKjplLnmjJbmjpjjgIHnlKjplZDmjJbmjpjjgIHnlKjmlqfmjJbmjpjjgIIKCuavj+S4quaWueWdl+acieS4gOS4qmDmjJbmjpjlop7nm4pg5bGe5oCn77yM6KGo56S655So5ZOq56eN5bel5YW35oyW5o6Y5pWI546H5pyA6auY44CC5aaC5p6c55So5LiN5a+55bqU55qE5bel5YW35oyW5o6Y77yM6YCf5bqm5Lya5aSn5bmF6ZmN5L2O44CCCgojIyMg5oyW5o6Y6Z+n5oCnCgpg5oyW5o6Y6Z+n5oCnYOihqOekuuaWueWdl+eahCLnoazluqYi77yM5YC86LaK5aSn5oyW5o6Y5omA6ZyA5pe26Ze06LaK6ZW/77yaCgp8IOaWueWdlyB8IOaMluaOmOmfp+aApyB8IOaMluaOmOWinuebiiB8CnwtLS0tLS18LS0tLS0tLS0tLXwtLS0tLS0tLS0tfAp8IOmbqiB8IDEgfCDplLkgfAp8IOazpeWcny/ojYnlnLAv6ICV5ZywIHwgMS41IHwg6ZS5IHwKfCDmspnlrZAgfCAxLjUgfCDplLkgfAp8IOWGsCB8IDQgfCDplZAgfAp8IOacqOadvyB8IDUgfCDmlqcgfAp8IOefs+eBsOWyqSB8IDEyIHwg6ZWQIHwKfCDnoILlsqkgfCAxMiB8IOmVkCB8Cnwg54Wk55+/55+zL+mTnOefv+efsyB8IDE0IHwg6ZWQIHwKfCDoirHlspflsqkv5ZyG55+zIHwgMTQgfCDplZAgfAp8IOegluWdlyB8IDE0IHwg6ZWQIHwKfCDnn7PnoJYgfCAxOCB8IOmVkCB8Cnwg6ZOB55+/55+zL+ehq+ejuuefv+efsy/pkrvnn7Pnn7/nn7Mv6ZSX55+/55+zL+eOhOatpuWyqSB8IDIyIHwg6ZWQIHwKfCDln7rlsqkgfCBJbmZpbml0eSB8IOmVkO+8iOS4jeWPr+egtOWdj++8iSB8Cgo+ICoq6YCa5L+X6Kej6YeKKirvvJrmjJbmjpjpn6fmgKflsLHlg4/mlrnlnZfnmoQi6KGA6YeP5p2hIu+8jOeOqeWutuavj+W4p+aMluaOmOihjOS4uuS8muWinuWKoCBg5bel5YW35Yqb6YePIC8g6Z+n5oCnYCDnmoTov5vluqbvvIzov5vluqbovr7liLAqKjEqKuaXtuaWueWdl+WwseeijuijguOAgumfp+aAp+i2iumrmOOAgeW3peWFt+WKm+mHj+i2iuS9ju+8jOaMluW+l+Wwsei2iuaFouOAggoKIyMjIOW3peWFt+etiee6p+imgeaxggoK5q+P5Liq5pa55Z2X5pyJIGDmjJbmjpjnrYnnuqdgIOWxnuaAp++8jOihqOekuuaMluaOmOivpeaWueWdlyoq6Iez5bCR6ZyA6KaBKirnmoTlt6XlhbfnrYnnuqfjgILlpoLmnpzmiYvmjIHlt6XlhbfnmoQgYOW3peWFt+etiee6p2Ag5L2O5LqO5q2k5YC877yM5oyW5o6Y5ZCOKirkuI3kvJrmjonokL3ku7vkvZXnianlk4EqKuOAggoKPiDkuI3lkIzkuo5NaW5lY3JhZnTnrYnlhbbku5blkIznsbvlnovnmoTmuLjmiI/vvIznm67liY3muLjmiI/kuK3miYDmnInnn7/nn7PlkozluLjop4HmlrnlnZfnmoQgYOaMluaOmOetiee6p2Ag5Z2H5Li6IDDvvIzmhI/lkbPnnYDlvpLmiYvkuZ/og73mjJbmjpjlubbmjonokL3nianlk4HigJTigJTlj6rmmK/pgJ/luqbmnoHmhaLjgIIKCnwg5pa55Z2XIHwg6KaB5rGC5bel5YW3562J57qnIHwKfC0tLS0tLXwtLS0tLS0tLS0tLS0tfAp8IOe7neWkp+WkmuaVsOaWueWdl++8iOazpeWcn+OAgeefs+WktOOAgeefv+efs+etie+8iSB8IDDvvIjlvpLmiYvljbPlj6/vvIkgfAp8IOWfuuWyqSB8IEluZmluaXR577yI5LiN5Y+v56C05Z2P77yJIHwKCiMjIOefv+eJqQoK55+/55+z5piv6I635Y+W6YeR5bGe562J6auY57qn5p2Q5paZ55qE5ZSv5LiA5p2l5rqQ44CC5LiN5ZCM55+/55+z55qE6Z+n5oCn44CB5o6J6JC95pWw6YeP5ZKM57uP6aqM5YC85ZCE5byC77yM5YiG5biD5rex5bqm5Lmf5pyJ6KeE5b6L5Y+v5b6q44CC5o6M5o+h55+/55+z5pWw5o2u5ZKM5YiG5biD5o+Q56S677yM5Y+v5Lul5biu5Yqp5L2g6KeE5YiS6auY5pWI55qE6YeH55+/6Lev57q/44CCCgojIyMg55+/55+z5pWw5o2uCgrlkITnp43nn7/nn7PnmoTln7rnoYDmlbDmja7vvIzmjInmlrnlnZfntKLlvJXmjpLliJfvvJoKCnwg55+/55+zIHwgaWQgfCDmjonokL3niakgfCDmjonokL3mlbDph48gfCDnu4/pqowgfCDmjJbmjpjpn6fmgKcgfCDmjJbmjpjlop7nm4ogfAp8LS0tLS0tfC0tLS0tLXwtLS0tLS0tLXwtLS0tLS0tLS0tfC0tLS0tLXwtLS0tLS0tLS0tfC0tLS0tLS0tLS18CnwgKirnhaTnn78qKiB8IDIzIHwg54Wk54KtIHwgMyB8IDEgfCAxNCB8IOmVkCB8CnwgKirpk5znn78qKiB8IDI0IHwg5a2U6ZuA55+zIHwgMyB8IDEgfCAxNCB8IOmVkCB8CnwgKirpk4Hnn78qKiB8IDI1IHwg6ZOB55+/55+zIHwgMiB8IDEgfCAyMiB8IOmVkCB8CnwgKirnoavno7rnn78qKiB8IDI2IHwg56Gr56O6IHwgMyB8IDEgfCAyMiB8IOmVkCB8CnwgKirpkrvnn7Pnn78qKiB8IDI3IHwg6ZK755+zIHwgMiB8ICoqMyoqIHwgMjIgfCDplZAgfAp8ICoq6ZSX55+/KiogfCAyOCB8IOmUl+efv+efsyB8IDIgfCAxIHwgMjIgfCDplZAgfAp8ICoq56Gd55+z55+/KiogfCAyOSB8IOehneefsyB8IDIgfCAxIHwgMTIgfCDplZAgfAoKPiAqKuinhOW+iyoq77yaCj4gLSDnhaTnn7/lkozpk5znn7/mnIDlrrnmmJPmjJbmjpjvvIjpn6fmgKcxNO+8ie+8jOehneefs+asoeS5i++8iDEy77yJ77yM5YW25L2Z55+/55+z5Z2H5Li6MjIKPiAtIOmSu+efs+efv+aPkOS+mzPngrnnu4/pqozvvIzmmK/lhbbku5bnn7/nn7PnmoQz5YCNCj4gLSDpk4Hnn7/jgIHpkrvnn7Pnn7/jgIHplJfnn7/mr4/mrKHlj6rmjonokL0y5Liq77yM5YW25L2Z5Li6M+S4qu+8jOaOieiQveaVsOmHj+aYr+WbuuWumueahAoKCgojIyDnlJ/miJDmnLrliLYKCj4g55+/54mp5bm26Z2e5Z2H5YyA5YiG5biD77yM6ICM5piv5LulIuefv+iEiSLlvaLlvI/miJDnvqTlh7rnjrDjgILnkIbop6PnlJ/miJDop4TlvovvvIzog73orqnkvaDlnKjmraPnoa7nmoTmt7Hluqblkozlsqnnn7PnsbvlnovkuK3pq5jmlYjlr7vnn7/jgIIKCuS4lueVjOeUn+aIkOaXtu+8jOWcsOW9oueUn+aIkOWZqOS8muS4uuavj+S4quWMuuWdl++8iDE2w5cxNu+8ieWPiuWFtuWRqOWbtDjkuKrpgrvljLrnlJ/miJDnn7/ohInjgILmiYDmnInnn7/nn7PnmoTnlJ/miJDmlbDph4/pg73kuI4qKuWxseiEieWboOWtkCoq5oyC6ZKp4oCU4oCU5bGx5Yy66ZmE6L+R55+/54mp5pu05Liw5a+M44CCCgojIyMg5YiG5biD5o+Q56S6CgrmnKzlsI/oioLmnaXoh6rmuLjmiI/lhoXluK7liqnmlofmnKzvvIzmoLnmja4gYOW4ruWKqeaJi+WGjGAg5Lit55qE55+/54mp5o+P6L+w77yaCgotICoq55+z54Gw5bKpKirvvJrlnLDooajpmYTov5HjgIHmsLTln5/pmYTov5HnlJ/miJDvvIzovoPohIbvvIznlJroh7Plj6/lvpLmiYvlvIDph4cKLSAqKuegguWyqSoq77ya5bmy5pex5rKZ5Zyw5LiL5pa577yM6L6D6ISG77yM5Y+v5b6S5omL5byA6YeH77yM5YaF5ZCr56Gd55+z55+/6ISJCi0gKiroirHlspflsqkqKu+8muWcsOS4i+a3seWxgu+8jOi+g+ehrAotICoq546E5q2m5bKpKirvvJrmt7HlsYLlnLDkuIvngavlsbHlsqnvvIzmnIDnoazvvIzlhoXlkKvnoavno7rlkozpk4Hnn7/ohInvvIzmm7Tmt7HlpITlgbbop4Hpkrvnn7MKCiMjIyDlkITnn7/nn7PnlJ/miJDlj4LmlbAKCnwg55+/55+zIHwg5Z+656GA55+/6ISJ5pWwL+WMuuWdlyB8IOeUn+aIkOa3seW6piB8IOS8tOeUn+WyqeefsyB8IOefv+iEieinhOaooeS8sOeulyB8CnwtLS0tLS18LS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLXwKfCAqKueFpOefv+efsyoqIHwgNX44IHwgWT01fjIwMCB8IOiKseWyl+WyqSB8IOS4re+8iDR+MTLmnaHlrZDohInDlzN+OOWdl++8iSB8CnwgKirpk5znn7/nn7MqKiB8IDZ+OCB8IFk9MjB+NjUgfCDoirHlspflsqkgfCDkuK3vvIg0fjEw5p2h5a2Q6ISJw5czfjblnZfvvIkgfAp8ICoq6ZOB55+/55+zKiogfCA1fjcgfCBZPTJ+NDAgfCDnjoTmrablsqkgfCDkuK3lsI/vvIgzfjfmnaHlrZDohInDlzN+NuWdl++8iSB8CnwgKirnoZ3nn7Pnn7/nn7MqKiB8IDN+NiB8IFk9NTB+OTAgfCDnoILlsqkgfCAqKuWkpyoq77yIOH4xNuadoeWtkOiEicOXNH445Z2X77yJIHwKfCAqKuehq+ejuuefv+efsyoqIHwgM341IHwgWT0yfjQwIHwg546E5q2m5bKpIHwg5Lit77yINH4xMOadoeWtkOiEicOXM3425Z2X77yJIHwKfCAqKumSu+efs+efv+efsyoqIHwgMC41fjIuNSB8IFk9Mn4xNSB8IOeOhOatpuWyqSB8ICoq5p6B5bCPKirvvIgyfjbmnaHlrZDohInDlzN+NuWdl++8iSB8CnwgKirplJfnn7/nn7MqKiB8IDN+NSB8IFk9Mn41MCB8IOeOhOatpuWyqSB8IOS4re+8iDR+MTDmnaHlrZDohInDlzN+NuWdl++8iSB8Cgo+ICoq6YCa5L+X6Kej6YeKKirvvJoKPiAtICoq5rex5bqmKirvvJpZ5Z2Q5qCH77yMMOaYr+acgOW6leWxguWfuuWyqe+8jDY05piv5rW35bmz6Z2i44CC5pWw5a2X6LaK5bCP5Luj6KGo6LaK5rex44CCCj4gLSAqKuWfuuehgOefv+iEieaVsCoq77ya5q+P5Liq5Yy65Z2X5pyA5bCRL+acgOWkmuiDveeUn+aIkOWHoOadoeeLrOeri+efv+iEie+8jOWxseWMuuS8mumineWkluWinuWKoOOAggo+IC0gKirkvLTnlJ/lsqnnn7MqKu+8muefv+iEieWPquS8muabv+aNoueJueWumuWyqeefs+eUn+aIkOOAguS+i+WmgumSu+efs+WPquWHuueOsOWcqOeOhOatpuWyqeS4re+8jOaMluiKseWyl+WyqeawuOi/nOaJvuS4jeWIsOmSu+efs+OAggo+IC0gKirnn7/ohInop4TmqKEqKu+8muefv+iEieeUseWkmuadoSLlrZDnn7/ohIki5Lqk57uH6ICM5oiQ77yM5a2Q55+/6ISJ6LaK5aSa44CB6LaK6ZW/77yM5oC75YKo6YeP6LaK5aSn44CCCgojIyMg55Sf5oiQ6KeE5b6L5oC757uTCgo8ZmlndXJlIGNsYXNzPSJhcmNoaXZlLWZpZ3VyZSI+Cjxzdmcgdmlld0JveD0iMCAwIDc2MCAzMDAiIHdpZHRoPSIxMDAlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSI3NjAiIGhlaWdodD0iMzAwIiBmaWxsPSIjZmFmYWZhIiByeD0iMTIiLz4KICA8ZyBmb250LWZhbWlseT0ic2Fucy1zZXJpZiIgdGV4dC1hbmNob3I9Im1pZGRsZSI+CiAgICA8IS0tIOagh+mimCAtLT4KICAgIDxyZWN0IHg9IjE4MCIgeT0iMTgiIHdpZHRoPSI0MDAiIGhlaWdodD0iNDQiIHJ4PSIxMCIgZmlsbD0iIzVkNDAzNyIvPgogICAgPHRleHQgeD0iMzgwIiB5PSI0NiIgZm9udC1zaXplPSIxNSIgZm9udC13ZWlnaHQ9ImJvbGQiIGZpbGw9IiNmZmYiPuefv+eJqeWcqOWTqumHjOeUn+aIkO+8n+S4ieS4quadoeS7tjwvdGV4dD4KICAgIDwhLS0g5bGx6ISJIC0tPgogICAgPHJlY3QgeD0iNDAiIHk9Ijg4IiB3aWR0aD0iMjIwIiBoZWlnaHQ9IjE1MCIgcng9IjEwIiBmaWxsPSIjNTQ2ZTdhIi8+CiAgICA8dGV4dCB4PSIxNTAiIHk9IjEyMCIgZm9udC1zaXplPSIyMiIgZmlsbD0iI2ZmZiI+4payPC90ZXh0PgogICAgPHRleHQgeD0iMTUwIiB5PSIxNDYiIGZvbnQtc2l6ZT0iMTUiIGZvbnQtd2VpZ2h0PSJib2xkIiBmaWxsPSIjZmZmIj7lsbHohIk8L3RleHQ+CiAgICA8dGV4dCB4PSIxNTAiIHk9IjE3MCIgZm9udC1zaXplPSIxMiIgZmlsbD0iI2ZmZiI+5bGx5Yy66ZmE6L+R55+/6ISJ5pu05aSaPC90ZXh0PgogICAgPHRleHQgeD0iMTUwIiB5PSIxOTAiIGZvbnQtc2l6ZT0iMTIiIGZpbGw9IiNmZmYiPuacgOWkmuWkmuWHuiA1MCV+MTAwJTwvdGV4dD4KICAgIDx0ZXh0IHg9IjE1MCIgeT0iMjIwIiBmb250LXNpemU9IjExIiBmaWxsPSIjY2ZkOGRjIj7mg7PlpJrmjJbnn78g4oaSIOWOu+WxseWMujwvdGV4dD4KICAgIDwhLS0g5rex5bqmIC0tPgogICAgPHJlY3QgeD0iMjcwIiB5PSI4OCIgd2lkdGg9IjIyMCIgaGVpZ2h0PSIxNTAiIHJ4PSIxMCIgZmlsbD0iIzZkNGM0MSIvPgogICAgPHRleHQgeD0iMzgwIiB5PSIxMjAiIGZvbnQtc2l6ZT0iMjIiIGZpbGw9IiNmZmYiPuKGlTwvdGV4dD4KICAgIDx0ZXh0IHg9IjM4MCIgeT0iMTQ2IiBmb250LXNpemU9IjE1IiBmb250LXdlaWdodD0iYm9sZCIgZmlsbD0iI2ZmZiI+5rex5bqmPC90ZXh0PgogICAgPHRleHQgeD0iMzgwIiB5PSIxNzAiIGZvbnQtc2l6ZT0iMTIiIGZpbGw9IiNmZmYiPuavj+enjeefv+efs+acieiHquW3seeahOa3seW6pjwvdGV4dD4KICAgIDx0ZXh0IHg9IjM4MCIgeT0iMTkwIiBmb250LXNpemU9IjEyIiBmaWxsPSIjZmZmIj7nhaQgNX4yMDDvvIzpkrvnn7MgMn4xNTwvdGV4dD4KICAgIDx0ZXh0IHg9IjM4MCIgeT0iMjIwIiBmb250LXNpemU9IjExIiBmaWxsPSIjZDdjY2M4Ij7mt7HluqbkuI3lr7kg4oaSIOaJvuS4jeWIsDwvdGV4dD4KICAgIDwhLS0g5bKp55+zIC0tPgogICAgPHJlY3QgeD0iNTAwIiB5PSI4OCIgd2lkdGg9IjIyMCIgaGVpZ2h0PSIxNTAiIHJ4PSIxMCIgZmlsbD0iIzc4OTA5YyIvPgogICAgPHRleHQgeD0iNjEwIiB5PSIxMjAiIGZvbnQtc2l6ZT0iMjIiIGZpbGw9IiNmZmYiPuKXvDwvdGV4dD4KICAgIDx0ZXh0IHg9IjYxMCIgeT0iMTQ2IiBmb250LXNpemU9IjE1IiBmb250LXdlaWdodD0iYm9sZCIgZmlsbD0iI2ZmZiI+5Ly055Sf5bKp55+zPC90ZXh0PgogICAgPHRleHQgeD0iNjEwIiB5PSIxNzAiIGZvbnQtc2l6ZT0iMTIiIGZpbGw9IiNmZmYiPuefv+efs+WPquWcqOeJueWumuWyqeefs+mHjDwvdGV4dD4KICAgIDx0ZXh0IHg9IjYxMCIgeT0iMTkwIiBmb250LXNpemU9IjEyIiBmaWxsPSIjZmZmIj7pkrvnn7PihpLnjoTmrablsqnvvIznoZ3nn7PihpLnoILlsqk8L3RleHQ+CiAgICA8dGV4dCB4PSI2MTAiIHk9IjIyMCIgZm9udC1zaXplPSIxMSIgZmlsbD0iI2VjZWZmMSI+5oyW6ZSZ5bKp55+zIOKGkiDnmb3otLnlirI8L3RleHQ+CiAgICA8IS0tIOe7k+iuuiAtLT4KICAgIDx0ZXh0IHg9IjM4MCIgeT0iMjc1IiBmb250LXNpemU9IjEzIiBmb250LXdlaWdodD0iYm9sZCIgZmlsbD0iIzVkNDAzNyI+5p2h5Lu25ruh6LazIOKGkiDnn7/ohInnlJ/miJA8L3RleHQ+CiAgPC9nPgo8L3N2Zz4KPGZpZ2NhcHRpb24+55+/54mp55Sf5oiQ5LiJ6KaB57Sg77ya5bGx5Yy66ZmE6L+R44CB5a+55bqU5rex5bqm44CB5a+55bqU5bKp55+z44CCPC9maWdjYXB0aW9uPgo8L2ZpZ3VyZT4KCioq5YWz6ZSu6KeE5b6LKirvvJoKLSAqKueFpOefv+efsyoq77ya5YiG5biD5pyA5bm/77yINX4yMDDlsYLvvInvvIzlh6DkuY7opobnm5bmiYDmnInlnLDkuIvmt7HluqbvvIzmmK/lnLDooajpmYTov5HllK/kuIDog73op4HliLDnmoTnn7/nn7PjgIIKLSAqKumTnOefv+efsyoq77ya6ZuG5Lit5ZyoMjB+NjXlsYLnmoTkuK3mtYXlsYLoirHlspflsqnkuK3vvIzmr5TnhaTnqI3mt7HjgIIKLSAqKumTgS/noavno7ov6ZSXKirvvJrlnYfnlJ/miJDkuo4yfjQw5bGC55qE546E5q2m5bKp5Lit77yM6ZOB55+/55Wl5aSa5LqO56Gr56O65ZKM6ZSX44CCCi0gKirnoZ3nn7MqKu+8muWUr+S4gOeUn+aIkOS6juegguWyqe+8iDUwfjkw5bGC77yJ55qE55+/55+z77yM55+/6ISJ6KeE5qih5pyA5aSn5L2G5rex5bqm6L6D5rWF44CCCi0gKirpkrvnn7MqKu+8mueUn+aIkOmHj+acgOWwke+8iOWfuuehgOS7hTAuNeadoS/ljLrlnZfvvInvvIzmt7HluqbmnIDmtYXvvIgyfjE15bGC77yJ77yM55+/6ISJ5Lmf5pyA5bCP77yM5piv5ZCN5Ymv5YW25a6e55qE56iA5pyJ55+/54mp44CCCi0gKirlsbHljLrliqDmiJAqKu+8muaJgOacieefv+efs+WcqOWxseWMuumDveS8muiOt+W+l+mineWklueUn+aIkOmHj++8jOacgOmrmOWPr+i+vuWfuuehgOaVsOmHj+eahDEuNX4y5YCN44CCCgojIyDlhpnnu5nlvIDlj5HogIUKCuacrOWwj+iKguaVtOeQhuS6huaMluaOmOezu+e7n+eahOaguOW/g+a6kOeggee7k+aehOWSjOWFs+mUrumAu+i+ke+8jOaWueS+v+aooee7hOW8gOWPkeiAheWcqOa3u+WKoOaWsOaWueWdl+OAgeaWsOW3peWFt+aIluiwg+aVtOaMluaOmOinhOWImeaXtuW/q+mAn+WumuS9jeebuOWFs+S7o+eggeOAguWGheWuueWfuuS6juW9k+WJjeeJiOacrOeahOa6kOeggeW/q+eFp++8jOWmguacieabtOaWsOivt+S7peacgOaWsOS7o+eggeS4uuWHhuOAggoKOjo6IGluZm8g6LWE5paZ5pqC5a2YCuacrOWwj+iKguWGheWuueaaguaXtuWtmOaUvuS6juatpO+8jOWQjue7reS8muenu+WKqOiHsyJNT0TlvIDlj5Ei56ug6IqC44CCCjo6OgoKPGRldGFpbHM+CjxzdW1tYXJ5PuW8gOWPkeamguiniDwvc3VtbWFyeT4KCiMjIyDmjJbmjpjns7vnu5/mnrbmnoQKCioq5qC45b+D5paH5Lu2KirvvJpgU3Vydml2YWxjcmFmdC9CbG9jay9CbG9jay5jc2AKCuaWueWdl+Wfuuexu+S4reWumuS5ieeahOWFs+mUruWtl+aute+8mgoKYGBgY3NoYXJwCnB1YmxpYyBCbG9ja0RpZ01ldGhvZCBEaWdNZXRob2Q7ICAgICAgLy8g5oyW5o6Y5pa55byPCnB1YmxpYyBmbG9hdCBEaWdSZXNpbGllbmNlID0gMWY7ICAgICAgLy8g5oyW5o6Y6Z+n5oCnCnB1YmxpYyBpbnQgUmVxdWlyZWRUb29sTGV2ZWw7ICAgICAgICAgLy8g5omA6ZyA5pyA5L2O5bel5YW3562J57qnCnB1YmxpYyBmbG9hdCBTaG92ZWxQb3dlciA9IDFmOyAgICAgICAgLy8g6ZS55YqbCnB1YmxpYyBmbG9hdCBRdWFycnlQb3dlciA9IDFmOyAgICAgICAgLy8g6ZWQ5YqbCnB1YmxpYyBmbG9hdCBIYWNrUG93ZXIgPSAxZjsgICAgICAgICAgLy8g5pan5YqbCnB1YmxpYyBpbnQgVG9vbExldmVsOyAgICAgICAgICAgICAgICAgLy8g5bel5YW3562J57qnCnB1YmxpYyBpbnQgRHVyYWJpbGl0eSA9IC0xOyAgICAgICAgICAgLy8g6ICQ5LmF77yILTHml6DpmZDvvIkKYGBgCgrku6Xlj4rlr7nlupTnmoTomZrmlrnms5XvvJoKCmBgYGNzaGFycApwdWJsaWMgdmlydHVhbCBCbG9ja0RpZ01ldGhvZCBHZXRCbG9ja0RpZ01ldGhvZChpbnQgdmFsdWUpID0+IERpZ01ldGhvZDsKcHVibGljIHZpcnR1YWwgZmxvYXQgR2V0RGlnUmVzaWxpZW5jZShpbnQgdmFsdWUpID0+IERpZ1Jlc2lsaWVuY2U7CnB1YmxpYyB2aXJ0dWFsIGZsb2F0IEdldFNob3ZlbFBvd2VyKGludCB2YWx1ZSkgPT4gU2hvdmVsUG93ZXI7CnB1YmxpYyB2aXJ0dWFsIGZsb2F0IEdldFF1YXJyeVBvd2VyKGludCB2YWx1ZSkgPT4gUXVhcnJ5UG93ZXI7CnB1YmxpYyB2aXJ0dWFsIGZsb2F0IEdldEhhY2tQb3dlcihpbnQgdmFsdWUpID0+IEhhY2tQb3dlcjsKYGBgCgojIyMg5o6J6JC96KeE5YiZCgpgQmxvY2suR2V0RHJvcFZhbHVlc2Ag5Lit55qE5YWz6ZSu5Yik5a6a77yaCgpgYGBjc2hhcnAKaWYgKHRvb2xMZXZlbCA8IFJlcXVpcmVkVG9vbExldmVsKSB7CiAgICByZXR1cm47ICAvLyDlt6XlhbfnrYnnuqfkuI3otrPvvIzkuI3mjonokL3ku7vkvZXkuJzopb8KfQpgYGAKCui/meaEj+WRs+edgOaooee7hOW8gOWPkeiAheWcqOiuvuiuoeaWsOaWueWdl+aXtu+8jOWPr+mAmui/h+iuvue9riBgUmVxdWlyZWRUb29sTGV2ZWxgIOadpemZkOWItuS9juetiee6p+W3peWFt+W8gOmHh+mrmOe6p+aWueWdl+OAggoKIyMjIOW3peWFt+exu+e7p+aJv+e7k+aehAoKYGBgCkJsb2Nr77yI5Z+657G777yJCiAg4pSU4pSA4pSAIFBpY2theGVCbG9ja++8iOaKveixoe+8iQogICAgICAgIOKUnOKUgOKUgCBDb3BwZXJQaWNrYXhlQmxvY2sKICAgICAgICDilJzilIDilIAgSXJvblBpY2theGVCbG9jawogICAgICAgIOKUlOKUgOKUgCBEaWFtb25kUGlja2F4ZUJsb2NrCmBgYAoK57G75Ly857uT5p6E6YCC55So5LqOIEF4ZUJsb2Nr44CBU2hvdmVsQmxvY2vjgIFSYWtlQmxvY2sg562J44CCCgojIyMg5oyW5o6Y6YCf5bqm5YWs5byP77yI5o6o5rWL77yJCgrmuLjmiI/kuK3mjJbmjpjov5vluqbnmoTlhbfkvZPorqHnrpflnKggYENvbXBvbmVudE1pbmVyYCDmiJYgYFN1YnN5c3RlbUJsb2NrRGVzdHJ1Y3Rpb25gIOS4re+8jOaguOW/g+mAu+i+keWkp+iHtOS4uu+8mgoKYGBgCuavj+W4p+i/m+W6piArPSDlr7nlupTlt6Xlhbflipvph48gLyDmlrnlnZfmjJbmjpjpn6fmgKcK5b2T6L+b5bqmID49IDEg5pe277yM5pa55Z2X56KO6KOCCmBgYAoK5L6L5aaC55So6ZOB6ZWQ77yI6ZWQ5YqbMTPvvInmjJbnjoTmrablsqnvvIjpn6fmgKcyMu+8ie+8mgotIOavj+W4p+i/m+W6piA9IDEzLzIyIOKJiCAwLjU5Ci0g57qm6ZyAIDEvMC41OSDiiYggMS43IOW4p++8iOWunumZhei/mOWPl+a4uOaIj+mAn+W6puOAgeeOqeWutueKtuaAgeW9seWTje+8iQoK55So5b6S5omL77yI6buY6K6k5Yqb6YePMe+8ieaMlueOhOatpuWyqe+8iOmfp+aApzIy77yJ77yaCi0g5q+P5bin6L+b5bqmID0gMS8yMiDiiYggMC4wNDUKLSDnuqbpnIAgMjIg5bin77yM6YCf5bqm5piv6ZOB6ZWQ55qE57qmMS8xMwoKPC9kZXRhaWxzPg==