From 2262798ade30ddd4bb0448eb0109d2912c8a230a Mon Sep 17 00:00:00 2001 From: KimgiaiiWuyi <444835641@qq.com> Date: Sun, 4 Sep 2022 01:21:44 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=E6=94=B9=E8=BF=9B=E7=9A=84?= =?UTF-8?q?=E6=AF=95=E4=B8=9A=E5=BA=A6=E8=AE=A1=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- genshinuid_enka/dmgCalc/dmgMap.json | 1 + genshinuid_enka/dmgCalc/dmg_calc.py | 137 +++++++-- genshinuid_enka/draw_char_card.py | 392 +++---------------------- genshinuid_enka/etc/dmgMap.json | 1 - tools/blue_data/参考面板2.7(上).xlsx | Bin 55955 -> 0 bytes tools/blue_data/参考面板3.0.xlsx | Bin 0 -> 63177 bytes tools/panle_to_json.py | 121 +++----- 7 files changed, 202 insertions(+), 450 deletions(-) create mode 100644 genshinuid_enka/dmgCalc/dmgMap.json delete mode 100644 genshinuid_enka/etc/dmgMap.json delete mode 100644 tools/blue_data/参考面板2.7(上).xlsx create mode 100644 tools/blue_data/参考面板3.0.xlsx diff --git a/genshinuid_enka/dmgCalc/dmgMap.json b/genshinuid_enka/dmgCalc/dmgMap.json new file mode 100644 index 00000000..c565c6ae --- /dev/null +++ b/genshinuid_enka/dmgCalc/dmgMap.json @@ -0,0 +1 @@ +{"胡桃": [{"seq": "护摩之杖|追忆之注连|生火暴", "critRate": 0.7000000000000001, "critDmg": 2.056, "atk": 4039.8860032000002, "other": {"生命": 35355.232, "元素精通": 80.0}}, {"seq": "护摩之杖|追忆之注连|精火暴", "critRate": 0.7000000000000001, "critDmg": 2.056, "atk": 3477.5008, "other": {"生命": 28108.0, "元素精通": 267.0}}, {"seq": "匣里灭辰|追忆之注连|生火暴", "critRate": 0.6985, "critDmg": 1.397, "atk": 3005.5919872, "other": {"生命": 32244.832, "元素精通": 301.0}}, {"seq": "匣里灭辰|追忆之注连|精火暴", "critRate": 0.6985, "critDmg": 1.397, "atk": 2573.6569600000003, "other": {"生命": 24997.600000000002, "元素精通": 488.0}}, {"seq": "护摩之杖|炽烈的炎之魔女|生火暴", "critRate": 0.7000000000000001, "critDmg": 2.056, "atk": 3911.3660032000007, "other": {}}, {"seq": "护摩之杖|炽烈的炎之魔女|精火暴", "critRate": 0.7000000000000001, "critDmg": 2.056, "atk": 3348.9808000000003, "other": {}}, {"seq": "匣里灭辰|炽烈的炎之魔女|生火暴", "critRate": 0.6985, "critDmg": 1.397, "atk": 2904.7919872, "other": {}}, {"seq": "匣里灭辰|炽烈的炎之魔女|精火暴", "critRate": 0.6985, "critDmg": 1.397, "atk": 2472.85696, "other": {}}], "托马": [{"seq": "西风长枪|绝缘之旗印千岩牢固|充生暴", "critRate": 0.7, "critDmg": "any", "atk": 1492.18, "other": {"生命": 23024.546, "充能效率": 2.224}}, {"seq": "黑缨枪|绝缘之旗印千岩牢固|充生生", "critRate": "any", "critDmg": "any", "atk": 1167.24, "other": {"生命": 33717.130999999994, "充能效率": 1.918}}], "宵宫": [{"seq": "飞雷之弦振|追忆之注连|攻火暴", "critRate": 0.8, "critDmg": 1.8559999999999999, "atk": 2308.926, "other": {}}, {"seq": "弓藏|追忆之注连|攻火暴", "critRate": 0.6985, "critDmg": 1.397, "atk": 2276.047, "other": {}}], "烟绯": [{"seq": "四风原典|流浪大地的乐团|攻火暴", "critRate": 0.768, "critDmg": 1.536, "atk": 1808.568, "other": {"元素精通": 160.0}}, {"seq": "流浪乐章|流浪大地的乐团|攻火暴", "critRate": 0.7402500000000001, "critDmg": 1.4805000000000001, "atk": 1635.5, "other": {"元素精通": 640.0}}], "可莉": [{"seq": "四风原典|炽烈的炎之魔女|攻火暴", "critRate": 0.768, "critDmg": 1.536, "atk": 1933.954, "other": {"元素精通": 80.0}}, {"seq": "流浪乐章|炽烈的炎之魔女|攻火暴", "critRate": 0.7402500000000001, "critDmg": 1.4805000000000001, "atk": 1760.886, "other": {"元素精通": 560.0}}], "迪卢克": [{"seq": "狼的末路|炽烈的炎之魔女|精火暴", "critRate": 0.6985, "critDmg": 1.397, "atk": 2193.228, "other": {"元素精通": 267.0}}, {"seq": "螭骨剑|炽烈的炎之魔女|攻火暴", "critRate": 0.8365, "critDmg": 1.673, "atk": 1803.27, "other": {"元素精通": 80.0}}], "辛焱": [{"seq": "无工之剑|苍白之火染血的骑士道|攻物暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 2798.014, "other": {"防御力": 1038.7}}, {"seq": "白影剑|苍白之火染血的骑士道|攻物暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 1924.6340000000002, "other": {"防御力": 1739.423}}, {"seq": "祭礼大剑|千岩牢固|防防防", "critRate": "any", "critDmg": "any", "atk": 1727.36, "other": {"防御力": 2723.7909999999997}}, {"seq": "白影剑|千岩牢固|防防防", "critRate": "any", "critDmg": "any", "atk": 1904.9, "other": {"防御力": 3136.8740000000003}}], "安柏": [{"seq": "终末嗟叹之诗|昔日宗室之仪|攻火暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 2310.3860000000004, "other": {"元素精通": 240.0}}, {"seq": "阿莫斯之弓|流浪大地的乐团|攻火暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 2390.1620000000003, "other": {"元素精通": 160.0}}], "香菱": [{"seq": "薙草之稻光|绝缘之旗印|充火暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 1936.61616, "other": {"元素精通": 156.0, "充能效率": 2.434}}, {"seq": "薙草之稻光|绝缘之旗印|精火暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 1815.7978400000002, "other": {"元素精通": 343.0, "充能效率": 1.916}}, {"seq": "天空之脊|绝缘之旗印|充火暴", "critRate": 0.6425000000000001, "critDmg": 1.2850000000000001, "atk": 1704.45, "other": {"元素精通": 156.0, "充能效率": 2.251}}, {"seq": "天空之脊|绝缘之旗印|精火暴", "critRate": 0.6425000000000001, "critDmg": 1.2850000000000001, "atk": 1704.45, "other": {"元素精通": 343.0, "充能效率": 1.733}}, {"seq": "渔获|绝缘之旗印|充火暴", "critRate": 0.5425000000000001, "critDmg": 1.3250000000000002, "atk": 1450.25, "other": {"元素精通": 156.0, "充能效率": 2.342}}, {"seq": "渔获|绝缘之旗印|精火暴", "critRate": 0.5425000000000001, "critDmg": 1.3250000000000002, "atk": 1450.25, "other": {"元素精通": 343.0, "充能效率": 1.824}}], "班尼特": [{"seq": "风鹰剑|昔日宗室之仪|充火暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 1608.5, "other": {"元素精通": 80.0, "充能效率": 1.985}}, {"seq": "天空之刃|昔日宗室之仪|充火暴", "critRate": 0.6225, "critDmg": 1.245, "atk": 1349.7, "other": {"元素精通": 80.0, "充能效率": 2.536}}, {"seq": "风鹰剑|被怜爱的少女|充生治", "critRate": "any", "critDmg": "any", "atk": 1522, "other": {"生命值": 26673.102, "充能效率": 1.985}}, {"seq": "天空之刃|被怜爱的少女|充生治", "critRate": "any", "critDmg": "any", "atk": 1269.8, "other": {"生命值": 26673.102, "充能效率": 2.536}}], "夜兰": [{"seq": "若水|绝缘之旗印|充水暴", "critRate": 0.8, "critDmg": 2.076, "atk": 1254.1999999999998, "other": {"生命值": 28478.0, "充能效率": 1.918}}, {"seq": "若水|绝缘之旗印|生水暴", "critRate": 0.8, "critDmg": 2.076, "atk": 1254.1999999999998, "other": {"生命值": 35211.7, "充能效率": 1.4}}, {"seq": "终末嗟叹之诗|绝缘之旗印|生水暴", "critRate": 0.6985, "critDmg": 1.397, "atk": 1333.4, "other": {"生命值": 32899.7, "充能效率": 1.951}}, {"seq": "西风猎弓|绝缘之旗印|生水暴", "critRate": 0.6985, "critDmg": 1.397, "atk": 1148.6, "other": {"生命值": 32899.7, "充能效率": 2.013}}], "神里绫人": [{"seq": "波乱月白经津|来歆余响|攻水暴", "critRate": 0.8, "critDmg": 1.8559999999999999, "atk": 2076.022, "other": {"生命值": 21238.0}}, {"seq": "磐岩结绿|沉沦之心|攻水暴", "critRate": 0.8, "critDmg": 2.076, "atk": 2083.978, "other": {"生命值": 23981.0}}, {"seq": "黑剑|来歆余响|攻水暴", "critRate": 0.8, "critDmg": 1.746, "atk": 1885.3139999999999, "other": {"生命值": 21238.0}}], "珊瑚宫心海": [{"seq": "不灭月华|海染砗磲|生水治", "critRate": 0, "critDmg": 0, "atk": 1321.4, "other": {"生命值": 40639.802}}, {"seq": "试作金珀|海染砗磲|生水治", "critRate": 0, "critDmg": 0, "atk": 1203.8, "other": {"生命值": 39521.709}}, {"seq": "讨龙英杰谭|千岩牢固|生生治", "critRate": 0, "critDmg": 0, "atk": 1073, "other": {"生命值": 47671.664000000004}}, {"seq": "试作金珀|千岩牢固|生生治", "critRate": 0, "critDmg": 0, "atk": 1203.8, "other": {"生命值": 48493.395000000004}}], "达达利亚": [{"seq": "冬极百星|沉沦之心流浪大地的乐团|攻水暴", "critRate": 0.768, "critDmg": 1.536, "atk": 1916.294, "other": {"元素精通": 160.0}}, {"seq": "冬极百星|沉沦之心角斗士的终幕礼|攻水暴", "critRate": 0.768, "critDmg": 1.536, "atk": 2079.9139999999998, "other": {"元素精通": 80.0}}, {"seq": "天空之翼|沉沦之心角斗士的终幕礼|攻水暴", "critRate": 0.7630000000000001, "critDmg": 1.5260000000000002, "atk": 2208.35, "other": {"元素精通": 80.0}}, {"seq": "弓藏|沉沦之心角斗士的终幕礼|攻水暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 2224.149, "other": {"元素精通": 80.0}}, {"seq": "苍翠猎弓|沉沦之心角斗士的终幕礼|攻水暴", "critRate": 0.7405, "critDmg": 1.481, "atk": 1889.206, "other": {"元素精通": 80.0}}], "行秋": [{"seq": "祭礼剑|沉沦之心昔日宗室之仪|攻水暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 1626.9360000000001, "other": {"生命值": 17046.4, "充能效率": 1.813}}, {"seq": "磐岩结绿|绝缘之旗印|充水暴", "critRate": 0.8, "critDmg": 1.6920000000000002, "atk": 1685.8496, "other": {"生命值": 19090.8, "充能效率": 1.918}}], "莫娜": [{"seq": "流浪乐章|绝缘之旗印|攻水暴", "critRate": 0.7402500000000001, "critDmg": 1.4805000000000001, "atk": 1718.502, "other": {"充能效率": 1.82, "元素精通": 80.0}}, {"seq": "讨龙英杰谭|昔日宗室之仪|充水暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 1205.4, "other": {"充能效率": 2.138}}, {"seq": "试作金珀|昔日宗室之仪|充水暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 1347.1000000000001, "other": {"充能效率": 2.138}}], "芭芭拉": [{"seq": "不灭月华|被怜爱的少女|生生治", "critRate": "any", "critDmg": "any", "atk": 1231.4, "other": {"生命值": 36274.566000000006}}, {"seq": "讨龙英杰谭|被怜爱的少女|生生治", "critRate": "any", "critDmg": "any", "atk": 983, "other": {"生命值": 34865.238}}, {"seq": "试作金珀|被怜爱的少女|生生治", "critRate": "any", "critDmg": "any", "atk": 1113.8, "other": {"生命值": 35462.245}}], "鹿野院平藏": [{"seq": "天空之卷|翠绿之影|攻风暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 2196.203, "other": {}}, {"seq": "四风原典|翠绿之影|攻风暴", "critRate": 0.768, "critDmg": 1.536, "atk": 1782.078, "other": {}}, {"seq": "匣里日月|翠绿之影|攻风暴", "critRate": 0.7405, "critDmg": 1.481, "atk": 1609.01, "other": {}}], "早柚": [{"seq": "狼的末路|翠绿之影|精攻治", "critRate": "any", "critDmg": "any", "atk": 2408.6240000000003, "other": {"元素精通": 443.0}}, {"seq": "西风大剑|翠绿之影|精攻治", "critRate": "any", "critDmg": "any", "atk": 1543.6680000000001, "other": {"元素精通": 443.0}}], "枫原万叶": [{"seq": "苍古自由之誓|翠绿之影|精精精", "critRate": "any", "critDmg": "any", "atk": 1397, "other": {"元素精通": 1031.0, "充能效率": 1.22}}, {"seq": "铁蜂刺|翠绿之影|精精精", "critRate": "any", "critDmg": "any", "atk": 1279.4, "other": {"元素精通": 1001.0, "充能效率": 1.22}}, {"seq": "祭礼剑|翠绿之影|精精精", "critRate": "any", "critDmg": "any", "atk": 1212.1999999999998, "other": {"元素精通": 836.0, "充能效率": 1.833}}], "魈": [{"seq": "和璞鸢|辰砂往生录|攻风暴", "critRate": 0.8, "critDmg": 1.6360000000000001, "atk": 2301.758, "other": {}}, {"seq": "护摩之杖|辰砂往生录|攻风暴", "critRate": 0.8, "critDmg": 1.8559999999999999, "atk": 2354.2052000000003, "other": {"生命": 22610.399999999998}}, {"seq": "决斗之枪|辰砂往生录|攻风暴", "critRate": 0.8, "critDmg": 1.9300000000000002, "atk": 2066.358, "other": {}}], "温迪": [{"seq": "终末嗟叹之诗|翠绿之影|精精精", "critRate": "any", "critDmg": "any", "atk": 1356.2, "other": {"元素精通": 781.0, "充能效率": 2.071}}, {"seq": "西风猎弓|翠绿之影|精精精", "critRate": "any", "critDmg": "any", "atk": 1238.6, "other": {"元素精通": 721.0, "充能效率": 2.133}}, {"seq": "绝弦|翠绿之影|充精精", "critRate": "any", "critDmg": "any", "atk": 1238.6, "other": {"元素精通": 699.0, "充能效率": 2.038}}], "琴": [{"seq": "天目影打刀|翠绿之影|攻攻治", "critRate": "any", "critDmg": "any", "atk": 2239.619, "other": {"充能效率": 1.659}}, {"seq": "西风剑|翠绿之影|攻攻治", "critRate": "any", "critDmg": "any", "atk": 1857.776, "other": {"充能效率": 1.813}}, {"seq": "风鹰剑|翠绿之影|充攻治", "critRate": "any", "critDmg": "any", "atk": 2105.958, "other": {"充能效率": 1.718}}], "砂糖": [{"seq": "祭礼残章|翠绿之影|充精精", "critRate": "any", "critDmg": "any", "atk": 1059.8, "other": {"元素精通": 755.0}}, {"seq": "试作金珀|翠绿之影|充精精", "critRate": "any", "critDmg": "any", "atk": 1127, "other": {"元素精通": 534.0}}, {"seq": "讨龙英杰谭|翠绿之影|充精精", "critRate": "any", "critDmg": "any", "atk": 996.1999999999999, "other": {"元素精通": 534.0}}], "空/荧(风)": [{"seq": "西风剑|翠绿之影|精精精", "critRate": "any", "critDmg": "any", "atk": 1270.04, "other": {"元素精通": 721.0}}], "久岐忍": [{"seq": "原木刀|千岩牢固|生生治", "critRate": "any", "critDmg": "any", "atk": 1204.55, "other": {"元素精通": 160.0, "生命值": 41302.908}}, {"seq": "西风剑|千岩牢固|生生治", "critRate": "any", "critDmg": "any", "atk": 1141.3, "other": {"元素精通": 160.0, "生命值": 41302.908}}, {"seq": "西风剑|饰金之梦|精精治", "critRate": "any", "critDmg": "any", "atk": 1141.3, "other": {"元素精通": 594.0, "生命值": 27391.760000000002}}, {"seq": "铁蜂刺|千岩牢固|生生治", "critRate": "any", "critDmg": "any", "atk": 1141.3, "other": {"元素精通": 325.0, "生命值": 41302.908}}], "八重神子": [{"seq": "神乐之真意|如雷的盛怒角斗士的终幕礼|攻雷暴", "critRate": 0.8, "critDmg": 1.8559999999999999, "atk": 2155.808, "other": {"元素精通": 80.0}}, {"seq": "神乐之真意|饰金之梦|攻雷暴", "critRate": 0.8, "critDmg": 1.8559999999999999, "atk": 1985.1680000000001, "other": {"元素精通": 160.0}}, {"seq": "天空之卷|如雷的盛怒角斗士的终幕礼|攻雷暴", "critRate": 0.6985, "critDmg": 1.397, "atk": 2619.878, "other": {"元素精通": 80.0}}, {"seq": "流浪乐章|如雷的盛怒角斗士的终幕礼|攻雷暴", "critRate": 0.79995, "critDmg": 1.7451, "atk": 1965.1, "other": {"元素精通": 80.0}}], "雷电将军": [{"seq": "薙草之稻光|绝缘之旗印|充雷暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 2012.8694000000003, "other": {"充能效率": 2.7890000000000006}}, {"seq": "渔获|绝缘之旗印|充攻暴", "critRate": 0.5425000000000001, "critDmg": 1.3250000000000002, "atk": 1806.802, "other": {"充能效率": 2.697}}], "九条裟罗": [{"seq": "天空之翼|绝缘之旗印|充雷暴", "critRate": 0.8, "critDmg": 1.4520000000000002, "atk": 1649.26, "other": {"充能效率": 1.918}}, {"seq": "祭礼弓|绝缘之旗印|充雷暴", "critRate": 0.7, "critDmg": 1.01, "atk": 1481.4, "other": {"充能效率": 2.2239999999999998}}], "刻晴": [{"seq": "雾切之回光|如雷的盛怒|攻雷暴", "critRate": 0.73375, "critDmg": 1.7675, "atk": 2071.702, "other": {}}, {"seq": "磐岩结绿|如雷的盛怒|攻雷暴", "critRate": 0.75, "critDmg": 2.176, "atk": 2116.0804, "other": {}}, {"seq": "匣里龙吟|如雷的盛怒|攻雷暴", "critRate": 0.6234999999999999, "critDmg": 1.547, "atk": 2126.107, "other": {}}], "雷泽": [{"seq": "螭骨剑|角斗士的终幕礼|攻物暴", "critRate": 0.7405, "critDmg": 1.481, "atk": 1758.824, "other": {}}, {"seq": "狼的末路|角斗士的终幕礼|攻物暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 2535.5640000000003, "other": {}}], "菲谢尔": [{"seq": "绝弦|如雷的盛怒角斗士的终幕礼|攻雷暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 1959.244, "other": {}}, {"seq": "绝弦|饰金之梦|攻雷暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 1823.5240000000001, "other": {}}, {"seq": "天空之翼|如雷的盛怒角斗士的终幕礼|攻雷暴", "critRate": 0.7630000000000001, "critDmg": 1.5260000000000002, "atk": 2317.748, "other": {}}, {"seq": "天空之翼|饰金之梦|攻雷暴", "critRate": 0.7630000000000001, "critDmg": 1.5260000000000002, "atk": 2152.5080000000003, "other": {}}], "丽莎": [{"seq": "四风原典|祭雷之人角斗士的终幕礼|攻雷暴", "critRate": 0.768, "critDmg": 1.536, "atk": 1945.6399999999999, "other": {}}, {"seq": "流浪乐章|昔日宗室之仪|攻雷暴", "critRate": 0.7402500000000001, "critDmg": 1.4805000000000001, "atk": 1621.372, "other": {}}], "北斗": [{"seq": "狼的末路|绝缘之旗印|充雷暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 1973.668, "other": {"充能效率": 1.918}}, {"seq": "螭骨剑|绝缘之旗印|充攻暴", "critRate": 0.7405, "critDmg": 1.481, "atk": 1609.01, "other": {"充能效率": 1.918}}], "空/荧(雷)": [{"seq": "西风剑|绝缘之旗印|充雷暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 1270.04, "other": {"充能效率": 2.5309999999999997}}], "提纳里": [{"seq": "猎人之径|深林的记忆|精草暴", "critRate": 0.8, "critDmg": 1.6920000000000002, "atk": 1113, "other": {"元素精通": 267.0}}, {"seq": "猎人之径|饰金之梦|精草暴", "critRate": 0.8, "critDmg": 1.6920000000000002, "atk": 1225.2800000000002, "other": {"元素精通": 347.0}}, {"seq": "阿莫斯之弓|深林的记忆|精草暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 1609.528, "other": {"元素精通": 267.0}}, {"seq": "苍翠猎弓|深林的记忆|精草暴", "critRate": 0.7405, "critDmg": 1.481, "atk": 1081, "other": {"元素精通": 267.0}}], "柯莱": [{"seq": "终末嗟叹之诗|深林的记忆|攻草暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 1851.048, "other": {"元素精通": 120.0, "充能效率": 1.701}}, {"seq": "终末嗟叹之诗|昔日宗室之仪|攻草暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 1851.048, "other": {"元素精通": 120.0, "充能效率": 1.701}}, {"seq": "西风猎弓|深林的记忆|攻草暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 1557.524, "other": {"元素精通": 60.0, "充能效率": 1.763}}, {"seq": "西风猎弓|昔日宗室之仪|攻草暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 1557.524, "other": {"元素精通": 60.0, "充能效率": 1.763}}], "空/荧(草)": [{"seq": "天空之刃|深林的记忆|精草暴", "critRate": 0.6225, "critDmg": 1.245, "atk": 1327.8, "other": {"元素精通": 267.0, "充能效率": 1.751}}, {"seq": "西风剑|深林的记忆|精草暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 1136.8400000000001, "other": {"元素精通": 267.0, "充能效率": 1.813}}, {"seq": "原木刀|深林的记忆|精草暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 1136.8400000000001, "other": {"元素精通": 267.0, "充能效率": 1.506}}], "申鹤": [{"seq": "息灾|角斗士的终幕礼追忆之注连|攻攻攻", "critRate": "any", "critDmg": "any", "atk": 4084.495, "other": {"充能效率": 1.8}}, {"seq": "薙草之稻光|角斗士的终幕礼追忆之注连|攻攻攻", "critRate": "any", "critDmg": "any", "atk": 3798.74336, "other": {"充能效率": 2.351}}, {"seq": "天空之脊|角斗士的终幕礼追忆之注连|攻攻攻", "critRate": "any", "critDmg": "any", "atk": 3681.1879999999996, "other": {"充能效率": 2.168}}, {"seq": "西风长枪|角斗士的终幕礼追忆之注连|攻攻攻", "critRate": "any", "critDmg": "any", "atk": 3305.5739999999996, "other": {"充能效率": 2.106}}], "神里绫华": [{"seq": "雾切之回光|冰风迷途的勇士|攻冰暴", "critRate": 0.3499499999999999, "critDmg": 2.5351, "atk": 2105.2560000000003, "other": {}}, {"seq": "天目影打刀|冰风迷途的勇士|攻冰暴", "critRate": 0.35, "critDmg": 2.094, "atk": 2155.3320000000003, "other": {}}], "优菈": [{"seq": "松籁响起之时|苍白之火|攻物暴", "critRate": 0.6234999999999999, "critDmg": 1.547, "atk": 2396.8579999999997, "other": {}}, {"seq": "狼的末路|苍白之火|攻物暴", "critRate": 0.6234999999999999, "critDmg": 1.547, "atk": 2649.8999999999996, "other": {}}, {"seq": "螭骨剑|苍白之火|攻物暴", "critRate": 0.75, "critDmg": 1.846, "atk": 1815.632, "other": {}}], "甘雨": [{"seq": "阿莫斯之弓|冰风迷途的勇士|攻冰暴", "critRate": 0.25, "critDmg": 2.294, "atk": 2444.066, "other": {}}, {"seq": "破魔之弓|冰风迷途的勇士|攻冰暴", "critRate": 0.25, "critDmg": 2.294, "atk": 2139.1130000000003, "other": {}}, {"seq": "试作澹月|冰风迷途的勇士|攻冰暴", "critRate": 0.25, "critDmg": 2.294, "atk": 2152.255, "other": {}}, {"seq": "阿莫斯之弓|流浪大地的乐团|攻冰暴", "critRate": 0.5235000000000001, "critDmg": 1.747, "atk": 2444.066, "other": {"元素精通": 80.0}}, {"seq": "阿莫斯之弓|流浪大地的乐团|精冰暴", "critRate": 0.5235000000000001, "critDmg": 1.747, "atk": 2004.628, "other": {"元素精通": 267.0}}, {"seq": "破魔之弓|流浪大地的乐团|攻冰暴", "critRate": 0.5235000000000001, "critDmg": 1.747, "atk": 2139.1130000000003, "other": {"元素精通": 80.0}}, {"seq": "试作澹月|流浪大地的乐团|攻冰暴", "critRate": 0.5235000000000001, "critDmg": 1.747, "atk": 2152.255, "other": {"元素精通": 80.0}}], "凯亚": [{"seq": "西风剑|绝缘之旗印|攻冰暴", "critRate": 0.5275, "critDmg": 1.355, "atk": 1506.582, "other": {"充能效率": 2.28}}, {"seq": "磐岩结绿|绝缘之旗印|充冰暴", "critRate": 0.748, "critDmg": 1.796, "atk": 1558.3448, "other": {"充能效率": 2.185}}], "重云": [{"seq": "狼的末路|冰风迷途的勇士昔日宗室之仪|攻冰暴", "critRate": 0.5275, "critDmg": 1.355, "atk": 2556.362, "other": {}}, {"seq": "螭骨剑|冰风迷途的勇士昔日宗室之仪|攻冰暴", "critRate": 0.6655000000000001, "critDmg": 1.6310000000000002, "atk": 1781.3980000000001, "other": {}}], "七七": [{"seq": "祭礼剑|海染砗磲|攻攻治", "critRate": "any", "critDmg": "any", "atk": 1964.9120000000003, "other": {}}, {"seq": "风鹰剑|海染砗磲|攻攻治", "critRate": "any", "critDmg": "any", "atk": 2648.1520000000005, "other": {}}, {"seq": "笛剑|海染砗磲|攻攻治", "critRate": "any", "critDmg": "any", "atk": 2419.065, "other": {}}], "迪奥娜": [{"seq": "祭礼弓|被怜爱的少女千岩牢固|生生生", "critRate": "any", "critDmg": "any", "atk": 1243.4, "other": {"生命值": 31293.900000000005}}], "罗莎莉亚": [{"seq": "西风长枪|昔日宗室之仪|攻冰暴", "critRate": 0.7, "critDmg": 1.0099999999999998, "atk": 1925.8300000000002, "other": {}}], "埃洛伊": [{"seq": "西风猎弓|冰风迷途的勇士角斗士的终幕礼|攻冰暴", "critRate": 0.5275, "critDmg": 1.355, "atk": 1649.848, "other": {}}], "荒泷一斗": [{"seq": "赤角石溃杵|华馆梦醒形骸记|防岩暴", "critRate": 0.8, "critDmg": 2.076, "atk": 1233.8, "other": {"防御力": 2431.065, "充能效率": 1.22}}, {"seq": "螭骨剑|华馆梦醒形骸记|防岩暴", "critRate": 0.8, "critDmg": 1.746, "atk": 1195.4, "other": {"防御力": 2162.545, "充能效率": 1.22}}, {"seq": "白影剑|华馆梦醒形骸记|防岩暴", "critRate": 0.6985, "critDmg": 1.397, "atk": 1195.4, "other": {"防御力": 2658.348, "充能效率": 1.22}}], "五郎": [{"seq": "西风猎弓|流放者|充岩暴", "critRate": 0.6025, "critDmg": "any", "atk": 1075.4, "other": {"防御力": 1083.456, "充能效率": 2.5309999999999997}}], "阿贝多": [{"seq": "辰砂之纺锤|华馆梦醒形骸记|防岩暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 1157, "other": {"防御力": 2579.8199999999997}}, {"seq": "辰砂之纺锤|悠古的磐岩|防岩暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 1157, "other": {"防御力": 2317.02}}, {"seq": "辰砂之纺锤|千岩牢固|防岩暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 1157, "other": {"防御力": 2317.02}}], "钟离": [{"seq": "黑缨枪|千岩牢固|生生生", "critRate": "any", "critDmg": "any", "atk": 1037, "other": {"生命值": 55727.565}}, {"seq": "护摩之杖|千岩牢固|生生生", "critRate": 0.6125, "critDmg": 1.225, "atk": 1755.9968800000001, "other": {"生命值": 51774.61000000001}}, {"seq": "护摩之杖|悠古的磐岩昔日宗室之仪|生岩暴", "critRate": 0.768, "critDmg": 1.536, "atk": 1611.1629599999999, "other": {"生命值": 33670.369999999995}}], "诺艾尔": [{"seq": "赤角石溃杵|华馆梦醒形骸记|防岩暴", "critRate": 0.7, "critDmg": 1.8920000000000001, "atk": 1190.6, "other": {"防御力": 2166.0889999999995}}, {"seq": "螭骨剑|华馆梦醒形骸记|防岩暴", "critRate": 0.7405, "critDmg": 1.481, "atk": 1152.1999999999998, "other": {"防御力": 2041.4449999999997}}, {"seq": "白影剑|华馆梦醒形骸记|防岩暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 1152.1999999999998, "other": {"防御力": 2454.528}}], "凝光": [{"seq": "四风原典|悠古的磐岩角斗士的终幕礼|攻岩暴", "critRate": 0.768, "critDmg": 1.536, "atk": 1906.72, "other": {}}, {"seq": "尘世之锁|悠古的磐岩角斗士的终幕礼|攻岩暴", "critRate": 0.6025, "critDmg": 1.205, "atk": 2313.44, "other": {}}, {"seq": "流浪乐章|悠古的磐岩角斗士的终幕礼|攻岩暴", "critRate": 0.7, "critDmg": 1.5611000000000002, "atk": 1716.012, "other": {}}], "空/荧(岩)": [{"seq": "雾切之回光|悠古的磐岩角斗士的终幕礼|攻岩暴", "critRate": 0.71275, "critDmg": 1.4255, "atk": 2247.7960000000003, "other": {}}, {"seq": "磐岩结绿|悠古的磐岩角斗士的终幕礼|攻岩暴", "critRate": 0.8, "critDmg": 1.6920000000000002, "atk": 2199.304, "other": {}}, {"seq": "黑剑|悠古的磐岩角斗士的终幕礼|攻岩暴", "critRate": 0.7405, "critDmg": 1.481, "atk": 1889.292, "other": {}}], "云堇": [{"seq": "薙草之稻光|华馆梦醒形骸记|防防防", "critRate": "any", "critDmg": "any", "atk": 1631.7789599999999, "other": {"充能效率": 2.618, "防御": 2511.0139999999997}}, {"seq": "天空之脊|华馆梦醒形骸记|防防防", "critRate": "any", "critDmg": "any", "atk": 1349, "other": {"充能效率": 2.435, "防御": 2511.0139999999997}}, {"seq": "西风长枪|华馆梦醒形骸记|防防暴", "critRate": 0.6, "critDmg": "any", "atk": 1218.1999999999998, "other": {"充能效率": 2.173, "防御": 2083.092}}], "旅行者": [{"seq": "护摩之杖|无锋剑|生火暴", "critRate": 0.65, "critDmg": 1.55, "atk": 2300, "other": {"生命": 16000, "元素精通": 45}}]} \ No newline at end of file diff --git a/genshinuid_enka/dmgCalc/dmg_calc.py b/genshinuid_enka/dmgCalc/dmg_calc.py index 9477fb44..9b36b50a 100644 --- a/genshinuid_enka/dmgCalc/dmg_calc.py +++ b/genshinuid_enka/dmgCalc/dmg_calc.py @@ -32,13 +32,109 @@ with open(DMG_PATH / 'char_talent_effect.json', "r", encoding='UTF-8') as f: with open(DMG_PATH / 'char_skill_effect.json', "r", encoding='UTF-8') as f: char_skill_effect_map = json.load(f) +with open(DMG_PATH / 'dmgMap.json', "r", encoding='UTF-8') as f: + dmgMap = json.load(f) + dmgBar_1 = Image.open(DMG_TEXT_PATH / 'dmgBar_1.png') dmgBar_2 = Image.open(DMG_TEXT_PATH / 'dmgBar_2.png') -async def draw_dmgCacl_img(raw_data: dict) -> Tuple[Image.Image, int]: - with open(DMG_PATH / 'char_action.json', "r", encoding='UTF-8') as f: - char_action = json.load(f) +async def get_first_main(mainName: str) -> str: + if '伤害加成' in mainName: + equipMain = mainName[0] + elif '元素' in mainName: + equipMain = mainName[2] + elif '百分比' in mainName: + if '血量' in mainName: + equipMain = '生' + else: + equipMain = mainName[3] + else: + equipMain = mainName[0] + return equipMain + + +async def get_char_percent(raw_data: dict, prop: dict, char_name: str) -> str: + # print(prop) + percent = '0.0%' + weaponName = raw_data['weaponInfo']['weaponName'] + + equipMain = '' + for aritifact in raw_data['equipList']: + mainName = aritifact['reliquaryMainstat']['statName'] + artifactsPos = aritifact['aritifactPieceName'] + if artifactsPos == '时之沙': + equipMain += await get_first_main(mainName) + elif artifactsPos == '空之杯': + equipMain += await get_first_main(mainName) + elif artifactsPos == '理之冠': + equipMain += await get_first_main(mainName) + + if 'equipSets' in raw_data: + equipSets = raw_data['equipSets'] + else: + artifact_set_list = [] + for i in raw_data['equipList']: + artifact_set_list.append(i['aritifactSetsName']) + equipSetList = set(artifact_set_list) + equipSets = {'type': '', 'set': ''} + for equip in equipSetList: + if artifact_set_list.count(equip) >= 4: + equipSets['type'] = '4' + equipSets['set'] = equip + break + elif artifact_set_list.count(equip) == 1: + pass + elif artifact_set_list.count(equip) >= 2: + equipSets['type'] += '2' + equipSets['set'] += equip + + if equipSets['type'] in ['2', '']: + seq = '' + else: + seq = '{}|{}|{}'.format( + weaponName.replace('「', '').replace('」', ''), + equipSets['set'], + equipMain, + ) + print(seq) + std_prop = dmgMap[char_name] + for std_seq in std_prop: + if std_seq['seq'] == seq: + std = std_seq + break + else: + std = dmgMap[char_name][0] + print(std) + f = [] + c = 0.83 + if std['critRate'] != 'any': + crate = (prop['critrate'] - std['critRate']) / 2 + c = c * (crate + 1) + if char_name == '珊瑚宫心海': + c = 0.83 + else: + if std['critDmg'] != 'any': + f.append(float(prop['critdmg'] / std['critDmg'])) + if std['atk'] != 'any': + f.append(float(prop['attack'] / std['atk'])) + for i in std['other']: + if '生命' in i: + f.append(float(prop['hp'] / std['other'][i])) + elif '充能' in i: + f.append(float(prop['ce'] / std['other'][i])) + elif '精通' in i: + f.append(float(prop['em'] / std['other'][i])) + elif '防御' in i: + f.append(float(prop['defense'] / std['other'][i])) + else: + f.append(1) + print(f) + percent = '{:.2f}'.format(c * (float(sum(f) / len(f)) * 100)) + return percent + + +async def calc_prop(raw_data: dict, power_list: dict) -> dict: # 获取值 char_name = raw_data['avatarName'] char_level = int(raw_data['avatarLevel']) @@ -47,15 +143,11 @@ async def draw_dmgCacl_img(raw_data: dict) -> Tuple[Image.Image, int]: weaponAffix = raw_data['weaponInfo']['weaponAffix'] skillList = raw_data['avatarSkill'] - # a_skill_name = skillList[0]['skillName'].replace('普通攻击·', '') prop = {} prop['A_skill_level'] = skillList[0]['skillLevel'] - # e_skill_name = skillList[1]['skillName'] prop['E_skill_level'] = skillList[1]['skillLevel'] - # q_skill_name = skillList[-1]['skillName'] prop['Q_skill_level'] = skillList[-1]['skillLevel'] - enemy_level = char_level skill_add = avatarName2SkillAdd[char_name] for skillAdd_index in range(0, 2): if len(raw_data['talentList']) >= 3 + skillAdd_index * 2: @@ -83,14 +175,6 @@ async def draw_dmgCacl_img(raw_data: dict) -> Tuple[Image.Image, int]: prop['healBouns'] = fight_prop['healBonus'] prop['shieldBouns'] = 0 - # 无action情况兜底 - if char_name not in char_action: - faild_img = Image.new('RGBA', (950, 1)) - return faild_img, 0 - - # 拿到倍率表 - power_list = char_action[char_name] - # 给每个技能 分别添加上属性 for prop_attr in [ 'attack', @@ -108,6 +192,7 @@ async def draw_dmgCacl_img(raw_data: dict) -> Tuple[Image.Image, int]: 'ignoreDef', 'shieldBouns', 'physicalDmgBonus', + 'healBouns', ]: if prop_attr in ['addDmg', 'd', 'r', 'ignoreDef']: prop['{}'.format(prop_attr)] = 0 @@ -121,6 +206,7 @@ async def draw_dmgCacl_img(raw_data: dict) -> Tuple[Image.Image, int]: 'ce', 'hp', 'physicalDmgBonus', + 'healBouns', ]: prop[f'{prop_limit}_{prop_attr}'] = prop[prop_attr] else: @@ -270,7 +356,7 @@ async def draw_dmgCacl_img(raw_data: dict) -> Tuple[Image.Image, int]: del power_list['effect'] # 特殊效果,目前有雷神满愿力 - extra_effect = {} + prop['extra_effect'] = {} if 'extra' in power_list: if char_name == '雷电将军': extra_value = ( @@ -293,7 +379,7 @@ async def draw_dmgCacl_img(raw_data: dict) -> Tuple[Image.Image, int]: f'Q高空下落伤害:attack+{60*extra_value2}' ) ) - extra_effect = {'Q梦想一刀基础伤害(满愿力)': extra_value} + prop['extra_effect'] = {'Q梦想一刀基础伤害(满愿力)': extra_value} del power_list['extra'] # 在计算buff前, 引入特殊效果 @@ -302,7 +388,7 @@ async def draw_dmgCacl_img(raw_data: dict) -> Tuple[Image.Image, int]: elif char_name == '钟离': all_effect.append('r+-20') - sp = [] + prop['sp'] = [] # 计算全部的buff,添加入属性 print(all_effect) if all_effect: @@ -393,7 +479,7 @@ async def draw_dmgCacl_img(raw_data: dict) -> Tuple[Image.Image, int]: if effect_limit: # 如果限制条件为中文,则为特殊label才生效 if '\u4e00' <= effect_limit[-1] <= '\u9fff': - sp.append( + prop['sp'].append( { 'effect_name': effect_limit, 'effect_attr': effect_attr, @@ -415,6 +501,19 @@ async def draw_dmgCacl_img(raw_data: dict) -> Tuple[Image.Image, int]: for attr in ['A', 'B', 'C', 'E', 'Q']: prop[f'{attr}_{effect_attr}'] += effect_value prop[f'{effect_attr}'] += effect_value + return prop + + +async def draw_dmgCacl_img( + raw_data: dict, power_list: dict, prop: dict +) -> Tuple[Image.Image, int]: + # 获取值 + char_name = raw_data['avatarName'] + char_level = int(raw_data['avatarLevel']) + enemy_level = char_level + + extra_effect = prop['extra_effect'] + sp = prop['sp'] # 计算伤害计算部分图片长宽值 w = 950 diff --git a/genshinuid_enka/draw_char_card.py b/genshinuid_enka/draw_char_card.py index b77423e3..06e8f5f6 100644 --- a/genshinuid_enka/draw_char_card.py +++ b/genshinuid_enka/draw_char_card.py @@ -11,7 +11,13 @@ from PIL import Image, ImageDraw, ImageChops from ..utils.db_operation.db_operation import config_check from ..utils.draw_image_tools.send_image_tool import convert_img from ..utils.genshin_fonts.genshin_fonts import genshin_font_origin -from .dmgCalc.dmg_calc import draw_dmgCacl_img, avatarName2SkillAdd +from .dmgCalc.dmg_calc import ( + DMG_PATH, + calc_prop, + draw_dmgCacl_img, + get_char_percent, + avatarName2SkillAdd, +) R_PATH = Path(__file__).parent RESOURCE_PATH = Path(__file__).parents[1] / 'resource' @@ -159,345 +165,6 @@ async def get_all_artifacts_value( return artifactsValue -async def get_first_main(mainName: str) -> str: - if '伤害加成' in mainName: - equipMain = mainName[0] - elif '元素' in mainName: - equipMain = mainName[2] - elif '百分比' in mainName: - if '血量' in mainName: - equipMain = '生' - else: - equipMain = mainName[3] - else: - equipMain = mainName[0] - return equipMain - - -async def get_char_percent(raw_data: dict) -> str: - percent = '0.0' - char_name = raw_data['avatarName'] - weaponName = raw_data['weaponInfo']['weaponName'] - weaponType = raw_data['weaponInfo']['weaponType'] - - fight_prop = raw_data['avatarFightProp'] - hp = fight_prop['hp'] - attack = fight_prop['atk'] - defense = fight_prop['def'] - em = fight_prop['elementalMastery'] - critrate = fight_prop['critRate'] - critdmg = fight_prop['critDmg'] - ce = fight_prop['energyRecharge'] - dmgBonus = ( - fight_prop['dmgBonus'] - if fight_prop['physicalDmgBonus'] <= fight_prop['dmgBonus'] - else fight_prop['physicalDmgBonus'] - ) - healBouns = fight_prop['healBonus'] - - # hp_green = fight_prop['addHp'] - # attack_green = fight_prop['addAtk'] - # defense_green = fight_prop['addDef'] - - r = 0.9 - equipMain = '' - for aritifact in raw_data['equipList']: - mainName = aritifact['reliquaryMainstat']['statName'] - artifactsPos = aritifact['aritifactPieceName'] - if artifactsPos == '时之沙': - equipMain += await get_first_main(mainName) - elif artifactsPos == '空之杯': - equipMain += await get_first_main(mainName) - elif artifactsPos == '理之冠': - equipMain += await get_first_main(mainName) - - if 'equipSets' in raw_data: - equipSets = raw_data['equipSets'] - else: - artifact_set_list = [] - for i in raw_data['equipList']: - artifact_set_list.append(i['aritifactSetsName']) - equipSetList = set(artifact_set_list) - equipSets = {'type': '', 'set': ''} - for equip in equipSetList: - if artifact_set_list.count(equip) >= 4: - equipSets['type'] = '4' - equipSets['set'] = equip - break - elif artifact_set_list.count(equip) == 1: - pass - elif artifact_set_list.count(equip) >= 2: - equipSets['type'] += '2' - equipSets['set'] += equip - - if equipSets['type'] in ['2', '']: - seq = '' - else: - seq = '{}|{}|{}'.format( - weaponName.replace('「', '').replace('」', ''), - equipSets['set'], - equipMain, - ) - - if char_name in dmgMap: - for action in dmgMap[char_name]: - if action['seq'] == seq: - cal = action - break - else: - if '钟离' in char_name: - cal = dmgMap[char_name][-1] - else: - cal = dmgMap[char_name][0] - - print(seq) - print(cal) - if cal['action'] == 'E刹那之花': - effect_prop = defense - elif cal['key'] == '攻击力': - effect_prop = attack - elif cal['key'] == '防御力': - effect_prop = defense - elif cal['key'] == '血量': - effect_prop = hp - else: - effect_prop = attack - - dmgBonus_value_cal = 0 - dmgBonus_cal = dmgBonus - em_cal = em - - if '夜兰' in char_name: - effect_prop = hp - elif '胡桃' in char_name: - effect_prop += ( - 0.4 * hp - if 0.4 * hp <= fight_prop['baseAtk'] * 4 - else fight_prop['baseAtk'] * 4 - ) - elif '一斗' in char_name: - effect_prop += 0.9792 * defense - dmgBonus_value_cal += 0.35 * defense - elif '诺艾尔' in char_name: - effect_prop = attack - effect_prop += 1.3 * defense - elif '烟绯' in char_name: - dmgBonus_value_cal += 0.6 + 0.2 - elif '优菈' in char_name: - r = 1.065 - elif '钟离' in char_name: - r = 1.05 - elif '辛焱' in char_name: - r = 1.025 - - if '踩班' in cal['action']: - effect_prop += 1202 - effect_prop += fight_prop['baseAtk'] * 0.25 - - if '雾切' in weaponName: - dmgBonus_cal += 0.28 - elif '弓藏' in weaponName and ( - '首' in cal['action'] - or '击' in cal['action'] - or '两段' in cal['action'] - ): - dmgBonus_cal += 0.8 - elif '飞雷' in weaponName and ( - '首' in cal['action'] - or '击' in cal['action'] - or '两段' in cal['action'] - ): - dmgBonus_cal += 0.4 - elif '阿莫斯' in weaponName: - dmgBonus_cal += 0.52 - elif '破魔' in weaponName: - dmgBonus_cal += 0.18 * 2 - elif '赤角石溃杵' in weaponName and ( - '首' in cal['action'] - or '击' in cal['action'] - or '两段' in cal['action'] - ): - dmgBonus_value_cal += 0.4 * defense - elif '螭骨剑' in weaponName: - dmgBonus_cal += 0.4 - elif '松籁响起之时' in weaponName: - effect_prop += fight_prop['baseAtk'] * 0.2 - elif '试作澹月' in weaponName: - effect_prop += fight_prop['baseAtk'] * 0.72 - elif '流浪乐章' in weaponName and '烟绯' in char_name: - em_cal += 480 - elif '冬极' in weaponName: - effect_prop += fight_prop['baseAtk'] * 0.48 - dmgBonus_cal += 0.12 - - if '蒸发' in cal['action'] or '融化' in cal['action']: - k = 0 - if '蒸发' in cal['action']: - if raw_data['avatarElement'] == 'Pyro': - k = 1.5 - else: - k = 2 - elif '融化' in cal['action']: - if raw_data['avatarElement'] == 'Pyro': - k = 2 - else: - k = 1.5 - - if equipSets['type'] in ['2', '']: - a = 0 - else: - if '魔女' in equipSets['set']: - a = 0.15 - else: - a = 0 - add_dmg = k * (1 + (2.78 * em_cal) / (em_cal + 1400) + a) - else: - add_dmg = 1 - - if equipSets['type'] in ['2', '', '22']: - pass - else: - if '追忆' in equipSets['set']: - dmgBonus_cal += 0.5 - elif '绝缘' in equipSets['set']: - Bouns = ce * 0.25 if ce * 0.25 <= 0.75 else 0.75 - dmgBonus_cal += Bouns - elif '乐团' in equipSets['set']: - if weaponType in ['法器', '弓']: - dmgBonus_cal += 0.35 - elif '华馆' in equipSets['set']: - if raw_data['avatarElement'] == 'Geo': - effect_prop += 0.24 * defense - dmgBonus_cal += 0.24 - - critdmg_cal = critdmg - healBouns_cal = healBouns - - if '魈' in char_name: - dmgBonus_cal += 0.906 - elif '绫华' in char_name: - dmgBonus_cal += 0.18 - elif '宵宫' in char_name: - dmgBonus_cal += 0.5 - elif '九条' in char_name: - effect_prop += 0.9129 * fight_prop['baseAtk'] - critdmg_cal += 0.6 - - if '治疗' in cal['action']: - if equipSets['type'] in ['2', '']: - healBouns_cal += 0 - else: - if '少女' in equipSets['set']: - healBouns_cal += 0.2 - - if cal['action'] == '扩散': - dmg = 868 * 1.15 * (1 + 0.6 + (16 * em_cal) / (em_cal + 2000)) - elif '霄宫' in char_name: - dmg = ( - effect_prop - * cal['power'] - * (1 + critdmg_cal) - * (1 + dmgBonus_cal) - * 0.5 - * r - * add_dmg - * 1.5879 - ) - elif '班尼特' in char_name and 'Q治疗' in cal['action']: - power = cal['power'].split('+') - dmg = (effect_prop * float(power[0]) / 100 + float(power[1])) * ( - 1 + healBouns_cal - ) - elif '心海' in char_name and cal['action'] == '开Q普攻': - dmg = ( - (attack * cal['power'] + hp * (0.0971 + 0.15 * healBouns_cal)) - * (1 + dmgBonus_cal) - * 0.5 - * r - * add_dmg - ) - elif '心海' in char_name and cal['action'] == '水母回血': - dmg = (862 + 0.0748 * hp) * (1 + healBouns_cal) - elif char_name in ['芭芭拉', '早柚', '琴', '七七']: - power = cal['power'].split('+') - dmg = (effect_prop * float(power[0]) / 100 + float(power[1])) * ( - 1 + healBouns_cal - ) - elif '绫人' in char_name: - dmg = ( - (effect_prop * cal['power'] + 0.0222 * hp) - * (1 + critdmg_cal) - * (1 + dmgBonus_cal) - * 0.5 - * r - * add_dmg - * 1.5879 - ) - elif char_name in ['荒泷一斗', '诺艾尔']: - dmg = ( - (effect_prop * cal['power'] + dmgBonus_value_cal) - * (1 + critdmg_cal) - * (1 + dmgBonus_cal) - * 0.5 - * r - ) - elif '迪奥娜' in char_name: - dmg = (effect_prop * cal['power'] + 1905) * 1.9 - elif '钟离' in char_name and 'E实际盾值' in cal['action']: - dmg = (2506 + hp * cal['power']) * 1.5 * 1.3 - elif cal['action'] == 'Q开盾天星': - effect_prop = attack - dmg = ( - (effect_prop * cal['power'] + 0.33 * hp) - * (1 + critdmg_cal) - * (1 + dmgBonus_cal) - * 0.5 - * r - * add_dmg - ) - elif '凝光' in char_name: - dmg = ( - effect_prop - * cal['power'] - * (1 + critdmg_cal * critrate) - * (1 + dmgBonus_cal) - * 0.5 - * r - * add_dmg - ) - elif isinstance(cal['power'], str): - if cal['power'] == '攻击力': - dmg = attack - elif cal['power'] == '防御力': - dmg = defense - else: - power = cal['power'].split('+') - dmg = effect_prop * float(power[0]) / 100 + float(power[1]) - elif cal['val'] != 'any': - dmg = ( - effect_prop - * cal['power'] - * (1 + critdmg_cal) - * (1 + dmgBonus_cal) - * 0.5 - * r - * add_dmg - ) - else: - dmg = attack - print(dmg) - - if cal['val'] != 'any': - percent = '{:.2f}'.format(dmg / cal['val'] * 100) - elif cal['power'] == '攻击力': - percent = '{:.2f}'.format(dmg / cal['atk'] * 100) - elif '云堇' in char_name: - percent = '{:.2f}'.format(dmg / cal['other2'] * 100) - elif cal['power'] == '防御力': - percent = '{:.2f}'.format(dmg / cal['other'] * 100) - return percent - - async def draw_char_img( raw_data: dict, charUrl: Optional[str] = None ) -> bytes: @@ -560,7 +227,17 @@ async def draw_char_img( y2 = new_h / 2 + based_new_h / 2 - offset_y / 2 char_img = bg_img2.crop((x1, y1, x2, y2)) # type: ignore - dmg_img, dmg_len = await draw_dmgCacl_img(raw_data) + with open(DMG_PATH / 'char_action.json', "r", encoding='UTF-8') as f: + char_action = json.load(f) + # 拿到倍率表 + power_list = char_action[char_name] + new_prop = await calc_prop(raw_data, power_list) + if char_name not in char_action: + dmg_img, dmg_len = Image.new('RGBA', (950, 1)), 0 + else: + dmg_img, dmg_len = await draw_dmgCacl_img( + raw_data, power_list, new_prop + ) img_w, img_h = 950, 1850 + dmg_len * 40 overlay = Image.open(TEXT_PATH / 'overlay.png') overlay_w, overlay_h = overlay.size @@ -1053,7 +730,7 @@ async def draw_char_img( genshin_font_origin(50), anchor='mm', ) - percent = await get_char_percent(raw_data) + percent = await get_char_percent(raw_data, new_prop, char_name) img_text.text( (768, 1690), f'{str(percent)+"%"}', @@ -1088,19 +765,18 @@ async def draw_single_card( 'RGBA', overlay.size, COLOR_MAP[char['avatarElement']] ) img_base = ImageChops.overlay(color_img, overlay) - ''' - if char['char_name'] in avatarCardOffsetMap: - offset_x, offset_y = ( - avatarCardOffsetMap[char['char_name']][0], - avatarCardOffsetMap[char['char_name']][1], - ) - else: - offset_x, offset_y = 200, 0 - ''' - offset_x, offset_y = 0, 0 - char_img = Image.open(GACHA_PATH / f'{char["char_name"]}.png') + char_img_raw = Image.open(STAND_PATH / f'{char["id"]}.png') + char_img = char_img_raw.resize( + (round(char_img_raw.size[0] * 0.5), round(char_img_raw.size[1] * 0.5)) + ).convert('RGBA') - img_base.paste(char_img, (-760 + offset_x, 110 + offset_y), char_img) + offset_x, offset_y = 0, 0 + if char['char_name'] == '八重神子': + offset_x = -100 + elif char['char_name'] == '早柚': + offset_x = 50 + + img_base.paste(char_img, (-380 + offset_x, 200 + offset_y), char_img) img_card.paste(img_base, (-25, -260), char_card_mask) img_card = Image.alpha_composite(img_card, char_card_1) # img_card.paste(img_card, (0, 0), img_card) @@ -1189,6 +865,8 @@ async def draw_cahrcard_list(uid: str, limit: int = 24) -> Union[str, bytes]: return '你还没有已缓存的角色!\n请先使用【强制刷新】进行刷新!' char_done_list = [] + with open(DMG_PATH / 'char_action.json', "r", encoding='UTF-8') as f: + char_action = json.load(f) for char_name in char_list: temp = {} with open(uid_fold / f'{char_name}.json', 'r', encoding='UTF-8') as f: @@ -1198,9 +876,13 @@ async def draw_cahrcard_list(uid: str, limit: int = 24) -> Union[str, bytes]: skillList = raw_data['avatarSkill'] temp['char_name'] = char_name + temp['id'] = raw_data['avatarId'] temp['avatarEnName'] = raw_data['avatarEnName'] temp['avatarElement'] = raw_data['avatarElement'] - temp['percent'] = await get_char_percent(raw_data) + # 拿到倍率表 + power_list = char_action[char_name] + new_prop = await calc_prop(raw_data, power_list) + temp['percent'] = await get_char_percent(raw_data, new_prop, char_name) temp['critrate'] = fight_prop['critRate'] temp['critdmg'] = fight_prop['critDmg'] baseHp = fight_prop['baseHp'] diff --git a/genshinuid_enka/etc/dmgMap.json b/genshinuid_enka/etc/dmgMap.json deleted file mode 100644 index b11f0c7c..00000000 --- a/genshinuid_enka/etc/dmgMap.json +++ /dev/null @@ -1 +0,0 @@ -{"胡桃": [{"seq": "护摩之杖|追忆之注连|生火暴", "action": "重击蒸发", "crit_rate": 0.7000000000000001, "atk": 4039.8860032000002, "dmgBouns": 1.296, "defArea": 0.5, "resArea": 0.9, "other": 35355.232, "other2": 80, "key": "攻击力", "power": 2.4257, "val": 53386.95}, {"seq": "护摩之杖|追忆之注连|精火暴", "action": "重击蒸发", "crit_rate": 0.7000000000000001, "atk": 3477.5008, "dmgBouns": 1.296, "defArea": 0.5, "resArea": 0.9, "other": 28108, "other2": 267, "key": "攻击力", "power": 2.4257, "val": 57740.61}, {"seq": "匣里灭辰|追忆之注连|生火暴", "action": "重击蒸发", "crit_rate": 0.6985, "atk": 3005.5919872, "dmgBouns": 1.6560000000000001, "defArea": 0.5, "resArea": 0.9, "other": 32244.832, "other2": 301, "key": "攻击力", "power": 2.4257, "val": 46743.01}, {"seq": "匣里灭辰|追忆之注连|精火暴", "action": "重击蒸发", "crit_rate": 0.6985, "atk": 2573.6569600000003, "dmgBouns": 1.6560000000000001, "defArea": 0.5, "resArea": 0.9, "other": 24997.600000000002, "other2": 488, "key": "攻击力", "power": 2.4257, "val": 46105.44}, {"seq": "护摩之杖|炽烈的炎之魔女|生火暴", "action": "重击蒸发", "crit_rate": 0.7000000000000001, "atk": 3911.3660032000007, "dmgBouns": 1.0210000000000001, "defArea": 0.5, "resArea": 0.9, "other": 35355.232, "other2": 80, "key": "攻击力", "power": 2.4257, "val": 51430.72}, {"seq": "护摩之杖|炽烈的炎之魔女|精火暴", "action": "重击蒸发", "crit_rate": 0.7000000000000001, "atk": 3348.9808000000003, "dmgBouns": 1.0210000000000001, "defArea": 0.5, "resArea": 0.9, "other": 28108, "other2": 267, "key": "攻击力", "power": 2.4257, "val": 54026.46}, {"seq": "匣里灭辰|炽烈的炎之魔女|生火暴", "action": "重击蒸发", "crit_rate": 0.6985, "atk": 2904.7919872, "dmgBouns": 1.3810000000000002, "defArea": 0.5, "resArea": 0.9, "other": 32244.832, "other2": 301, "key": "攻击力", "power": 2.4257, "val": 44569.63}, {"seq": "匣里灭辰|炽烈的炎之魔女|精火暴", "action": "重击蒸发", "crit_rate": 0.6985, "atk": 2472.85696, "dmgBouns": 1.3810000000000002, "defArea": 0.5, "resArea": 0.9, "other": 24997.600000000002, "other2": 488, "key": "攻击力", "power": 2.4257, "val": 43179.16}], "托马": [{"seq": "西风长枪|绝缘之旗印千岩牢固|充生暴", "action": "满层护盾", "crit_rate": 0.7, "atk": 1492.18, "dmgBouns": 0, "defArea": 0.5, "resArea": 0.9, "other": 23024.546, "other2": 2.224, "key": "血量", "power": "14.40+4829", "val": 13854.62}, {"seq": "黑缨枪|绝缘之旗印千岩牢固|充生生", "action": "满层护盾", "crit_rate": "any", "atk": 1167.24, "dmgBouns": 0, "defArea": 0.5, "resArea": 0.9, "other": 33717.130999999994, "other2": 1.918, "key": "血量", "power": "14.40+4829", "val": 18046.12}], "宵宫": [{"seq": "飞雷之弦振|追忆之注连|攻火暴", "action": "开E首箭", "crit_rate": 0.8, "atk": 2308.926, "dmgBouns": 1.366, "defArea": 0.5, "resArea": 0.9, "other": null, "other2": null, "key": "攻击力", "power": 0.6359, "val": 7089.37}, {"seq": "弓藏|追忆之注连|攻火暴", "action": "开E首箭", "crit_rate": 0.6985, "atk": 2276.047, "dmgBouns": 1.766, "defArea": 0.5, "resArea": 0.9, "other": null, "other2": null, "key": "攻击力", "power": 0.6359, "val": 6856.87}], "烟绯": [{"seq": "四风原典|流浪大地的乐团|攻火暴", "action": "开Q重击蒸发", "crit_rate": 0.768, "atk": 1808.568, "dmgBouns": 2.2560000000000002, "defArea": 0.5, "resArea": 0.9, "other": 160, "other2": null, "key": "攻击力", "power": 2.7292, "val": 35355.26}, {"seq": "流浪乐章|流浪大地的乐团|攻火暴", "action": "开Q重击蒸发", "crit_rate": 0.7402500000000001, "atk": 1635.5, "dmgBouns": 1.8559999999999999, "defArea": 0.5, "resArea": 0.9, "other": 640, "other2": null, "key": "攻击力", "power": 2.7292, "val": 39960.36}], "可莉": [{"seq": "四风原典|炽烈的炎之魔女|攻火暴", "action": "金花重击蒸发", "crit_rate": 0.768, "atk": 1933.954, "dmgBouns": 1.9540000000000002, "defArea": 0.5, "resArea": 0.9, "other": 80, "other2": null, "key": "攻击力", "power": 2.8325, "val": 36017.47}, {"seq": "流浪乐章|炽烈的炎之魔女|攻火暴", "action": "金花重击蒸发", "crit_rate": 0.7402500000000001, "atk": 1760.886, "dmgBouns": 1.554, "defArea": 0.5, "resArea": 0.9, "other": 560, "other2": null, "key": "攻击力", "power": 2.8325, "val": 41469.15}], "迪卢克": [{"seq": "狼的末路|炽烈的炎之魔女|精火暴", "action": "Q蒸发", "crit_rate": 0.6985, "atk": 2193.228, "dmgBouns": 1.041, "defArea": 0.5, "resArea": 0.9, "other": 267, "other2": null, "key": "攻击力", "power": 3.264, "val": 37712.22}, {"seq": "螭骨剑|炽烈的炎之魔女|攻火暴", "action": "Q蒸发", "crit_rate": 0.8365, "atk": 1803.27, "dmgBouns": 1.4409999999999998, "defArea": 0.5, "resArea": 0.9, "other": 80, "other2": null, "key": "攻击力", "power": 3.264, "val": 33706.61}], "辛焱": [{"seq": "无工之剑|苍白之火染血的骑士道|攻物暴", "action": "Q横扫", "crit_rate": 0.6025, "atk": 2798.014, "dmgBouns": 1.083, "defArea": 0.5, "resArea": 1.025, "other": 1038.7, "other2": null, "key": "攻击力", "power": 7.242000000000001, "val": 47698.0}, {"seq": "白影剑|苍白之火染血的骑士道|攻物暴", "action": "Q横扫", "crit_rate": 0.6025, "atk": 1924.6340000000002, "dmgBouns": 1.083, "defArea": 0.5, "resArea": 1.025, "other": 1739.423, "other2": null, "key": "攻击力", "power": 7.242000000000001, "val": 32809.41}, {"seq": "祭礼大剑|千岩牢固|防防防", "action": "E盾值", "crit_rate": "any", "atk": 1727.36, "dmgBouns": 1.083, "defArea": 0.5, "resArea": 1.025, "other": 2723.7909999999997, "other2": null, "key": "防御力", "power": "2.88 + 1773", "val": 9617.52}, {"seq": "白影剑|千岩牢固|防防防", "action": "E盾值", "crit_rate": "any", "atk": 1904.9, "dmgBouns": 1.083, "defArea": 0.5, "resArea": 1.025, "other": 3136.8740000000003, "other2": null, "key": "防御力", "power": "2.88 + 1773", "val": 10807.2}], "安柏": [{"seq": "终末嗟叹之诗|昔日宗室之仪|攻火暴", "action": "Q总共", "crit_rate": 0.6025, "atk": 2310.3860000000004, "dmgBouns": 0.666, "defArea": 0.5, "resArea": 0.9, "other": 240, "other2": null, "key": "攻击力", "power": 10.1088, "val": 38608.26}, {"seq": "阿莫斯之弓|流浪大地的乐团|攻火暴", "action": "蓄力蒸发", "crit_rate": 0.6025, "atk": 2390.1620000000003, "dmgBouns": 1.336, "defArea": 0.5, "resArea": 0.9, "other": 160, "other2": null, "key": "攻击力", "power": 2.2319999999999998, "val": 26619.35}], "香菱": [{"seq": "薙草之稻光|绝缘之旗印|充火暴", "action": "Q踩班蒸发", "crit_rate": 0.6025, "atk": 1936.61616, "dmgBouns": 1.0745, "defArea": 0.5, "resArea": 0.9, "other": 156, "other2": 2.434, "key": "攻击力", "power": 2.38, "val": 29492.71}, {"seq": "薙草之稻光|绝缘之旗印|精火暴", "action": "Q踩班蒸发", "crit_rate": 0.6025, "atk": 1815.7978400000002, "dmgBouns": 0.9450000000000001, "defArea": 0.5, "resArea": 0.9, "other": 343, "other2": 1.916, "key": "攻击力", "power": 2.38, "val": 32166.85}, {"seq": "天空之脊|绝缘之旗印|充火暴", "action": "Q踩班蒸发", "crit_rate": 0.6425000000000001, "atk": 1704.45, "dmgBouns": 1.02875, "defArea": 0.5, "resArea": 0.9, "other": 156, "other2": 2.251, "key": "攻击力", "power": 2.38, "val": 28530.6}, {"seq": "天空之脊|绝缘之旗印|精火暴", "action": "Q踩班蒸发", "crit_rate": 0.6425000000000001, "atk": 1704.45, "dmgBouns": 0.8992500000000001, "defArea": 0.5, "resArea": 0.9, "other": 343, "other2": 1.733, "key": "攻击力", "power": 2.38, "val": 32314.72}, {"seq": "渔获|绝缘之旗印|充火暴", "action": "Q踩班蒸发", "crit_rate": 0.5425000000000001, "atk": 1450.25, "dmgBouns": 1.3715000000000002, "defArea": 0.5, "resArea": 0.9, "other": 156, "other2": 2.342, "key": "攻击力", "power": 2.38, "val": 30876.38}, {"seq": "渔获|绝缘之旗印|精火暴", "action": "Q踩班蒸发", "crit_rate": 0.5425000000000001, "atk": 1450.25, "dmgBouns": 1.242, "defArea": 0.5, "resArea": 0.9, "other": 343, "other2": 1.824, "key": "攻击力", "power": 2.38, "val": 35316.25}], "班尼特": [{"seq": "风鹰剑|昔日宗室之仪|充火暴", "action": "Q蒸发", "crit_rate": 0.6025, "atk": 1608.5, "dmgBouns": 0.666, "defArea": 0.5, "resArea": 0.9, "other": 80, "other2": 1.985, "key": "攻击力", "power": 4.947, "val": 39661.29}, {"seq": "天空之刃|昔日宗室之仪|充火暴", "action": "Q蒸发", "crit_rate": 0.6225, "atk": 1349.7, "dmgBouns": 0.666, "defArea": 0.5, "resArea": 0.9, "other": 80, "other2": 2.536, "key": "攻击力", "power": 4.947, "val": 35344.9}, {"seq": "风鹰剑|被怜爱的少女|充生治", "action": "Q治疗", "crit_rate": "any", "atk": 1522, "dmgBouns": "/", "defArea": 0.5, "resArea": 0.9, "other": 26673.102, "other2": 1.985, "key": "血量", "power": "12.75+1587.82", "val": 8520.91}, {"seq": "天空之刃|被怜爱的少女|充生治", "action": "Q治疗", "crit_rate": "any", "atk": 1269.8, "dmgBouns": "/", "defArea": 0.5, "resArea": 0.9, "other": 26673.102, "other2": 2.536, "key": "血量", "power": "12.75+1587.82", "val": 8520.91}], "夜兰": [{"seq": "若水|绝缘之旗印|充水暴", "action": "Q协同", "crit_rate": 0.8, "atk": 1254.1999999999998, "dmgBouns": 1.1455, "defArea": 0.5, "resArea": 0.9, "other": 28478, "other2": 1.918, "key": "血量", "power": 0.0877, "val": 7417.14}, {"seq": "若水|绝缘之旗印|生水暴", "action": "Q协同", "crit_rate": 0.8, "atk": 1254.1999999999998, "dmgBouns": 1.016, "defArea": 0.5, "resArea": 0.9, "other": 35211.7, "other2": 1.4, "key": "血量", "power": 0.0877, "val": 8617.39}, {"seq": "终末嗟叹之诗|绝缘之旗印|生水暴", "action": "Q协同", "crit_rate": 0.6985, "atk": 1333.4, "dmgBouns": 0.9537500000000001, "defArea": 0.5, "resArea": 0.9, "other": 32899.7, "other2": 1.951, "key": "血量", "power": 0.0877, "val": 6080.52}, {"seq": "西风猎弓|绝缘之旗印|生水暴", "action": "Q协同", "crit_rate": 0.6985, "atk": 1148.6, "dmgBouns": 0.96925, "defArea": 0.5, "resArea": 0.9, "other": 32899.7, "other2": 2.013, "key": "血量", "power": 0.0877, "val": 6128.76}], "神里绫人": [{"seq": "波乱月白经津|来歆余响|攻水暴", "action": "E首刀+余响/无", "crit_rate": 0.8, "atk": 2076.022, "dmgBouns": 0.986, "defArea": 0.5, "resArea": 0.9, "other": 21238, "other2": null, "key": "攻击力", "power": 1.0455, "val": 10452.57}, {"seq": "磐岩结绿|沉沦之心|攻水暴", "action": "E首刀+沉沦4", "crit_rate": 0.8, "atk": 2083.978, "dmgBouns": 0.9159999999999999, "defArea": 0.5, "resArea": 0.9, "other": 23981, "other2": null, "key": "攻击力", "power": 1.0455, "val": 7190.39}, {"seq": "黑剑|来歆余响|攻水暴", "action": "E首刀+余响/无", "crit_rate": 0.8, "atk": 1885.3139999999999, "dmgBouns": 0.8660000000000001, "defArea": 0.5, "resArea": 0.9, "other": 21238, "other2": null, "key": "攻击力", "power": 1.0455, "val": 8675.17}], "珊瑚宫心海": [{"seq": "不灭月华|海染砗磲|生水治", "action": "开Q普攻", "crit_rate": 0, "atk": 1321.4, "dmgBouns": 0.754, "defArea": 0.5, "resArea": 0.9, "other": 40639.802, "other2": 0.858, "key": "攻击力", "power": 0.9573, "val": 8241.43}, {"seq": "试作金珀|海染砗磲|生水治", "action": "开Q普攻", "crit_rate": 0, "atk": 1203.8, "dmgBouns": 0.754, "defArea": 0.5, "resArea": 0.9, "other": 39521.709, "other2": 0.758, "key": "攻击力", "power": 0.9573, "val": 7173.44}, {"seq": "讨龙英杰谭|千岩牢固|生生治", "action": "水母回血", "crit_rate": 0, "atk": 1073, "dmgBouns": 0.288, "defArea": 0.5, "resArea": 0.9, "other": 47671.664000000004, "other2": 0.608, "key": "血量", "power": 0.9573, "val": 7119.97}, {"seq": "试作金珀|千岩牢固|生生治", "action": "水母回血", "crit_rate": 0, "atk": 1203.8, "dmgBouns": 0.288, "defArea": 0.5, "resArea": 0.9, "other": 48493.395000000004, "other2": 0.608, "key": "血量", "power": 0.9573, "val": 7218.8}], "达达利亚": [{"seq": "冬极百星|沉沦之心流浪大地的乐团|攻水暴", "action": "近战Q蒸发", "crit_rate": 0.768, "atk": 1916.294, "dmgBouns": 1.024, "defArea": 0.5, "resArea": 0.9, "other": 160, "other2": null, "key": "攻击力", "power": 8.352, "val": 120257.11}, {"seq": "冬极百星|沉沦之心角斗士的终幕礼|攻水暴", "action": "近战Q蒸发", "crit_rate": 0.768, "atk": 2079.9139999999998, "dmgBouns": 1.024, "defArea": 0.5, "resArea": 0.9, "other": 80, "other2": null, "key": "攻击力", "power": 8.352, "val": 107637.65}, {"seq": "天空之翼|沉沦之心角斗士的终幕礼|攻水暴", "action": "近战Q蒸发", "crit_rate": 0.7630000000000001, "atk": 2208.35, "dmgBouns": 0.904, "defArea": 0.5, "resArea": 0.9, "other": 80, "other2": null, "key": "攻击力", "power": 8.352, "val": 91833.49}, {"seq": "弓藏|沉沦之心角斗士的终幕礼|攻水暴", "action": "近战Q蒸发", "crit_rate": 0.6025, "atk": 2224.149, "dmgBouns": 0.904, "defArea": 0.5, "resArea": 0.9, "other": 80, "other2": null, "key": "攻击力", "power": 8.352, "val": 80736.94}, {"seq": "苍翠猎弓|沉沦之心角斗士的终幕礼|攻水暴", "action": "近战Q蒸发", "crit_rate": 0.7405, "atk": 1889.206, "dmgBouns": 0.904, "defArea": 0.5, "resArea": 0.9, "other": 80, "other2": null, "key": "攻击力", "power": 8.352, "val": 77162.43}], "行秋": [{"seq": "祭礼剑|沉沦之心昔日宗室之仪|攻水暴", "action": "Q剑雨", "crit_rate": 0.6025, "atk": 1626.9360000000001, "dmgBouns": 1.016, "defArea": 0.5, "resArea": 1.025, "other": 17046.4, "other2": 1.813, "key": "攻击力", "power": 1.1533, "val": 4274.7}, {"seq": "磐岩结绿|绝缘之旗印|充水暴", "action": "Q剑雨", "crit_rate": 0.8, "atk": 1685.8496, "dmgBouns": 1.1455, "defArea": 0.5, "resArea": 1.025, "other": 19090.8, "other2": 1.918, "key": "攻击力", "power": 1.1533, "val": 5755.18}], "莫娜": [{"seq": "流浪乐章|绝缘之旗印|攻水暴", "action": "Q暴击蒸发", "crit_rate": 0.7402500000000001, "atk": 1718.502, "dmgBouns": 2.845, "defArea": 0.5, "resArea": 0.9, "other": 1.82, "other2": 80, "key": "攻击力", "power": 7.9632000000000005, "val": 135118.76}, {"seq": "讨龙英杰谭|昔日宗室之仪|充水暴", "action": "Q暴击", "crit_rate": 0.6025, "atk": 1205.4, "dmgBouns": 1.6936, "defArea": 0.5, "resArea": 0.9, "other": 2.138, "other2": null, "key": "攻击力", "power": 7.9632000000000005, "val": 25655.06}, {"seq": "试作金珀|昔日宗室之仪|充水暴", "action": "Q暴击", "crit_rate": 0.6025, "atk": 1347.1000000000001, "dmgBouns": 1.6936, "defArea": 0.5, "resArea": 0.9, "other": 2.138, "other2": null, "key": "攻击力", "power": 7.9632000000000005, "val": 28670.92}], "芭芭拉": [{"seq": "不灭月华|被怜爱的少女|生生治", "action": "Q瞬抬", "crit_rate": "any", "atk": 1231.4, "dmgBouns": 0, "defArea": 0.5, "resArea": 0.9, "other": 36274.566000000006, "other2": 0.608, "key": "血量", "power": "35.2+4335", "val": 30923.39}, {"seq": "讨龙英杰谭|被怜爱的少女|生生治", "action": "Q瞬抬", "crit_rate": "any", "atk": 983, "dmgBouns": 0, "defArea": 0.5, "resArea": 0.9, "other": 34865.238, "other2": 0.508, "key": "血量", "power": "35.2+4335", "val": 28365.72}, {"seq": "试作金珀|被怜爱的少女|生生治", "action": "Q瞬抬", "crit_rate": "any", "atk": 1113.8, "dmgBouns": 0, "defArea": 0.5, "resArea": 0.9, "other": 35462.245, "other2": 0.508, "key": "血量", "power": "35.2+4335", "val": 28724.65}], "早柚": [{"seq": "狼的末路|翠绿之影|精攻治", "action": "Q每次治疗", "crit_rate": "any", "atk": 2408.6240000000003, "dmgBouns": 0.15, "defArea": 0.5, "resArea": 0.9, "other": 443, "other2": 0.358, "key": "攻击力", "power": "159.74+1280", "val": 6963.19}, {"seq": "西风大剑|翠绿之影|精攻治", "action": "Q每次治疗", "crit_rate": "any", "atk": 1543.6680000000001, "dmgBouns": 0.15, "defArea": 0.5, "resArea": 0.9, "other": 443, "other2": 0.358, "key": "攻击力", "power": "159.74+1280", "val": 5086.87}], "枫原万叶": [{"seq": "苍古自由之誓|翠绿之影|精精精", "action": "扩散", "crit_rate": "any", "atk": 1397, "dmgBouns": 0, "defArea": 0.5, "resArea": 1.15, "other": 1031, "other2": 1.22, "key": "元素精通", "power": "any", "val": 7029.75}, {"seq": "铁蜂刺|翠绿之影|精精精", "action": "扩散", "crit_rate": "any", "atk": 1279.4, "dmgBouns": 0, "defArea": 0.5, "resArea": 1.15, "other": 1001, "other2": 1.22, "key": "元素精通", "power": "any", "val": 6924.4}], "魈": [{"seq": "和璞鸢|辰砂往生录|攻风暴", "action": "开大首插", "crit_rate": 0.8, "atk": 2301.758, "dmgBouns": 1.5425000000000002, "defArea": 0.5, "resArea": 0.9, "other": null, "other2": 2715.05, "key": "攻击力", "power": 4.0402, "val": 33082.6}, {"seq": "护摩之杖|辰砂往生录|攻风暴", "action": "开大首插", "crit_rate": 0.8, "atk": 2354.2052000000003, "dmgBouns": 1.4225, "defArea": 0.5, "resArea": 0.9, "other": 22610.399999999998, "other2": 2526.4651999999996, "key": "攻击力", "power": 4.0402, "val": 31779.77}, {"seq": "决斗之枪|辰砂往生录|攻风暴", "action": "开大首插", "crit_rate": 0.8, "atk": 2066.358, "dmgBouns": 1.4225, "defArea": 0.5, "resArea": 0.9, "other": null, "other2": 2210.898, "key": "攻击力", "power": 4.0402, "val": 28530.9}], "温迪": [{"seq": "终末嗟叹之诗|翠绿之影|精精精", "action": "扩散", "crit_rate": "any", "atk": 1356.2, "dmgBouns": 0, "defArea": 0.5, "resArea": 1.15, "other": 781, "other2": 2.071, "key": "元素精通", "power": "any", "val": 6481.06}, {"seq": "西风猎弓|翠绿之影|精精精", "action": "扩散", "crit_rate": "any", "atk": 1238.6, "dmgBouns": 0, "defArea": 0.5, "resArea": 1.15, "other": 721, "other2": 2.133, "key": "元素精通", "power": "any", "val": 5829.11}, {"seq": "绝弦|翠绿之影|充精精", "action": "扩散", "crit_rate": "any", "atk": 1238.6, "dmgBouns": 0, "defArea": 0.5, "resArea": 1.15, "other": 699, "other2": 2.038, "key": "元素精通", "power": "any", "val": 5733.42}], "琴": [{"seq": "腐殖之剑|翠绿之影角斗士的终幕礼|攻攻治", "action": "Q治疗", "crit_rate": "any", "atk": 2117.588, "dmgBouns": 0, "defArea": 0.5, "resArea": 0.9, "other": 1.659, "other2": 0.58, "key": "攻击力", "power": "452.16+3389", "val": 20482.94}, {"seq": "西风剑|翠绿之影角斗士的终幕礼|攻攻治", "action": "Q治疗", "crit_rate": "any", "atk": 1982.5160000000003, "dmgBouns": 0, "defArea": 0.5, "resArea": 0.9, "other": 1.813, "other2": 0.58, "key": "攻击力", "power": "452.16+3389", "val": 19517.97}, {"seq": "风鹰剑|翠绿之影角斗士的终幕礼|充攻治", "action": "Q治疗", "crit_rate": "any", "atk": 2270.298, "dmgBouns": 0, "defArea": 0.5, "resArea": 0.9, "other": 1.718, "other2": 0.58, "key": "攻击力", "power": "452.16+3389", "val": 21573.92}], "砂糖": [{"seq": "祭礼残章|翠绿之影|充精精", "action": "扩散", "crit_rate": "any", "atk": 1059.8, "dmgBouns": 0, "defArea": 0.5, "resArea": 1.15, "other": 755, "other2": null, "key": "元素精通", "power": "any", "val": 5973.98}, {"seq": "试作金珀|翠绿之影|充精精", "action": "扩散", "crit_rate": "any", "atk": 1127, "dmgBouns": 0, "defArea": 0.5, "resArea": 1.15, "other": 729, "other2": null, "key": "元素精通", "power": "any", "val": 5863.52}, {"seq": "讨龙英杰谭|翠绿之影|充精精", "action": "扩散", "crit_rate": "any", "atk": 996.1999999999999, "dmgBouns": 0, "defArea": 0.5, "resArea": 1.15, "other": 729, "other2": null, "key": "元素精通", "power": "any", "val": 5863.52}], "空/荧(风)": [{"seq": "西风剑|翠绿之影|精精精", "action": "扩散", "crit_rate": "any", "atk": 1270.04, "dmgBouns": 0, "defArea": 0.5, "resArea": 1.15, "other": 721, "other2": null, "key": "元素精通", "power": "any", "val": 5829.11}], "八重神子": [{"seq": "神乐之真意|如雷的盛怒角斗士的终幕礼|攻雷暴", "action": "杀生樱落雷", "crit_rate": 0.8, "atk": 2155.808, "dmgBouns": 1.216, "defArea": 0.5, "resArea": 0.9, "other": 80, "other2": null, "key": "攻击力", "power": 1.7064, "val": 10476.87}, {"seq": "天空之卷|如雷的盛怒角斗士的终幕礼|攻雷暴", "action": "杀生樱落雷", "crit_rate": 0.6985, "atk": 2619.878, "dmgBouns": 0.736, "defArea": 0.5, "resArea": 0.9, "other": 80, "other2": null, "key": "攻击力", "power": 1.7064, "val": 8371.29}, {"seq": "匣里日月|如雷的盛怒角斗士的终幕礼|攻雷暴", "action": "杀生樱落雷", "crit_rate": 0.8, "atk": 1965.1, "dmgBouns": 1.036, "defArea": 0.5, "resArea": 0.9, "other": 80, "other2": null, "key": "攻击力", "power": 1.7064, "val": 8436.38}, {"seq": "流浪乐章|如雷的盛怒角斗士的终幕礼|攻雷暴", "action": "杀生樱落雷", "crit_rate": 0.79995, "atk": 1965.1, "dmgBouns": 0.736, "defArea": 0.5, "resArea": 0.9, "other": 80, "other2": 2985.1000000000004, "key": "攻击力", "power": 1.7064, "val": 10923.46}], "雷电将军": [{"seq": "薙草之稻光|绝缘之旗印|充雷暴", "action": "Q满层拔刀", "crit_rate": 0.6025, "atk": 2012.8694000000003, "dmgBouns": 2.3216, "defArea": 0.5, "resArea": 0.9, "other": 2.7890000000000006, "other2": null, "key": "攻击力", "power": 11.4144, "val": 75155.81}, {"seq": "渔获|绝缘之旗印|充攻暴", "action": "Q满层拔刀", "crit_rate": 0.5425000000000001, "atk": 1806.802, "dmgBouns": 1.9430500000000002, "defArea": 0.5, "resArea": 0.9, "other": 2.697, "other2": null, "key": "攻击力", "power": 11.4144, "val": 63503.37}], "九条裟罗": [{"seq": "天空之翼|绝缘之旗印|充雷暴", "action": "Q吃乌羽", "crit_rate": 0.8, "atk": 1649.26, "dmgBouns": 0.9455, "defArea": 0.5, "resArea": 0.9, "other": 1.918, "other2": null, "key": "攻击力", "power": 8.192, "val": 51562.35}, {"seq": "祭礼弓|绝缘之旗印|充雷暴", "action": "Q吃乌羽", "crit_rate": 0.7, "atk": 1481.4, "dmgBouns": 1.022, "defArea": 0.5, "resArea": 0.9, "other": 2.2239999999999998, "other2": null, "key": "攻击力", "power": 8.192, "val": 40839.34}], "刻晴": [{"seq": "雾切之回光|如雷的盛怒角斗士的终幕礼|攻雷暴", "action": "重击", "crit_rate": 0.73375, "atk": 2251.1620000000003, "dmgBouns": 1.016, "defArea": 0.5, "resArea": 0.9, "other": null, "other2": null, "key": "攻击力", "power": 1.7, "val": 9608.3}, {"seq": "磐岩结绿|如雷的盛怒角斗士的终幕礼|攻雷暴", "action": "重击", "crit_rate": 0.75, "atk": 2271.7804, "dmgBouns": 0.616, "defArea": 0.5, "resArea": 0.9, "other": null, "other2": null, "key": "攻击力", "power": 1.7, "val": 8919.69}, {"seq": "匣里龙吟|如雷的盛怒角斗士的终幕礼|攻雷暴", "action": "重击", "crit_rate": 0.6234999999999999, "atk": 2276.047, "dmgBouns": 0.976, "defArea": 0.5, "resArea": 0.9, "other": null, "other2": null, "key": "攻击力", "power": 1.7, "val": 8763.12}], "雷泽": [{"seq": "螭骨剑|角斗士的终幕礼|攻物暴", "action": "普攻一段", "crit_rate": 0.7405, "atk": 1758.824, "dmgBouns": 1.833, "defArea": 0.5405405405405406, "resArea": 0.9, "other": null, "other2": null, "key": "攻击力", "power": 1.7113, "val": 10291.83}, {"seq": "狼的末路|角斗士的终幕礼|攻物暴", "action": "普攻一段", "crit_rate": 0.6025, "atk": 2535.5640000000003, "dmgBouns": 1.333, "defArea": 0.5405405405405406, "resArea": 0.9, "other": null, "other2": null, "key": "攻击力", "power": 1.7113, "val": 10859.13}], "菲谢尔": [{"seq": "绝弦|如雷的盛怒角斗士的终幕礼|攻雷暴", "action": "奥兹攻击", "crit_rate": 0.6025, "atk": 1959.244, "dmgBouns": 1.096, "defArea": 0.5, "resArea": 0.9, "other": null, "other2": null, "key": "攻击力", "power": 1.8869999999999998, "val": 7689.05}, {"seq": "天空之翼|如雷的盛怒角斗士的终幕礼|攻雷暴", "action": "奥兹攻击", "crit_rate": 0.7630000000000001, "atk": 2317.748, "dmgBouns": 0.616, "defArea": 0.5, "resArea": 0.9, "other": null, "other2": null, "key": "攻击力", "power": 1.8869999999999998, "val": 8033.88}], "丽莎": [{"seq": "四风原典|祭雷之人角斗士的终幕礼|攻雷暴", "action": "满层E", "crit_rate": 0.768, "atk": 1945.6399999999999, "dmgBouns": 0.936, "defArea": 0.5405405405405406, "resArea": 0.9, "other": null, "other2": null, "key": "攻击力", "power": 10.353, "val": 48112.07}, {"seq": "流浪乐章|昔日宗室之仪|攻雷暴", "action": "Q每段", "crit_rate": 0.7402500000000001, "atk": 1621.372, "dmgBouns": 0.666, "defArea": 0.5405405405405406, "resArea": 0.9, "other": null, "other2": null, "key": "攻击力", "power": 0.7768999999999999, "val": 3923.11}], "北斗": [{"seq": "狼的末路|绝缘之旗印|充雷暴", "action": "Q闪电链", "crit_rate": 0.6025, "atk": 1973.668, "dmgBouns": 1.1855, "defArea": 0.5, "resArea": 1.025, "other": 1.918, "other2": null, "key": "攻击力", "power": 1.7280000000000002, "val": 8423.08}, {"seq": "螭骨剑|绝缘之旗印|充攻暴", "action": "Q闪电链", "crit_rate": 0.7405, "atk": 1609.01, "dmgBouns": 1.1195, "defArea": 0.5, "resArea": 1.025, "other": 1.918, "other2": null, "key": "攻击力", "power": 1.7280000000000002, "val": 7493.01}], "空/荧(雷)": [{"seq": "西风剑|绝缘之旗印|充雷暴", "action": "勾玉加充能", "crit_rate": 0.6025, "atk": 1270.04, "dmgBouns": 1.09875, "defArea": 0.5, "resArea": 1.025, "other": 2.5309999999999997, "other2": null, "key": "攻击力", "power": 1.7280000000000002, "val": 0.45}], "申鹤": [{"seq": "息灾|角斗士的终幕礼追忆之注连|攻攻攻", "action": "Q伤害", "crit_rate": "any", "atk": 4084.495, "dmgBouns": "/", "defArea": 0.5, "resArea": 0.9, "other": 1.8, "other2": null, "key": "攻击力", "power": "攻击力", "val": "any"}, {"seq": "薙草之稻光|角斗士的终幕礼追忆之注连|攻攻攻", "action": "Q伤害", "crit_rate": "any", "atk": 3798.74336, "dmgBouns": "/", "defArea": 0.5, "resArea": 0.9, "other": 2.351, "other2": null, "key": "攻击力", "power": "攻击力", "val": "any"}, {"seq": "天空之脊|角斗士的终幕礼追忆之注连|攻攻攻", "action": "Q伤害", "crit_rate": "any", "atk": 3681.1879999999996, "dmgBouns": "/", "defArea": 0.5, "resArea": 0.9, "other": 2.168, "other2": null, "key": "攻击力", "power": "攻击力", "val": "any"}, {"seq": "西风长枪|角斗士的终幕礼追忆之注连|攻攻攻", "action": "Q伤害", "crit_rate": "any", "atk": 3305.5739999999996, "dmgBouns": "/", "defArea": 0.5, "resArea": 0.9, "other": 2.106, "other2": null, "key": "攻击力", "power": "攻击力", "val": "any"}], "神里绫华": [{"seq": "雾切之回光|冰风迷途的勇士|攻冰暴", "action": "霜灭切割", "crit_rate": 0.3499499999999999, "atk": 2105.2560000000003, "dmgBouns": 1.1960000000000002, "defArea": 0.5, "resArea": 0.9, "other": null, "other2": null, "key": "攻击力", "power": 2.0214, "val": 14866.33}, {"seq": "天目影打刀|冰风迷途的勇士|攻冰暴", "action": "霜灭切割", "crit_rate": 0.35, "atk": 2155.3320000000003, "dmgBouns": 0.796, "defArea": 0.5, "resArea": 0.9, "other": null, "other2": null, "key": "攻击力", "power": 2.0214, "val": 10894.46}], "优菈": [{"seq": "松籁响起之时|苍白之火|攻物暴", "action": "Q13层光剑", "crit_rate": 0.6234999999999999, "atk": 2396.8579999999997, "dmgBouns": 1.29, "defArea": 0.5, "resArea": 1.065, "other": null, "other2": null, "key": "攻击力", "power": 26.5268, "val": 227811.84}, {"seq": "狼的末路|苍白之火|攻物暴", "action": "Q13层光剑", "crit_rate": 0.6234999999999999, "atk": 2649.8999999999996, "dmgBouns": 1.083, "defArea": 0.5, "resArea": 1.065, "other": null, "other2": null, "key": "攻击力", "power": 26.5268, "val": 208554.85}, {"seq": "螭骨剑|苍白之火|攻物暴", "action": "Q13层光剑", "crit_rate": 0.75, "atk": 1815.632, "dmgBouns": 1.483, "defArea": 0.5, "resArea": 1.065, "other": null, "other2": null, "key": "攻击力", "power": 26.5268, "val": 193142.26}], "甘雨": [{"seq": "阿莫斯之弓|冰风迷途的勇士|攻冰暴", "action": "霜华矢两段", "crit_rate": 0.25, "atk": 2444.066, "dmgBouns": 1.1360000000000001, "defArea": 0.5, "resArea": 0.9, "other": null, "other2": null, "key": "攻击力", "power": 6.22, "val": 48132.75}, {"seq": "破魔之弓|冰风迷途的勇士|攻冰暴", "action": "霜华矢两段", "crit_rate": 0.25, "atk": 2139.1130000000003, "dmgBouns": 0.976, "defArea": 0.5, "resArea": 0.9, "other": null, "other2": null, "key": "攻击力", "power": 6.22, "val": 38971.5}, {"seq": "试作澹月|冰风迷途的勇士|攻冰暴", "action": "霜华矢两段", "crit_rate": 0.25, "atk": 2152.255, "dmgBouns": 0.616, "defArea": 0.5, "resArea": 0.9, "other": 2608.555, "other2": null, "key": "攻击力", "power": 6.22, "val": 38865.82}, {"seq": "阿莫斯之弓|流浪大地的乐团|攻冰暴", "action": "霜华矢两段", "crit_rate": 0.5235000000000001, "atk": 2444.066, "dmgBouns": 1.336, "defArea": 0.5, "resArea": 0.9, "other": null, "other2": null, "key": "攻击力", "power": 6.22, "val": 43898.26}, {"seq": "破魔之弓|流浪大地的乐团|攻冰暴", "action": "霜华矢两段", "crit_rate": 0.5235000000000001, "atk": 2139.1130000000003, "dmgBouns": 1.1760000000000002, "defArea": 0.5, "resArea": 0.9, "other": null, "other2": null, "key": "攻击力", "power": 6.22, "val": 35789.38}, {"seq": "试作澹月|流浪大地的乐团|攻冰暴", "action": "霜华矢两段", "crit_rate": 0.5235000000000001, "atk": 2152.255, "dmgBouns": 0.8160000000000001, "defArea": 0.5, "resArea": 0.9, "other": 2608.555, "other2": null, "key": "攻击力", "power": 6.22, "val": 36423.14}], "凯亚": [{"seq": "西风剑|绝缘之旗印|攻冰暴", "action": "Q每段", "crit_rate": 0.5275, "atk": 1506.582, "dmgBouns": 1.036, "defArea": 0.5, "resArea": 0.9, "other": 2.28, "other2": null, "key": "攻击力", "power": 1.649, "val": 5360.37}, {"seq": "磐岩结绿|绝缘之旗印|充冰暴", "action": "Q每段", "crit_rate": 0.748, "atk": 1558.3448, "dmgBouns": 1.01225, "defArea": 0.5, "resArea": 0.9, "other": 2.185, "other2": null, "key": "攻击力", "power": 1.649, "val": 6506.03}], "重云": [{"seq": "狼的末路|冰风迷途的勇士昔日宗室之仪|攻冰暴", "action": "Q每段", "crit_rate": 0.5275, "atk": 2556.362, "dmgBouns": 0.8160000000000001, "defArea": 0.5, "resArea": 0.9, "other": null, "other2": null, "key": "攻击力", "power": 3.0260000000000002, "val": 14887.12}, {"seq": "螭骨剑|冰风迷途的勇士昔日宗室之仪|攻冰暴", "action": "Q每段", "crit_rate": 0.6655000000000001, "atk": 1781.3980000000001, "dmgBouns": 1.2160000000000002, "defArea": 0.5, "resArea": 0.9, "other": null, "other2": null, "key": "攻击力", "power": 3.0260000000000002, "val": 14142.72}], "七七": [{"seq": "祭礼剑|海染砗磲|攻攻治", "action": "符文治疗", "crit_rate": "any", "atk": 1964.9120000000003, "dmgBouns": 0, "defArea": 0.5, "resArea": 0.9, "other": 0.73, "other2": null, "key": "攻击力", "power": "153+1174", "val": 7231.95}, {"seq": "风鹰剑|海染砗磲|攻攻治", "action": "符文治疗", "crit_rate": "any", "atk": 2648.1520000000005, "dmgBouns": 0, "defArea": 0.5, "resArea": 0.9, "other": 0.73, "other2": null, "key": "攻击力", "power": "153+1174", "val": 9040.41}, {"seq": "笛剑|海染砗磲|攻攻治", "action": "符文治疗", "crit_rate": "any", "atk": 2419.065, "dmgBouns": 0, "defArea": 0.5, "resArea": 0.9, "other": 0.73, "other2": null, "key": "攻击力", "power": "153+1174", "val": 8434.04}], "迪奥娜": [{"seq": "祭礼弓|被怜爱的少女千岩牢固|生生生", "action": "长E盾值", "crit_rate": "any", "atk": 1243.4, "dmgBouns": 0, "defArea": 0.5, "resArea": 0.9, "other": 31293.900000000005, "other2": null, "key": "血量", "power": 0.153, "val": 12716.64}], "罗莎莉亚": [{"seq": "西风长枪|昔日宗室之仪|攻冰暴", "action": "Q每段", "crit_rate": 0.7, "atk": 1925.8300000000002, "dmgBouns": 0.666, "defArea": 0.5, "resArea": 0.9, "other": null, "other2": null, "key": "攻击力", "power": 2.64, "val": 7661.35}], "埃洛伊": [{"seq": "西风猎弓|冰风迷途的勇士角斗士的终幕礼|攻冰暴", "action": "Q满线圈", "crit_rate": 0.5275, "atk": 1649.848, "dmgBouns": 1.254, "defArea": 0.5, "resArea": 0.9, "other": null, "other2": null, "key": "攻击力", "power": 5.4272, "val": 21388.34}], "荒泷一斗": [{"seq": "赤角石溃杵|华馆梦醒形骸记|防岩暴", "action": "开Q重击连斩", "crit_rate": 0.8, "atk": 1233.8, "dmgBouns": 0.706, "defArea": 0.5, "resArea": 0.9, "other": 2431.065, "other2": 1.22, "key": "攻击力", "power": 1.8019999999999998, "val": 21056.9}, {"seq": "螭骨剑|华馆梦醒形骸记|防岩暴", "action": "开Q重击连斩", "crit_rate": 0.8, "atk": 1195.4, "dmgBouns": 1.106, "defArea": 0.5, "resArea": 0.9, "other": 2162.545, "other2": 1.22, "key": "攻击力", "power": 1.8019999999999998, "val": 18779.5}, {"seq": "白影剑|华馆梦醒形骸记|防岩暴", "action": "开Q重击连斩", "crit_rate": 0.6985, "atk": 1195.4, "dmgBouns": 0.706, "defArea": 0.5, "resArea": 0.9, "other": 2658.348, "other2": 1.22, "key": "攻击力", "power": 1.8019999999999998, "val": 17428.45}], "五郎": [{"seq": "西风猎弓|流放者|充岩暴", "action": "Q每次", "crit_rate": 0.6025, "atk": 1075.4, "dmgBouns": "/", "defArea": 0.5, "resArea": 0.9, "other": 1083.456, "other2": 2.5309999999999997, "key": "防御力", "power": "防御力", "val": "any"}], "阿贝多": [{"seq": "辰砂之纺锤|华馆梦醒形骸记|防岩暴", "action": "E刹那之花", "crit_rate": 0.6025, "atk": 1157, "dmgBouns": 0.994, "defArea": 0.5, "resArea": 0.9, "other": 2579.8199999999997, "other2": null, "key": "攻击力", "power": 3.2048, "val": 17696.89}, {"seq": "辰砂之纺锤|悠古的磐岩|防岩暴", "action": "E刹那之花", "crit_rate": 0.6025, "atk": 1157, "dmgBouns": 0.904, "defArea": 0.5, "resArea": 0.9, "other": 2317.02, "other2": null, "key": "攻击力", "power": 3.2048, "val": 14034.05}, {"seq": "辰砂之纺锤|千岩牢固|防岩暴", "action": "E刹那之花", "crit_rate": 0.6025, "atk": 1157, "dmgBouns": 0.754, "defArea": 0.5, "resArea": 0.9, "other": 2317.02, "other2": null, "key": "攻击力", "power": 3.2048, "val": 12928.42}], "钟离": [{"seq": "黑缨枪|千岩牢固|生生生", "action": "E实际盾值", "crit_rate": "any", "atk": 1037, "dmgBouns": 0.28800000000000003, "defArea": 0.5, "resArea": 1.05, "other": 55727.565, "other2": null, "key": "血量", "power": 0.21760000000000002, "val": 28533.02}, {"seq": "护摩之杖|千岩牢固|生生生", "action": "Q开盾天星", "crit_rate": 0.6125, "atk": 1755.9968800000001, "dmgBouns": 0.28800000000000003, "defArea": 0.5, "resArea": 1.05, "other": 51774.61000000001, "other2": null, "key": "血量", "power": 8.3468, "val": 47758.13}, {"seq": "护摩之杖|悠古的磐岩昔日宗室之仪|生岩暴", "action": "Q开盾天星", "crit_rate": 0.768, "atk": 1611.1629599999999, "dmgBouns": 1.104, "defArea": 0.5, "resArea": 1.05, "other": 33670.369999999995, "other2": null, "key": "攻击力", "power": 8.9972, "val": 71732.51}], "诺艾尔": [{"seq": "赤角石溃杵|华馆梦醒形骸记|防岩暴", "action": "高达首刀", "crit_rate": 0.7, "atk": 1190.6, "dmgBouns": 0.706, "defArea": 0.5, "resArea": 0.9, "other": 2166.0889999999995, "other2": null, "key": "攻击力", "power": 1.564, "val": 16872.51}, {"seq": "螭骨剑|华馆梦醒形骸记|防岩暴", "action": "高达首刀", "crit_rate": 0.7405, "atk": 1152.1999999999998, "dmgBouns": 1.106, "defArea": 0.5, "resArea": 0.9, "other": 2041.4449999999997, "other2": null, "key": "攻击力", "power": 1.564, "val": 14864.2}, {"seq": "白影剑|华馆梦醒形骸记|防岩暴", "action": "高达首刀", "crit_rate": 0.6025, "atk": 1152.1999999999998, "dmgBouns": 0.706, "defArea": 0.5, "resArea": 0.9, "other": 2454.528, "other2": null, "key": "攻击力", "power": 1.564, "val": 13592.82}], "凝光": [{"seq": "四风原典|悠古的磐岩角斗士的终幕礼|攻岩暴", "action": "Q每颗", "crit_rate": 0.768, "atk": 1906.72, "dmgBouns": 0.976, "defArea": 0.5, "resArea": 0.9, "other": null, "other2": null, "key": "攻击力", "power": 1.8478999999999999, "val": 6828.91}, {"seq": "尘世之锁|悠古的磐岩角斗士的终幕礼|攻岩暴", "action": "Q每颗", "crit_rate": 0.6025, "atk": 2313.44, "dmgBouns": 0.976, "defArea": 0.5, "resArea": 0.9, "other": null, "other2": null, "key": "攻击力", "power": 1.8478999999999999, "val": 7257.59}, {"seq": "流浪乐章|悠古的磐岩角斗士的终幕礼|攻岩暴", "action": "Q每颗", "crit_rate": 0.7, "atk": 1716.012, "dmgBouns": 1.936, "defArea": 0.5, "resArea": 0.9, "other": null, "other2": null, "key": "攻击力", "power": 1.8478999999999999, "val": 8767.76}], "空/荧(岩)": [{"seq": "雾切之回光|悠古的磐岩角斗士的终幕礼|攻岩暴", "action": "Q每波", "crit_rate": 0.71275, "atk": 2247.7960000000003, "dmgBouns": 1.016, "defArea": 0.5, "resArea": 0.9, "other": null, "other2": null, "key": "攻击力", "power": 3.145, "val": 15555.42}, {"seq": "磐岩结绿|悠古的磐岩角斗士的终幕礼|攻岩暴", "action": "Q每波", "crit_rate": 0.8, "atk": 2199.304, "dmgBouns": 0.616, "defArea": 0.5, "resArea": 0.9, "other": null, "other2": null, "key": "攻击力", "power": 3.145, "val": 13540.5}, {"seq": "黑剑|悠古的磐岩角斗士的终幕礼|攻岩暴", "action": "Q每波", "crit_rate": 0.7405, "atk": 1889.292, "dmgBouns": 0.616, "defArea": 0.5, "resArea": 0.9, "other": null, "other2": null, "key": "攻击力", "power": 3.145, "val": 10720.14}], "云堇": [{"seq": "薙草之稻光|华馆梦醒形骸记|防防防", "action": "/", "crit_rate": "any", "atk": 1631.7789599999999, "dmgBouns": "/", "defArea": 0.5, "resArea": 0.9, "other": 2.618, "other2": 2511.0139999999997, "key": "防御力", "power": "防御力", "val": "any"}, {"seq": "天空之脊|华馆梦醒形骸记|防防防", "action": "/", "crit_rate": "any", "atk": 1349, "dmgBouns": "/", "defArea": 0.5, "resArea": 0.9, "other": 2.435, "other2": 2511.0139999999997, "key": "防御力", "power": "防御力", "val": "any"}, {"seq": "西风长枪|华馆梦醒形骸记|防防暴", "action": "/", "crit_rate": 0.6, "atk": 1218.1999999999998, "dmgBouns": "/", "defArea": 0.5, "resArea": 0.9, "other": 2.173, "other2": 2083.092, "key": "防御力", "power": "防御力", "val": "any"}]} \ No newline at end of file diff --git a/tools/blue_data/参考面板2.7(上).xlsx b/tools/blue_data/参考面板2.7(上).xlsx deleted file mode 100644 index bc9f23cec79f8092536c23994392d3bd44a98398..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55955 zcmeFYbx4vV|P;IJ(2GU(v$wz#|d;_k!Z?(Qy&ySux)E(zunn2PSs%K9p^GQUxjf&PL80Sf^S0Rce{k;Au{8x08o5djMUfe8T*r6X!@ z=VEH-Vxa2jVCt;*&BNA)EdL7>Z7u}VXaE2I_+NMg2GmC7`@f@gQQo2^)Ra2z{zS7{ zgC0kZrzPE4n;$AS*2$)8^q(Hk3s$tmZo)_rix9BKU!M+|t#=%x0W|h%?6qG+L3Mr| zdeNd19GdRpQzE0Y2P2Wt*Fj+w>>dvO=#2acqv2gCCWm!hB&H`?P>YPtA15nng>`G5 zK3e*qJ1M;N@YO-F)O_Mn??6LD#IR?Fic@qT=y-?S) z_#D!F+2W5teRgC$BiUT!C5VMqR_gKSQ{wOyJjAvXwt#-SLP8BH4KqW{^>7WFH`GwK z1AC2(b`AYl6BI0a`q?O}l@49rXY4s2jJ{5OPA_>!RbEHb z7Y?Ym&W)W#XbJNSKzGRXQi}@jgaERH5IxNcJ{LZT*zP1^(TplsSq-}`VZ_PN2kTUU z16Bh-zy0U@`}lx{Q2alE7*oI76zUVi+n*Rk`UJ6olc|j}^SA$;|9|lQFO1m#LG{W+ zIT>gcw9xCo5AumFzIA$vIU8p26FHMNNS3s>A6#kih3#)o5i35#iru5{>HD0oZWNetLGH~dTag0PQ%AuDU6{>XtdvQPOhzIm6au^LeinL zj-D^LVH!IN#ho$zH_{}0j=y)ZqLygdF^}dyvD66|PiahZVN7k+zx+=jlYc!&D+dh$ zaR~mbH;HrnE5+VaTnF z-7{icQ|{sipEb?E@=hOuqbD=--p$rFa}XM7P|kd@4xNapSQYVy_dou30iolQ)q2KC z9eQj`ev!XD;y8z8BX~LDCy(MrPw_?UyZCfpO3>R25C!=BUJfkC5B^Dnx4}T@iqkH) zBN9s%@i0a3qG2C?XT`1u5TrXDl}alomSrmI;lv)d>y-ea3$R6KpL)^e>0~S!=h_Q( zYlHzz;jl0C=E+vGV=knvi6fqRt7WtdKU)o9=G{?f>&MuMrd#6=iXm2Ih%{voet-K{ zhZM4W^+l9VCz&x>B%(|Z!opnKOH#;1cUJ@7Y$6 z;Zx1*cg>1hY51@wP~(sONzq|R74@0%WLG9-HD-_{g&J7}nRFa$u_aEPs6`~q=2^Te zN2wNMLH72k#|Y2X%CoLEJ#G|BPL9Jj7voC!HZw%-y}}t)r~Fez2NYOcq!*nAj+K7h zpG{RM4|0=$kZ36501&MdK_a26yo=ppefZ4x%ue-O@4Z*Q8n%eCbZaHKdM8f6Ab>Jm zmLxUl!mN*UC84)hGz(7M-|iOGX>xCAX!;{YcRDsOs;hc8rRILkVF z49(#8<3B)nS5nVV*GkjdfrCj7@{8hwPmRzSYUeDOADod1mn=+~Yj?e3wL+T#pEY<1y^4)Ez$Yw9%Luk_iC zH5li4xEW4dxqPSTG7g3DI`pRt10Im;;BC<(HG(lbY*cK}ok+f0RV)5jTEMZl`MBIx z*cN(+c5iCapTvJ1Nz7Xnjb*a|*iOFRY_~ia?5Kade3)xK|Ij+_t*2(mbZY@)(V2vm zrQ`hp%5Fo<7YVAhm-Xf#tD*#M^;|v(z|+dxkUr^oe?NI~L!-&sK^yK@icc*~XO?Vb z51*IRhZiW(l8dM&Hs=($!Z*f1dUrPL+V>%VnG)a;CF&Ir)Zqn zul`5;{deC5`5AbA_WfV`=uA?O8TgJicpbP+KCxL`)gErs4kx}+QB6u#IA3g&0iO6< zvc08P=W1A%vgf!J|K!Kdy1r??9O;g{;88**ql|VE%}l7l;32@Tw;4dTRJ~B;Uiw2g zP|wk`&UZ-N*+;DTR7wn25|Po_pP33jDyw+l>140?E^nS_SaDoGqo7*p$g(|Qw*?N1 zCfmq>9{%-?V8HOi_-=cvyPO~>ZmZMv>|#w)X}7U40bt^A>Y)CjMO^E%i^lxZEFRMn;mAx4 zk7UimVLq(L@jW7ihD+1ua}NC9!=AqZso#y_At0Kbpdj!*r^tU>!<{WmOI~g-0eaE-RUiluTA)WvoQhZiuoArDd#kmF+22EaWkn6Sc(lJTRo_om4T7 zUI;>^ReJw+8F`O7>xi&Vm%@CQ(IBeK13F-7%KTPwp^Hr*!(&E*1w3gH0U1Je&PAux zLG5uKVpo)D}oz4Gto(6G= z0sKX;6I*2$S^zh=DMjDw3|^ljqmG6j7RU@I+78*7S8awfuRmx3#w{eWrawcB$wJl# zW;z~DhD9R=0GVH<_y=zMS0-s%AbzA?#;Db&<7gBnLY{iVMspbBP2JFD>&E;<;D;J= zU&m8J#$y!YAb~?io?-Q)koS7@eJ4~2)XFO8A8%_ zm@gQdsW-i{vnCd>EEvA!Df;~kYB=TV zAW^pH%%s74)|eLhoW&pib=j=+)rkXeRUaAPv(E^-V^e22##yYOw4SHCj>@P#{$0KC zaGUDS)LL=w?D+5#l2ZL5&We@LOgL4}8bn72NX++`Z~6Uxf1LB-{I>7!_wU~&^T)f8 z|MOvo`(VfKe=ooN|6Lp0E|=7MJ*D`+A9uJ@{rqSt_5XJ|zx}cOIQ{$m;ocv*brU?< zF}?kM(EZT$y5xSHeza+DbD;6l|F!e&PsX;O|Ldee@SUmHb10bxqEi(a*B8s}LHkYm zk*vTCh7oxn3D$uUFdOSY3-|}oNin`4Fca%Q9H_r&)9ILLU;AUfJb9>Gt>^vJ-|ubu z_lN7pz5g3?ODx1e$}C5a=|GJmK2lvY2NeLOM zM8DeFO~K1tQXoIWh(7SEgof+dqLS}vAsI8`T{)RO;vI)@q}M_8Z@LjwqQn`bVm-&_ z>s;LB=#rFH5d*9PX<#+>fdtSFK{>|Wy@c!uv0fz}4#rb8o(9HKJ-#cD2L(9ME2A z;k!|Rx^yF-<3l^b1WdJ2{C}fl|Nmztadqlekj(JIV#O~d$nOSQ;(u1NpJ)f!v7e|1 zU9q3&2e}bEO}tvqLb#QK*B%Rw}YcU%HbF_tkPR;DXGZI&nte3IV}uav@%kz%4i^ z%f1i&^&=>RlJjbqn=BPn96F#Xqy;KUJwFcrqMsqFWmNw}otSzVw3?NARlt!{lzNpE z0VsYQypW%GssK_IrCxIxZ;n}ZtGGE(m$9voYu0k}fg?%T<%|CI_9*@Pu|w+z&z(t1 zKZt5l5rqAZG$)FQ`hj$ca^4WHs4r9_+<)aCYQ_to{$LYU9S)nhU*HuT~ zq?dE;t2-Yi^}znNT$is=+~)`>!bGTc<&$b&xLE%uzHe*1a^VFG9H)zg3rSHsw zIWz(A669jNtjwd_V{&?&9_Dd`A7L%8(kGcn40Q+g2r+?1%rg-M6rBwvsuO#|NS$La z5}ryn1Wy;DZKp3tisQrff;-2iO7<^0W0x#V0)tTvI)qd6`0tL43jKc-mh1 z^b}eGNf|6?NvThP-_4-dIiNz+3QnOyl$?+T|KyeiBVrV3|DsKhu4q5!oOD}9c~H2h z=JR5pQfg$Rd+n1Fl($EHxTF>Q7Uc(+R?mJ!a0iA4FQb4MOyO7OLy*flk;|r1$R(Wh zLsjF+t7jisgMW{^H6ibU6Ozg4j3h#D94q6=VVP<1`^xUROUXpb$wZ-SuZUwvAo+GF zO+bgHASx4hlVP`coRyCDdYjaAa3q?!f{@ez_;Za~nD%*m`x0e} zfgUAksh-g&G$(e(sCb0imT6bYUnki^{D`pxfd$#vMDj>LB%tMrU4|SRmgqJ%(5g@u zb)pg{(TdDeYdNDk|JO`57I|KsQZSgx?AH+a(cc7KeKhhsAhpQQX46@neVu>)o4J)x zIpsHpzB0-tT&hPd$3WpyQPe!%HyVrQxI}}fHWzq25Hl?sqSaNFAQ$A|t{xZ^n z#CA)l9^d)ps*Xu{e)5JRq4S@CsLC&#wEChE(g#ma#XC9Ws&V5oe z%FM`mBY^lsIJ#gxw$Z>3I4TM5h%H={fpDQ_qHx8ht0(kYOhFN1%T7GYLOi-!xFt0M zRlPQ*jLVILp=VbKmU_G-6v!ys62PK8I-wWOvI%l zQ_<-@KUgfX7hAf};iZ$=D;z8s4i+x*maLNOk^c*yFz1~xr$bS+^^2*v>T}iO1FLbc z*w8CyPQM^0VCZgmCgeLl%ntV`Q4IDd@ydJx1e+;VzE$4|6NfJ#|R<>)9zw<86cxkiK0;j$UnvE z-_oN|1z}MI;Zg;WOP>*h{gFdLXMJdD$d~1eWKW|)aMF_3MgV@(Qc|`eqLOALqWhGx zEHrs_Fq-`Lf13cw5M5auKXhp0tC|*_Wz(jV&L`;TKT&9Ee8>9rv1Fn3M$! zLN|qdha;7TT4`bu}UZ}-Cne($fJQTyG!P`7tjNlt7L-=BBfyV-5iw}jPDd5aS)LV8`% zG(A>%G;ag>Bx^VGq;^wxW>o74tj90Ykg9LQFD>&v6yMx_Q835sdKK4Z<(}9 z;043Ln%SBO=XuOR^1f*{b|;n4ie`E_iEH)1`n^>dh_ujON=0dr7Y#&$HNdrPNl^Bc zwAJ)MS)3l+MgEKMF2P8Rnq1kQzmB!YdDnuRT<9kEo{cpMiHQ0^gSpoK%IxqbxUig! zf7tLQM%C%U4`nVOenV50OVX=!h3EVCyPiyT^bMCW-!g|Zlq(q{b1(d`1Y?yTUhE9m zOt9Q}u$;G8u3aP)u&$St&Arlf)z`e%5(IlNtlji#g;fJGbJn&LRI8u>t<;qmt&o~50g-~ z^JBIsgztAlr?}wj&Dm`u+-@@l3K3Y8GyM}kEX5oYD_2GRv90&#{^J@6H6a;yaGM@J(u5zB(BNM`QADIf4-S>9e9sE^DTn25?mFyz%k0GXY@d9g%#0QsTn z2=OieR?f0AI?HrX7D=is4V|vSEFGjg$=;DqHJ;|O>m~QDtvnU$`1x~lD9L-EW zElup}7t<$XMNH_mG}?QY0zcVlTg1-{*s{O^r%#J%qX zyiSA^#VfAtw&5`k)TDE`RBFGS`0`aOx;B^IdZSw`_d@W_5>$dXgN+J@x#xK8;U_s= zL_|wg(BRq3;Z5z~Gl=rP!uh45A>UfD#H>VbVTg2x9sZ-zoMuTQ4_kN}lGXi@TGrwa zMzihHGtIt}j**;~iL2I7<*6;352JC+gDCKlSUa07GAgN|&L_Qc;s(Z%y*vn+1lz=~Eopy${2qyClB>Z2y@|n+>S#H%u0$x?(-Vm!F3ceL06Ou^FbfRMbfJzQ=!E&8 zaSJkkDaT<2R>o_gKL>@+=e$cPNH${|+`^`P5O&hoi`@*7`>K6o0B36QijtNw&G((1 zb8F!&ZKU`>(vSCzNpyvNpzx~yBXyv)uMqjlBPd@)t-ao{?IC*edxRX$(eoXb=V0+C zAP*(B|H_8nroyb4UOd@DA}_}@si3j_Upq!@}F|z|b-!gf}&yQgfm!=WuYI1Zy(n2lmDlcs;GTQ&8 zpPg&TgR>l@w$QRQYei1SLFueRqwE>)b~!ftOVJ$nT)eC4PHnh}LG-^hE6LO2JZAax z@_3{sQL`NpcE@27=96Q~a!RnU4_84Bs#+6%;i!$|=HO)#yPcX!$c$f#-IVePIPzJQ zBPZL+-2dki3W7jI$Nhnb{wKR`#w;NoCKi z85FAfWyuTpy{hSDu9GYkmWKwubQPRkWSedw905hs;mZUXNW=}-1R`HHSLnG0b!QGp zjkQE{xNC95Ua6V3%M;0szXUe-Ff3{oSS+seD3#X*6sQ_snk(0}s`Y3o#xMbj2qc$9 z=mZ%zk8lGe6)9?fx7inzG zyjk({kqFPq_}mnU7h^rM<#h@FD2p#b*GBDKRGct;%9AbjV$K_L}J z^qDOTC|gi{lgqSUG;GJ5ST7L$wv;mVVN)weBwEii>xi_jpx*;2h}9(x(5qL+j;nW% zy_PE%<6Fci-6uIxM)hR2SR~X`v$mgxYHZJ0L}rKa5fzvW6#HNJeR!8l;w76EzTs2l zMOV6dj#)v6*pA^eXP)Lb=yz)WBM-lenNQahT*IoUW{^h1J<2D|ovj~p87)4+K7Ay* znpN?x+jBsYtkpovP^9r_W&G`1BcNKuBpO zjwKU$rmATtC!g!t!D6Z}!?;M2MDx|iner>-)l5W|{^UgR=UJMAI(-r7*haMO7miy- zGU5A2A!4=ZG=YoyOpov0PtcB?5uuU){-9W0M-PdYWCUij-XWtN_e8kq|26h z6<#06aahM^BS>B8cGug+j5VvY{y2L9t93uAi~1dl$my`NpB8>cGz)Y?JuO9FK6`+6 zK*l#|?%M08i@A<|i#&eECM?`EWwp{@N%ecZm3RZ4tZxi066k^7{&hVl0i3~F3_sa z>pU&eO?_hGQyMZSNeRa+9;{);tzy1>s`#^ap}Z9@-~rTKLH!M<&rGt0xou_EZg!W( zrX?Yi@8HSsIruS|K=a4x_Xi(A>L!5Jnnr3>5@Lf4Be9nZ!5w1^VuOW+fDBE6e*fG& zRCe#2&ti&}7r{KiFHU%kI(C|hR{~eF+gnCCS2N-SVn{xoIMGr;rX>%*um2nTH?QhxEmM+Jm>sgE1jE8*Y|Ny zN~|Wc%8RzMl3FEIuO5?QJ*%FHn~WXma1mFczYWE-U5p`eq*BX7L|>K+;c)ZbDoqVM zsK{LD=P9kKKc`y9e?3iIsx=x4;qfOpsA!sq+}Lfi*rXSnlDRjHN_WyZO}{=N(C*n(>vsCOQ95Q~l;@v<6S z0@IosMb_&_`y-FSI6h-(7T27LrZtvr;^&53YN$tvI_+mak79-i@-#NX;#ooJmBmci zrbL=aqegi=B;JqzM9rJPztIQPL`{IqEcyY>@^&(?qRZ zy28+&uk(*&&K;AU*?rpH*Czj#KS4Ben;b%U@^`IgRzLVViTwFprJu}Y{I3$HvekW< zBxGi(zmStg+q>B!zprHx7Dta%DCkUs)(a&lgSkhqEU=QsXT--8tN8KRL|c(~Nh(H5 z|CuU0-kg>>f`c898`*HBB?TsndUKPHhY<7{_Z*B!WG}m-{(6Q|(I9J(zV7I`OvW^) zQptQ}7Uwx?QGhLC_tYT($7bR+rl4PYM>oKhrMj}2>G0+i&97jvhCBIznm4Y#{zkE@ zNSu<4$}%D6@5`I{Lx9b3dn+kkUV0jikNLB}NcPO_%XEIa2+4|*4CRKlv^K7Ow%ByNxk8k>*jd9tOP|X{peX?g4NQ3;*U|gnC)8UthZOSX z{3jgG0L|ThM&JV9mQ?9E*2NOD6&m=;%m_{L`E!Q)COri+?)h^_^e*C!%wI*gr)~rn zd6Fw!Oq&3~(@mR+YgDecEdOvn_&TqU~g@te-CdbxQ&s=U<0V8LlyHRn%(TY6!Z zvH179$1{(+Uo%dp9t*lZs%f6Aj%^BcZTXx;c+BrnFb_@@{B8Z7Pz*%xT4;2L7Up(4 z33LHbx?SjBPd%Pe=`_>gnO^3;&@iC0QZHY2IMnY^{?T&}I+^lK*cQ?KT0LgnV(Y-f zR;~fWZqciaafYel()N6yLdWcsk)e=yE%Tx>Vvj{W?#M%T^el#vwJ_K30ZgMn_P?2u z+7Y%IW)yxs2K;c4bf^FEk{@thL|C&1-qIux!eqZ#+mXgW^do!FGGwcVbE(ojoNSF} zGYX~N63}BZ>vIogZn^E&{l_mlaT9uA2*rG*c4E{}IDM}HG96*Z(v3BON;Cv6m#vUntEB!H22xW(AL+PpS~#$^^1$!)C=bH9qx%~drG zAn*~0z4s09XDnu83FJC{_W#^w@Xx**SdO*UuPM!mwXnfcuA($0rBH8}T39grV_^l) z$?ax);h{d>d~im5v`G2>b`To%wUe~1RF?0vxM1C|Rfrrb&1~%;W_$E1+s`e{v#MRW z&0e`*Gzx;XC|+Y>6V3uRtc-c#EZj$P7-A5tMn$6f{41OIVW?-i%~D1VUZvzPq~0{0 z`oQ0IWvK~paBrkyMvlaNoz@YFqcUpF^$LE_rWo&fjad#Xj6ZGi*aL*LGBsW}j=AG5 zf&00+-HQS`1R|9Eig_*%IUj3UP|T zJjse&{v2+}IXJ+0@b4NHE zv=wV_O9CmfF%$OqbFr>`Mm5s&onZ#WSdT4m<{fMYMLyYjjNBZFxfVgT-_Z`Y(2wgZ z$!WFAlpFOG8U30j31|*pU^_WhmU(+TF0|VAq&Bi=^S{S0wqKF<^pmQJ(U!W^z zht;x4jay)$0^UZ>7*%-frCMhpv#T1u-f+Qky$}6ZGNg1tu3Paw^OqVH#*UWtj1|4> zjh#iYuj6zXdk5jH21MdnnDl;}YaiwqYlu?S|J6{|=! zpb=7}CLnbLIBLLM6SVVkhtd?RanoZ{QZ}BT$7!oqI+)Q5O(9L(a#j|xMWA;U9E1(c z;(U!Mz(yfXD>#(wiHMcx-Ee=9-mN1SGGdp9XR}viXy0wh*BFhP8L|=&647a$#hM^1 zf*Ttua)+inMPJjR6u>*uK4l4gZHLW>CYtoMem7x7nOEmVepiADQlUbKRxC>o$6PX_`L0+-KuZ37W3Y!0 z&B?0YqC9_aDJ=bo)@Q4rc`I7!q4K79omwoeNBYaWDtzF4E*umL^siwr02<@SZIl9m z%S>*8-TP;$augRcVkH~bYj^hku@wdD(4xtquwbz-Ay&O_mxdX;9K`J@SrGvst_uEg z=`QFEcBudS1yX6+;5!~1__0A7G&W6;Q17RXDfOZ?c~zLRm@ai_&XMrhxR8I*LZMgk zQ#al``d4YI+~CcUwpM`ThGy2yj1wCz#_HgOKV{KGiHaAT)Fg%`KLdeSCbU5n*F+Ua zG7K#dCB4a1vyc@!(Q(7<*_n%jLr=kvmM*B>D9@Aa)|JO!@-O}>Na12v$jlgT zUwAG^^jyYu|JchubTNKhwx7rdaPFIbT3R6E;u=n&^P}@2wWyq#2{W9fRKY;?*940b zKvCLWknwCW*Vr@WP)FMIDK*bXg?#Pi*9nUL?9#ThC)wU-YT!Q`+CoH#Y+*gL zWCDm#S1PW24aF|Wtlh0$C>u9?fgk`RO@_x^FCRG@ivusgCr$QQ4ibjvZh#69S|U** zIHg5X)aW2Sx1#xqEap3!c|+{$t%MiMGJyb%tFbH6A=-H_fxYNcXeU8gsF_Ifho2JO z0!;)BTy5sB;{=3wwJWxJ%Jx#J8?&_tx4v4fymwhRMhdhv#Qg&NEKYoZWRbnEC!2Yw zfC2VI0MS$PXyKu?s_1p^7b4Lcv$?w)KS0ut zaZ*z}i#ZYlgymMZcBl(kw_+z%meK=Qnv7tcWIVVfhI6kQ$qQA z?}dEX#}L^1aa%_h*LPfW#Lg*c7w994Fq__y1W)&TlZ zPG^0Y?BUzNp~QDrLYd;bHBBS)-w~Ss_#^nUTy$H4vG3tc^a?s2cp5p-UuCBEPjf{@ z>~S%@LjKGylybA`aCu2GB~U9<=7(9ah*&e~Dsj6PId8@+FC+`ROA?`$qM)B2%hRc} zE7##8VznB6%t?@xp-TtWRXe8O34BAH(u~a6uT>7xIYz?Tr^&p+TX>zlVcN2?_uX7w zXIWL~M*nz>van;|($SS7B5KnD~7(dGt`X36w9Hq=l3j4yC$G_DtPG&%^xOCzm>f2z)sWoW?q z`N#OadL5Mg1o>ExL-pk`Bf(?JApAEWk>l;tMni+N)))RyJcgbf2LATJ#1uBF&0i7z)`98K^0>qZ3X-rRY5=aOuM^RH`z&kLA^xfGmrgQb45$s) z*0EpkH^RUFQ%**euO=x^`P#*x1h@N>!qr!2Uz>zH>9@oYOJPvMLyZuQYcES}p zQt7{v^?hW~%gSUDzlr{wJqYUH_el1SNrlhI4S?EC(z=-s1D>W`BmBRSvemW_+$BQ3 z^RTl!vi^=)tr&)T|0)7MP-7@#k5wEVz_5U66d%pkI!}K2Q z;kUQ{oo@GfZSej`S!p$Md*`=4b<-k^86%<8EL(u@iGTaKBehKn?nh8wWksOjP@zvC zfX!+#RhGGdn;3q@kmrmJaPa7K_t9ePS!ib0`3xRx@Cm0Sm{LKkR-cPVI#boEnwboy zR65gVD6u+6hG^Q%{!1#2iE{U*NeuQU@xwL`Dq70--%0L)lyn05HpwCL1In<-NHU0% z){DgfZu=5+F_{X{j!L=uA_D@6?-C4zo!8}_Zs%a2a9}7H z!Xa4jT}&J;$Aksi2q{FGv0zo~(wm7R^J?mPq?ySjkO6;pvw3+dFvS)%MhZzCd>zA* zeym2MJnQ(F_Kzk4gy(Os+-=Um;nDW;-5gBmvW)n5vuTICPQ;tLp> zI;=hhiQ!nrA4M)0&0C)@&qEevr@HTAOb>s+oCSyv5i-rvrlXBKL3tS)(V=YzggadO zk@A@c#etWxOZTGK2klDFNVq!3CU$BP93|==j@=STm`otXuT|qju*MU;OpFi$JQuYz zwFOw$m081UaZD6@(o=w=&RG_6lq9yCpvEhY{6~{8Q?B?2--g~d@}vOaa>=~;?E;bz zd+K_cpAw_W#al{kI{dSQRViW%MK@P3;IpYBRgH}1(G$s`z~^+h8B3!V{8+L>vcC{}weI!vX~1)1SXk#k*P#0dg>SQ%N& z$f1(^NP!y*)WO_oItpULg7{`W2I1vE#|g-0bek@c|wYj2;>+V=hDuDLn!+%7>O*?DKaZ9BOUJWIjIwo8z>9^ zbCX*T&D%Xz8!pm-khsU@q3M-h49X&f#%jsC=e2SY$+lvJID)z8JdmO><}WP zmsID}Gx(Q6slA9e%19DeyNKz6`ijPI<+o$$Rbm`qb)6I!a3^2Uu=oAi88}vUtG1e3 zQJS`6XRVFiNlKNR!a6W?rWOwUgQH{V%&Me}&w|@_6SV8+msk6rTi>~HO3cWO0EZX8 ze@@9S$zVI%5-apMe$vl^P_cC?|0&6mO~L&sQGq!2Oj#hrg7)ATRo0GDPH($L-+*dg z-F<>xP3Vs|2cFY5ztPZ+^{Q)tSGX)Uux1 zF=M@QfD1S>Lz4Q{cEJP~oWx1oGmFFq4HdTXkWD(V`BzShv#%s%ps&uYCom~ut7(7r z<(r-qPv_S_fp-=4eIP%3iOlE^N3oNz!!ZsS{dS}_FT8k$rRhA&_2IN{)Qbs9h& zns~qDc-N?il$l9k#?6x!XewXq)>aL19~N#Thj7#_X(DY9n4EwuUwQG|8to%HOCMVr zE6m$gk4RpRom^@7qrYm1HYrZ~`64&zuI}DFr+4_kV*0)=1b|gpp-)+s5rdK`Qr^iG z47M4YBlea7HP{frVv-oo&8fA0M&&lq@!+kmQmgeZyX5!D-F(vn+(#Xqpt1ZzLg!^S zcx~HZYmQ*BcW$wY`jPI&(75a9Q2w9&n>99Fet`)GN8vkIO=F=c0fCttO5Ay4LXFgDwHTdt=E z;f03|JU8t+m{2)%HslQ1LDqil#xguka-yl)03Q-zi3G#({NcQ^zA5d-ndC^R4%w$= zz>86u;b_K06%mC<*)r`KvdIoDTYNylgzy3B(R!C6t-U2bk{Q|E2MxN&7&2B6BP+V} z0wEW))bxlbQ3A6U3B9re8o2fuo(f57-De0CDr;nFL&t(lmx0O5nP{lXN2bwjS+I{&WMO6~i!V6Zaqa(S5gU8^+% z>}hibo#$k(m6>uHoKG6=AD-RAX&aXa+~4k! zFz;7^#RhWepGCmn4Z)v2_+8J|hDyKzs&!s(a#p+DCUM((K`;kR-vDEWC=Jo;-@oOi zq>6V%VQ%M9=>?;OtZ5xpWx#r>{5i#oqHC=S$#z3txD9-Ypv)N01VeJVPZ{mW*%DF4 z2=WQ{j6jbMjI@SFeqV{ljo^F0Iq+O&=Gj1x3ul9MZbd3znH?9;LuU$<{t;i3ZeIh5 z#enf`EDAwSetr_r`jyq zY6H}Fv(4==WDZ64@D0=pT|>e}Dll*oSyi<_(%&>caK#lK|6nLpqHN|XB;1p+8RpgXE{dg+a2J7tDaBWr&BmtU4S#);5#b`bdU_#p z1n8gf7aC?Nksnp>SRX3*k(E;lo0HlIpJ4g|8ZSkL|BC8!ITabDDOH^&L><+uT5LxpVQf5rr&;g~L z|ImFSWN)~ze@bAc{dD+f7W*j$BkmtnFEc5-wC9j*uvT!~PlJMG%GKgfxVh1n;O5*X z)d*?HMU&aNxgnP5<}5N6s_+@1`>?wGI#80zaTFWVo?`--O2vUzPoyxV=ugbtl|Pz` zm9^&N0Qdr*^%tg7*fd(1_BsdWUoQ4SdiFT?CnBQ1kZuOWFb@1oDI#E6o8wLNN(n`z zQ$=3*KK(xbZ&tC3Z=RLbVKe(m;-Sax;n~|#;@{2>sNyDKt@?i!S}+G;pHMKn`nTpqw`QjXtr`r=XbB+1tI@`hsVF;INiOiO}F%I zoBc`76sA`Y%1|mnowN?6n@U7N(~3h4dY7|{erJf|xb1iA&X*n9HPsCfc<$z;RcDko z5>*DvOva5x=KJB~Bqij5cupxOR3?$gsfEaqvV#6nI5?wSa#S%d)R>Xb(}XmB@=#j{ zL7%jj;@hWd!EIEIKX<$rhXGQxU+tJ{>QaV_s>Z)+;8R8;E1{H<2!Ne=eU$TzXZgAC zOgS5U>f?jIce83MwS4CyXa3o>ki@H{7#+jhuOZm=UV$%3io>+w8iyn|&7n zo^N>8x@ACx7N_voR$QC$%!3H}bBEOb4;NaT;X%DtSUPC=lkk;SvT>qIhTPPUI};YF z3@DnBe6pcN3-#JZ?4rlSkOT++p$o~D0Bf9}0IFs%mG$#JiBlr>t|eGr#`H}h_T+RS zTW9ig59#1Wks4e(^*s0NW;QIZes7wN4^|5R{*|NY&dJ-H6L$Fmk#uPO7AWgF zq~ZLVr_D--GV>FJ`2ktyMg;Zt=N|$>B`i0n! zV82u5Ez8I4fw=JiUUon9(2Ijdo2U&_>-1uHwDDm!E)WUq-uNjz+Er7461%2HF&xD2 z_j5Kb=WIJe1Q-rHEdmUrt#oM*8cE&9Y2Xy{9)=r2T95(UWsS&wsWbD(I`@LQ7CfSHzW4^O^T}K0b&Ej+?Z0t) znp2L;riFG4pGk=+YYLS09M>(;X~TJXJqHJTX_gZV@x{cFb$G5UEXBljhjJ&6Sa~*% zSaW-M`dn}3@p{Tmr>ir#{M8PkIgV{jxd{@vroxfhA7vC zt$c~0$8p*1tmSAvSa#l>SQ-f9Ip5%EzNBX`bxH}EtJ67LWb25YoMM#@<>0R#)L1G7M!D^DVO(oj)(|(qWop$!54K9e0OQa zR=Tx7J{U;Smt`W!vu{Modb1)@{`6~O$>VRt$~v?n51~#$O zA$Y{fo`P*Gc?`CDl;>b`Qq@7&#*!ytyGMBxw#Y`Eg{@VbI}8`w^W41wUu>k62pzyi zYGi53xI8e5#*+18ug#`ZZezqsIYm(0ZN#FhcpJgq*b}Fu)!*O=5vP^=_Z#nASc@5nBi zjP)jRHsuS!fz2?q zK_r53i{`RweEm;GD3@-9VnSoJ9ZHwHS{Fl8H(1k2%!m!mIoQtG(1JrQk-!G48d&Pw zT5L6z!Ky}62CD|FB~}es^Q_9B>%(gt@WiU{NCRlG>d*_p4kb6VzJfQA6qH_g1)~Gj zdpgQW-%o5?@#YxO*xC(rC)yOT!IY=`ED|VGCmm<WNFv=bN5XKd*~BdqwoJs;w>83>hvEOT_N_Z}+(?$MvM^wvTY|r?yjL09 z0@{}EvV4(VV9?tQ?2p+2W_FF;x8DQDi2QaXk^i6Z{nYcdn>Q z$b3am6QrD6TTFS1s-k%6qBhP5)$$NjA$JDNWBm0Ka}7pupo0w@u6;$Wftdmwcq?3k z9UHFU^}{v1ez^7nx%Q4+!)^}0g<1*Muv5b|?9XuR7jo@aat(Vf{1(FBUUNp(H8gOz zMT9O!2?&bkWC6Z2gZdmmPKjcafZ%~X=e3N~ixMbe*X$Ni#_B`~@=!KP5c);zPt}VO z=wo%F1cZu236!c6C16xBO2B4}Q3A54Buc=jVw8Z*7^4JnZ;>cLCbD1gJW6m4FhkN> zjFb7?Iz$N~)#{7G`B1*?Ag6Mx2bq~C?71ElY!;5uE2CuBghdJR?+@1l$QgcA!tL3i z-%CQPzDOes&6gE_mp{=n$%Cu;v%Vgr++T7HQo2oT?R?n2%SY z1c}~zBW@Rcf#wl}q5bg*oGS1t9V_svQgwJ$sT3NEyjtClY3t>QcU~O?8XH`3X9adI zICN(T-5<-7b{vlKcr8Busf<;!Q6q<%FA))~WE8VB z&N6QPz=RiDZ}@?4$iRy_hHe7Ki@F)UmtCP!76F>|<-QH`yrGZ^Jp<2N5V5wN=S56$ zj%E!P(X2$@uFDz-O~~V)Jr4KF7_>93$CEF(2 zsY>*eoeCLxP5BX=$|v(e`7tV=+Qq4&@*`u-?&E(|#;RDwpVH@?BTlCc=*63?M86~~p=3|Hua}_!@yk1@aca^#q z9G2!J2l%Q1%)D#fg_6_B+Ggl8R8Vq_=YV}_fT)n*)X;GDE1~wl9^8y{xLQE|+I$8m zJhr_8NL79K`-=2R{4js@_4S{I^_6^FX)J($UQ3eapNs0-ZX=9Tr0?M%b{so6uV+E= zWNcpms}j98LtVHVoJeB*-sSm{Qu*T`-tw^`C*~P@oM;gY#)1x2G{KkoDb)~thA$hy4EVBf7ksIcb@=iLD)41vCiVLeWu*y{ z4ZgJB>zmviRJx#mkb@EyBiz^PZ`gihA$S>ohy zDJuRq^wm{czVIeB;kxFT%IV3z)_hVDL z^7}(Cp|jgIVkwHuk@ zwRr>%%Wo`kh=0C8Yk&N5#F>Df?%5US&{btuxLpplWk)E1)##pODufQwc}SstwhWU9 zYyqvjs!W0sT7)yI5?a#=0gveGgWQAZ;VVNL=C(>1t*k~??k_m4*cJ%+`XIY8ItZ}Y zBJCbH_W6E$Gvhq&n>m5q*HA+x>JGMBI2;T4vEG8PQMOmGfpb6HvJ>B@|A3-LOI-Y= zi+~d#?>K`S2R+?}`>>+b(99X zr)8?r3X8~uOmGTs=m3XIKye^OJ(CI8mvZt3C`zHvw9L{M>+IMwAx$=i8n7dJnW;xA z+^@ID<)1NWeeX z-%_vWD1OMNb*&2Neby`tXN3UIC66JfB@Y_y;^&Y&co{2s?u+SC7JN?F*Y8~%HE!a4c^(dF6hR9_Iv2Tc_wo%0;&T6m59tCR7=P_(6PEghfNuU4uMpO(8*K{ zp<^*uhSNAqbr4K-U=4OfMpSKv&;WHsm)#?$(kVlHUwwx|Mzlwdw#W!6bVo0T@+YKh z>J-*2L5Ifs!S<5)YyUXI27G&fj$oc5TzuNKQZ>wy9d8u_>FD-@@kKaDuirZknzYj4 zQ5#Gl3!;9q-!B~ugxkhvb;A6)T4zhyMSDs*uq_{@gWZd=dqg_qX1!%gLOMvhUbzhE zP{h}GUnV>*@FL(w>uKn0yw;U-Nc0`3htNb9oe>47hYA02r* zV{qiju8EGk5K7jEtKl zRWw0+N)B*xRL7UwW~+^T3lT6{E~Y%mZ)n~9aest%h*`&IWoG~r7M{pmV=3q=gV8^q9 zLiE@KO)zB>k8RxrQ$B^qK0^hjY~rzc zx0s0~I2L=w)t~VRrff_LrhE#5t-gGQdPWDqVjl?Frs&ydZd!Y&fDY?N(6UbTBM7M&eBe!!Dbgx`J>s`g6g{ zyPqBYjfPGac{2iG0ftRu`ZI@v@frt;Ff1D>`gnPyiY)^St0VP%JOUZ|3{v=b5$E%* zt|2XTsFwQ%UL#cKCE~%PLe}x}7?c?RqcT><%hR#ia4mbTn9s-7o_Kj=?TMGi-Z6T4 zadQzbFMh_;x|8uDT$|{ONCp`H2r}Qb5(wp|$DMdk3WgG<(6xkbC?w`hSXcP8n8};+5qgk=CP$kuL=X zlT|;0*SDnp#**HboIe<1b;CE05yH?suvlb=*X;SOc^8J}j?kW0mb`z83WjFmIiSoA zl)b0SEFMqLjMhBRUSvl~A1NE2fV)@if@#9hVDkb9e3i-)-3{___F~%G44m|V1kZ6A zS7eqQ2AH!a1v|N7PZF$UiOk5TLUQfMaGS`CY^=zP3JKcK9bv`;g8J>vNSM*yCy0eU z@xhFOJB|(}CCoU$xqey18`nRf1WZRZhNAjyJ2SS=Gr-4JgfO%7@8e91yG71y+y!Uq z^c^$v2`X@AVdeS%bM?Vo?p;`av_i^I^4l+I2xC?IF5y7UO ze1Zzx*q902czl^2H`;H=xUn%0xRLBO!i|~ggd0l*CN@TiRS)p)aEvpU@`lncoThz( z?N1l+yF}l??+8uA?-)_Q?-)_=?UbnP+bL1Ux1&@6zf-C-*{L5lT}0~=y;D#orCr;n zP^th6Fsc}eWK{mt+ON>JG%3zbC{n4kciHBwqi@P6`93in_4m7mLdSgh5e-G6S90u; zqyzZyV>%Ezxn2kzdo85DfmK=h)BI2#^dy$3zc`5{mhsv~-ZNA`HJ{^WyPO@hQh%6k zsa5L*Ka^?f)Nr@^J{BqqzD;_JSpnbhWhIt~uUwT{Ee}yQ_i@JI>;k%(I=b2~n=WE* ziN4QV1jdNHu-RCIxfp&I;`};RkGU+QhO^)5eGES7KyG^fU@n2&CJwp5OZG^({yaqX z_kzdGH%R`zJW|bCO$beAIb*G-AT%ALgKM{D0&5+M*<-Ehv-DZ338ArF6~pw^m&{@M z$w6rNu8Fk*gob7sNajTm<9(5+$DsioYY7r?A>=U;e1YgKLKRzXvatwjk+F#0%2Ykp zs-PCaTJ}Eaxv5Wlu$Dk*6YshCSkcYI{0UJG9qbyT#;@OkB?=;AG zh6*~YF%uZ=SlS+=RUfI(XpL#1!^rL-jFzb?9p>;beC5Pw9uGst$a9Q#sfQ*+s&+w) z$DIw+MQAP2_uMannuWY-GEjup7*TY;o`KeMq@Mfr6tt#eb=mgCZ5V>bmM2#`9EfnMHSW<_2WZlNT7)qu%nlB)RO0p;n^S>$tH7k6s~gljON5%i13&2R|L4E{_kaBR*Z=XK|Nd`~ zY6u?x-(mi@zkmKe{@>ew{MX@ zO)$W!z4ooV(y#JYs;1U0Crc~!lDPZ}{wl9|n>Q56t}AjPkh*(Y&pJ3rna00Fvu1dw zD=ZkmJf>y`V~$SBm&`ywMhMI|zH#hw)z75Qo9v_4P}4r3M$<6laHLX^oo?$znb z&St`9&QlUOkpvBf+!;CaRs5;^8u+S|Xd9UTaWH0au#2c|syjD069pVqeP&Yo;tAXc zU{$kzPe}#J9Z@RS?IpWSq(VZ*WCfBUl7&oCVHBxQ*6coQ=n;8e9w@lS$vng98L_j+ z#eS~|q3Bi5gkWTk(9b?SRbMI)#B7TuM5gMR5Si>LsZf!o9OI;MNVc)Q$RQsDNSh0g zcF2cXG7JwKsuX%=>sWnhkRPv-2D(y48oVC2m-SHNv+33?IhCQ~Q~4yyaA&<0lq^Vy zDNBe6<^x)TFD?6F2ku<+g?SSDK?X`AygK9qT5Q(V7PzB&6{@JS7z$?~RxRG366Bv4P@yGRB62PE4hQlXec_Zj^( z&~RmW;6%1%JBRe7?a9ByR#51qClwf3OruOs)t3qct|3w(Q+1_6CVNUMRHSXGV6h^U z(anMZ&IJR!C>8QpeW{?!k_k^Ih1Q6M3RHP@-nEn0@D6nFXRVEj9PW~7J%^=;=+L*^8CH#i5{{xnrQDFu6;SgYlu_?I>aTyHE?mb2Br?zAg{wU=%a8A%NeeL z(ZV%s&~Ob*60TvJhimvs;Tk?wxP~tmuHj3EYw&i%wU6~R_jxbE&~pU+LWL)xAyHj| zRmZ3hAap z;*bp$y{=3J1#xU6={jnIu@IRSWS&g((G>WE__X&~gw}!3vw+aEE#@52kr3i_`)v4g z)qNNJ#Sk>ZnYCvHWIDAeAVcmcFedze?$J{ht&A_*{b3E4(EL&dJjt4d zlAx?K$b|yfY~1Bm^_TRBJJbLf3ng|kS|020tI&YdzEWtmYaaTD!EDlH7e;`rx^!j0 z%F92Wz7nKB8yZar&7PZ2P(e>)<<$;hF4&P9@Xt5s@A5LwpT1siueM?z4!D#mRm$_Y zw}eh(8{TbYXt`=DihW(}#k69uX?3z0$_xSSn5@hI^Jv<_QQfx7ja&}y4@tHbc|3=j% zM29|)biysYEQQ&n!>#-l?$Tg7>$;xUKI0afl#G|fhcwQWVUMtFEr}vddpx*^k8w#t z0}afJ{J0z0VH>;*FX$UFU3767@}P9lU8m(Xy-e$UnsJZ?B=uQ(_AJR3PbbDeYUkvPjP%#$`r?x_I!PFb zzLSJOXrj5!h=RG!h=RGUM3r0#Nf=7hG1ndq;?agjbuIgK+F{?*ymo}wP%$Nf1@yUgnVF|vpke}|v{ zWds_s*}x*YkXUOV@>NdN$vv`5ToIa67G(!KAM?^O+<&gW6H$-)-1$2btGZg4JBn0V z5B-7d(_wS+`(vTf%>fOVy)E>Z!xQA@1F~6Qp<&0o#<6>1J1?3ep_}Nv5CD7@`x&=> zIaUSc^E$pvGm=~3eatwJ^rSL<5zO^MB59)UGqeJ}RR)9mx?t!`CGzLc1L6YMefhSK zS#5!{J8G)03RRD#b;@)^OFELU&X+2Wl#V4?N zH5uTrnhi&b>375Hsq;9ZpN07on)~TkCysXOE;!mGB}k~R`?CXtQ1 zLqeg`tQ6=@X-|=L|)4 zQV~`}=7W^LLCA+SiWZk!b%;`QFpp=ndA0jXu0to8Rv)SOjv;H#-H%49eSi-0vMm{z z*KQWsJHou_v^+3x-ZQe0iFsFH-r{Q9(Z}p%1>SOBhdUw>XNb#k5wcD6K94Q(E`gmk z=j=ckGpfkDj4JXj!EA{#t}t7ojO~4bx#$xg%2;r+B_5ZGGe~15+K5^Q6g-4b&VllY z*G3d^P0;5&4!ABEaK%5h+QoU&l^%EgEw+~(&!2k_HH(0*Y=vlx@7op%yy@hsyD#_$#Z|yfb786Nd^Y zx)f0KzM*x7fT05h|17YyO(97Y=A91^1F91^1F9A=`9bEw!&Rgvj7 zBbbd*Mdwh9bgjz}okI&2X|-AzzT+I~FFVemQgxg|Min(1n=wKXWN`>2!Kk8h$YzYr zVf_5WIgDT9)Hz%)!gPt=>!YyW36+mIeu=D(=t24t$G42ihl9T=M0Ug915&5+m2U81 zt5^4lGSd6IGFop?M(eHP84lZWe?il^JyIV`MICp?7HXr*pWyYbyzEJn3LPywfx&6} z5x@Q%e~Bj}P8*W2v(pBcf4wC?5&s;OS=(Hv^|);d_b-3MIGy^0s;m&mZDt3VHAwB6 z?xN2p$qthLkbjHmJiORLV3Qd6xjaQanP_<2{_-dM1)cDj==VRr#{VdmI|jom+5dAI z<`+8{t<m6wsuBs8X?a=XL;#*h2o^jLJ8V7Q(5ZD7Je_}g z!ihsR8v%Fqa{k)m?B-`L-_JZO;pl^#Cx03mcJlEZ{`uw)bF=-ZB>qz^>IpZqeHytr zQ>EPztoBq(0IU6mGE1aoEy!tHZjZ^dT5?<|Wm{LcGL|<+rA$g7Lqmp@5CtQY5d|Yu ziP}b}5_J#?N)?PyrGf{4q!9-rvg8gVfbCrs~l~n|a0;(IUJs^J20Qm?T_~?jEegcTM?m`18zLnBP zg9yB!fzHNJ++m#scMvB>Ojx7=7~BDi0Sg&rct>ZCPGY)wr>Z#sRCvjsM9D9L^Q|Ow z^UW%i^YPnoToFu?qrPN939w{W&@pRs%^bLa6ql(PY9mA z-p>v(N(Sl`-X$Ok;ax%%bK26}-6CH~6?vDSi-dPAnluvL?VyYLEQbjx=;F%I#lXAh zSH8V$KE?{0@c^*IT_LGyp2DZ5>HVJNi1=B>15RIoCC~6e<g z8|*S;2P&-A@d;*RJ3TUErfQmv_Zv>Zyl)RwLFDYv2)!Tsp46dgb1*o&%I<+vAu*+ z)mCFDe^jaxyl`I~O2k&Fu;7I&Us|PnX?5jG0Yt+|84KDOoWe{{KXu6wnpasRL86z< z3M3uvJbHOY^l}p)RZPFxMlW-b(uyLbqnVRyR1-CpEl>)kP-6B3wfTlGKiStllvJwT z5}W)RQA&G5LyQq^WnfbuAH?Y~G48K$c7#O+!r76^pP7fCWF+$DDL@G_ zA7SiFRWr8JuV0t3&KWz8lJ7Hju%JD~9hBquR(JefRhPJ;v~}8!H2jE25fyu`7U01=t)s{g{)XMgZWJ2vp*y}_2J8vxUzZ2;2 z5dOxV&Mj1Ns1ln0APZ(gufiGse}b`Z5-YvH--*6c97t#)#?FX>oyv%UovK7_J5`A~ z;Y~^v>{O*{g*U%LrA)$9VMH}*1Iv8Ym@U`Z#w??X#%!T#8?%%u7_)T7V9c@=jK(ab z3dSs*F&MLCk3?gZe6mwxc9YVGD=a|@E_^HQFNQQ~%{UQOSL>Ymr)Sevwwyvhm&zIxtuz#>rP)9jYo~^sE zY;DC*ut#@Q*~Rdxacp=LEAId!Q8-m-~`G*I$yPkLl=IB>Hl5 zDemK7`V;QuxNZh1xD*j65tZu6JX?Mx%K;3O6wtSzV z?oe|CduqEc>t>3uYI8O@ELV7&fN+GjBUMbYNmJJXfbce%PmFe3-S<^?yZ-t~kGJz! z=e%w26LVG{_~7kHc-wVBeU*zk%hp?Oh*di^4qcdM`lIZeM|nCsM`u0B&MD8-w}q>s z+>mxtjZ-nWG(O$X_;hE>Uh0i`;Kbm<)KVk7N#>1ZZ^Q!5^G(4U_QNt(xA%dl^jO`l zJ8=0Pt235yb^=&EQ|+uS-B35}hN^oEte(1|;xbshbVJ?d2Us2F%&hA?0>3xCP8_RC zIQI&x#~^Wtz-}av93rrcC|b5;q-fa^BqSu$>2y8IRuO?JP8%)T5&}Puz+yXQqK;*& z^Hr9uUh7!4go;?UJHl~1>gZM(8;DUw%a+X;EnBjJ#Ij{n(XwSTM$0zt5n|cKPj+tE zN=?NTmLQcHzU?JDdOGZW19~ml^$m@ia`in=UDV3_fcvM<-pB$B@_Yd{A ziux3k^ro(XEC)LxEv#2%l3nFpmPbiqsvCa(Is!qv6i{&|7N2yJUji9I2E6wQG zSgD)TCiP1)iUc((A2DLi}s3591D@(G2zfMKp31KU@Bdt8Gz zsMn5D?Vwx2wV%juu{pzgz?uoyVEu%7KajP;XH>fMzV0(hH1Udjk1@(<@{l-YG^A7UF{)_tln89oXg@b7A&J8=8cZk3EVNN zXx@tf`M0VJov4qj?ke12J#n=Q%ZR?iVX)61_`Wdbr2@0(tPUIK~$V zf61ww}tek?<5SVFy#q)_jux&K@sLRLW z1Dm1FatH4hVW33cXC0ER?|V^!bqJL|ED)^2s3PlRsvhguN`#59j=fK!-uf&D>qz;@ zy_BC=);X9aagel1y$`Od^@MaXq!UiZc~^mj^7D)b3*~0kg^|!9P5Q{$AmI;X!OmDI z4|x(C(--WqQXZp81y(9EHCgFc@l>O7bZ78+x;k88x)v+-Ck89UZN*qAQ(45%$c)+u zyI+Kl5`CYQBFJTy!0I#)vWK4~qfPkeBabR4@E{D^asg_6)o z7u|l4kXimX^$m8*PhfaQ)EIuZd)>&2X|{6K5zZJXkAKEUJB&nyaB@T5muKuTQkkjA zNXLTr7^$XgF;ahGFjCxAjFB?cbBrV*;tSr)oduqwITxwq;8`m>p_158k&zfxWTZ^h zVYDtP>K#sFxr zg@_(Mr3!!soiTX)&v4_jVecvk8xSL#!S5l>l?|O>j=R7dX@)#BE{?ZPal-m)d$ys+Kn3U23J+?? zzI%N>x|paYou@8&bnO1K{p>web!?Dc9Kt>vGR4t+dpDTzKbnW9(=8v`M=4dw0Juwo zH~f{7eRNO4GENQNa2YX_9S=e`a2$v_-q#y)0q&;Jyps)=Fq6N*iwJ=}CL0)4^u!od zlnsn3%7#qUlMR_lJuxC1?0o`v>f0Z(K^nZ>V}mzD9%>1J^NptINMVl>B2Qc-MDD+M z`1e(I4U-V|=XD#_Za+AEr_zRXmkqfe++F&?0f2>A2%;gR`LLm~ERgfJFjVSqvf3xRDhJs1j&dMV?Q%fc z$lbM#obEr!fz(D0mmvpA8#$!6KM;FH8#$!EE)YtGk?I72U|X-Th}f==2Dme-X#Yms#drMuekeoPB%gAvo#ex)h)vA!t&rqX#%ebi zr!z*InBiM)39$vALc!>a(I$Qd1=FFdH*$)CJuaePiN20Mj{X3#FVOoZD#y6tDOK3< zgevxtQlgI5Q>s&~SKTKdnBL#D-a|kz^e780iPuW$O%I$Ww;WN&kg22NmR!}?+SCzr zRhiQJj^b#rCh0r)=VEJ9HeS+aSb;R&k;2n!Z)#p8sh!j@E+K}uT~wo+b}ff~E<5T8 z^sM@bNZ&zI-}Cg>U(3MR;MhiK^!4fMVS0sA*pNm0X)$Bhmu0k(U$;#^@Gb8o^T$G^ zI|vnA=UYhNQ;EbKwOpw+9=eh1j(eZ}LzV`5?l^dJ+)%BF4stMif%D8J?qBP<$3+k? z(f2t&A|$bJg$*@C#*af0#%B;-aD{ckbH?vLc>4Q;@dd(r#13*|)}eu1#r<-;l`Z~r z5BCGcNy4(h{WU?K`*)?CS5jb- zGeXg%ZkbzFx-J5{?pc) zr7l}?`}22z03cJO)dF7Zq8qHkC)?pSIUXx`x0a$hkl>Nz3#!ymf{Yh?b;yM~4r4p- z!v&RQ-U)LqyH#++wdQ->#wZAir?JfHn?E5a?6dt5K|$Dv2#SJv?t+5tI42&o>P`10 z!~-@c#Di45Nfl=j55r>`<`MDP$9+UUBK(gt@gQK)(+)5!9|A#{*1AsiTtt^1PoPVL zhBzApf^sIuS2!9ksp7WdtVA8)h*AZ|S*hBR#El*V#qpsPILVR9_dfZO5sf~U_m)$I(6CNeSHiep zGz=3P^+%eSijVYPb!@1jOo?wv(2x{3r98B#KuNHZz2od{=Na(MZ9Vb?LI$V~T*Af4 z{ubF-o?6sb)fU7X8_<^qy9lM*DXm|$VBhHG$kHPtOZW#acMc!poM3Jou|-hQC~a%r`^=hW{h_oE5V%4R3!}k5I72d zB{)j=wS3B?g$0h1MDcvq<$ah&vBFK*MM`TbQ$0Jyej9}rPXJrr>C(9s#uhMW=WRP2-3a{FI zgeT54s`f}&rc`YuqT201FrVF9;dfhUWaT_sFm&^?q)qUfiW4V87%xT{QbSn}fwJ&d zmLcUtB-yqQuL5OB8A)!}bbsI&yX7{`=!zn8Rs_ zxsV}bFk-ndswhJ;RnKzCR5?c679j`aZ*NF53w`!Of=JWFM{K%?^UEB(Ee_UUafIF$ zI`9ZRlutE$oR17UW~sV>BQS7B!pafPj^8M3D@4MHJQRQzX%Dj&%<{)bE$J*cAz6cIFiU)cO`J`NQ})%AZV?H#wA>w1dQ7 zS^kuEkh19^f219xRN1Kf!7<%98)+EkXL^|E3+xC2$t5*8kSA#+qDD> zVHl5A!#T3s_FMc<5iHt=Qg^R>ha^~}59Om|6wT8e#cksXcL`b){d$hjPG#62xPB=| zC)4)?%T5Kk*l>>6U_rFd8G~pkRBgMaP(9%rRiw-}Dg?!{!T)~!4gLy|n2@;F@s0MG zjY!!S!TLrmnNt7Y_Y0LWj>~_*Wf3a!&o!Y!#}g|=mM@L>w8RK&VnxQ?ASUfIoDpov zDK>diJTEaizdIEfolkQvGxi@=PK7r{>V5ew{^u)1ZSsM6_&04&h;2DAPc9=oR1VCW zmJKJKOeo63@y%#nYqAZT%(#~CkYh%DnW6A>6;BV&5F3oh41y#RnGrJ{Vmzfx*f&Qk zCG&;K{X=2^xW>g8yS?ZOm4SC(2p3LAzU~W^;h(iP z4tYr}b)?mO$58RBQKZi9`P^{?rTybT6%FqG^^=R9Pqh!9_k7wPqa|!uGDZ|OHW}kP zOeVr6r&yGo4PhfG7IIl)(Z%yY7eRE&o&ludH1K7ePEssT32@Osi5RL+u*hS&(r;gj zN{M`C6(#aX#D%Ddg%+YV7RsqS7FwuUSSY?#UMPgl&KqU#^O;QJ{aO=5rBne#-Km-& zDyQ-wDxcAVsB{HG^&O{j>x`YQWv_N6jHR92yAN!S1Q3;dvNI4BsO3eL5PGkFeSvl! z)iFhAC&;KmJ3&SSN3o6>d{wBb;OF2^eJNBqtq8KhrPbH>BZN`ztI~zOonL>AziOph zr5!Cdq^RCu7wI1#dMrb_)`Dm#C^@F`|7(daBZg_ZZ6kTs#~I65rzwk$pnm%w_eTlc zbQ5ML_dmy9;zc5bX#!O_>l$~m8l7DZ3Hv!eiuMh;1Nz&6PBvD!)@9wN6t$6sZw;i{^2PV}1~Nh}Tr$(@b^F{PzCha}u%s`ToKDi!lFw*kEFNIppJ0e4$~T66~xz z{O8y3f%ZewaeVk4g{wGONA5Y|2za*F- zeQ*GZe=Lm8oTzsLlLK})#2#PuvT!*-*dQDpQ|&5miBEdSD+=RQRPV0K03M&@q$i#u zINk)ie7;C7)3*_XJDZxt_xTX7s=9qrqK_ZlK+ z&wRg6SedRme8+SpRK#@Mp?wqM^hI*}Q#6a@cB;ydjHWAD9AdgMs%W~hcl7yxY>yDr zHGYkA(^ZhNE4!WHZ_%HNRH0O6ypf^&SA9#Vi0PWg>Y1(<8)v4g!7^c(6;Lo{{gtOW zB1gcwagk;H6?IeN-OGZ?{q@wQMfmjqNG08l;wk7^JjY zo=?KV0I7FFkr|i_l-~0$(Ezg>nmIw2lQj*K?T*~ML2N~_rpI<}URkja=ShRX^t&TB zZyyY1Ln}A0UVa?J&^$pH25sEz%%C;6^_e1*y0;CONn?fsY*Q=a%>XyDPf7#P|eUXOyrm+5h| z&2#DoY+_N=>lHEf_Yebt%k$_x%Mo1xD*M)bRM?Sr90MEUhH$xsjo11#)fn`#FI>UK zhf6uuZ14NHl*gd~S#Y`9!#)|V{WCp`ky)X~6aV(+2~Li?mT|HHiqAP&s#Z4iYd{+r zL|jd9r*<*LM!UkviN0f!5}Ig|GNNFTGNKT2RibvtRf#$#DWwV~sZzB=u1aJ>u7mF% z{5_I^Qn=2XA@IX~t!=oLUsh&h;Nn8nj=55*zCGv&GD>vCmZ|toNacq# z9P+Mt_s4zGR@?ITPf`8UoC$WNsk#gz{9Fq)e|D~g^k;cZkOJ)%?E~9R!Or_GJJz)-{#M`a%<60Ytif;gSt!4;J?yv={FbQ>e#7~F zxLEPqRQT<2n_&?TC{eyAm%%iWa{P7?P)uH{_qUv(2IWRzN3Zq4a0GfG3`eL4!)2-- z!&x|KB+AX+C%&6L@xgGjFq}ga5wu8aUlldX15W8gWcUUEgh8mXAPFK&q7&_ZP3Vand)FU!Sv8i$f~%xu-tu~P-i=% zC4fRaXK5|NwL)mPutCLzSP7vaK2{tkv<+di#jw9lXSvNZD=3zv7U5O_ecv0e%vXD2 z(Z?#KqUT|MXst|SeJl@tFFkHy17*fGHo%@M93w?nkhoan zYlPka`&jL?7P8xjixofFxr=oX3B$=o(du)X23m+9SaN=~g`=T`*jUc1e9NgEXbl&O zz+sy|MygP$*%yw0 z97J`S@95%|EXb0+H;gzA_;HNs)*TUxyb5O;sc{z?i9l=qtSC5LPf$T4HD-cF%6D^e zZ>!SYQ(6~x>28sR@=Fu;>4P{_CqXn{Sg zr=fYA?|3PAk?5hPtzbfuX3aETj7kQR^uTIE8YLqNF+D~UVtPu{);CJjiRn?Qpl_6_ z71R5^EJ78nE5o-{38RWIbD?TS>nK%-*3lV5w2m!KR3(%uMC<5`AzDX1e^e#pYn-Z* z@nQr!(T5EmQY4kkZuoG9%}9vu?n}I7L?lB}hpKnHW1g?eSgJ|<1ASB9Cz?cO*)_>1 z#RDU0$yhPANprg-=BRDRNKxBlqK>xFI8@ua(TD1IH%isfHaekoT*~krZKJqD1{lhOZ#A$vYES7eS_s?9=-n!-9EYS!KOUw1ev!)TIuN`-A>ELo^o2BYA{89=%IX82udiANVE~ z*{>-=Oz;|{Bxc_djHf-j@Vn0M9ipgXoM}j&<5wtRNt|7WfUJJ0$@KA8@*t+LSSO(P zWSJqF)^pTm*rFv~jKUSZFwzx1lX;cFVGX5&!gt82gY&!HqA;Jc)d8wb@=ZY$Wk|vz&51SCjU63fvyn7s)dgOFY^V7*rP=P)vC;`F|5``J?fQ&I-|TY?9Vbmep~6OqcYA{qC4{ z!r)WQ04{Q~gzlz-K!a*PHIs)SyVwkfdsP?42sn3&#WTh#-ZX)+SXFtm(`lS;^AR_p zPk9u7PUJ!7Ox`&aaZ+{QpM0_Tu(5ZwHaXkT2gRM)x9@qL z%QXaBHxOt}gFaaqb`fjGNG{)(w2k_>w4t$-X!z}tpE{d>;Ft0nrO2Ze=BzN_(c4ef zqRKPzBF2?wNtJ%Io3ei|-T9KONk-r*7G{Eu!zh`6c_VWaNlueLjQ|5w3U{WI3lK)` z9Y?X#kxHQX%Au>GU(F!lipo+&_CnMw8qWWIOFC$#S1N+#FP#_d7#BZzzjEtgGjuA{bl3?^ zG)xJMR6N-bi!6zaAX9p-KFYYLQ+o+t%b)JjGN>G7m3ja1wUUoP*!f0xPZvJU`H#45 z0=AWMnsO>b4{&qWa7=FOYT5|1D$eZu{`Fn#Op_)!sMt5GgClqkO~#kDhp{@*(J7A) z;W}8Ypw>|>i_OoKQNF_TJPK_LUMOqc>rP>y6G<#f_UN8$7s8rmr%L15kIJDSQG~66O8-34m8#2?4)m#Zvey}LW`fT< zfs9a#_vLhdI(ft5ixNpqXl%lVZf;!)8{Ww8{qu8>4X-c$NJ7<_V~mHkca11hdzf2l z@lU$^&zBo~{b%{|o*6c+1Fyz+zW)5Z_;(1+y9fithIBafQ$|5=$8YG8l%AxG<4PRF zPgIm2f}FJqV^5l8RrBmjCpP<041OicL*$~3u!yr(MFi6GR#h&F+Y8GVREKb>aEPX6E(qeOAj+im{DM+RB=^ z`PNcS3O%f2e1)jiWj9YkyVU7k#dk;jG?>z;)l=s5Xx}3ZIi?>_)xSz6S*y|pUs2BM zEVF~hbagMB(6Xn#s;KYqi*Bqk^^AszCwC6q^h>y~ZY9WrEYxh{SXL8^bdB`;DAoFy z{Z^t|OdOBWQOME;8D2YX4o`;f6$35Om5)oEg(&P}#RMfaa{X=_E6^|z;t!yd2ajKn z2-T0)eAu`Jy{l>dDp-OB9wzn>Ankt+9zhfx^L<$A4-{n%NAClu&%p)1;e)^BvSMXP zGZg=>uaFNRXpa*{?-Hj?01>y-&I!YIQvI$La=X*0Ca1pv;p)i6zKO#q@OMwARqTK+ zs4v3`cz5c9W-tX4=ZZ0=b$_JSi#C~i;;1iVuEmT{6f_W@JF8?*<%_!DYp-YBEJ-DN8h6NBi#j|jGkV4yP zUS!WNs9Qehd{kfmB)o_wUwWcjj&C;@S!9~BWrrsi4$ui`Pk zddam=2q`XXu?ZU-5+7!mZKja#KKr>g<58~z$p;AGs!M~yqr5dny)$16BFci4bI5EH z;s9>};sCu_3VQ62>;ZO&2Lc=H$M?{)pTbFZ_K!GmK~vGsuD}zfY#ax~=9=}U<@Wmx z+yQ7WaqqTMFY)A_26J?&<4(~B1TSl;ZB4x*@`24i5XnZF;ot|PjE(a&1FGAn3PxI? zL5dz4=d;9qeGi=d@srlBn;Z~52#Mki2vHD{gy%$@IE(3kBGl^hV&I2Rs1@@&q0kV2 zVh4qFeSm2B*e|`#)tV=j-J+B4*@)z^iX12;ntwA4C-Ed#C&FB?3Bzqf(VIRTPjn3u z?TCfjLnTj_|B|FM38F$;4kS#Q;W0cgPmU&#DohmNPX`3@ZE&(|MeP01xMO-W+RCsP z8}0;I?AWuQ6Q&8+7bdsA&qDK677Xx^Uj zj;UD9f*qyIZJWxD(&FE`SqC}T11t(FAdK=>wYlw;V*SY}+6r}O z5B|iICG&Ks(NtpkEGNJf*A=Fj*jR%m+7^L{(ZQMU5PffE0-zG0MSd@#`@rNIEil1* z*7+4Fg%{fMYY_CVZsjqSqizf9Xb5@ht;{xt7II-j3Gp{W#y(s`e3Ob`{?)&$gpO` zkVJ2e)6dX&T|FC?OCdBk5jrXKgnYe6Ikp`n2|T`GjUDB}x`O%~And(*6)nm4ZTDSBJd~lmGdM=6WWq5chBj;torQj@)htVt^3P9wxOv03aZ^lUhggwf$w3 z!r_lIu>Q43CtSAxoUZC^S4gLR+SK+vFi` zyVaZ+Ei2IpWyRB6EwRdLTsqDqQi6X*PqQPxZkeK;f@moErLR|;U4fn8nDL%eHnGd@ zu@-z_usRtFa=Z2?lhgYJI59=nWVwmW7rIS6Eh|m=E$5<5{fR4JFACfzScZN^WBLVj z7f*xb`UjXaLtdh5;IiHORL7XxX%}t-{e~iJ5d@o&>|V5Tt4x(Q`{a~;8d9aX8d5iB zxms-;d9`GU@fW@n6<_z}nNLfmdpJK)WGL6Gl8?n$P1bRZ{h0wtH9M$-?eZoTwvV#5 zdiqg!Y=LPJPrWli;6be%_?SN`VSTK=1Z!Qi)R^A^qtWqHktCuAeHPMOVf$PbcRZA+ z#JwOl(5Y0xDG<)}r_xrf4ibZ6$7~mQk1!{DqM=@R0(Fx!S`A5a^tj4nsvs4r9Fika zjkb}H1CYG6O8ePk%l4s@QBanrh;=i<`Gi;svL(Z}Q*rH>1!UUw$IM7LyHtoTr(Tdm#jH{qKY<$~R(G<9;P*fN83~o!vS*5n9N1S%h zF))meBrGFXIG{Ym+s7M7>`nXGRLRp+Y~t~jSnrL6KyZrClj>#i)U<@-ODBE~&f)~w zBNs)bRp?m6*0WfFIvm_zWt$4FsEZn7n`L-O+udnu2;bE%>WSgE9*zbu5u1Q|(^x;2 z;`jGB`o!r?Rqp~fd?ms0AOA`af7SzO#5e}ESsDv35(m911CfuW^Ciwzs*-!d0FlpJ z<6wlT5kl(aXFB~}xcm%y-o9R>7xc#E&!-`MH4dW|XFz#yUt6jtQQ!x^5o)C_`nh^K zI5MBc^r9iTRBVZdaiz1cldODOcBsU0&(Ul!!bdE5S{Vn4Z05(FioX~{!f~8Xhfzi= z!;o~OAtfxP>)}EkEe5zeIbZ1KcbqU*FUt0E4k2XvA=0Hw=+plix#TMts`L7*#bI2% zV5GWO)^FGb&W>uxwm|9{{8=8fr9WkiS?(9ED3W~~qWO{qVYHpentr!kp}W0fag=$9 zt}k5zi9RWbYFCB?jlFWhk&bd!K$Q?5}S@#1$IS+14zY(f#8T+kXKoyEx-kR>K*(y$@)U1@zWx=w6csC6DxcD=1TiKWu0mi{x%>=RvW%8ztB%wVO?a@C7)RL*D1DDc z$Z;+C!8=-@!^g`I0t4=V=1yy0Rta{6&`IKp;BK~wvV!-+M!0nFZ@ca36?gDox!s>6 zEQ!4&G;yPZ?O&drfW#= z2!F^`dbgN4fH3QUDb{jt;GpqfWiGc(Qk@Cl(Gf078dD9kwBM40_458+D16Sk$N#cb z9pGB8mN~9IWo*{+cSwC;ih_HrE_8}K@!pSa>h*-E`&>`IX>F7e$ZfG44x~o8d0kY}|xH_*J9TB*Q(YG=d{POYvKMZ9Xb;DS5l?i4z_$h`QCI%eWL zYQ9PdbW`+`-nwtZle+gDkfFk-)t#E>KZr9IvIJV690(@LzV`nGDSk6oBTL-P;)q7} z3>;u4`jl*2E9H`R7!f$u!QW970P8})=ioKI^)Spf18r=@OM*d}a66_IzD>9gs(Wci z2*kQThDmJN(2P_JRw{$)=75I3%eZTbk_-OeA0Rj2^_u!nkVb}j1A;f@U3_QB| z4V^TSjX6G&?H9zKn#M)j!jvDz@J^* zbF8PSyz>|?y@ASyruuA){N2aMoImC0oAZ;lB1caI#ZQ8yyvXBF&amBaIm6ey8Jo}} zYTo#dJP z<9szH8R8t%z{AmA_(3&kzJ$8yMFc}Z3OZ(~0Vt&3(}gte5ItTvG?a+Ds2Gm#v{FU_zo7HY_OKye8TAT{m^jqg~F# z@7?pPM#QvY9kYVPDHI|MTGsq>1%}`K3DzOm*~9y`0=rR zYx)LtrDv8!Jb=tZhl6{V`X}IQOne#}(ib#3lz;FVoC;j&QnMK@5jFCeY4Vmlm(&xtMBZ>q6R&wG}+~S%tzYN1V^$l4;f=FN75zD zhN14XOVXv4&4wbv_4-@ZUma7ompWEEmq6`}s z{2S>1HEjxg(%?!6Zz=J}b$UN%g$2lY9yu;X(HQ3|~Q#LQHJ65Vi9Y}glcXgINv5XgH zJFZS!HcGMg-1YbGV~*eSber?DzHk@W1f-GWw7qWGE1^6%W+L0kbIWicGUH25JT)S! zDb2+*JpJ4F+GUR$tnDZ^)iU_As!e_lkxaVnf)%O15jkTWLg|&=n0p{O?@bw|qcegh zn)X`R(pO|#!u+Fhvj6Jo91Uz;PnRlBQ65i-5~tK>?$x~-dvtAK(^=a8 z2D|A@Dw!85>gN;Vjh!j0$ZF9p9cTw$u<(QVgDI0sos5cwmQwq_os&sZX1TwTM;2#5 z*%|>lr^CSNS&Gc=M0=$uy*?yx0tu8XeXj4quoQ^Am~!~J+dlXAKc=aW3A5HeX_ic3 zFY?(~Aang5pAELWci*3%*8U>*IPZl-e4dXe_`M&%bD}&bna(!W625=zf1Lzg_g=%0 zo{%Ka(D*4~F*n)0&o%(CRdPJT&G-sWl~U0rqV%xnL3Uv$`Oys9O^^kQ>x|9WZkgaA zt^OK^ZVWoeCj4oG%(n|a>iwakXZ41&ky&ovgQ0%c#OJ#-u#uUmFza_qf zkN2Ar2d~~t_SxE}DJ@k%KLN%2Lj~uJ-mq21V>D)T3kHiFqrX{kdlQW=o9^!fLQ~pN zlZ$fqCwmN_!0#lsO&N8G&(wnXv<~cKcbpYI`*2qV^gHhnI#TWK8P>} zp^I%IQtDlSn_Z&ZBRB{ium0SkT!wpG5&a4OYmTj48s*+>ilDwTFujWi%Q>>n42Re? zsunFVM{4uZ!b@w?^@oF9PL~Rx3+a)l=m<2Ul=J&pxTSm>AVK44gi{{5&3CyRoQVWvE(LsyMI&U9MC$r$z=CBOdg|!?f;N?r$Q%u1lwisvm5X_p8p-crcVXQ4>k9MJXvM z$+ArEWQfW*-Klh2=pFP1q{5&5EkKbcRWtl_S>WqXrJKen(pr#>Qd3=UPCCw{y9rfO zLv5-WE7xg3EZA+oNIWH0%2wNru6X?h+4sFVV}eCat5bR)vN1|&?Y9#z3U-b~?X`{; zSyqnw#u&0=X`?zu_(7YpJ^1@b$TKo{<~rmJcCX$=mUP0_=4Ox%{*SwZmOctwi`ny@ z|IB6o)AqY{^kN7?fq=xZf`B0YYx|v?J#0*!{$urZ6yh?)(R(yb+yt{Sz~PtuW2||! zKZPQb)s-4kXxY_5jLrx`1Qx$eokH;2^fS0I0s1v?pY9@Vr9_h1EYNK8K7<+HDdpy6bH8_TtYbnL)}18+}!S@ z8Qh_@!_J&q2bV#R7koLKRoc(Wt#3$6?HPq z%JZYhv=om*^a)AxWj1S4BeB9{(spr>zHj{0Zb0|!!iu7%yr2guv)=g0XIZUNL{UBJ z`i=i(g_q<(GHcMu6V!RZoqvSz1;3_xwc_-g2K2x&*;!>l8@jVrN=iCZdIr(#Bq{9O z0)v}Gj+{wf%$c~wRV1*?&2s7K^O!M^*? zCa=kK*>Ui|2XE}d?a6oWG^a~j^qweuS42uEwzFm<0S~5)R?z6*PlI;hgU_V`ey^{! zTPwfZ&J!VIW!4uto&dW$9g^-2C}^+}{MuxO_022r>iS8%i@pc?ipv?cH~tSxDfQG#jAkgBk;nm3x(JeO>a z)mv;W&dZgn=ZaJoMV-gP5WSt-)jJAt&YMkL*l*GK%}_{OnFm)h1$`o=XyVu(YQ;Y@ zJ4lc?NY9#xV1jAm+E7#+P|k#X(;&65u^&iyltoFQ<%{l~tQsMZBZw2=dHz1~{d^2; z#p^OX^dpV{KVwCYVtyP~b#6YFCAi3Hyz6Jw)gkRP2N5wtts?|+12B%H>&tums`9Iu z1)TgqLQ?>Da=|zMV{29u!P;Dkcn$f|z(ghXyi1wrzizTC0@}ggshLg^8u|`0Nn;VZ zJ;eShvqv$fB1?nrG0+{iA%@=uN(X3GD1sJT6cM`0z-SYgK!&Th=T#vSDl*dtp3u6& zAf*t(dF}$1-M~A;h0%qCf?$RS>3n&Ah>`A8{T=vVZcy|iA{jR{7lH%g{KiBRb7=kJ zsSkRwx4S%>wtm2}Tz8^~9!4cO%1>L&Z8ko+cA$RQg3}ob>x&$1jzCgsi5TW1C$L3yJk`^@6TDe0K2=u?h)e z4g7rPob=%m(N_nw6^_km*e7-Cy3~DCO(blhx_N{w@-8%v9du`uuD*>$3bs9;X?MI- z&_PVGSnoR+Hn(mpv66M8{7~Ks-@lCmG&!8lN1yd9&OG>+Olj~&86zyI3}LetpEOJ8`hfjQP=9e;S2b@o;>a|cK>YC6`RbkwZ_^x0UW-hu2Dk-?WazBzd(FTy>YR=?dMyBRd|6Oz9Rz`>W~ zqS5ueVG-G}eVWR8ZISMk5f1-R)>v{FlK3izh*~p<4I$D^Sm;uv#QrqT+IoqaqJDEb z;O%&C#P8z?V|9K`pUSeiACzq)a*Ap(pxgG7+g&iwQGpk1e4hQd`n$95dw+-UjzqvG zp|XGxj7JD#`OsC>xY2Q zcAa8$N6=6)$3KoRX?^0c9f0dxK|Pp)F+5#qXrm%*mlnn%@O4g8Ve&wQ-F%Iqotkse`cI{T^$7- zsb*gy%MWnjlTwTCzu2;)zlj$riD$G3W!!@Q3U(%?hzBoX=To3GG{K7|`LRARX&4k> zn5px*qeR$-%NJ@Kp7=Ftgpe_do+x=WP!g_Nz)O-4o5Sz~l9)#_|&-T{thwex4vB`R4=AQSt0*nd> zm|d#n-JF^toId?X3p%$|2-`%8HQowCuD@REOZ$9v-DY}GdVCK%?}`)Gf8fVGZ)z;{ zwj6F>wtQXNKDwG|Y*CO9x*(gjxFn0qBKag57L}SIlGwZxfXrWZ02n@n1-MF8WklfI z{JnfK+267ixa;Zf-gH&CEG!kN4Gmq>N8-nOTIy{aIp4^>*|{ja5^!JFc77yOeR|dyg>-fSjC&A0@ddXuqWstdm z<}*ePk7-gsuJjyz+qf_)VRq9EbFy%aso#X+AdhZ*!IR>?Y1$CCLW~Fm|!czC|JiYGsN?jy(=z1)%hKK~K== zD2yNKOS=Qj=9jZJ+@ZcnO3{}G#lY}uZ5j^m(Q)ngwPxBP0U)V;s*BfOp!c2tb-UZC6UGmS-K>lLf4xMg7T zp>coT&)eh&C*7GZV*T2F7>^BCwFi|tSo~91w(tdH!f!a{?%(<5KZYoHk|5AJtagFB z4$+aS@d~QEZ@+>4$0g-ki~I5lF2-UbEyt)KK0M4DY)u{9?B$R1cSn3Y3)Kpz?6}aL z-)G!&d;Ci`2xbglZQ!i(k)Bx_wuR$3J(kVm3>vOV+}--r=hQ7Do`aU7iR_|8#kJ8* zwb6q-IIIpH@6(AVpSluwvB5BTd-3$L;{(E;KKm4kxB2QSN@jG7IY3x@eXN`9@iWNO zDYXofM))J#m&YXBnfs^;W(eiba{MWIt1^T3AS$1XU^D>@{85mpUV=5*l2L%ZsTxDb zvkJNBlw829f&%Ut$ha)4Uj~z1q-MJVEK{mspOb4V1mRUg%*!|VH{GJe&uEJ7s}tYP zj#q-IRZN4*aMGuSH?`k=S~}(d_|XxYu$Yv`qCis>V&td1L5y z6BrV-2B`sX;^?)S#ekFnSTDCgQ}tf3dI3rfg<@K|=K&^d(0!S`v{oFL=uJ6ChxKVN zb9G-h9ZTV}QM6Ru=bBqQJ_)C!uq1Cgh0G(U^ciS>!R2wME7GURb&hzG@}ZLfK_&FR zeZI^|L7x?+?yByg|T^ zh#l5dHi~Q6hCXnjkalY|+=SgI%B-BocYjl_D^*su62?MtKs5MSdiJ)gmEMF^XywJF zP@OagI7ilc=$|V2-G8+g>`a8FbPDzYlKAI6NFb0^y}k^;e%m;6lHqdl z-VCnX&q76r6n06+rGutUQwsSSYx{@cN@7jpI{{YJPZ3@8v=xBRR;n)$OTbdPcw&fz z7&0dY6#jalH9U8R zY4x}oNAn+G@KB-t8byVo+tbjV zz<)APcoO6M!lCmG2_}dY1ocO=vjh)r{_%kpKU1U=sVC5p!h!~Kn}o;)bRvjVYXhxx zCOS~3etPlJ#e=5{H!x6wy*#~{5nPQdRIhN(_)PG$)mO^OQ%?*Jxnq2K_-Uovg_#bC z!^r4-g8(zTvR@-4pkC_SSxu?c(;zea6m`a;wz=)gZ)vptz$uVo(Lo~Krmf90cX+G@ z(c}%Q#cEF%ZL;0mc($Z#?W;hhFI?lNn`LM9V~w{&sk3>BGj_)eCS+_DCkOYiq1t6Y zg}|=v7)(plveL-^ne=DPzVjGmyclj3`A%n~(oyptE^RCoZ`*)Qr8YoHuMcg@ieIsVxS*aV{h0+;o1g_n8%iMwHp4iUk;zS406G2hj@$hotP%efGKH&IeTp z%Ei;O>3UmI;_r3e_h}i|wb9P4RW1nD}D2{r@5^k6)e>x+gdX^5} z9k15Txy4&W2GOW!@mmNeeG$y_HEq+YBa&k0&&y?%0q7UZH!0Kn&{!YpkCZx(BvrHpQB6A2uLC1{fY1X znjlXaqCNonB-gR=hj~4QKQCIJ#pXl zlu^7cUBlVsQuZ5W0{&!OW(sI8FuIY*oiI^Pn*Tezd$hz>QhhJ%Z@B{RNM{dUWbEMy zA7;J*>14kl_HBuvtBf{UGpQoOS91@uJ_N<0GVJ1F=-H4yC=2F%X?P18eF>XxG%E7t zSzxev35qyc_6D8%8H_TGkS@$OE>Z0Gs+jD0U4KYwVI9q8G7@~XBBe``+CXVy#{r7R z<1Fyp$a>=X?uAAr9!tHd{7@5n`*4}vi@co;%E5lKk!pA?Xws3zhj=&;c+6*(HdSbk zob95{`KR`sBK`eghk2dg4Ip$(S43U;6G~0&V2AN3JH0nwmfdWALWuA}Ka}&rY*5 zvxAZAIoX;!Hc_j=5rXdTmcz8WChNWQ>A3z`&fggiGnxmhxel0xl1se_Kjd%;-4&$#s&trq5CW{9S6d&|jM zhA_?*u&HC*2FqktTH#!Kp~TkFBV#4lOPw-ARzUxZ$tVFlce|-tZW)YM^lCzgJyH@_ z5R!L~{Ov*6K0&I<0DhxB_`e&?!G%VN)u^=m!91QO8V=@vTG1-GJ5&j)K$F3Gm$N%zH|=BI-h_GR+sG>SF;XrrKG z0xdsW~~q6(5yDR2_*?NG_;U{;YZb&s`8#P623#^DWqn8uZSyFGtwD026umxgyu z|HTR6#GNxIhLSzedJdUAJ+l(DcId*_y5zLhim9-|ta`~Mys*+H%KFR3w>8BK!)JW8 zTY9`O32aC;2Gwq(z9g|7#6S*f^C7fluN#J>?-4a*_EdwkDA83ClPwufF%^;TjQ%xK zLjenT{52Mpw=v+QK&7n5sGqWZ0||!^`N+7`CzcmTTThFdKytjujvd!XOC&5VDz%Y!|FTM0D{4P`SmaR19?%rYpE>8Qct)|MZWwJgnmla= z9_+$QS*K$xac>s7bYkGlP@qYa9dc2}io%)!w`GC;xYCz-YBW zr&WcG@R8j{Oklnme4+B_le5U*_Y=P0g+=iNFjr{qg{%5--td^|Eif8S#%#&z&8Miou@%zHH;NoZTRI=EhR4kt(U1H z2IoQhwaNN(u-_KYXR(txeZ%fDO(1Xms!Ta}-E!z?)n}~dfN;<3V?$KWM)A8TRl_7} zH5sR!z1RA-o**e#1ixD+-b%PM6jG$OOTIp~4^FAJYYw`TXItSJ-z$p2Q*}*0P9#uz z#P)bs*97ye2a^H?Tar&$I2}8RCD>D%VtYj$!_pv>1Z$weu`#tJ+_1jR#M&dOw;Oj$_$ltLC zd*#XAVHMaPK@6^!2WMBJvH#}5glKnr^f&Rq578t zKfl~v&Zdqkrq0g)_`R6^2hPlBY-x9vJSn}Wh(7XZ`BpY%Ob=sc#*D6Ej3cu*A}=$? zoiZF;g2CBH%^{peNgqJ@PuQJ2=8Opozo}Y*JOt@?l+iyV$c5^S`@2ZiW z0>w^@{n%}wXm$6m4L6|ZO5jqPg_yWgT-9L;XmMvrAmck}p}Em92BV4a2I}^=atmPdPD?hOsOv8q!NJ*H1BxWP$COYSY~zzIdE` z>jG0pyQHF99Iw%;%*T03SW-!yJMm07{k&3SGnDAY8mwMM2LIvOrNpF;SLW4KH>Y6C zc3#tPLmiU+y`jJP(c;~&@c^OD{MX{u1ym18;cIjdW;J1K8)5$Bz8|Y?4W!9o zs^%U~`? zpnN^?71L#6WMd*?VPt9d&l;P}`lKDf2x{n#kN7LHlyMyQB$sxa-ZoRj+IfKuey;rx~&Ck7oj<{*2 zf}Q8J%qZlop3jHJG^U=e&#SxVjTWNrw}-o|&$rw0rRmG=ztgonUj=JRrEWdmuUB_> z@3*CC@0A*yOac;pLka@je%JStL#qaQ`khZthr1`cL#4}(*Ef%T_$}|3Z=Znk8snu; z(NC0<3tDXhH#Hc?!033y20=66%*@;8iBx%eyZ{&RWsBu0m?^>E>Q2Ki$ps!;Q;Z1${j~ zCH*ag1cXZ`h6e;ABzACPxB{WHNYDTQ(akP;ujWCr@sN&z2=N#!9C!01y0vsGBzS

USr{4iogP$0;CF=Km0;WWyGR%=mca|O^L9IF%6n-ENJ1t7^0gtQq`8Z>;zZz zI7{65Y<+Rmmbu+3>i8(~4;n@>6>WwNpOG6oCP@L^Ygb}hB_OcsOAaE0B#%|%;QM_T z@Q#65Uz`fDfy#}Skj$#QbArmvv6r19MKh-+2fwteh8h5##Y+Hv++rqEvf{Z!D1mS* z#60_`jtc${AUGtjFvri*Q^1M%a#TV`1R=99Ug3)lTwH!ZaUiT?=tMkhgD?jW$s-t` zK>MD>P#zD?!m)exqRJt7C`LiYvSL53vXTrxI;AJ+`o;}U3=3KzA@t2rHIoE3_+%o4 z{IHyZ^Ni%{=Lzg+K&J)&e>*4NA?uQ^i<$W9z$TvHW@gEQTX5=2B0}mws1>~GrDtDC z)PE5YDoU- z{wan4%SCJsgwXoZwN~R2K_uW;uU`auv>NMwG3Q@o#r8cz3*`TA570V{Mojgu9tWMp z@8E9vXMOehrKw*M3$^~%5&tEqe@Ol3X8SNX+5T7S=3gpGj0Xrq;ABt4A)x|7q?7zZ z=oh2cSW&Jxe3G_b1zg1hFkpH>-Z@r(F{KE3_ zqiddD+$0%bF#nR|f4Moppai%7Mbkg}@=qHLFG7?+uzyAvhS0+9h)u!@2>6eBh4Sn| z{2xkokQDw?=j&GWET(xEk7LdkL4q7WLC8r9IYhvha1dG6ca*-~PZ3NY6b^UIt@tc$ zhFFvZTCo@=)2tM_-hJN@iyCrd4K0QqhFBVnv!b(F`B6V|hXz7Eb-QeRV8Q0R%}CXy zV0j|32#s_-I3#s}^|ySiewv$5-1u?*j}Wl2lN;sAVpg= zlUgGd@g50xsMNAvx_BtEVAG+K^6*lyEvHI3%HpV|OAcBL%Un=to@cd$pWBJ(i_FK^ z^{ndd@&XxZ|x&84GWl16iF?Go{iBKbrrEF8-US`HjSu$lLWM|6GHFnv_ z78=7SOSD)**#>i^#$Y0AgtA4~auem=hwlB--2Q{_eSVsGy`J~`ob$Zi=bX>;IiL4) z3fiMlrPbs`TDq_tRc?k_ZGYYD>F=edn71(uX6-7m>(X_B*kv#x0D+n(@~Wp8cK(Vz zC2W4AB9eTQsD^sJy9h(5exi15zs^~^?0o2Sc16{$U=oHMQ<%aIJ6N9e{AUBZB7GR4 z;EevmVm^ym4=dHq&Wy+Wh%~CZWv#M|2$=GYOct_wQc7IV#mb+-q%_@ZJt+pWoE8WdLMmD9S(`Y@qJ#~-T1+MwBldnhVk}42j9iPxb6BT9 z4-DB0&}Q5Av~V3df(oxRq#%szwZL_Gll;zPE7($OyvU0)hrw2}b6S1(UQ=gXHNct3`GzkaR#q`~hm$cPkSgSDtG@>knawE3Oghaz}U!-*|c zDPARW8qsvJ=xC^lT0RChz)iJF%DZG-fPUNxzX`3#6iz3i?;E^eCfh{|TyM(%wVZ68 zvcQnPC7kWg%s_~Ij%rP_C6}LLN{aa|ULuR?JTgj&yU{~j=%@D^z0Eo(BsB=uR%x{G;ch8r=to>+??75u|o(L-{D?rfwwc3~jK65h^VakJf<$xBHn%i!E zvH)X2P%LjPs+u$^j|v~QP}o>6R-5;TFtngG7rV5Lq&#sU#6F!RbQ{r|n3Ey&^5@SB zT~EN5hpSFq9h1H~+`=PPbpCy78YiSoG~wb282$1@a$Moa(;OK&oHH&nSHkgveg@07W*QK3zl$uc6r3(NEbEBlp z6URH@JrANX8cZUk3#{L&1*YA9___vf#w|kAduDW~(M&yk%034k$1rQ16nSs2nLGMO z!8w#aBAcEnGE|xvYuo@9Pkx3Pr=Ae?8nueNzqdPq(|xhgMB!N&geiWuVl-sAB`A}m z^ykV@huWI_*qrqXj|uIRT+n`)w7Y`NpyJ<|B-klnvxF%`Ue(JC*l8^T zbA(ypsBs$D{z!v&Tt2TgHvB}-c@7)u35i1PEIqh8_L{-{foauJs9%9&gS#m1GIy%S zwZksKfvWtS2iy97Evc-T1Z7!6wTX{*oz)2qdMaEF3&KsNB%1OJU|b3U232l9#z6)( zq;}a@_3C63R4%S_ou<3a*P;S)`%6VhniDa~dzh)}cQ5kD#JpnGq?&3b^^5JkHan%WJlv^YsdU;Y()yze2aI1Z+D*mAwArJzL-?&n*f_&&w z!fwI0uZNqqOR@Pe{@#u{&Ozn!CyMlixwRv8;Hia~`H5vEi*#DVohyEe;aBDL7pK=v z$4=1}J!a#Dnijo#Z{uNDHjmZBS1T9xxa%hGspNxa$*To_>03O1FKv`O&W7<&aH>(qCm2nck7>5ENZ9ZVN72Gauo9mtgSLgrKy`}E_#113CAV!-f{;AjY z>}C9YM~(hCnGf2U(34(D4mIG+eCa7dB}6-3a&QzS1}?AN<&1Zh zo10|r{a`E_f2w9exz5bakci)hhkO=4Bbw)vMRiQ4-lU#(zAAECqjF6p@c3DSm(#G8 z8SlEw*i_lw`uhv=GX)Hj-#CpdCr$w7$-lRBwjGKVEQ9wcahLP#} z%Tmu3NV~caE@6D!Y(1?uM29r`oCL7;!d!>sV{qm}J&bmuns-?0lT i`uh!GJ6e&s4ZXEJAdPkc6KP{|?FG#M^CYQfPM=Ff9bEupAXNPn{6f7~CQBy@D`0Q~uW`pM&9ET~%n)=oEJ1(QZx)4X+G|Bl# zX1jS5iKy*?a0E2UOT9v-Z@0Lr@hhZZU7*=4$MwXI)>d~faFh>4->Po3Vr4cu8Cc&f;=zbMjfLknI zHVD#VgV!~Z$%9`3S!!dUn2bKd4`0KEZBJzl9JDLKQzut9Gt}4!SGRdb3UfQOSI_KF z*NZhlK)0uvkFr|p)Zu=`Snxp|=;DQ6Xl8F0GcByzIp^=or7WDPyV<+l3( ze7n>8mY!SMN;3GJIkw3u;6(2O-YdFY4Q7hxjyfY-w@?0(l)K64E&sUM>zLxw0qM@U zsjC<{VUbqI9dx72qS8AdkSHNkSL2e$g-1NLCkbC9vl>c9-L6{@c6$8LI*sp;MW1ZY z{%ikzeu9H2{0~Nqrq^Q%_GQF7Up5N&WyJbUrZ&!u4F8P(&v^d}TkL;&^r}QzX>exb zu$!Py;;C+)4H}XK8%D8HS(A5A=Ja<1j`aAVj`wGAA(#9X0G!s_ZzxGl;xU(!1A!zq6&ICHtT8l4`D;)7kyZNzAq?c70obk* zYQsT%?K+m68p%%BT8~ml734a}NBChoxC+y3!!wf5JkH<+{4ZUvT|YQvYb__e?8l2q zY2!;oXW}(q;(rOBKd=|5d6ne!b*` zZ0af!b4K&uOc(b#Vd`Q*D%G%K94~lguIDqJQJ>{No!M@9`(K*OgtWk$<%TZ5FF3rEwyibL$tcZkm*)N-+ul3QE$-%GcDl;tX}c%` z+6)a;@}d(jrXkx|LvC1_QfN7eIu5w`colQkGY{q)%EYxJ!aABDeX1cW)su6MDv9$! zW%PEy)L0sF^709)WwC3I8az%&!|&|S`I`_TG8ARvi1rXuPlj%L>LJ6v5d#8zTfDx`XzCl}Siao48!p=F5sHDCo zH>^cb z@{nCVl0CVIlXz}*MFxiJZeJ6mR~t*PsOCzxcu{^8}uMP^JEgS zYw;aA^H;hA5J8!Md&0h>T3WaKxCDYwdP&w}-%R+jQ!k*wVzse&6Nr1-p8oo+j@qpv za%ZPpjpDCfL*nmTyRUC`^KIho3*8`QB?zTKE1lWoSb^gc6W({2ag#NMLUtMsFL>j& zUjMC^{Vda5yN(__R^l;rskjz13|qO3zEhDQH8CbV%3R)S`jJzwVxCvwwi--6y(vAx zz-kcv-X|0Eg3t(E&4l|S+Q`FZv5LuwK%t^mK2Pl#vzGkx;bBytkiVbLwnh!jgiw=( z&3sHTGDe=Za>xJA>ox7>sX&i^U^Y@qGl5NI)PQDIN<44i1e0#|5P@5F4rmFhZ=TCm z@DCi1WqbEOc9kbW;*K_d+D_Kr{dPC53^%RZZyoA(Vr8|a)k(8(hQ`qtgKLy;N<`Ha z7)w;n9WB;9_&c+**w7xrt5t+vtSofWZ$35#R&Q0O&cdP&77?%zV-e*MIdr`1{GA*z zS6yEv?C~X`m(ED&XZC5kAMpNHUh2d0TpjkyOHF;59WDqo=$Fa;+fn^z!}|}X1^N|n ze)0a-zPgg+rH7c1hi`&*h^Mwnsyo7MI=+dmRn`y^6)l$7WCEvNN_Vyu>Rk=XQ}-RW z|q?M3QqZ#qkX+8LOb+-bER%({2-OCIFgLEA|>wQPmoP9)F z&H$oV60mg6{*2@}QQ0L!&!_t(_xX$8M-?XZG7D=Ik1abA_FBK8Q|1`y(?I{Z#~m^} zHNM~3?y0~Hj@#~XJ$;c0IUEa}SNMsm+0W@0rHLvelw&@&YVvZsCyAM09t$Ahvb!fw zyUaDj%=}daW9(v0P-VBdIYma#?$k*Ep^0DTvxm$WU>1+&33F_wicPTY;js9#*zqGG zm6Ail=W7rA&+$%m*I14K7sU=rqH(da^xb|CJiK~ zn%Z2k=qwDTKt!_v?Ak;L#%Q-zOQJ(1x(Jc%o+{$NkqnwqVVFtz#9@r?0JsI{z^G!v zh%n+}&eON|DCf(}JDGzi&}%uuNG^bg#F%a8;#5M1=JwXWQc6%obiKKYpEIc4&Fr(^ zU2JDA+ZToA<76WaY7JDHO1%*U9tk=$7S1iSl6e5A3zL1E(K!(R* z^1E%xW^xho4SzM4HhfKQ|M&jQyU?WPM8Bc7YMw@mAmQyLSGt@+Q&uP9TmLUP_mx26 zO3D;gD{PZ~Dy9Y>lk|2|PsG!HWXRqkba|i#PwCvr^v-OH#9qGtk6asjfyCfV+)P+1 z}3vDHfAFjy!Tj`?RY95bOi2G_!xHkv2zDj&Uw2iYf z?Spwv2EwVZ-%aJFuZd4LGm$xjxmBi93c+<+2@?VlrHuFwv}CTi0e0lgSauiIU!850 zRF0@}PypV(Ti&VX{v4RoVr|=^vc>(3^8ElmhwsRIqeNNzhP?clV5pq1;aHO(c=+Fj zG7h+TTOmAV42f6PEWg1;^Bu)mUp@ion0_1VVVvI!^Cn=WdDrcB4+`@JLbCH|z$0kC z+VQkr7t0Ojl_G7q$Xa_ocL^#Iu4l$*w|2^D+WI=&u-e6pv=zS7cRjDi0(9Ss!2LzK z-0@o7+=rhxV!C(S9QW6D#;)*3tB*X;V<|p4s<+>Ynh8cn>E5SP*+h2Iy&UrAoh}Uy z_4xe%wcWpV^yg=luXP+5N6nEw4%?idI|fDeU93ekURsU$3MrxL^1*D_Xrr^hRCXxe zYUiJuXUPH*s>J+oo6fx|8df<;DL@fbV!_A#g@FIZtH7$j$I0ld|Lf7t=ZSo;&u5Lt zbE*F4bKK`U?Z=yn+Rew~?B~}k#N8+6Q=EYB+n>+QkJr^)zYlxl*31Ua=T}C7_SBE_ z?Y9rzUf*X*-dBvn9e(@I`z`z2uR$K-l|{IRbRxMxhjs!%G1C36T3f7L8R#wci+Uos zfR|<>seqSuLQfGf(n$rFRM15=QF$K25&Mb={v%e)GFl7rQU3Gc!vEvF_D}BTg@3yv z1hGJLP1?N$_{m4b^$Loq`GB)+<7sj zn5P=ByWo3t#d%Xjq1Rav6=URm1(ki|J-b4r*I{%o^#oE@;uIEB%l^H68egv`0w+mO$MLn@9xMy5VCEy^%vZ7J^ z35|38eqyV6ju5#A&uVz%tqRbn2bx#ZpHr7 zV##n*O>`Grq8|w<5?~ww6mu|4YpK48anVcw6!p-LR28?;kF4`l;ag{~csF(r=hfEkS%goEjfr!*-^XWXE=ftnUmQts4I!yU_$lju&A&Tu}m5-6wz~Z z1a#3Vs7ApCq+hdq?~w9c9`^Am zQ71~;LT*|vvE0@#Xt|k?Mt|0QKQUT!sSmg+dB|pYM=mh3$8cBd0P}S`DrUSc`0Lzh zxuZX%$H=iE&UP8^wv6mUYk^(FNz1>QkykxB5631D7U}jBk zpUvyb*0;Z1bmv#U4{rKt)tB<0esN zrXW?j$bfNaV1OpEA}15ABA5e^3WH3lnND$^uKK)YgKfi>V@`lL$^EgKn_97nj{464 zfS*5=;Pi@$pCQUGE2mm(bdWPhz5@TS;(%`G<1CzvRAu zbd@;--3|sIjW8;@Gb-Yeh{lHWWL^-A&TGrU-kaX}Kx7^;S5%8G>WjwSqt_-Dhj&vj z3Xz}xQxJ%Kw~+!ayVU*1_a6l+NZ>Mx<5G*mRt35)W2vg!O`7qv7CYKyD@N0W*<$p= z0kKG-#BD9vM(E*n*n5ARR{;4@C&r@^zBZsZCsSuJOrK(&3o?~1I#r1;nH^0!3!axM=U_Ubdd9< z15mUt9l(DxgOmY@1uOX(aMlP$q2*Fpam^vpdv(yHiVNo%(mSt%x~*r<0J8>}Fd#%L z2J2ZGDtXo|c{YnhE$*mS^oUGdGxtP7{yMNjqxAB9JQ9eWhCQcnqf$S$*v#9yc2=+FS5M_49Fy%DgF-AWOodC%X+IRYsbI1crortTDx8-~#+HU_! zHW8WlB{O-KEv;xoKY|qS7RO5;9+_MOncOhvdduhEGAH&&CH5neyT-`=DG7zfd0W?1 zq@a+IZzN-8m@HKjj+Ryf0&xpPBSI4jh6W_BLYOoah0{zG2Le*4@<$bcz>UdHCmvEM z9U0-vvg1~=t2DCif)b*9EGy9WhnH46G#9Uw|x9u(6g!6wR_Mtz$X2C{fyFt#$Qg< zkLD3NU%XA5W#fEaaSCPQ{bsj;X{(#e>IP(i`JstP#tkAmlJSD7oEo!vh>eWlWolR? zE{x3}u5yZDc%QFMA^GMC4MgZBfp@EU$X5>uq~SJ78#$Ga;va!B6{(epKfO4Co(R)R zC&KYERV@{+t;$jP=UZPh%j0vj#wlfA!{)JY?WW^4E1L@v);3@mF-%$gE_h^Vfy;17 zmDUgX$ic77^b{lcAZ2-ne{g_C9w^sywZqR*eR|{V<*g%wg047{2Tj1fMom!0D=PY8!4lqIa!P$!x!!SGMZFEp zKOcSkDk(-!SG!p$fR_059q)+EDeG~2ETH`Cl?>9Vp6&Yz+sPQzBVkXK|HsSZtiS(P z%Rixo!3DL6X) z41GO{xVnq<7OSx6^LHtPgMls-@TU}+)IX>MhCW^8A-n^2_uqwh_P~_^J7Qw>8^432 z^iQ>hM3Y^~Pr< zWDJL^BO04S8ZiiGs}F5l7a=m09V*>hUQTeVU7+H1yE#>!W>ESZh0ZHJ1SBZ_^tm@rayVDU&>`2VbO)aUm4JO_2@0#P<%9aB2GqF?~t6$U8*l_ke^#-K8 zVVdi{0wqIsCaE=SY;v2&1Q+*=R0-Q1rA+hCX%}RCKa^sK#f`%7{<{Yn0)bXhcrP8? zJ2w?5G^V8Dv_Mh@m|ph%@=mqFhpK zsUxMD-L+4sog}P+l!v+3N7eQ!1t%j*IA4>4tTyS**86l}`af3JjoT`EhB?1RwcN~AM$?- z=4KmUw6-fwf2y2&?*G)JIjK!<;irAl5doslBUk6(VHf9olhNZtN`rjb1fzc9)mmna z&@1!5Kj%_SQJ4$}twHB&yRu2TwYr_JyyANgarxUSs+66lPy>8jxD&K=16t z`3NhlSS5XpB$kJllhEywBmnGbbt(m`mbWgSW0ecial(-@p9E}aF+VXk)8;@ zQ6BDM)-SN+*?m0T&gc;dkLP?t3!`6NhS_CCx-)?ib8;_ajvi^=evZY3(SYxIp=jb; zC1Lc|Q5ujQXeA}3v{f6m*~E-ZlTwp#F_uf~Wz6So2|L%&i-Cz)`B`0E&}o{U{e*b9 zZZ3W8M1+zNm`VlHk`aiJ2&mi@;gLwTCUc*Vr7UdR9f72%YCQJLweXp3F=!%}N6&!+lF*T+9Xzp{U?C z1mkkgzc^4t^oUd->l-&}+%yrqN-~OgGdaCdoA*yORJ9!UjkH!Unyz#$hj9xy^+lT0 zYz%;ERroSAP_3|OkkxBo)YY7C=uTRWeTU6P6?C;2+C;?|XjK2kc*~a6Yp3MZ|C-cZ zE)P|m1*yikU`}6-+{#a9RpatSEX8o^WlRoCm{9>QROdRFisNk&J~~uyKa)YtD!+%A z#>YUBYd#bvh33=(I)K$gQtoz%S>CoF*|mv(v|1^rBmvZ?>hP1fYW&)Z3`2BJLXQln zRW=L`Q7SK3yGeW+k_8&VaxZ)v)P%O7Vo0rP+NKhk4|zr$A}b!EwqMp;2uRUU^l$hLtKN}TfRM_GLFG($f&l77nA39DzJRsAe_5UY(vum1_0#`vmA>F&jP zF45p@MD3pnSr$*gPLgW;f%PNy`tVD~mC2^heK(|jr|tFFhU>&ekbA5RRdUAp!@G8i z(TCECz>rpZP#ir&ywB9h%6CF_PUJA4+`F4aMgHNh3nhLzUj8U<%j)V?B}#Upe?W?| znMsL~9R9?pI0==aHtEX)B%wkp`SFu;7`DmL1p5*gn`&k+K>)JZf*QEXVG_B^RkIfW z)p|<*Ccf?gVsP?Yl#FGLT^8Qxc1HC1bgDFjdHw5|g79nTqOnJ|hkBZl`+VzW~ZQC0^A}}}BMa7Cz6(5adhYZs1 zaFzVxjtFoWyb@26H-|B7)`GJTiEyd2X4<5gSLkGEUc9DeH(!adep~z~CZsGZb#!35 z!j{Oom1raPlL74G)^DRkeSg39{cj(U2s7)ZvGZMZKi+@;$_AAhC>$R0YCf)w zMwK~U@{I{;dEsoNou+f4oT|yo-ZaFs53A_Jw1nB~sN(rfP?g{?%>Sgy<35ekQT7{T zTxCMvCxQA|`s!e!uPL(8RX3v%oMQGDDC^{}zxDZ1;{IxN0`L3;Ac7bF9f^n(OAt)k#$i(scM% z(y;e*F;xvz7JSl_)p~;qiy%4qf%l5~W@qKH)*9<+ZIQ*VO&zrf+L(m13qb7^*#=UJ zQf{ebST(q*(CQ5>M2D2R;L&m|uN>{>AAg0d>Q~a_PRZ59xv~|cYv`jL1U8W=3@vfO zMbk7>a(FFPKyAN5`GP%}>UP%V$4Y0^>u{TH{!V73pX-WTP*~pi0mG+8I%$(NRq^hY zEJUHyEA`of6=!_ zjHUN+t~weTcLO6W;BrO==Znp;SAiGS%96qY*tZ%G{Dt!shg~)ZbGk5}%@i(&^HTO7 zIL7DHh=*vw&buyWC}~KgsD}Cooq?9xKnCBLX(uQ+tJ#=_F^lkjpk)jj+cW_NdnRC= z#Mq-6mO0_Z3a*HbWt~(Ny1u?Js6lT)Lvx$N_+@@gjF+Edz?qKPJ|RC5HNIg?!;S|B z-u@}EWvuEBRZBN-z#bY{l!`|362r6`b|xO5&YS+^sV9tt<;}tz*NcsfgX?B$D0-uh zhkYdi{ei>3`pXpBkAG8%tLU&CeChHoNG!~pc&GuK(Qvvu#P3(SoFb*Qd_*A?o(>WF zIuQikRT)N7=UnKRf)_6ioyZy_MqII>N>4+n*URHl8yAc|&O~}tUSY;DVs9SsWMo_i zxX*O=D1F5j_2L;uOv$Ex^R}z$G8|(ULN0lR0q_4zB8kZ92{9*x*1 zhw>f&x}-nkYVVN_j*QRV(azMY-6k<9FA5PJNgtU6sw9<144iZ}Lth))a)n$*EgacQ zE}SgxDJJ5P^BNtGlLT)s+@)WCJD#T~Y}2YQym1PeMV$kq`?&18(1TNOaFL;N-5}g4 z#-B&nG8dm>U8cWe!*$?xr`4rlJj7U{f^Y1vFqoTXqkM@NVB)N2cx!1i7}%QvNd#1X zR@R;I94%&_c#9+6;~8!-QzYu`?!cHbddCg+dcvfRJgy7{M;vw*D4+yBb$(kbVv z*+S3aqw*B+S6CZ@YDOyLK__FnL3%Mj5^_C&3UYlw5;B8H^9wvvOJEXV*#g@dO3*C^ z4$)74YT&HGtJX|HPgwo>%H#R|iN`a);&JU|>fX}jWU0v?LJK#RYLxFeBW#L(^2WQz ze{-fi{p69b%27jNKSP;jF8PapB)<~YRwahqJJ_a@jr^e~&~OdbkhF(U?!bUDlDXEs zUN{+H!TD=^zygzNo@CMmPrQIdNRV+pJ3PA723`r@aD&MLn|%&{Vcgm6vid6w#JZd| zPob<~&ZP7(<%m2swx{=Yrf)>o9{xgCWzx}6=|`{WrPpZ$_uv+qe}!6VyKBmNs#%VG z*DAWeD(%KyRE32{?x@p_O78DMr;IFi`&~8Hr|RXABzqY0R5yuf$Tu(8w~MS$p!QIl zPeE4W?=Zys2l?I~y)R*_4*MJO+Lwz9$6dHOY-1Yk19O|*67u~cA*2P2vJUkNqT(kV zrdSMWK0^%`*YI2ISg+lKN4uzpeC8=MkzUP;M686(nmwY5;0*QLpy zDObg9ljA2jLiX-u;L;RUy8-|?cwk}Pll+@M90q;>&Zhx=yK2`eeUD<`qtYCDHPpWK zOMVmxm!PV&sWz-`SJ7$t{f_eLQR%m_w}(HrlcI9X!*TTDH>G!@ z76Tv2U32_HRl;Os`^D16LA}#ABfKodS*BEx-H26lP#xjpy>`cEMN)A}+Wx_SwE$mE-zSGS6$ z$v=}-W0f?boq!!*)j`Vv{IIZ=0m1_trS%1GtFyAIzCRme+dC9be+OR4R@?ED>!rA0 zs_R+pTluJI3Z3@toTrLTiz9;z!bJNEqH@< zK&F&Z!9Jo=%xBiRgHG!z+s%;`QMnxrE8F!0l;JyQa6}Ax#gsvtR;e+9@hURv@TMW7 zONMBu;*hS9A`ErqrDe5MLPD}%J;O%YFn@ir_NSrR=SPvq{8rSPE&m{;>r#`KRx-tv zF}$RsT|f7r3kS=O2T*A0XTzpA+LoO$UKCbnQYyCS&a)_%3Y?omP@1%NtRzF#uD{q; z7IIu6-tPUu9o&G4j!Wu{sIPfMC1ki%>;juzt$CwR^4MJh86vQfK)l6w`8bqd?F+x8V)*CQ z9fIQ{)uPA6z2#*uVm)!1ANVp9k~(cYtj+HcCJ_v(oS zjF{x0S?uEpJN91l)yLx$My$kwNwnMM(Wi)tzc~#TuYyvap-gC!@?kqwKVld9>WmIC zg^o}bkI1ii%_Ia=8o0wS(Y3Stq6M9{HV^o;}(T&+zwR?OY~b*{ib8VT8XDrr{o|C%u)$Alz(8(RpBftv=-QY; zbY>QlSCzR80pO@q&30E3JLk(@ei>NkzeY~5dOT6T58eI$0m z(HIir4S@GQ&J?(I+%>f!XtHjTVu-B#biwg4Li%LJ>&M1RyvEbY&A}5`0hXB(E=<^2m%RN#wunqp(!T9H-rnWPe82DS?EM z30oi5%C@tMZu`y${FdS4{rm@d9VXZ1eH5+gvnG7#Co>VEWiZca0-&@1X`YT*vV%7V zD{SeUiHsf@K6)zN2v`UigmPa5A>4NeDcm;&3-O`BBU)ZuC@9EqU-=*(W40oq{u=sOXV zyL@xGtdSffTl2AEI_2c2G`^?!m=-`tHmijPXJCcf~o_vYg$&(3O z(W432(ZBImk%JO%tNP!>SCNDALbKq>gwL+g%V~c@;>28e>a&@>D^5!O2h%?=Q0{KK zOm1WQ<%a&|U0Q^s>ta6i_qTqM`Pj+hJnTm&zC|O z7|lIe5AtIftuAip2=|_(`uaZw72$b{0Sr21IM*JxNue&81RVEvP*hcOOg;qt0Fx4} zO6R$lsAU#!Tz-M!94K+iYAEsg(m=&a9461-SzWoDi$$&VUnx$r6B0!W#%(F-yP`oo zkX@P#3-fBDdGAUfoJ+)Tr)IkQ_a4;k8Rj`}FrXv)$7 z6Pp#%jBWOX{KVR~IOT2;;htihV<3J_4u^FnZf7`cCf*myIFWJ~Z?zle>rhToJ;S9M zz>(on32@JFsRi)Jdd(F{$a*alnai$QF9;>YX1FXAVaa+e7qx}}BNv81>*%Chjf_0w zdzX<-30IM;pYgE2@XyR)KJd<8V@_buvq0Rh z4BMdIvTu6dKUBi^nzT|U{iC9Y5FSH=n{|-PyrXZt^zkrY=0cq z<9=k|zz+d$SbVaL>GTMZ`M^ydjYpiB==D=yf-LPzd^0F8G0D+QN$XqvAqDtW;V8uY z^$0GKIo6Ai&89#^hY*+fy%edRu!tvJuFb?D?!jt0zn*p+Xk5#e&iNTvf|w z@69Z3aT&=;$oU!JlI^GI+o|_`e~vqbI8x)V*0do#$3b?!!x|B{(}`}~OdMieV zG*|?(LwH8;z!M=Yp!~troQQ`4R0Nyq2G-Q-uF0fPc|Iwa7XaCq6s2&Ht%Pvvz)u(w ziq~bxW?vzZ{T8;Aqa-W?LcZzBc*IKu7l_l%bRqT@CVohc8<>dn8HGdEyQYJUYxmMS z1d%m1OUABbYDb|HlY_Gh+mQK81Tz3U>&S4TgSt!v#lg{m$?#R7!Yo66AmFWI%hPW{ zxU!Z$E8$@#GuQ>hXLUI9f{pG%Y!FLSxba9iW;=m?H(NKxKW!kd)9MKCTc{K%MF$jY zv`s)0sU>>E8Q4UF9~5%(sa|Lig14G7KYEP(^&5Nb*LGSjZ+Lz`^ZoH2{qQsJ7ij3s zUE7(xyy5%vr|*Nmp;!L$2J81T?VmsNf3xjcikvaEsolq)|D*M8!~gTXme5c&I5yRN z-EI9BjchuUXa);HIE$$kw&esFd~VzX5RkScMJ=07A(_Df15rERQ^si6Knx$Um#}>| zS@2ofP`tbV0jM;kkZb6CY_AsqWLM&6Rc5#SO|?lDd zX>f=|T=8hyPk_a1#cN9=s~3;-^HzFc{weJt8~uxQ@5rslH9trf?m@J(oONV!9)~BJ z{XRqdVuyioYoqWA^`sy}$1fG!{%?^ln~nTJ=?xs0^Wj0aK_5JQX}Ylm!5-HW&%O7c zRt5}4>>|6Ou!&VChww0VKO$v<VMv$!UwX-k|3vu75Vm|+)C zpWT?wi!QRG$ZDsHXJ>FkQb62w8}u;Oqf_hzQtW+YN~u8_k*u|}@jY1I&^z-hymc;U z?3vzie_5kT``eJ8%?O9p`V@Mh8)+zk*QmwG0He7s=zwZ*Qw>0PlBFPc*fLKXAn&R~ zRrzq?IFv*ckKd3N%V0yM#9Pm=-R<~sexhYkSh)Mvcy#k}iM?sj-w+E_niET0G|Ll| zZ{io^D5}&pEFVm+Cy2`GnJwd|5+fISs88{tHOQab%JCgqOviz(9;o~pJ6%l@11W5i zoygr1UcNDF0E%E@x5OGfOdd87EVhCG++oC6sa_X`cs3M1!P=KHJQ80YB+I07C9MZ0@%1X617}xl#+4{j0h0)kZv~!&Mn;?R?#WOaoy!}Tsd>LQnB8Pu zrol0!W*kzrCpA0%#yMmdFEC}W707Ae5tNht+2!`;BwQri*l(g6iYi((%=Pt>qz&J* zW1wZFmeeJESGK9U7bgMDLOPf41gUvo0I*Tv-df2?x06brO!>ymVNPY@`}qebS9tiJ zeGGDak3N*B#mc7*@;me+4CHCw@}7&Ez+If!I#ws{blYhx#5y}aj%GJ^VEy&=juLck zgiL&;_l7HK`vpdAS0Wi$BpaCtZjqAtYTQj&H0@t2sVgtu+864bhhoh4Jv_WHNa%Dm=; zmr@?Qxo@1BX>fe8^)bO(I?F~DFgy;5&cVeup!9~C6@9QfG@cVPIW~e`v46aTl9$wZ zL?6;j63jkj-8PARcDIL+{(#WV3U^Y+?D^}##wKt`$>E3=vsHKeMHM`_GhI2|UnI{& zHihPfKG3Y4vx$>eyfk9h&CC1HXsGbfjdwzAo3OLc{lpVH)5o1Gac1`3wcVOWw5sL6 z6<64gPhp;#(wV~UAi2ZDP;t`nWt~-qmv4%06qIdrsJ--?6+a*X!48t37)eQia*wrO zPvS=w+!QZD6}VX%*IDF|>94eX7NLG^Zd)%h%hMmtoo{IrNKm&2V>N98Rsp1t>UBSu zWSF(}JI*QUNutWL-W*=|wh*cD*TKqF)q|Iw4$N#Lbwz~WE^!4LFDD4`qU=0)8)$19 zPY+x%NtQOXTn0Db;G_O}O~8PCu7gOdF?oHW4~7-^e;W(~GsAZCN;A~38i@YL^7hKR zd#4D?7PkpBR5l1ROsdf^(=bl74wI!oG+$%#C18pn8B7t2<5LbzZnns$Vg6<}Q3tpj zW*JOmOs}qG;VoZ9HicL~wuN9}nt&FaG3;57ntq~ZH}C%F?WTL`WtigWT8&b4-GO!{+eDW8W*H$xZDQTPhYY2@4OJhDX7uqmTkUu*$T7 zG3~|l{9b8h^!ziq9wP(^UCBQ2CY+n8+hF7I=3vF@Y~#k&t7eMA-?}5j$YT=w#UMy- zG|4f>zC5GhBY^LPkN2hfs6Xy!0#xd;YudGDQml6cqZv`>cO+@d>yJY+LKLC)Qo7&L zj|+^DsE$5~o~t{Vzn9!|bD$_Sw_L}b{#H-alb3^6KiByD&HAg6jn;OViwy9tBs!52 zX)R!;E7Lqu;UUvEGsjgPY6}G+SvO3f<|<2K&4=I_}MI){-3K z080pZ-20Jk|G}bhi0JsuHoFgD zi3ET+i#tF$I5?$lgmhYZr?D^2rQ1cXhgB5H6Ze5+5R5v(FmMP&{~1#f0PkdeOfC)r ziLi={{kNW&5mo<`zT`x=_s~{?iKGR4YJ&ki3g5S#imiZ80S4Yl<>81u-iTsA%#*p_ zwZM*WzUESBc8L?^WYPPE+b@Usd)cebgvTC;KqoCjq(-*GouF;_8zX+I9xYx8iY_w3 zSL-c~M=c{9l=V4HfBY0JG!%dRF{H?tmK>|YjUS=+%jO*bB6wEwxe{hr1?#`4?%ls!*6OCaYFna=wy4@fUr~{qna#G0_0g{mn_qSfo zkNd%ldw>q~>e}EC8+X8_p(JLJ4oPl3eBZhvAZmc9iE^F*j2bprsX|v?=UHUn>{Og4z>q;EYFJF{Dg3G&G{$=be^r7TYBZZ+LR zUKGwC?9)?%@u8Pp4CC{gLYlzydw>`rOr#?Z_jJL(+fn5QHi9Q5Hj$|9k;HD~E`E!s z+G!8fvFckioFbhRUpzbP;iyg72CRwM`e}QZVv>1oKmfKW6mnW&*hV+Tjcu0;MiW}U znP}h`g<;HW#7<|+hdX;j0BNzq?sCH$3ky=yvJJ9+MVR0ftqm?;_*9W@LBR8i!TQNv z_`vxl(heA{{Zv^0OOo}2h1`$^>Rgg)xcRV z{RH38eZD_0@`~gJ{rT#J8f+(YaS-tOq4~?3Q$&kQt`=$&*hYV0*HB!v>940VCTL0B zKqC+s0xDS6pl+rZ`C0vj{;3QbSv4cSJgo(@a1sU~saysRjezsQ4#~>gG6<#Ylk@EP zBY9qK_d{|DVyPwMSLc>D?$`9qm5!SX)d1qEX@T0McwOO{(a)M9519jUh}C&b~r`1yU+JZp$EaiNsW{ zdYh;Zel6W{_DZ<@-cu671iu{y8-I-dYOaLuYu3!x zA`Z5vH-#O>NP0%{6gfdHS5qcGw`taBCrbO10bs3M_G< z0dDp)>3I>KIA=F%Ah_p&eA6&@-sM$bCdr=zvOs*(d!QC63&4@hZ1?NdKhG8TxPRD@ zNb2lvV9~E_SrPPU2A!f?2d^r zsMkSKt~}^XaQ~vbz4D(w?z#PR8WR_Fz;6`&oNdKjBT586TNrqB45EoxhS-Sg9~EZG zZvjrRVi%ivNe<|tiSkgAUOF|=i8|OQ>bkYn>qUJ%#B)I&`>Ukb`w;>wqb}uWxV0s#+P+*F*+0PM(drtBypA)2ELl!wI+2;a}x1l<~;;n08647(M zV`|g*ea3@#CU>T4->nR`Qu^pfoM$x6Q{Ngtx9=%y*V z+9u-AW@o6aj&Dbqi@EP&?WguQF(}9kwapI1bkQU0%gg@D0zVQ!<+}}yf&6FEx)9rS z9@+5z&8N&-D7RHmDmShkB%KM{3T5?#76(cM`<8=N^6X)$po{;jlEg2c_it>kQVM3g z-+F)|rj^U_rp-XiSYKpg5X~&x#9#Z(PA%8nuZ8u|bI_f#@{`3vp^#J9_|eId3pV)& zp&*QOS+K$qN#y?J@Mfnp0p8a?Tu1r(Fu0%z-3!Ltp~r&L6*F4Kx1=YF;F{fXRq$LC zAIh7fwu1^nl*JdYe@oKm&JVY1uk7rlLR5z5_>?pRb^bTHzA-wJ=6QRw;T_xN9ox3e z&Bpe|wr$(CZ95y=ww-dhKefsn@=S)|1UtLurJ$4>kX@Ha3g6z?9GU?Tg z=`*=PD_GlZWIvC)f{~#nfdQ?=j=>%2D}5qfE(pjXWo#|OW4|}dsWX!M^D2yX+S^IW zyPd~+LnHg|07NW+3_4BfJWAl;9^1Wis4qvh0Z#jT!QiFgRv*0@a<=E)H>W>Gn-$!| zVEJJ*AYkXyd%E8#TiAnP!$lJelQ8Y}cpNCX*>Ap7Y~;H;v&7`fU5T`m6Mc-Q%Hne4 zj~_$D{INQ4G9%YYKyK6hnT+JhO;wh9ATa9~z=C#q;UZgXJRC{2a~c! z|13Y_@ReUc{d;osRobSytVo6(Vu1UKzVBlW<Q4RNtli3)O5Yvj&1V8Zys$IH=Rqkmc?~Kw2 zPshV^FSgkI?=p08$Xt4mlAKIM6_#>Xmr}C56UGF@G@N0q3J&mHMU2_|*rcxfr?3~< zRxVVU5SkVL))_AYoh&TZN~>yF!yPXc9Yr?yk{Eskovj z0!l{Ddu&L;>2{KE9BINnNbBK0qGw8+P)*|m8~?mk*6vPJ7v$CFqL3gRIO5S)R&to> zym;tXwERQi6fR$KgNRjUL8oUCk`TQcSL1WT$;yUe?-^D>QJ}+s2aYHmCGQ{1Rx8wu zpc~cv(+c7;S_c_Xa3AN;ylN8Uz|*m`oAfMDcOX_1vhAHh8PBEk*N8Z(x9~iYXH%rx zgz_qU>{){^;%?Q%5LRZ#oF6OB)Ub=Fa;V8_$Od=OYIn6%V^y$N$38PS-94BJj(r~Bkz>R`Ir$3C>p$t05ZMSe`p`PjxZdEemZ zzroSBWi&A)&kn*-KW@Fh98z=#lAwz?0BE7Jk|@w?O;!`f+|sdk{~Q`|B#pTltoDSk zw&5u1m=R2{V_|Tw+}M0ky{iIg($buLSxW>p4P^N;m*UgPj{h}0RdqS9k0$#VBlZdy zkd(9(R*iJ0f|+sK=|tm=;7=ZlZNr=JZM5}vF-N8O@K=oHYtYBVXXU=*5}1c2N~qOo zRA>a6L4eXD%J!vszZYdQJ^KmfbEZ(DRLg)Z(z^_@@#BY3k4ZmJI`Z9@j2R|319QiP z<X$M%fSt1I#z~x+5@7`}V z>H1s#@wddBy80D})n;lWiUc7Fs$;?x>vOK|?19ZoxQ=pUsuj~b8WjBLB9XNB2)`EShi8X}fox0j!QcVa=} zf{GpAHj-jE3Z)cw9NW<6X8hy!ULzEEHImU(AEwA(HXpCJ4(eO$zk-p;N5sRUer(D< zGwh=M{o~zB>AQb<1U}NSfpqS9Ku9=o8y-NoYuBHU$yJ-(w1+ovp=M2*A~Bv%vSp_) z*9lWevIWbH{s#_9%N=%Q$b-#_xH8Z_w|ZssYX*FbSJNXQbL!B5pjNI)DP$`q zs3g90Up=WzCp}pyY3(#i1dsNH9Box%I9F#u%7wVf1t70kwtCMLOvk4=-Obp~>g zgJiZFfsuSR=n61dkw?2^EvjT&emRnfYjA>jc{RbbjuF8_;lpuiv91?Vg&nk<$1vwe z0LyWfb5|s)PzE7V5hWm4Jf3ZS&(m(knDSsJ@U#n_dfMEF>`Kb+%BmK2Vtg->Hd#e2 ztBu=(X7M-9Dmk0K0f&PXkA2*_M&jKK<(yg;p3I^#*cWF$9&`wXb<-hoj&Ob!yLPfZ z*j#ZPi{hGYJLDW);W&>xdnT`aP74;u)`Tnvcchu_K{2FVB9wjE1z({0UCi|X!S)2d z&ICUpLemeknzs@8yO^9qf}T-+hU_!uo^k$JmPdF;{ZCL@)qesJi~O_Qk1+^$F)<$@ z=Is%YWJ7xMc}h{0(Y7pHk-zI8G3C$23B}KuOS=qA6+)H}6m5p4OWCSs2wSBrlErYA zbg-pHnmU;IoHa7Oqcdt0Y>IRhE|a`N?WsRY#d`k6U@z7@2q*qN4Pk9h@@BC5km5fX z8c5=Ee$ZvcBSs#o0pqc#E87TGaoV;CrDCaqL`zo0lk-=^#XpAcq%S&npTicg6P`^P zM1!}uKO-5^FB$Zt3cH0eIWg~>xyva)emzXB(a?cS%#1-6EapV*Q<%QfyQ;E%W-57E z;M^N9GLH&ITSd1aI0=9XfyjpD;Gnw5Fj zyJ%1}%|YOTBq@D~f3I`^4lvHYnkQ`>L$trgl{}#gj-4#Ar8N`BLZq_1x zZ`B~fW=`TLftlk9ExF1l!{47$i2+P5{5Y6efIUks!&+cgCP`#hW-d1@W=dIRQ+{3S zi@F%TFoNT)G=FL0GO-A}GodQ@ztTd%P_Gyw3Olt7X*{D$F=|WZae$mb*^3@OqYPtp znMhCea%(+h1q9tSzpIB!=(UYrsBHzSS}|;VbGEIP+Tj<^^C}0PjNzTPQ3-na_4>cJ zkrrJgH$Er9s4?`ICNJ+yc74AvKgu^xV#5b;A%qD>N-uO=@IC~CPeC*U`Xh?K z5@`BZMm|FIwqg?MMmvnHK+hJ_plkvCXv>8_Ks8&-w!vKLjuAbPa8N4u z-Y3}L6y9V!8^qPyb^p!S)djN*+|D z6PzsryaE1NY!?1nOT#^+ zDfKgQqsIGqgeh~qPJLUE;}J;76C&q-r)85T5;IaDLgS@LrP~ZuU^#N!Gi}cn>>Fno ztNiFw;{bouLx!WCnQAI&?>n$6c2xbGfSa{a6seJCGI5bqfz>%Atb`hbOnSP6(IO|& zL9?v+fM6fQvvu-AdN{;T@(416z^Z@2y1kRhjcG2va)w7>WoeHNJr_}4h~P?^oSmPR zZtcw0$u5?F+m5G<+TTYR^h`qz`o^Ul)%1B&^k0bZa{Nx^yRo8qMT#O2h zp>ivW(NWZJB}Bh{zzrRS!QSbx%bJTmBj7C{%sPO_=oZct}8_3m(i#q*5z?Q&>tqJZ?(Tm2{- z07fKaPasVDu`PgIr*I#6OGaS{5DgedvA@|eOA33XEO5N>i;DfEqnm7;eD=^Ew{N5n zK}9Wz>&ajYOe?+;dp~Xwwm;)&N}cQ=)HmE4vCG*hBE6p3#X+Wy`sIPl~kBTfyf;L?JL8x3Oa)2X5WzssY(QyHr$B?8bce2$G zTB=yyo;!u%x?3hG^WLWUo< zu!6ejJ8^wmaG{cE6Y7;=XYmG?Ck-PP%_%X>h^%fuWCn+sDnQ|yC=oWMC|zb@xe7r= zR6bV`82Oj2LLGpm$}|DVm1nO#3vhNgi~;R&SOg666D!;3>~d%M+DRU-{OtQ=BECuc zJ9)jDiVGNHt;OTsGxODI=6`m@O#!K+T?9U*2jdi3qz^1tQ4ROpM=tc(ieG@P&0Hik z8g?~UX7-6y2!4>c3!XSF%1`7YE3c(mtxUhJ1|K2)sB()X!iW*R-!UvaS~bD@TbV>9 zWA)ljMt8ZJIE_bSJK`})l;dRdm>4bAoG9njq%1`dPnt2RgJ5@pd(cxv@axzXVuR)2 zG(+Mzv5psx`hx<>Tg+KG(}ZYQb{M)xq97Wi4C^El>QHM;OKllG4EkP*Vn^{>=hR3= z_|!2}#rwG2F;oH%E-oF6W9Xxd#Ck`1Fi+JfrG9EB#QttLuAF48$m6$BAo^M?PSeLR zo1g>Q!332F0G?;Hd}UtE{WZtjY}DGAn21NTZ6(!Gj5TpUZv1b?!o?~uClSPWuk9Cdklw`2)I|!9{(YH16RNkU)xkr^7A5hq0zle#y|_JSvQg z4)_AOWJquZnqV1}P;}BkX(M(_Ly{%GwrlYj2^;}gmD z*j^b+TZ9mx1b5dZoKdZiXZBVRK{N=l3e`^NjA}cR9*8xIf1JPg`r>|Y@d>>;@f2{K zzd#+PKp`=nMg7Z_4RG=dygPsSw%O6o1>_nd?{YjkBPb(|qGH5H@TC9z6q7jRJQyzk`FHD}>u_ zE4*~JO#tvbw6r@KEBSF7X$OaJQF>_*E7|zfcdNf-P?`ZTgN}=>Fv4lNc~c-+g8x(H zV63{_xuz@Q)m*zOHYyQljx42kmjgh__sHPrA>SW0)6s{MW8Jxt5gv|&Z2G+&wM0R5 z7i+gf@q{=H$)Tmx23SbyIy9gQRtRPTaX?e&haez*N?T=z)Pr@*zAvF9@*h|*EJ zU*6rCO(K)gkb@V2nTzqAE<)+l%tGVw&1(g!M0qlCY5?%VeKJR=)*J{dK%Uh`kb->` zULKF1zrwfvR#+Oo1{7TsqX?~*q6=ZcnbRj?6$Spat;2*2J7LtKi5KOMy>o2a*9ty_ zkh%pbxwN`;)&6!T)rAwFyb$ z4RBxfjM*OFtoNseDI|o+K5OZ=YUaBU=AhvPR0Io=>r)8#8|cMa8N>pSopnxO4P7(h zuJJ7cFJl9<=;CVu+eG@HktE-uyC+I0-p^FpHE5_{8itXN3z#Tn1N;uRsM;d5nCvf? zK|Ham4z-Wy^tYhD6H5GjAj;}q&t{?8GYX?<6Nj;Mg6`JWdK=N1i-UmSHZNMw zwmSuDf^g>z@F4eiKbXzB_z9t`(R=!4tfNu1ZlzS7Xmn|{cI{LaS5i9`*Q6!YO)!Xj z`^goARKkT-kKR!^uOvh8#>QdFjF>R*RSZVxl<{Pca4tBxAe?J{YS@$NK<)e%fG~G)cMx8?#WJYP|YtSKn@CnUHQajMQY+XRDxbANi}Ijj2#t<<8*s zN@RW+8UsF9pqJh}67dcT;hC4E%Y$9|XM7EQb*gWKXohoo2mdrQv7k3EtTX|}vLomzpO8g}0OsMR1m^uGRip^FTrineHRwm}>lFa9 zk7bYngK97~#fnv_#*GR1rk!+S&Xg9xQO|(mLX@E8B~C7%tEd0{dC4q&osJb=j7gB= zJPMG1rotF0!9h?b7_*a$iJy){MW>5yp=GwS>t7$urFkH3MlfL^;`YIwDmqS<$P_@t z!G=SNFqO}8Y}O6JNDK;)l8Ix66?PJUG279ql7<~-@Pw4M$dJSx&kNUv*a(wjoMYH@ zC=feE!*whoc%|b?*-XqtMRmjuWPw-Og(k~+dq9J8S}lNa@=Topj9SqeR1ppsFdK&b z`!|4T9rRVW$yuqG$V2>I!e(PA8r+$e3C&XkhfEov?X67g?tFua&SjJE#u$43kC`=- z%FbHx>1cSyBe`4dbcE47#v{f~OAe;Mjyp9bN&U8^UmaP*CsMz%n${`(>D+7dE}g@3 zBisk@euXKI-xcc~jz3wpFoS8&8jo1A?~zwai1Zpy>W~vBKHGzp>RE)3-))UVD%tP4 zn8}7O{fc56rXjf&Uoz;{{ieN7ic|9j>=WY51!;BXk8;VaR)zA<1-+3 zABq?35BLu5xP~_YsN_k*9(qb;Q>)BZDkF|9{LSSdzyjL904+LUz`3Sx*A!`dqrS~}vDa=CiCAhydL$-!C>vzolqU4eE7E~6gljqnr(hI@vP@{OI2B$>Q@wROUY7{(r*fC6IrUh z=c!Zx5$KJ|B@a&_U=+&W=`ToGBx_T6h?`)n`f6<*rp!BOYQld>g2< zaLrj}6QXfOlkY{~B3dNUOe(mxbL&~VuF)j&)}$WlVu`#=sKS;wL7qPrP5z?R2U?0K zpyCYiVS+B0(UAPksHj$NQYBF=QL)x0 zTYS5C%#z6t$JDUgY-aKm>)6BU=k#=nBO>!L1=X@Yv+wnIR!rFSKltaK&rjX2$A4bm zspvl5`M)qkKoY5=o>Ufex>p}RGS z*JzlGf(;O2GJ$tuGAae^1|PkENX+e+5wS>OWjjHrAwgUW}K=AcSSG z@D^-%u(Uc7m}`uojx4i+oD;rHs6+B|b8;L87T$!Mm&xp_1ceH%2{Rrp z5Xuka2vR`MUa(>6@{JGHdb3)HT zFj%{IR|5&p6^G+@e+x-Ekl#us=#(iSPy1hlW1_Pu@m3SGukx}lnzz8~E4UcqwLx#{ zE2u+_*m3Q3oS7rv3Fmz z3Aow^=bR=mw=|abyq*u&Q@CgmL4WByzt%g;LNk9nRsKUYBAYyofjO{IN5wc>DR=H&+07EhP?qkVee;@{j;#kvJ2Ar!?lV&-2lvX)1K{`#rbKS6w8wg zC43`de(LH^jcU~z3Qd}U1G~qoZ~u`XJ54HA6s>{K1B@-_jrEEeAj9t_YeY=$GnSe7i#0{5nX z&_gSm3k93lklLC0=GhtP@1V^OhRWZEeTbI|F?gQRA$RKaIM%v+iNmhsZwpc^-}??e?PFA^zU}|?m#LjpDn2&3xaiJ`bQBe?n~`%K4i?b z8I5Iq+I(a=(VyRB=k=P$>CX`w#c&FL(ovW%Y%ABZ5cAU*S^2jyO;Uzkg$k>j#CW-k zbF>=T9s1^VVTye)>V_ks*(}A<-_QK18|$pMUlNG@Mnl|_;)nUZIVcq-| zKfYB@XzxpXxDYi@Dv!zMl61eacxRD2a$jSsOIal^q65!al-c0M@>XTG8};KX_9$+w zQJ{J5Hi3qgFm;$oKrFhL6c3=uMPJSB2QQEsS&hTdoGx&-xk3?4zn^2VdVmjnO*N|b0AxufCDinCMwNzO| zSqcI37ci!)=*6Bzm-{LwcdNW?_{HHNW$`3oI|xRs(}%R5Wkb(yVHtO6M%$ z9e=#ZIX@Wj5byd`mV2(bh=x_sV}v`U=r4Jz%$Xt#M6?T?bX#lJK5zLP_tqyS0Qb6k z0=~f76k4^F7zvjoZ@P_n3Q`p#Pv&0m)otNO$g@AcvnCvr`M~nm2sw+1*sYrxTMd6> zNhd+uh^iK3lDM-P;7oEgp>C02?eX^UCW$W)EX2iT!jNBcS@g_qkvM8LahiMl^zFn{ z4)S;MyZpHt%2QvUEd{cjALP3JZw5Uujfg*<*|7gQ6!+)67n-cc%{ zxJ5KC%c?g9w}bpUN~$4DAu#H%wBK3whxv!6%MHgyW2Vca^I#M%=SIYH*I8ND7J(vt zkauWtPVcAQKEbV3$Ch;@kXrrSxo>P@&J0DO^@a=J>* zSZIZJC)P~yYWVx#B6U8yQOQ#L1C|N2mh!$7o&$V!x_fHo5oe!4%a_hs4i~m;5~1X* zvRfut>6rfFaEg~K;&5nm?P|UjHG-W-QFI*dM1icJeE(ts^WVL_bUA3xl`g_wE3<>b z?v%{gA8G5Y`GDpEm$+>Fs<27Nd%127NzSa*dz2>cIf4n<6ZkY|4_{sM8v#ck{fYP-UpEHb3zf>sW;!RTO4ig9F2GxboqO0_w;1z z_Wh4PncFU?vyG*`d2kSp2Vi@-2Zrf6cn zc_~TB#w6ZoN`u+eN?O2VQKB1bkx7CbSL&oaFL%Fe6|qU+hYMY4VP|QkM?zT?Ldo7g zrv9R~@rKV>Y)x!X@A1kS5oPk`Yel6%tm8JNoZ>JLu^TU&)yq^#BYx3_g6?Zm@l^&K zB|wwTn=nVZHSFMs|6ZRTfPp|RshNuJj*^E(V^kpHFCo#q+pZo8zDO#w`CJN5LTk`z zed9Rn%>E0@W}FCQM9e$!i5Bw+QiX?TZd!=i`5*dOr12RCd^9LWl|+n_$TNVW7#>Vx zC&7h@_T4AdtP8Rk7ODYQI()VLD_1M(w=1_Bc}EQTe5XBboSDXlsR;a%y>~%?s`L3( z&Ee{2t=vAtz|MFOWHWt`0S(mY3wFs=`2g2v-R>SiNUeDi zkQWu4W^Myjh5bWZNLrs86RmJHVb=Zw90Ap0S=)>f!jSUPwnsmMI`AnvsusrnPXun5 zm|57j0%@EKXxtc$7;*J`OzmZW6WC&yA|$KXVlWnx78UJ~f&bWB^Lz|8-*t_KQ%=p) z%6mXevBXPA$g!eGqB3@pk)x})B#Pdmj?K>nfF>{txg{{ah;_t4HRN1>^&UKQ*;&~m zXW1LqGJod#!)%JxlL@r}iNsEUc~dej+i?2&-qGW#<&4)e07N@+G&GQbrs{EbiI06cw?S}*X z{!u`xD!=G`%Ed@;LPfc#_vEJEyU~$(s1{3d*SRP>Y^#o1J;gF^%)oxY8f}}7T6(gA ze6--!6$4p`d8REcm~%o{LDW=Z;mTC@`C$!IveTDx3KVL@zz^g5NJG2P&ceiM%GiZc zDf%*yF)RrSF+Az=P6Y7+9r-*+Xj!p7@|#@xL>+y~Q?$auZUK%7=7$BA4UPhhyBeRz zy=cPjn(#WPkXw|ylnaOgc65iJpdL(Q2SEU(D-kQdjg-`sK)}YrPcsmSfV|y_AQk2k z2^b-FJtszLeWBB#{34w#ob}CmXk#8jT@pjvPe20)ZARcqB&@0i6 zTSWaUt~~~ny9LB;3+7J1)uU0c*+^R{i`WyD@#zq?J_5F~z*>w(SBuvnQcj^h+4f|5 zLq-M6z|`YvDZtosL#-fmp=<(~NPhTFOq$Ev7W8-SK(JU5wuT486>GTh=PSa(bs#=A zNno?Za2=rj^?Tz`HLazbstc~j!~=x!a^f50f_T-z0Oc>>HJQA^b={e?hb5<`O@0_y zfgc`@B?48boO7U#xu?<5{+aLgyC!`UrpuJnpA2cWS|G88!wzUUE0E^Dbz>;LqT?Y& z4QF8}auO5fBOuR-IQ*q>0K@wHegl!l*-VZKl;6w4?@arxa=7ues;{%eQaGqJ8hwE6 zUE-gSzwf{?dk!K5Y{o`%pWj` zC@+k>i;rh7kTDQ?xoY|M7+nknPN(^YUW7Mq28`SHtBEeBL9NE^Es5_0dymi3 zWiAw;jf=)p)$9;|%0RuPJ34=lGfdRZEy(D>*IqRetSiX(LNqfAvqG~32cMr|Jx0V&+%s-Dj#7`tLduY-CCr% z7*0pl6$T$_rYvA_QWZn8pLOTr=j|g<`a;mNAiwj)U4^han*?@HT}iyQ;Gs8!lq!7I zMp69y_+8aA?B-Vi-1R}L8|j<$Y9a^jmAOtiVTK@xpju_NH-D(~{4w7B;4JZMiaV zUUOq|ZwUG+oZUB7cZBEo;$-X$Jw7f*c9~T`EH54wky0J#^3;SrvT@_+G3skOkv?!& zo|S(@X{mbl6nK=9h4m}$)w_hgqtkr$VSU9;o%^x@PL8nbd9ouZlEbtv({1TD6!LVNd!8zXJrMhz%X1@R)MwT^&cka9w3SWo8f|Gm$^K z^AHxPB4+}u9Oy2*UWgJhxd;b41&qRPzG-6k0SxLW^Pv;7kU{2y?Z`HO*ht$6qT*|! zaJC~VMPhZ6n^3dcH$s6|h6PrtiJ2Xw@rr=Rv#A}dMFmJ`M3MYE?qy?g#i)urY)L)# z5)@ll8YYl=+az-6;$L3^=))z1xeJ1sza?%0>>()D5R{rFTV|OkDVgD-Z@&X|O>GU3 z6_W`mV=Kizj)5YtTlUa3X9Xif_JGV&(bnMh`EiB3vgT4-gDt0CE%$V$V0ae$i zz5baiK8g-l0e1m5amA0gQ7I|F90+w>WCaCQ(@>NgX3mj&_}Ek@ezuL~<-X}NN~IH>1gS%xO{!|C!EU;! zko(`WL|k+;`WHFEQ2i~YQJ{%15B-E<3t}MPD8a~C+z^Eh$%Rl-@(`i(+WK`PKO{L0 zUHvjJ%LdCQErM#xyfV5{1Js54D~$fuOt2;)rrYhU$%C^mKFsu7EE`pudaE7ycw_8% z!<=~$XuWImTk`!Q&grlVA4wjd?d1sh?RyK~0(F3E18c#(fw{2jAe^}GfVJq{nv`ES zP^D$by&;t7(2AzAzKfopIY9fpLE6Y4{_cW!_?>bvYI+ylvB#wqyvy#ycAf674e;kh zYoeG`w++Kl*z|n)Q?BYh?RtpWxrykk4z3&&TZ) zM$g`|Tax=_GhLe0inX7<{$~zFzbYiW@Z4v~=uF6D3@h^;h2> zx(&~2bc}qqpR$kaTA_@8u71^Nagj+X082jElKtEDEbBJ=!Sah=;exOt!p_hGCn!>1 z`~5&Zb{+oMa?OJbqvd4=HWguaXJbQ=!F@%KHB2j5zjkSk=6l?Izfx*XiRLcUMZ*ETt05}aO|nM(f@3vu|(pabhx*eSCm-% z(#pkKkBM897}Aim)|@_ebX^pgbGJ(N+_)dbhHsP-IDVZGeRdy)h*@OHOA<887B1B6 z@s%5T@HtwjipsQG_s2Z}mFdz{&^1A>w1-&x)IN0?zki_c@|a9)M+qKyvZRgK8qb!j zR+~-R(Wh9B%laGnvr{`SX9ykjdl# z6M8wX<&F^x!m(k-Zl-iIpRC=@ussbD&7?zweV?hzVRh7b#43b$X#xuJsk2guK5aF6 ziB{dDBNY9<{!)?ei-R^zW}}-DfNrgjLkrEUBlc*-UEtb=J=)w!@T)QY;vKoZE8YsH z_?0t$FD#%t1t(OGSy(vJLDEhq&}-r8F4LB>1T=+pi`L;aOGzrh5ab$yHsy~)nc}P# zqU{*Pvw!js3im5qtI_IOw^XSaob0Z?es6O^f-BKKfxm(A9hz@;c(|I z4n8NSlsRG25H>$M)krJ2^jhZb6GV}q7SypVCe(+=SvaBKJ-pQ8xedcH<~G=RC-^zo z`o~?cHG~uF?<2uAznI^Fcit=gaE++!w7TaUmL!QTOHAd4D`LPNXgCX4 z*!5g+P*dx`yXm!3vFpl5LsAASuM|8kOM;Zpv>yMBC%c%Z(cly!se>Eo4t*U_;Gb17 zH1~;QMJbw-M6Na}Pi?A$)fw`P@5$d2froG!z@YeI?)KM}`UUw!!!GUmy!^>4^CV+sO~g*^tqqm8m+sli zzXnWl;wx0@Y^*bXChb5~YOAvEZ@9<9u;ae64l-c>b+${l2qy-Pd47 zFPmY$v2V*g=9iU{t+znIh)uUS>>rZ}Udd>+uOL>L;0Hs^OOq8Bg zv-zwX?6Xxf_0H-DzJKO6f=KTI*FUvP1@pz$8cgRflRvS+T`;l1>X_#7Bs{BjBKAsG zjDwct%g+VKA^?HRH73|RW1J?2VaUdc5tt@6R9OF(W7j>zLmDQrChe%hDn00h0PP{k z7RjFs{r1Xb`(YF6)aP@lU6>9VqtJ&|^-A9BfU9>j^+2I-MD170 z&tu%sG~%gahLH0=g59U+V>+irRKeX`p!H-RvHWG+6#BcxrS?m$SX+kBxzb=}X8xvo z@RvI^0*r{HBa_c@x`QzbCJQ%*vO6EZ5eq*w{4{dFwwrJ5Vmt@Qy*GQrx{K3kCZMPi zz3KRCCxJDFR3Xra$0D>-i6yB_gE$$o^!s9rLmZHp&e#5=Vhh3aM_#5ZzzPuYPP}1S zy|Xc62cYpz>8vk^ry4ai(h+d8lTx!vU(xXA1VZYI;z(o4*7N|h0~cO*SPWkFP9{x` zEbit9E(HT&jW-wU^+X~BU(1;KiXeRPvnYtq5Mb_pMI_wu4YCPJ3om9fu7hxZ`tQH~ zvS34wzAuMjcR~Py&&5n*^EIJ{H8X7!}On)Nt=@k+DgV zlM$w??Sz6FYv6+Ks9{2NT;7iKhXy@RXMR#@o-kX~#D;AE-aaY9+6)_%VHmD(vylzF zzgbn2jC5=~a1kTZLn1?rES ziGciEO4P+UeRVsg{mUt-oM+uo=u|)&@FNuiaHOs=^22J}{IPLr&6qV?kFcg)^9|G!4 zwlUY`K_@Daji93OnnJ+14;Mv3;|6*-B_N`KF6A;cb?m`=A&Gd)JDBFt30O*qfv!9d z#sugwPV65wOag0+lzfyV3Uxp352(zp*ITKpSMc=>K3qm0_jmr_Lq@1TXJyAB1fcZ= z<)|PL>U0CEsT8n9x|HHN6rM}fUzhU! z0;w}qSMk`n2HU?(Rag#4eXNDmfxQ52{q}-C!3U7-?fxC!%V>imd`l$SahifB;U6w@ zXq+NHEYn4{`9izBP~V&}mv_GcZKIqr<7jTliG89P6s*CnPN8WYpFfih6^Nk1Iw0b9 zHVZ9cuYc1|G+^>wVWSUxv*s&{elI)6-SCsUKBJr&`0Wj$6)NrLcnG%dc3@eFFosaq{>1q7=5g z(iLY-`XemK8AnwD@2=)^hkL!SSuA({Yr|eV*(~wi0lQM(juF37rg@_alN{z|FOvmg z4UijBb#eixG*KBZ^l8I?D%<=uXZ3n_52+KiV-`Mu1ihJv!Ba>kI7rPOfo_ovNxkut zc^e(YIw+gMxJjUdFQJHE=fnwKf_is@TppcH6oBl&cxp?J*24I=YK>GBy3+4D-~DOX zX01lsDkH-2$t52cVjTA`0GlPr$$c?@>n(u^B@r3k8V>Yi4ZE4hZoC#Az>0k#?AE)2 z4e?}0@YBk2=TCH5ZyeWxecxLk1Qu+~x{W<4?w1Ka)z@TM>O8-90rB>}IF?e&dL*qQ z^WC=0y`dW{BzMY4M*eC?g3WNwEP2}M65WD8h6sZ+uP25&wpoIfrh3Nr{Lc8E-?Eqr zO=ALUV34GT5@{7{B52F=$Bt@v;K~Gd-hA@17z07iAn$U z5WS+RPe_yKdMvr9qylG2l=NQ3)59xn-jy?p(K1l?uuZvMGmKp`gIq%j1po;rz%B!i_ovOfTO$G+bER^ORB*8;&Re0VYYDfJkQZ*JftAeEu@ zNbANXUPB5O9RL~yU*_iq1@c=gX+)YDAoJW7DjZShgu_L;?TjwDCL7g};wYh@wnQ}6 z9@kOU!6nl9NTEsE78s1I=!=3LW;2SyMaDn7NXY}{oF&vzn!w70f0Cf6L2TG0bXOaM z-^ZUTUVDzsuVGn&YF29Z|40pC0hn%$Od)G|me7-fFpFHdi>{4+GD6A}t%I2W&4muJu8GuE^GTdcvrv&k+K76@Fn@IovAdeE}Ok;Q)gkZvhirO9ariLO!MF z{IdjD4%ep$bmeCVYZlp+4-CV8!6~x@mWu?q>#@VM50C~pHwAySne$glM*IU9m$3Fv z&4PR=n|EvWX-5ENKZ#}uh$bOqhl{}9NT{YRhiQwP)L+^f_b6c};lV>6AVJH&1j-#$ z{*}E6qb)BIL@vDFIqNEkQT7;@(P;ZBNED&4;#OF~LaQiV_|RsMyc z66|`eV7#!8@J96wSPknNuyH9luL2gk=bdPziwv?Pw=Znr%dd7d^K=>sfl{4KY^m%HhgW3L)Lzs^53H_<+XZ7)Z@ zZzw3~O;bj4zycFT+@VnQDMonK@t-fGIsm zFRh#N%>M11@`tLlxrb7O(??mQ;F(>t>hM#RX#6#!A3Lju5))x-6V-7huf?1&{nS&8 z*oYnat|k>6cR@4IUQ9QXDF=2DBgyyz8z^kDSXh(z(^K_lvj4clyAdy)LQ-3zr%#iI zaUL5QC8U$|;Eh74el(Sv+{o)5n2gj|JbRe+j6<IGW08?=s~=WHUoETn2bSHtU*=v+EorNbznB1;V(TPf)By!;9WUm*mCz*CD3OqzaN=HH|3I)U>C1vGAi->0tNs{0B3pJSe zsBqNuQdneBU~{-)i7LYYV1Y9_y44;(D~wyBtTUWsc=%mBYF;Pl?b2s7sqsP`>Dc>M zW%1pxYJ9B1PmI-LMCthWEbu-R>|Af^irnu`CqQp{5)}(xWwQhj?*W zZ(bC%LvTtVH^IHAGd#iZQbWP`XVZ*&^rg(TV|Yt=0P4+tC!uW1tGSM4Zw^MG)_@t9 zxyxLX1VR0bo+Q3CCPB~s|3;1hqujm({002~#y!1e9>#M!uEBI!&4}T=<}fk7!K4?( zM{x!J8T$;)0Qdjc`o`!^f~MbOW81biwr$%R+qP}nw(*axjkB?B+sV!IyyxBz_q-pb zd#X;K?y13Vs=Etw(dxVEXC7dVir9zUzhul=22}M8929fF{DSXbe8pVQKYo06UxKiM z!2D(r`vdufUcvlSiu7*YYvIv91SbfPc|kZ6>Y^_$oKs2G!BmZguN67e)UB8?wG}nN zL(u$!nF`c2ZkuLwMtE02C=2G9Bag#7sld+uY{f;>y0$y1!R}bZGMKGOokQ1(8LwrW zL&cbeKp>5YCjOH%2J?U!;?fXR-;ojSd>7{Bvyp!`qrZY2Lcwa2$@FHXF(^sY%Lg^t zL$u`@$4{FFNBZdSYact%K zbn_5Ns}p(Jr=AoCnLYrF(3xZbvqT^kO@Fwg+sG#ch{Hz;I_-rQY_F$OuvarH4kmVg z)1`n)%_o0 z=e2d>Ee+*xGrjZRv|CAjqb_^#zP$rR$8M-iRDh*Dqlu!TCdLkn4s~SXLqWL)+6KOq ze)N!j*E!ob?Np`y_l9Z}aFq-Zc}tX+rvQnzr$EoDDla0OT^$5d)26R4l1eN^IjUiAb_8PKlx7;o*eKX^Z{IZJ_>|iu>;W zLsZXY3<*AaC2^d@2*X>GmVJXoaqK?o%L8X6T6uDYQVvRVM=G*C8wYF2avVH^Eo3~r zw7^sFy71@s{n%xn#)t&O^anJYxzk=m7NZs~9-AW|Q`+ej7TBaFv!l=E{CyF=RXm?_@NlS=cf6K$lwv+y(YeKQr=PELMu9>~}u?Y6RBj`2H&H4g!Z>}8r}(xW?Z;cc#|!C(AEDAt{F+-CLAqVEQQ&1%*+Ku> zQ!a4FTu$+t(h^CgxAnY=|IKf;+`-&#W4t{q0JI+Dtd+Jj><_VWyVAhhGvXWYAyMD! z2EzZHOB|)ta2B4(!!6i@<+d!YgnI5-8EMkbeGId+g3+h=xzRzROtCz8jc?lr;eyZ@ z2E+ORj;1+Z8$DOsU=?SH+)P{Oho-)66V%uBS!0gWOwnTnk zAYslrtvNw$6hK%l%t|)?vpTS--5>vA^|zZuR6DIq6h#X>8F!k`9+dY9&AY*nxyLoi zjq$repa=axS_LGqP7@bvGtCEc=f^ODqss<@hMv_6HEIy3V zbDakbF`6P>Inr0Kp1|n63MxSSZ8C~~_%~BL7>_coZRMPJBO<_lj9ZBv_cj%A;}tvk z3@mvd4pi#2KgBI2xxrt_FtH2`UVel2H9b#wIj-*U(HoC!O^RYmTPOtdM>kQV{_Uqu z^`%27FiLy}oLZ;?oT^mG+>mG{({1wg*-EPpdrDvjB~rqCRoW?_@(C7hsWG>1QdjHJ z@!8o(>;78u0!b_ekUDD^{`gR48i~DS6bjwf@EK{iSym+y9{KCr>#t$a#w|2*sSu)N zQ~N93y|!rp*G?#Mg&Db(O4TLex2r2^dflrRR7(7|Qz;4N+V79Vi?N5YMv^2n!YT|x z82-i!N`X{dbq~V?Jg~9AA-O~DH9(j&3ao;cdCJFjE?qij1Nu;9lX4@p|Ve9QTVo$XZbj?&{B;-eqYp zO3HRh01@Y%DD%sXy)jf&+~N&GMtp7KPtew!q8Zitdw!Cj3q%56i0D zNW*zXJ51VZ#Hca8 z=|2|lvahfMZuIGDT=!V1buo4|OmzDhG)Vx?rx{=JyxjzVScl1<3xO9{?p9V}I_KV$ z8N%1kPoz(K6f@Ze3Q4eF@*!SG*=R3HMeeHtkwQ3}%S}pEi8R$p*B$}Ql$`qKuBck?0MaXu9lq7Z?KH8;LwEUQYyf5yxsZ4m2q=|Tb(LeRiDjKzrYC`ihXV=!FN zUa;%|LqE|mOhq)vMtH{*=)>yzNA!VYn;D7YSBC4uVqJzu>f2PAFA9vVmO=@Ig+VcR z>)nx`{LLq&8GOf|51Xw0t=Z4U`K={@bW}lH45iXVbR(WMJj)G*zZqRY!sxw=)738QtvY_ml{SxrY_kf2__qVnDpFN}euN92EJGD3DxG289Nd1T}4BAg_7&Nuon zN;nF4q_~YTg(h)C@|wC`z&afb)UjT`n#51IhBivsm~r&HcVCD(*oO*Uz=AP7x=+9$ zLO>7*PY|E(CD@%^65QXlh2&U4@aa!b2%jTGb9d)%Oji6`CrY>O6s~$SaezlJRMZptt})TfI{sg|9S!*XE80g zg9IGBIqW!g>_3-(knW;~%sKwcjF=+H1{|Rlezd4!Y!0V)o->sKJ>edj_&7xr{t5>` zY^Gt4^aA3;Kf-F_+U<%`Ah#)D!Ou>3^79Vf9N7M(4Ei-?Xvul28oGDZ5I#mEjFeEM z8(t$W@7*BdGK{fK<B@yo3(+r-KW4CIdZEe?Jg| zlg_O;g|p7Bi`gV&Vk?7bCZoR54F3sm5*AtJp|&wLsUanP(xDMjx$(J;}PYm z#M^~3K&-e;`0t@&@{4KDqyUpapa-gjp#;mnAubxG4EB+ptCVu4m~5Tk(c%hh)dR+Z zD8))lcG_2P@`ck4(HHd$$Wz&{DTv!8XVq5BD(|If!Xg#M#169Zi>ezy+`zlp4^^q+ zs!N(E^^_r^gryo?+=yjF%8E~lEE!XG!I4NEe}nfZd&lfeO+1?-vFI@c`-oQ|a~l4~ zM=)FhJVQydRpN1HsSZf*0Lp1fblkA+ex&j`BTfJIUcR7inVrd8H$cb4w1|v_DGGtP zsh>0R2C?Ixm4!HcLpbaspLH+@m^@O{lo6h~%ZV|>r`5R9KQIg;`&W|Gx8b&M6STMHBow-`dD79W?B8#XLTliiWx5{iOnzY$MPi-e)seT|6bLz^@P( z`eIe3HHKnM1jU3k5&RPWy|9l;{@%s)14(S8$8}5hz02?#(^bhTW-d%Vz`7$#* zImEHU;ZH7E>PGjU2_sA-i6wp_GvTzr5x>MHA{$gNSdWrYoI83NRIcQ$bpC<|;nDF> z_cNWlktKs3MA=3^+^8=F{C5G<h`<4mQ4l3WGIdU+enFYqmS30Xxj)pWtp5I! z{KJlSCauGVH_9!6QPPsasepN)hqQU2$3(ag4ltQz7C_4RpP0WA*u7fCP6qCuwXG#jrA5|;-u+k`pst(WebDy?B$0Zpz-LlY1s$H~0Jm5FO&7^ z=}^rn5Pa7R3FlobFyI;HNL+V-QY_yXIN!jeiLQWirH%>HH@P1%%W8>CWt~6V(Bk3h zEe3BNG(~F}s@2lhN|u*A2iUZI5S4e`9_@~UK$Vb`Vn0^5(mj`!_Jr6$IXD@p=3f5T%=;WbyPnv&Zxu zi00JMJ=--ES5}K+_M-(9?;lfuWfZ-=BTq|o67wPyg|zNz1pzp z*@WvuDmwTzjlWV;ys`n&+gqs8qeud)&a^aPv%MTrxnz44PAHH#s&skusYglu&I{Fk z_T1^3gd;raXjHye{OCh(F2+^3c2~bk(k4#R>*NjA(6~$tjU1CunXGJ-SFF$CZ1^Qw zIiGKXy**G%R&stj5J{t=pc<2*uXg2y-9HeDZ274r47J(<6ykI%fEj-P^j-u7!lZl} zCDvvm*5)*{n7x^8gXLjE7R*+3wc8L|he0hQQkJyHu$*o(PioSwIi zdxKp-+?84}?M|zVcc1y0%c8f`a?wRTd{aadD!wIWf!JCiU1*1eyuh|k-511FKf-){ zqy6U=sh70}td}Z(smJOR8ttWq5#{AaeC>~=w-)f;)fNR`60`Ih?b5YZS?Isw8&(!C zHdG&>&1RTGc%E&)Gqz*L>l0BtN4JdZ4Wk8-E4MTe6>LG>iN<3DlN8%cDw#v8ZbS+< zE}kb{m1fJ~XXs2q!OwjK8qmz($ zl2i3LCC}e=ta5YAy!`kb}+ zocL5<_s^iMLlTAI>qa2;reSTa{|-!srm!oqHr~+UG*eDRzF@+JiBMWSvsO>hvbx~C{%m)#Zm(@{BCVT#_8}N_jOrd~$9ZO!7{#Yb?tHeHE9JVL#FPbjYh0!r}c2#V}P>NVI{)XcW}d=HM65DqSr}*M$nj z#?VKOJe^0%#rDoAEJ=G}j97^UyK#CZqeP%Tq4ULvRl7Fg5NQjb(6i_R6{J+DkSyvH z&BUlvsFD5_RWOrOU1uOu0V~)r-6s|XssA>!Cq#XNlGI#(8r`Kr{PNf^`rS@`qtWQw z$(~vR54IVo9yZS|e(&m&C^uC9$g5irZc}B}Gh-)2NL7lQ400!38Vl=KUF6}QkFQ}sc8C0cPV{za=C zY)QN;7_ys`&i=T*$vkL6(ZA3jfR19N*HERxq!{h{Mtv+=WYL(q$}&_Tt5CS26l;Uq z|6e^L^DoHL=gv-I#wK;^hH$S{nY?B?-H4qgg#x`wO64NjtVPjJ)zXbQB1-L1Vf|m`#L|r*9h;J z;1bD63Q3JXA=|3rC4B`*8syY*eRFu%J&4t`2hZrw3pun0bR#H=oE^wjpbfx_{G4{C zVx2goC(X|mk&))nk}1Mt{n)B+E#8^Is0APNh%9@ML&VpF{892vqQHoo&&LJL-Ky8! z>heL8-I$plMV^l|-+Qe06YuK<$m<2f-D=!HQ{I>vf6|Qoi{m?UlRAg+Zj)d9j4w&v z=N~_{EQ0wdNTovlTPG;lo1cS)A5)QmKe-%FS+x-5K1d0SU%g_DQI)Kbaq(}3Ty`C< z5Q>UT9r;5ffjC`K4ohB{O20Lg$|VC$3ABM4n-PolN~u^=h!R*+$Ta38x}$ZWpUl=? zfgjJNOrP8X-Q*dsqC{`HKV1E`I)Wl~85$wcss>#+ct%Bc$y&*`6xg2xT)yVJXF5k& z0qF2#{U#mqzg@XfM=dbT@PmV#42UCd92Le#w4MrwJC;4|2b_<26OUbq$U#rrq7J|U zmcSu9Y_b5l7O}RN3;MjQ;L)ALb9!sK*E34Om*-sL#MZX-x6$P4-J0@7P>SLaRZO1CcidRXJ9bQs%1=J}*gO}#B?XCctG$feiXh6V2kTF4SRz?O zmtW9aQ?^vKT3&_IKHn&wf9Hd)55Q6L|E~JJpO)1Fg|eT2XebUW$)g|wWnhe2_@4Sv zK9sOi#m(sx=JLur7U?@YXb4q1NSc(&U_+4HrN@( z7McLT364<6`EglP;wvOuE4Q}r7ka?>Us?{fH7^7r=8c}9<7XtH)L+#yy0Z-ejG!$7 z3DvifnN@JFwZ`*sw5Y_Hq8Ci01=^h-7rB?`G|tiMhNS#JpDn4F4ePFg(G2+EhNQ}; ztEh}jwuZ(U4q`-N#_F?PkgVgclLG_vaB~L)3|A#YnL{K_r%y~X=lhQr@t^^%GxABP zmqTN+0@SbB$7~Y8$li36I!uA=FZK{Jh+=5Nkb))Qn5(miBq+ti`i8}Q1lXl{#Z#*) zYuTGH@l0K<~|%UXLww&!3D1MWnT zNoUc%k+EaCNEE`BAkYrPpEg8tcYbD7#Vp)O^S=YAktl8g8aXmXefxPYfVv^t=}#eD z(n%p+V-=B^vp~+`M|cGBAmJR|_l+C0M8zvF5)cDb3z-3W_lxW0L9s4-Psasv8@@R+ zPu@5K-HRrdHuZr@qIG%32jcaG(Tm_TE73#e6kbwYzG7(Iz9p6RFDH*l2k$^?@oDZC zkJ}`yl`)QK( z0UKl$zSNSBE#p4ZW~rUFNtV>c$|Vn#Q_u8lUSZlXMAy+U=hB1Y9na__rQMLl=cKYZ z&DXOqv=ozhV@V#W5LjAV^MavjnqkY`udW?XfceYt*QPp4K|FDRXXKkX^%a59)Wxg0 z;W;?4&x8m%|LfRB;2ynn%mB*~I=PBIrx_KsvrLE@*@M@k6q$%G(o|VSev}62 zA{D`qIV>Nx1v_3&QbtGFt)mlU1V3@3w(Pg~Pw{^?e zTl;UC_vWnUw43)!DVt)bx|1{0?}h94G^R^d>|pOWnJ`M_P)Z0?#+Fa{a9o8x6{O$95Y)fOA(;BwC4js!$a3l%_sve7$SLR5AeczUV)D;8=-ZsRzCF!4_Qz{q zyd>W~i;fQEOns#g%e;@`f!GV;A3^UgC)17q-aP_tS1V$p?PlhH_xEujd!NUzU*iL| zZxK9{cAss6M$IZyvhvQYPLMeH&S+S+MXFIg+qWnvndjaU#O4pB&Zi zK|AqSm%B*bqV!GPALPSs!a_TTEn2M-*vmOU~usgr;Zi zhW#&$`;?_vg~HZ0w_X=q`>1L|N0-XjXFqZBE(=Z7*@<1HM739C#8TXHHF{`@>|JI< zM+|LKrxC>`d?67;vTNg4Y`V{iE{WOZR<&NH_3QtdmkP>3cC6ev#-EMOPxwm%I!qJU~|Z2q{{M0Vx(OzrbPO7(B+>wN$t9SWpca#&v+!^ zV@V5?_D+XPy;Dx}bEdRc-K2|t#v%Qk(zq<-=7%Q{ERzkyY=sihlco*6D}Hr1F#F&=s{Pn(F9_7XF@j)PB3dzsO4pXQugUa}$lFBe= zng*yJWB=I%mAI|%s5r-$uo8i8`KmY$0jlsVaQs!B*z0vIw0qj@>iuYI1=I1Kl_D9$gyKMV#04>Hr5D#Q4s-7 z7bkXvv0|Sdh39C#fvPd^#n2Y0h7A#Gl+OqnY4cy-D48eYOocn+)QamVKMLSbsuI|c zTE$vzHL@VRHM~VNAN9SadaL)6tH}?@n!u>yG?b_ab~a)a(M-59bTlSYw>3JC?2IQe zBkOA3jl%=4ACl{5o#^f?(WJTY7DbkbB~vHEC{zM1P^KJ4k?pid75Dtsvi2&`K#7+k zAzP_F6TMkG1gg^w7{VWn*tY3Rwz1G@w5^IQHZrc@O!P}H1lG}P`aL?Xudu}%) z9X_6#9PM{}-d{Mi;|;rQ_!CbYpd_@wAKD!Zd0K5{(k^~AAa4?S-FRIHiP3LX z5+oaYDmU>v(*9H&)1dC}&Zry`w45^ufg8~Yiov@CT2%0g0;6n@l4$J=O0IqPKm=B; zfsP(h{DH6T@9iVma$?d9n7bzK*_nq}i|4=E^w@&k=C5X&Lc5$)42iPJ9~gI9B* z0-*a{Dz~A5RbEuq2=wnjFj#EX_=o14*<+jiK<*bcR_3MxxcBAFP6s+dL4X?>zpyf` z@DFEHk+GcDPDf%N{y((kr&EkNZ~snAlqy!XJW zz5>$n*Y2`x%3Bq3UI4JOFDDZL{8cE-h_J|I$}Hk0zv9jR0x@w@ynN|WOD9}XSnQvb>g_I`ZdoJK2ljp!!V zg{VhMD}NhNBp5f0l;v7*3x2&2c8`Q(K(Dk2(ysE=hk28TOyk7LKVqSq7?Fw?j%qGV zCSpeo9WtHba;r)1@P9N+98X$nO3q?4#iy*9-)A+vii{3(VbGCsqSTHjACo)qPlsM#A6Y#IVQCd62LD1Fei{+87yrJ7|?bUI&br{>D`E5!d z8ylJAq8+G&c4ebjqkqo9S_>|6!&>W+8twQjJ4nCkf}2t>G1c?Z@IqsU1elrZ1OoOz zJYpgOz?@T}G!pHz6vgh`3xM>o^px2PJ71CZ98sKgF~QF^#80**Oz5O!Hoy9Mt;@%H zqp9!gKy{U`b+ep+KRbhL%#B4~mVIY*CZS=IZiD?cSrsGvs^GK#Y2(N6xE5TYyu0X% z^BKU!_0%)Gk6waJ2L-T}peRQ}YH!SM;YJ<<*GU0W)9F_b4{(UMs+mQ6=^Ry)45*zN zsvp27TtM-vy$IC^;oleb>9M2M`2f8?i_r$JrEyk8nL8yP!TIAG=R8 za{)9ns`T@%`UM{MW(`f2mXUX;@x$|6#3`~(zZKBk@++M!hRbk$7-!=SpMCJwGGP>M z(*%(^eYY6V%A?*EKSV~Q*eG&eAiS-tr;*TAKF|5r#T{HtH9?RaKTXbhSC*Zm*;VUe zPD(AWL&cAkSAC1ZtfAd%PB~s5{i5^&e+|SH`#+$LEk#`QkM{0~D^AdV2=@OCS2K}! z_Bwk?I&_|qwRbcblQJHa2+>aa#ogEtI45BieStamH@1EsoXgiE023=0BUPtYX@3VFc#__cF-E$J_|Xs|>;)uw1trgH`L=CZ zI0pvq=ooSMQlbvoS(B7Qg*0vY*+QVcL?)PK=|_9HM0I1i~KyD=VSw*~$>;+Z%Pk3#b7vNfApIyVDW0o0Z0DfbcKN`Cs6HSl+u@`bB zm8CSBnz6hX+A6bhj>QBX*4~9hF9lx?-{*AhFPvI1HfzfXcuhWpu^FRLIf&lq_vMEG zJhWdfqB&M{XG3~oZn*|Oc~d8$wMxpBLpQQpm_N3EzsWaNgFV~2dvQ6Wc14@erjKi; z;+>T%(!N2Y;su+a-OVTcN|lW#-~*qq{V|QWLYl&vjW)nvS~k4;>w^7AegF_drEA_M zVVTP!G0*k#UTIY)4nHkClk&*B^CfstQz)1}gl`I3l zpB-hZTxYU6coD>$jk_!KySgeo(mgPBrTMWiGSIv-H(^?6W^Av4QU6_xe;vyVC@`#j zVAr048)SaDUv>FY(JS-=7VZs0L@!#*^!9j-SP|+*gDQGp?gtB^%hu@co`sADO~de> z)qrWQ(sMzfiGE{Oe8k*`&&L-)hKW%R6l9zP3o|PQ3DX2d3|aghxTo6V3k0uq0Xs2$ zkBjx{Ym3~v)ZvgB2*`yQEm-t|(McbD^*a#S+$W*4_JN~Y7`0rs(JT0cVXNH2^@m#3 zGwHdl-g7V-hJF%(F4`>7-hlJB3LB@@9eF7LSwG0$pg3|F&{zP8(Fm230W6Be$XiJH zGddj2FUNo?xh5JZ;77Hs($;H*zm@|CL>@X2%#}!6Tg*jv!!0KqNI7 zP*~A+x4)iyzaQ(qyS|V8zFwccfq;O%|EF+H*t8sEfDO?begR%0Jt$+9HE^aau6Las zsO?sfoK%|NI2(C-P;Q*ta_?bya{GNcruC-}P#@YuAQGc4T@tO_uC-NvGn;(Js8*&i z{fozt2%73uC+E(CqZBhJGC$R{x@MEVDg#o8kIb9-Cl1~p&(%dHY4(!WdE)F6GxT*HB zx*+s4cmFddoFKU?yS_;m9D7VTjDx&u!sVJjvopG^i91tt(et7kB=H^L#~LS~PLb`p z6L*vqLt89h*Oy4%swNed+r>7dmb?q^?UGCWsO`?JiYQ#;<<7dmYcTbvc(&W(67tIv zn@By|r_hgp3rOqpzqbqoNI@C|6cq>@2=a#}0&?NJES&`f0_wv60>b>^xLeb^**RJ{ znVXn6JJJ8QVxn`mvCdA?wOc1d4ZWtg@P1|=A!?7Q{% zwpsJL?$`V$(H;?L-KU>>kMEwbc~xzIb0b((<<2+B0a8}KWUF~guuTAw#{r|*p@r?N zaLWto%l-Xg&??#sO)Fq5VqdUl6Rk@nqCl&G6}l2olmXtIlEC+=6g(YN{Vuu`PCP+A zAa(f?pzvmexx%8=4^r6zhJk>HASU*YKx;FEWUA82UhQqM1BbF1j|hG3r0u#OTT_*f z7SFStA^Dk(KyuhMH#cxA%P8IVgE(<<+^CNnKH@igCjER~WJUa$NXO(iwG1CJJ{uR_ z4o;u&W7vFpt2kQYO!FMdMYH{luv8C(}>7T*MKt&x@(+l)CEmU}>( zl(0PM@1k^I*m7es@`}~IfG3m0d9s(y2??KngmT2w@8W`S-KV{tYQiMTBQZ?{@(|ZoW5>3Ab=|BCwd3W>NFvm zD9}%UgmaQaD`x%voWmKCIhg@>1wk}!$QbRFhlQ8=?9qcK5141s;qP%>ZeUupedW*i@fk;8a?0P&~2zx-BB>>6LGV8vNpedw22{UG1G?8iA~f zmR&u;GzwN9X|;ZcW*nd~QfC7n!Q4%0pvS@aslys-CPq>j#oSF;OpInQNxGQU8s`>N z2vKN>{$$`WI4R0I+dlQlh;EU3REvu^P@o$r<^l{ss4$QD!$@>s935UghDyriHR zMWJc=r`1vcQ94BSqRr|#0OHU|h2^K=ET8z4d;xPymEb2Xt3ZgF zWi!#nA<>*v3|sJci?nkso4#dnIG-OaidIEG;|Z5kj(Lfgm+T>zi)aOHI#KR;%j|0< z?Ml2#_3^Woc?r1avr6qxCk(kfDOLq3*t)Up>kd@Q=qe-1?dV!H*prCzQ&t5|E#j7y zOg$jcZ`P3xMNnE$^uAxR5dSA8~%<`TtSyjC>|<0t^U<4GRbe<$qAn+1$j& zg#N!J<9`6~LQ_5thZVJ#2rb!t{{77?ikukY~6J|4^MqU1wZ2z_U`1m>3Z)T?5`Sp)b zH_0TJfyIoSPWd~&90+J{eq$He+|uN#!jUrdS>kXIG! zf?NXW44XwuVt)ftx_a2M8{2XBKvJH&a&$*$SWgtK_44KQ7SM!+XQgESwexu@sQTV+ z74G7E?i3+7&}0JY5_dG5X>4dB^g{V|w_x*`Ff1Wgo{{I`YeiDhu9H`n&s(eYG)wa; z#6riIY9jW3c|x^_kY+fZa`>|2l37z~P2I|8%RtoX4ujM6yw+)NEI?qu)hvMFh1Ipo zD|juiC7?roybg$*e$&ALoHurL>n)3lx{&339X}^9e(cBoDD*!;j@}cyNz-Dz7Q3vJ zqX6}roVV%x)rK2vROQ5Jwb@5Cuclrd8>kGXj^kiA?I}gGB85K%ggE0DO3E^t)XRrj zfmcj?zx;nGkxHKZ6%8$;^#8adks{A_eIV$h>c?iRf_@rnu*Hnl9`E~G9@xSlChrz$Vi=&|Mkwc+xv3g%@8bejfa*wp) z%D+@eMjMIzhC&Up4Ld7{rrl`)E2P_?Yt3=X0tspJS3h#2)kZMlOB-UmU*u@;hlrlj z9m#=jt2|=j;mIva@N(p1cVI{2a-7-}uRvSd zSTOj&RGx@YpVcWGDshZPw&e0A_`70qup0BIY1*Qitmq$%x#s&-4?MEMwj@afJLym@x=dbPJAL_XfoD8u1an*hT(vfdPn&^4+KB{5fW>)PB)bIO&&!8W&B*|;12 znV|RtIJ1nM;UaPo`7yR&o3Z)3*X+c_>-EEKeFt)WawfiLMewrcP+J}n#q!wTG)7?EBK##d zTD}tPXQ2B7{}7MmRr7LqW(tG=W7a=*Df_dGW4N1FDmf|@f1XPduH4hWDOc4Q2hu0m z4Cf6*%s3$xUnoc(#;1oPYX>8vq&}HcCMZ*Df#%1{`=I^?IjPRrvEJL_uaS#5l5O1P!eSf!PzrIoEoi>xsXNU*O%lE4|E?h$iOoyXlr zy8xgoOmZEE9obb(o#}caG-!}Hhv8UQGXhJu9A@n7T6b(|1T<&zgr4E~lVBai%adpe zk#u~)5|44dT++$*h2Z1Eox-gC{aqy_LUxKvEIzI}Oj{LDo+4Un9RWui(6-XSFh8_m zh7Yubz>+WHh&Nq{LGr;X0`9xvROi^Xyj_N%kz@WlJS&Z*2u><8nM40{Y2p%;zq9f&Vw`_dqkBe+CBv3J?VXg8LurcXIZy zHgWnd>g&kHt%+gwsGs@Odt1U+kB)%L1ej~qqf*rrUa3_ssH8B0a7XgT+pxt`1GYRb z;!bLgb>8f-EBK49Covha9u0#=t^SEYpU=4Edh{OWU_Iy7@u+tU8i@SrrLV$}NUgsH zRo7!hx6V@Tjog2L+JS^#2B{1(Aze|l@=I?d%Ls2rSFJD<^-%X z6-DU>__Q&@2+hRqvSicD5f44F6w-Ut77{He@npR)mCZh8^N8?pdpGH@WcO*WFlHd8 z4Oxjvr}C7&8(u*a@HzmWNiEulYgN=JB&qF|BDp>$x$^7<3!+Z$!Q@wgHeos3l-bJ; zt5}(a=*_lD3+wgBS@ z=|k%DUwN}LiPhFyn_l%k-~DEK-!FK%Uk`6I4{umL;*!|752gXVR_b6S2Hsaaw?Tj& z(QCm$|4=@*6VdBp?)4BFY^#+g2LA7tV>`d^NAB*UjWq+%%3%Vlvueh#J7Lo7J~*L> z7v-*j*){2gBn!`i1lO zz+uVKK7+5t^xEh`HqNTGzbJfww((KUFtFc3ELo*{LqQ%_ z5C1|r5jSlW-(Ypyo&tf-X&?<;5zukN>5#$xy)%#xp~yE}Jw`R~B)Ud$2581JHE*;)T) z(3&1fcS^~F>_zDe)Phb5q2E18SS~IP*0WXms3*)v;+F#^N*H-Ge6}IJta_6meN=UZ zWa@xi&_TSiIX72*A%~6yD-Ez48+YpinOB4TGE31B)FYHmpfy|6J8|a3=Gvjy&9j#~ zPVfQV15XJQr;BhIwu8d))#KZG344FR@JJmhv{^ThGgS~J9g0DDqQf4Mun%=<3Y49Z zoT@}y{aggfjiTpsy(;7}A#?OMZTe_$_8xyDi9PG(~nkz#+!Amw+Oe`%|xwpD${Cd)?)wZnMD zsT0QvI7Fi_5~1cMSe69Clv`R?sGs};aTcE{tJ#?TgI{n z$aI(26T?T%PE6EDXVX)4Wmhans6|B(7)1DPmbOUM*ew-0d9@_W$TQFPT-~>JCW@iD z{6PcQF%X-E{A&SpFgH_Apz*wu&r*Yt(7QbecR3RLSgMK`^?z!LetK6{Qk4Otz{zty z_-U*uAk-01mJ==^pu)0S{*prDY)Wh(ub-tBEvVX<07~ahCTIXEfb|YJHiR~|D1mHC zWgcxWp>~fGALk)b;yq#sR-J>-I`w_dRutC#huTD@B#q+!)OY|1*ou@7l``#71^2)Iyf}e zYH}qU&xtD*{cpfrJ*+BD%fs$UeKe};{#czQp{VNXGbg2c5e^DM=g{_;B}u`9Dk5?= z-#;i55-5}B%jEvv|8;f*kSAf&MFj$~&;}X+Y_TL}ng3h{} zwq!>SfyEXu(W7cJV>(MtG_qKcqF839;MzNIdayGwSv*`ZYj>SYpFU1B5l8mqU;Ur} z{Ve4hsCQkas>-E~GxhYk%G4=CRYA8@SywJ%B+anO-mf==ZNKuzlbLVN&&tcPfZc>N z;h?znPA;zXb#U-JcwR5gm;L>x@7L?z&*h+})`YpQezVWIP;dx*z&8)Wzpvvh{;%D+ zu`zR;Ej(P0jW0vzhp9a8o`f=b@ITLS&amBBm_s?o!h?11;K+yE2J&9lMG0x$abjLm z8(6xztdX5IegwF9_?}Nsr<7wp2RN5L2mA6jy@T%YC=X=`?4R<2l%}{?m|qt8IVd!_ zLnt4|1TSU>-)p{Sejz`Q=hGdR3*U{6ZTlme^^P9M3_ifk?JjE24+k4JMLyx8*`b{< z*L#ki=O-8H)mhI>-Rn?zQMWFhvCSy9w&AW1@^nT!rLMg1>X2?Od5^_h-Z9|gnGB2N zxu3H7C$&jN=0^#Wu#y)kZb<`Ykpgi)6Wmn7E3EGN#T9AAryg~Lp2-Tv{n5SmztRKY z++gw={p2CjlQYd_5C+M~7Z2Zc%H*j{#t!sS0-*!eBuBN)Dr>dTA4J8pAj3mWxM6~X!haNHJU#n7UH_N#u>29Ui<=9u2 zeH=rdN&3#=qZII~jd9E$AT$N{2@KtD&)l`iQM2yXc~~r1x14qo3o)En>Rl%6;869C zFbEND=l{TLzx$EY(!bm##r8nHqZU_C^hi$B)2e8F!rto;N%1uyIckgCAS<|6;t1@^ z4k-XdOl_;)1Zx}f*E4a}mb1su#eXnL!JG(BkA0V{NVn;Iao4&$Bwy*ZfNFQ6xBo$9 zw3*^-6Q$~q5WSeos9NnIj|=*4G{v&h@vh^VwI>qqyl8gla|rM;g4Jt$lZ^x=b@MG< zUEde{q38W2tcj+`i4*zcDI+eCG%As%oS*xmx&sVx3y8Z!hJvW6a%I{lW>AQ|AYEAg zrNPGm+U_A=EL;;g;dyHu5c_k5?A#+%945Xqra*{70Bnr=vgnJn*4_By!I2oQP6>34 zROrw>Jow(xB(jK6&8b-Em4SD3xZo_38TtV#@$Uq9ebjYWJXrgm0OImS>!JQVy70>e#u6}{Z zK~lJ@N1P}G(#Xv?a#-fvVis*#1LSS}T&LWOmKON5k428&+*Q!}ST*j5S?>d8|NJbm zt~vGV??7gl*VgwqBJct6_0H@uNJCpKpwxb?1Z>xXqynASd-rPMv@MFXOu}6pstqy> zTX0m^JHw*w$d8|jvqlmx68xO&MuyQ$B{Dwuz%ssKbD=?qK|Ew zH03fGmbDsxpPGE%`-H92j-Gp`8zG!d@2aG{UQPc2W#5rX)~(zOFXnq*itCk10ID2k z@sy!WHxSYs%rUR&;%rtqnx@RfCH7h^DzUp~k}|qM?8*MB1&%&4ftFTPe3!0Q6Jy=>5Us3WC-UhCiWw@c;$6w*A z3?QN{$C+;9b89EG(Q`}|K1o=NY+8@Y>KvTi+O+$b&5bGH;J$etD^fz4AKrO=|9fy4Z zWme+2^EqHzv}2tM<}l1_xtLXbO%Q2qpUaM2DxODW=_{Dj{)2;WS=Fo>FrF{Q%e3%{#lwh0s z0{^}uImfW^PApsx-z8}C$WFN%bS)O%UD(laN+DRT4j@b3DcjMn>&R_k?s>wkse$-( zv8Y7~4kRdV?k-)NEJdcHw%!imnzn9n<%yVb^8>xg_fWJ+yyiO!bqaWOOlp+X8P0|rXLNITeTIZS-3Yy1JyH)#!x z>%UdcCq+8;@o#OA&3o0=po)4OB;~N6MeyCv==;8l1Xk>R=a#02^gOclNfLdJtQI#3 zcdZq6AZ1ARkIvVNq(H#A|E8C7;`vW_(r{>G*$O#E^KEZ3+m=vr*|No zsvwWs<3~|rDbL#JeA^a^7Bb=IeLE6Odq^eI9r12nht{mkEbJjPJ5x~S%Go;7u;7Nj zT;}HUK0u{nRXCMVB;w774=%hps8=!{PaUpR{CHg@dxkleLro}bEiCtGQ_3K{v2_Zh zhya5c-@xt70l$3tYTIXY*y{K+DgxT^tYI}WVC%%*h_$zA1{$jdGz&>O2yMJH^Nds6 z2Q)T2N7P0mC@Tg|t0~AP9C$cv0C3^ef`53T=u^=9>Iox8=A5JI{O1?UjA^kUQ(M9cR))l?;5=T*fURA}Z!pWu*-6?=VodcwbK6t8 zsxt^DZ*dh}_m1uhX>*$qzl?$JFXi3XWb^7#@5VUxb^=H3Y0gV?s|K!Nh70YS=*N-J zF+#M0>91k+D8486!3}rV^_NwpP7Sz;Iqu-MvHFFiAV%-*Z0+RH)xKbu2`|&Ge@>t4 zm)}qpCw>#}5LKJZdYwSG8`L0HBQHp`cBvAQI>atnt|Kf^L9gx}DzLY^vVnJCB*5ui5v! zH_`ja*F@*S?z+KvVxhdL7uOips`zgg2l&M&A#hoHlj18{{O@L(YM8apo|R$0tTf&+ zQ;1g<(*oe{shlwH^;5$HsU$L;sM3~Za~EUk-KQ=M!1pcEFvLkPV|n|EMF{s$`p-L? zG!pcWGK?wkkneg){Gc$(`A4)<3O7u zqEFYEvtW(U9h7~V2BPDYHWi*^8cv}xCy`*hQRFV&sOZDzAwl%fN7N?V)>cO`tXvor zC%&257ery=pEl00`5Lt$%*?bi%Fw2jNpR6%5GFFX+zi^9A-b-!8!U9-MoHd}sBUXhINgGZf z>0-h`Be4ZkhFavu>8m%>@R%Hb8s*I@LnRe0R~Mho;RheTAkZ3;F7@QD#(=n$e12{K z&mIgHUxQQaB$+Ts!=AVPB$`k1$)_l$&Y&vYg;OGZNcyg*gZu_4-tp-eQ}DIBJMA_y z#_Su1)DHojU29{wkFgeG<||TZiZIWfv%y_6mx(4%QAr`^v)8?$+fPH~d6AU#VVvW- zzdFoB?gg2IgLiWVNH)}OxiC`GyZNIy18?TWgxFC)M8`chVhgndopTcdTM(2ga>}G4 zrh?`&B`nz?q&9{l2MoVB$ehTxKK9ism78AS&Oh1TfAan|QR9$ATs)!fSj#w!TVdRdhbNO>HCO@@!!0V5~>>CvESog%7TN zx6{w7(k%CS)u~v|q9qBIC*CUQ7=~Sn%;4?f;xIoy@eo{$0t^u`z;xB&>BE5fQW!xi zy4izA@5O5;kTB0hO8tzQ=`FjY+`Tpo+pI0Bz@gu-XNf+H zi!q>ydfoXDuY1p~re{7;!CZt@n~pvQj+WVBcJPrZVgb9XHSM-iEFZRf?ZkWbWqisC zMH)2UDqBr(qS~Bn@zn5qvTd+6e*(5q4TZuXtF|hkPTau~-qELL)j2yPzUvOsx_!yE zuIkls0oTFp@$Ndt=QtG}VMTC;(6gmRHUQxnsG)G8!jQ7R(|GkU!Z!G&1M-coQ9cjs zVrzKeEpa0&NvMOVLq79TbM?v6{YG?ho7`mfpaVnz-)KvgPbj1Tj{^p+#XY6o0Y4x# z+=?%`X$VD&F45}*2?3|WhQ^-Rnx@vA`=$JPgp)7`e8@ivJ&dNo^h>KB^PqL^1w_my zNysaAm!A*#-UxoHAsw4NO1CjXqs3Ey=z159;6jnA?Sku}Hp>Cvk(CawF2&<*_qF5lhu(`NYPCoNzS!$-GtEL8Y#`?>r^Yd62^8MFV3d9 z<9SZQcEr$n!%vuZ`P0MkA^z25{94K?jf%$bOKSD3L*F!s(!d#pWy?!cAX@N$^kGyK!0U<~%i zCUU#jllTKM{VrP@(B#~QEq;FE3(;2WR(avV%%!hPGy_qI_}tXl+&bd4UK-@@FxSmuPw6@3I~z;Q;f%i#12eKM*kO;>?2~1y1{BTZic34> zL$|%xKbK2JCJV$^PV^ERjpPS3KB3DSB8{#c#1)_=ad(fWz2UUb3}o1|jyQdcp-lIr zDJt^Vb%uY{wxWHQuNxrSO%ZZd-d(PXW$Q^l$k0-hlhWosi3@~oh7vJ&e3p}Mck19i z?c?rMhqr490wd92eFDB2h>hz_Ax(T_C)#Gk`{KM)r0-9)*Ud#>T(GX+k!G^6JWH0E zJad)uDIVFxFdBBPQx|h(;nli`QuPo*_+E+=;`ZoE=~Xfog>Ns#>ep>wRh1aZ*T;LUPnB#eRKhPocb924Cz4y;oVeQyd;$6J&RV(gJ~sU#dVT49e72Q#i5u1r%V`6bG+_r;Lsx>3quZpc zLgRe^N-sxk)&$O0Hl+{)d^EhZfnjsWOuc4;8 zWZt^#i!lK6ezpF%rBDMOhbf zmM)fcA}dmsa=TB3y~{vd^|Co;+1|*M>`G28F&5tOp(065@+QgtTrRqz?{VzlT>`cV z?~nYRjwKvKqQuOHW+c`AgZ>J0mCHtW>Oo{PY8cnL`S}3uJ9Q9Nps!D$uEf-wbbau% zr!x|&DB_#bmyPiGs|B}>@6g5tcm(C^+l|OinGw)(79N?+-AGl|E4}CF5yrlOo%6{| zIO5AgM*!WHVdgJdgl5RUHez8eT5@*@!D^4eycab$k-(~I^7IbT+V}>>HN9d#EFC@1 zseDdJG5g*|U||3HSWXr5HDrv`ii02(gIe-5ar8 zOUG{*Kvze?Y_mEEb(T(-Pm1+jCMi~J>tnk&QL0owCJQ!2GzAkNQfX1n`Ewb@jrCBoKgbJCg)AvSJpPispOwwcOV z&a^grHd=MGsJG;bq}8V#-?wBRaEZPkIg@2PY)JWj*YZAj{jcsw5qoaskI*~P&~P5@ zU+&1irL38_nA`m)aqU;$2K&!)aO}s3ZcaSlHT08O*@F1*?8BI459 zxNE!zpL#O$58K;LW83^0ccP`F7MSs@)2(nJTQ3Q%YQFg_vUN$-3LY%up|FX@y_jO} zOovxfQwkr5)5Axr4FSq6upxU$I!@w~9)dNmYPpq4{i>A4o+fSD)bQ_L;l)2c=tR0S$J}Ygi;|=_< zzAqVto?_@=!G))5My$L!pr$+}oZKH=gfCDJ;Fr!}pjVA2CYIV^>qSc2W;MEnsrR54 ze?$7PI!`l-$Fw0QD3IwRe%!LV^Vm#=CXR_sEgS0sA-Nys&`^0=LyE`JPZ(SPMz=^zd zu{d8E+E*@CWr$2vtQ5G{X1a_)Mqix~?D8F=o3lA8Sr)qQN71SIsB4@%>dHP>2_wtwrz-vOT;lKXbDAkr2j20AKfbB+n#y+) z_Eyeg!3%nHfH-tWOME(NrkdDKU6unK6)+0l9&ysU3#z^8sYJ}i7*w}E=lE}!g)KtF< z0nW&xF#q=dw;LL0SV4z@u`_^y!G=Bob;!SbVfRwT>V>t#NC@~Q*=(9?m_JB3$B zTX#@G50S`o4-T3Ip4|}>TQ8ViVKkgn{2aimyL&vgg#vNEpx!yY6+W?-a4!rO3h31@n|2j3W`>?%zdH&3LZKIfSRqXEUc4OM4quJ|f z{Sx^2KxD-J?#E-;L#%|ae1;XiYF@q7)0N0$S((?bF59|SFHsMGS%A&^Y=MWzwV|d! z8w07v%ACd75-oL^G8@X$#m)JS=E|}N%!&DxPFAd{yh@)-RHpH~X;u5Syh|iN!CxiJ0^Sz8Z+gvjKwg@&r~s*&37LF-edBG-h0MCg_AC zkAa?fiF??<>JzlVYis-t=GHl#u$1^NaJO5Il}RDuM5zzRo@S~nZ?BN6k)i_EVy}wt zjqOrv71q1fFP;eGO7?lVAys-5ZRIv5GS{oxKVloPOOG&Se1mMx_0fp;9uuC(C56NS za~B9)OS&om1~4XrO*Gn+qOy@#qj?H56tsPF1lu3WWGUQoq{`d0)mPF34?J+Tf?wnl zwJr(U5?;r&1lWn6==qF@=xEbwg9^(0fMo#(B0EyPZ;qS%W7@GPRg;XSAD+7LX6#OR zyq_-vh_ym@u<(13z9GXeWFy=Polf>40r;dZ(k2(qo|>(bwpFQJ%QSdoHKBT|+u*Y0 zT|iz$^lAd~*LiuoCZKf7X#bF8Nx4BpeJUhyD0+0K zph5eF)oGdk#uIKCwYWy=o=%w)iUV%own<_k?=l!D@m1#q1Hvt<)0gf+6>%usGIE1dEtM9XGW>(6X;eJm296jpQg9$^T;c%Z;JjCv z|J=t-OmLVTyI&kJw{+;}*wji5r+bI3)yZjX$OX9-%K#>31;rF~Bo|B|CM}qg6E=;S z)Gt~N1D&Mg*{a^AbGTCi!5}&@bq4nel+9A7SU>Ek>#dVh+vd`P6m3*(f*g?~7PxV` zKwx$Bu#>0o%FVUiyQ>Z$rF`^$mmC+SQUm49hC2l3YlTKVAXimwJI|bQL%u7j^dCMe2*vZki%nRLou*ct!$`Czd|n#8tIZ(_$cIkn3sbhFer47 z?->rojKFVU3Y=1KORL54fCDSyR2lKlU|L)+9lv+EPYKc{Dku>5pd|DnZT|HvbiX1x zu5p`=IFy8D!x`*4844JW`oE=G6a8hh%RM!D(x0j zIP$5+U-0jEme)!#U7(LYsgrJko?11=@r{W3m#P@t?H?q9$^OzCS}^s8wwRdvXDeHZ zCttpag5LR0HJ4nBSVA%kgK$E>df4Iz%6;q(c10~`5De5hz+vcMR5@29ozPU5HzRQv zbuyuEXO@Vm83$2+3L!2~_b8(xQvI#yei<(}h{7#J@T-yF=6?CWOe$P(XvI%qL~df* zEzTv_G^(G-a}{H8@GgNWzhFu2e*O7NbEhDBNwqkXI%)nvOkxKJFLc!WxA097TG?L~ zf-X=2ii79=Pj7>pbD5uVLwoCI*Mpl2EinG)PL1~yXe|Vv^oZaWNc^4_7keCl7udi7 zcC)4{X714O2bDr3cBlnFhZQv%IH*9WFHe5FOe?~)L>IfTy{{X;tiK=A4X3cO^#JG- zbez+mT{xLid!rn*o|6w>_-YcAr-eL2p?Owt6^$-MJCCJwZnFy64$?^MWv%N9%lVCvefl0|D{7n(yhMielcF0S+w4j|AHz@UUlL{mb5__f1Jj6BdPV&V; zLS-(Jc}}G+ED$9!Uy(0cMS+oVNBBjbGtzKSbVaiXq;6Mq@2Cc65$8a3uOz`OHYtA* zP|q7NUC~#5lIojT{ZJR$+%Jn{^>>pra2kz~0Q0b3pt=-`wbMcunX zBMdrmK2cvwCM-)y{5hdj!A$qdl~GKb$5;@yn8qQM<`NcGGA9RAt#a903*|Hv!s^w{ z>F+ZtF*m$(ba5OIcCa~fQ7rb)HQc7wrB^!FX11S!w^*zrTe`(9oNT|G%q-u*Y=9)V zx;u&HyOU*3wg+wIs+7tk@m5boc-NOGImZCJg~oFVD%cp1fZAv`QpDQaue0QdK{j`6 zxJdM9(Mt;k#I%dDKIc*?xnH<(K#Mk_gZy)cr{R+X>~__-fMJmh2qg52H^KznbKrh$ zmCHmYRKKL0Ey)H*9wAE+z#HUA6=7Ua?svjR2z_}nE6wQHA4<7FG_d+3m?Cg0I`aUa z!o1+7#lgFvNm|l!0Byi~wg?<;=49s?mt$aQUAabS-^*%zAjiElsO(3X)-d8}9FR$> zLW60$1mGS=kn=_ZNgs+piIH@-tj+9Q%NL$k)?e_cT1%@EOHSJZ3_37xhNFovZhn$C z-J?~yH=`c-P1*6$AW1`mOaO%Hz>AwWr&QP-`X+L(Qy_#j9T;haUszJ?KcIDK<+4-a zlQ^Asv6ly<6npHu9I7;fGsFinhTuqm#7WjAK#MLJ=LD{fB>H$?h0epdaU4`RhEy(c zWE#RfCdLzc4Q0!r>w>ftimccj1)s6OJivPBNv(cqd%nz`{xq6&zSYypJk^FsL=N`C z0h?<}P}153%TMi<1S?fIy?vOK^mMR>6|fobfhd6jVwPJ`vRT%Q6Rg9wBESb{n3I%| zyh3MqV3M>fyLEWzm%BI6-rV&_T64(;D5`3=1U`n(}!(-v=SzXrL=8}JCALigOUI_i;=|#?t=`V z?f|XyYbX1S*6YRMU#jw6yq|Hw1f|b$N?9ATv|nDJDVcE zrWGXyuy64X;4bsd%W2rAo;7UfB2GGjcXla@!PFFPq3gx@oV;>RpxzQ2cYN?+mw>+5 zjWjmtROZvebF8vp=VGr__ABEGJJzepD2l}9cxQJLM)4-Soypr4)Cbr6YP?7CO&UKGNBG7-TUisO%nT$}DzrUi~-Qx;`&ikVc{=dB@n`P}%t+;chy zv{*LVSRMrek9gsmk&a1G)g);i{FCo)pI(24p7s~%l5!Ws8J%rKdm9(o!5mZU(#%A} zI8<($jxn}SZ8i~9zPjdkv35!p*H=Axt2S!7@_y$T3eUMwFS0I0bOc&|Wip0!v!QQE zU)H37V)O}EaC42$L$7Evr+uQEM5?AgqHt+b_@zfEO4dCA3V=T&>Gc}h!`PSG`>w9U zhpB(h-jx->5;TT>3R^?@PETQwVZn|s)mHN!4O&u0B&yFvu^TjCkKdV z&X{H*ka{IFCCv#v7t+;?VlxRa<3Gdv+6OepbA7Z*X|}jeV}oT3Mz4h%KyXDD_)v2k zZWW8yEgvO8l71;G5dfiUEtyrbT@? zzcp#kZtUsi#Z_k|iPFkZ1UxhMM<#&}hUTaYNz;?UJ(;U6p|J%P(e(8W2LhdOR8<~* zz8#6#CzK|R)x?jL-VO%&K|#pAoQpGpfb)x63w|k}^u`M!MruV1uq+Z`Qe5%QY2poo zm1pi1^zq+HmcCklRH$tS(alE^?~S_Cb!5=hdA6)#KN@|cdgFzrdC^+{uO z?Qk@0tYmNLc63?4sL|tyngDnW$IYA9509c0wG!D21%cSnp2SNBg{-i}eh$lYFLyU% zGkjRXOAM-1U^(+a9uy+i{L5<&v`un9TR9M65UAs0$FLwjra z9GpV$Y-^ygb1664aovw=(nW!uv1SFyAu^~bA$3m?URy(O)i1|Ghl2sYkRVjv+c??t zkp5ZAp~49DO>l+AM?hGx_R^w^<`TDA+_TsIqF-L$`M9zO?%P*0waq%%dw{#R)N36o z;GbjS%%Th+vh~)RmB4i(Eps+BvyGk|-?4P!@1Gr>Y+rIbPaO!$2K$_cS}@C=A3SPq ziVvK-9L3^wpL@+^nDJ`Ey4=RkeAmTrmQKWI!W7D676`asIM*q8yPmh=)zY}6{9f~R zSMAxiw<{@sv8(@N$|YcvAh1GB8xuO;;{M&VU%I=xIoki9b^o^Rg7`7z9!|W0lfWM` zLmi)ED{Vy|5E~XA@WnDc?N^I6Dp#y&j<)*@&1>0#YnOC zjK_P^SYOqMV#QmxIXm?%l>*Ih%*bv?<%sfMW%k&n_C)qb*jo^0h&0`C`SZvtem>ys zJM`)_)lOkRlO--HNPnu7xN5g{8NZG6Kl3Ln92+#b_`kIDY>}0mD5#l*Ly0**37P-= z8OS(7o!t&@CR(qY%w3Is8lAfGKLK!!JI&#s0IN_tMf-%^V$V|E<jPa>Xsshq0Fr+Q+oJvw{;T4j;fnu4{A(jB z+k2`MieX?l9N~Yl@_$1$LfyXq!qNW~>iAQYKe_$CQFt2u73CMx|4)=Zxv{@dgj#-~ z{K=I46W~vR)o%bkXukQ+Wb*%^Tm32eXXg2DQQiK(ME}e~{}bWQV9{@coy9-<;9o;W ze**p)d-)BxxAY6}kI2ivMq>U1{nMfUH_(+|p#O01|0(^?HSlj)7?|?|7?}UHBK}kS zpR1L>i$lKtP5eJ=mp`Td`9k=+^viF5lm7jBP*;8e9Y{Y17Z%JRbes&H{Ve@ICVdX| literal 0 HcmV?d00001 diff --git a/tools/panle_to_json.py b/tools/panle_to_json.py index cc4b3611..b226f638 100644 --- a/tools/panle_to_json.py +++ b/tools/panle_to_json.py @@ -2,16 +2,27 @@ import json import asyncio from pathlib import Path +import httpx import openpyxl -from ..utils.minigg_api.get_minigg_data import get_misc_info - -version = '2.7.0' -version_old = '2.6.0' - R_PATH = Path(__file__).parent DATA_PATH = R_PATH / 'blue_data' -ETC_PATH = Path(__file__).parents[1] / 'genshinuid_enka' / 'etc' +ETC_PATH = Path(__file__).parents[1] / 'genshinuid_enka' / 'dmgCalc' + + +async def get_misc_info(mode: str, name: str): + """ + :说明: + 一些杂项信息。 + :参数: + * name (str): 'enemies', 'foods', 'artifacts'。 + * name (str): 参数。 + :返回: + * data (str): 获取数据信息。 + """ + url = 'https://info.minigg.cn/{}'.format(mode) + req = httpx.get(url=url, params={'query': name}) + return req.json() async def getEquipName(name: str) -> str: @@ -26,13 +37,14 @@ async def panle2Json() -> None: 访问DATA_PATH并转换数据为dmgMap.json。 """ wb = openpyxl.load_workbook( - str(DATA_PATH / '参考面板2.7(上).xlsx'), data_only=True + str(DATA_PATH / '参考面板3.0.xlsx'), data_only=True ) sheet = wb.active result = {} char_result = [] char_temp = '' + title = 0 for row in range(9, 300): temp = {} char_name = sheet.cell(row, 1).value @@ -52,78 +64,26 @@ async def panle2Json() -> None: equip_main = str(sheet.cell(row, 4).value) g_atk = sheet.cell(row, 8).value - other = sheet.cell(row, 9).value - other2 = sheet.cell(row, 10).value + other = {} + for i in [9, 10]: + if sheet.cell(title, i).value is not None: + n = str(sheet.cell(title, i).value) + if '加成' in n: + continue + if sheet.cell(row, i).value is not None: + v = float(str(sheet.cell(row, i).value)) + if v: + other[sheet.cell(title, i).value] = v crit_rate = sheet.cell(row, 13).value + crit_dmg = sheet.cell(row, 14).value - if equip_main[1] in ['生']: - key = '血量' - elif equip_main[1] in ['精']: - key = '元素精通' - elif equip_main[1] in ['防']: - key = '防御力' - else: - key = '攻击力' - - if char_name == '夜兰': - key = '血量' - elif char_name == '五郎': - key = '防御力' - - dmgBouns = sheet.cell(row, 15).value - defArea = sheet.cell(row, 16).value - resArea = sheet.cell(row, 17).value - power = sheet.cell(row, 18).value - - if char_name == '七七': - power = '153+1174' - elif power == '/' or power == 0: - if char_name == '托马': - power = '14.40+4829' - elif char_name == '班尼特': - power = '12.75+1587.82' - elif char_name == '芭芭拉': - power = '35.2+4335' - elif char_name == '早柚': - power = '159.74+1280' - elif char_name == '琴': - power = '452.16+3389' - elif char_name == '申鹤': - power = '攻击力' - elif char_name == '五郎': - power = '防御力' - elif char_name == '云堇': - power = '防御力' - else: - power = 'any' - - action = str(sheet.cell(row, 19).value) - if sheet.cell(row, 20).value != 'any': - val = float( - '{:.2f}'.format( - float(sheet.cell(row, 20).value) # type: ignore - ) - ) - else: - val = 'any' - - if char_name == '辛焱' and '盾' in action: - power = '2.88 + 1773' - - # temp['name'] = char_name weapon = weapon.replace('试做', '试作') temp['seq'] = '{}|{}|{}'.format(weapon, equip_set, equip_main) - temp['action'] = action - temp['crit_rate'] = crit_rate + temp['critRate'] = crit_rate + temp['critDmg'] = crit_dmg temp['atk'] = g_atk - temp['dmgBouns'] = dmgBouns - temp['defArea'] = defArea - temp['resArea'] = resArea temp['other'] = other - temp['other2'] = other2 - temp['key'] = key - temp['power'] = power - temp['val'] = val + if char_temp: if char_name == char_temp: pass @@ -134,10 +94,21 @@ async def panle2Json() -> None: else: char_temp = char_name char_result.append(temp) - if row == 263: + if row == 296: print('ok!') result[char_temp] = char_result - with open(DATA_PATH / 'dmgMap.json', 'w', encoding='UTF-8') as file: + else: + title = row + result['旅行者'] = [ + { + "seq": "护摩之杖|无锋剑|生火暴", + "critRate": 0.65, + "critDmg": 1.55, + "atk": 2300, + "other": {"生命": 16000, "元素精通": 45}, + } + ] + with open(ETC_PATH / 'dmgMap.json', 'w', encoding='UTF-8') as file: json.dump(result, file, ensure_ascii=False)