From d8f18d407c50dff40f0ef4adab1419890c49e2a7 Mon Sep 17 00:00:00 2001 From: serr Date: Tue, 4 Mar 2025 18:33:13 +0300 Subject: [PATCH] study folder add --- crackmes/study/1/inp.py | 14 ++++++++ crackmes/study/1/solve.py | 60 ++++++++++++++++++++++++++++++++ crackmes/study/1/test1.exe | Bin 0 -> 11264 bytes crackmes/study/2/example.txt | Bin 0 -> 21 bytes crackmes/study/2/solve.py | 64 +++++++++++++++++++++++++++++++++++ crackmes/study/2/test2.exe | Bin 0 -> 11264 bytes crackmes/study/3/solve.py | 0 crackmes/study/3/test3.exe | Bin 0 -> 11776 bytes crackmes/study/4/test4.exe | Bin 0 -> 11264 bytes crackmes/study/5/test5.exe | Bin 0 -> 11264 bytes crackmes/study/6/test6.exe | Bin 0 -> 11264 bytes crackmes/study/7/test7.exe | Bin 0 -> 11776 bytes crackmes/study/8/test8.exe | Bin 0 -> 11264 bytes 13 files changed, 138 insertions(+) create mode 100644 crackmes/study/1/inp.py create mode 100644 crackmes/study/1/solve.py create mode 100644 crackmes/study/1/test1.exe create mode 100644 crackmes/study/2/example.txt create mode 100644 crackmes/study/2/solve.py create mode 100644 crackmes/study/2/test2.exe create mode 100644 crackmes/study/3/solve.py create mode 100644 crackmes/study/3/test3.exe create mode 100644 crackmes/study/4/test4.exe create mode 100644 crackmes/study/5/test5.exe create mode 100644 crackmes/study/6/test6.exe create mode 100644 crackmes/study/7/test7.exe create mode 100644 crackmes/study/8/test8.exe diff --git a/crackmes/study/1/inp.py b/crackmes/study/1/inp.py new file mode 100644 index 0000000..08f8b09 --- /dev/null +++ b/crackmes/study/1/inp.py @@ -0,0 +1,14 @@ +import subprocess + +input_data = b'duggc{fp\x14' + +process = subprocess.Popen( + ['test1.exe'], + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE +) + +stdout, stderr = process.communicate(input=input_data) + +print("STDOUT:", stdout.decode().strip()) \ No newline at end of file diff --git a/crackmes/study/1/solve.py b/crackmes/study/1/solve.py new file mode 100644 index 0000000..2f9c06b --- /dev/null +++ b/crackmes/study/1/solve.py @@ -0,0 +1,60 @@ +# в случае успешного пароля выводится correct + +import angr +import time + +GREEN = "\033[92m" +PURPLE = "\033[35m" +RESET = "\033[0m" +RED = "\033[31m" + +def puts(state: angr.SimState): pass +def gets_s(state: angr.SimState): + global INPUT_DATA, INPUT_SIZE + INPUT_DATA = state.solver.BVS('input_data', 8 * INPUT_SIZE) + state.memory.store(state.regs.rcx, INPUT_DATA) + +if __name__ == "__main__": + # Загрузка бинарного файла + print(f"{GREEN}Uploading executable file to angr...{RESET}") + proj = angr.Project('test1.exe', auto_load_libs=False) + print(f"{GREEN}The executable has been uploaded to angr!{RESET}") + ENTRY_POINT = 0x140001000 # Адрес функции main + TARGET_ADDR = 0x140001087 # Целевой адрес, нахождение на нем означает что программа взломана + + # Хуки + proj.hook(0x140001033, puts, length=6) + proj.hook(0x140001043, gets_s, length=6) + + # Перебираем размер входных данных от 1 до 20 + for INPUT_SIZE in range(1, 21): + print(f"{GREEN}Trying input size: {INPUT_SIZE}{RESET}") + + # Создаем начальное состояние + state = proj.factory.entry_state( + addr=ENTRY_POINT, + add_options={angr.options.ZERO_FILL_UNCONSTRAINED_REGISTERS, + angr.options.ZERO_FILL_UNCONSTRAINED_MEMORY} + ) + + # Инициализация стека + state.regs.rbp = 0x7ffffffffffffff + state.regs.rsp = 0x7ffffffffffffff + + # Запуск симуляции + simgr = proj.factory.simulation_manager(state) + start_time = time.time() + simgr.explore(find=TARGET_ADDR) + elapsed = time.time() - start_time + + # Проверка результата + if simgr.found: + found_state = simgr.found[0] + input_data = found_state.solver.eval(INPUT_DATA, cast_to=bytes) + print(f"{GREEN}Success cracked! Input: {PURPLE}{input_data}{PURPLE}{RESET}") + print(f"{GREEN}Pwd cracking time = {elapsed}{RESET}") + break # Выход из цикла, если найдено решение + else: + print(f"{RED}Failed with input size {INPUT_SIZE}{RESET}") + else: + print(f"{RED}Failed to find a solution with input sizes from 1 to 20{RESET}") \ No newline at end of file diff --git a/crackmes/study/1/test1.exe b/crackmes/study/1/test1.exe new file mode 100644 index 0000000000000000000000000000000000000000..afdc545ddb8529c303d78e9ddc65b957ba33c1a5 GIT binary patch literal 11264 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 VU&w!<@CE6G>nr#i{r~KN{{-rK19JcX literal 0 HcmV?d00001 diff --git a/crackmes/study/2/example.txt b/crackmes/study/2/example.txt new file mode 100644 index 0000000000000000000000000000000000000000..bc07a7fc4909462c5008496c9be15674516773ec GIT binary patch literal 21 ccmXpsGWJN#$;sDI2rtSkNp;K2NmXP307r=ig8%>k literal 0 HcmV?d00001 diff --git a/crackmes/study/2/solve.py b/crackmes/study/2/solve.py new file mode 100644 index 0000000..a4e124b --- /dev/null +++ b/crackmes/study/2/solve.py @@ -0,0 +1,64 @@ +# в случае успешного пароля в example.txt программа допечатывает в него "Hello, WriteFile!" + +import angr +import time + +GREEN = "\033[92m" +PURPLE = "\033[35m" +RESET = "\033[0m" +RED = "\033[31m" + +INPUT_DATA = None + +def CreateFile(state: angr.SimState): pass +def ReadFile(state: angr.SimState): + global INPUT_DATA, INPUT_SIZE + INPUT_DATA = state.solver.BVS('input_data', 8 * INPUT_SIZE) + state.memory.store(state.regs.rdx, INPUT_DATA) +def WriteFile(state: angr.SimState): pass + +if __name__ == "__main__": + # Загрузка бинарного файла + print(f"{GREEN}Uploading executable file to angr...{RESET}") + proj = angr.Project('test2.exe', auto_load_libs=False) + print(f"{GREEN}The executable has been uploaded to angr!{RESET}") + ENTRY_POINT = 0x140001000 # Адрес функции main + TARGET_ADDR = 0x1400010A9 # Целевой адрес, нахождение на нем означает что программа взломана + + # Хуки + proj.hook(0x140001046, CreateFile, length=6) + proj.hook(0x14000106B, ReadFile, length=6) + proj.hook(0x1400010B0, WriteFile, length=6) + + # Перебираем размер входных данных от 1 до 20 + for INPUT_SIZE in range(1, 21): + print(f"{GREEN}Trying input size: {INPUT_SIZE}{RESET}") + + # Создаем начальное состояние + state = proj.factory.entry_state( + addr=ENTRY_POINT, + add_options={angr.options.ZERO_FILL_UNCONSTRAINED_REGISTERS, + angr.options.ZERO_FILL_UNCONSTRAINED_MEMORY} + ) + + # Инициализация стека + state.regs.rbp = 0x7ffffffffffffff + state.regs.rsp = 0x7ffffffffffffff + + # Запуск симуляции + simgr = proj.factory.simulation_manager(state) + start_time = time.time() + simgr.explore(find=TARGET_ADDR) + elapsed = time.time() - start_time + + # Проверка результата + if simgr.found: + found_state = simgr.found[0] + input_data = found_state.solver.eval(INPUT_DATA, cast_to=bytes) + print(f"{GREEN}Success cracked! Input: {PURPLE}{input_data}{PURPLE}{RESET}") + print(f"{GREEN}Pwd cracking time = {elapsed}{RESET}") + break # Выход из цикла, если найдено решение + else: + print(f"{RED}Failed with input size {INPUT_SIZE}{RESET}") + else: + print(f"{RED}Failed to find a solution with input sizes from 1 to 20{RESET}") \ No newline at end of file diff --git a/crackmes/study/2/test2.exe b/crackmes/study/2/test2.exe new file mode 100644 index 0000000000000000000000000000000000000000..0da5e8e34bef5bb40f25b0f9103931fcf88f7f1e GIT binary patch literal 11264 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 literal 0 HcmV?d00001 diff --git a/crackmes/study/3/solve.py b/crackmes/study/3/solve.py new file mode 100644 index 0000000..e69de29 diff --git a/crackmes/study/3/test3.exe b/crackmes/study/3/test3.exe new file mode 100644 index 0000000000000000000000000000000000000000..1fe83d4c7d4973397b08644ae3d81eadce6c960c GIT binary patch literal 11776 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 K*U&#_3;ZXtL6zJ9 literal 0 HcmV?d00001 diff --git a/crackmes/study/4/test4.exe b/crackmes/study/4/test4.exe new file mode 100644 index 0000000000000000000000000000000000000000..b0cc282a3ec1f783a063e918581de1afa04ebc70 GIT binary patch literal 11264 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 literal 0 HcmV?d00001 diff --git a/crackmes/study/5/test5.exe b/crackmes/study/5/test5.exe new file mode 100644 index 0000000000000000000000000000000000000000..8e26b76c0f367bd48d9baa9d3521d48d4ea3e7f1 GIT binary patch literal 11264 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 C&;ic? literal 0 HcmV?d00001 diff --git a/crackmes/study/6/test6.exe b/crackmes/study/6/test6.exe new file mode 100644 index 0000000000000000000000000000000000000000..12f8afa1b7fccdaf40ee9cc084f43e68731fc98e GIT binary patch literal 11264 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 literal 0 HcmV?d00001 diff --git a/crackmes/study/7/test7.exe b/crackmes/study/7/test7.exe new file mode 100644 index 0000000000000000000000000000000000000000..2dcbea63fa053e55d0ebc0c2c9872d2169ad60ae GIT binary patch literal 11776 zcmeHNe{@q-p1*068rp^gXq>8`uMlX}X(@zpifuKeDZVnn$v{C?(KMv5ZN@aoBrjN8 z#%WDEV|iwloyA=|$6XQ8RnHs`{y0uS*G(yFTd8x9anFLzY8}ryL0Igl3+Ooe_Vc~( zrKADpU&vV6vv5m{9k8w8}};^kKt=TSZTs)MuH z^Rr$n8#H)cD{JWt#)W7s(h>7_2?2jN9Fc`Bk`POTgIES5rtt~&hS zzrS?N`R6{&=0!cihXUyC)U#(QIDFwu4Trxtqw)8jxf-;;=h-t$0k1j#?1ysz-%A}l zb1jFS4>kAj6PdM9OEaz1c>3TW~ccSwM0+hfsF7g0bfbX=QAJI`T5Mn|DY|q$p$G z1Q=b&QO>$p;abF4O>R4ZvB_L|Mx!cO>XyOVY(+r^QP#%+j3)tBRmIx;vY)X|st1G3 zMJC_mBo};CrHL_-90LaViY-CTNiN3HRZ&flkI{=tl7kO&lZ*7l;;{gj+$XI-NbVZs zoaEwiQYZpJ@)7xp%W;AjT5>VADvN&&H4lgbn;o`|V()1IK_V)qPnH5W4~qkR4jVYm zvtr89iMbXBWJh(Ab8N)zsOUk{CTIE}KpM1=4@9+pga{Iq<6`o>YVErnZ9OTEL!@?s zJGHt^R7SU7{GM>U{3b#tk*9WBtz3-#2}>pVulgtO~AC54BeklT))#gu&>X;O|fr5cQ?{b}Cw5!Ido;!K~K zjT+V717Z*!gWUammPF@x2J0U5Lk?Q}V((#^&O3(3_0-;Oy{ZoasH(NhsbVZ)6NiRu z?dOJ6HDMSQhsJCtpTf!-A9t-6lc$9Pq&@R;5sLS)kd@I)hVUbVAI}sQGsYzbN;7Wk z6@6(rp1E-rl&35*K;|72ioIIHel+Y)C)RN~^DdYeelaBP0h;lX+J^}HJ1V}90-Zff z+{3K=A42jv4BfT-tm{5ZN9Jw#WXEyE^5f-!b{xsfhc7cn;5)vIYM6W_7ELD14U^|0TpCi|JVd#YkN78D|Cl3NLb9tgS+l4V zWm?ctW*!PrIiL9!hozZvK#wvaD!)?98TPrVVmki?4uYdMxcbf}Oqn^5a2|Wcka-rm zl;KmCLE=$OqPAx{mLFt3#w07lqOuvwN|CW-lZUH)`g|;cO*^%zDFvz=$vgt-oq!J$ z9_N(=h@A zrp9YENf+>&z#1_v0EfCAF?|CV&Gm?>OveThSxme$P1AZAwHz@TsOJlO#q#7e;176= zLY8R|70dluCK^r_!$K7%!8;rM|UizO4}hen^sZzrD}hY zYB1K7VzSLq0}HUlhze>w2y?il+M~Qe%qS5Rv@33Q2&(;VG*d^CYTou|(4Wh9$8EGd z@cDQcD+vnABvCOguBMSGqWP3btR0n0oasr?`i$lNrPwsiEY}v-e#5DAXshiN))!27 zp|XGMMRJkVJ$#?319awb%zoyd;FP{}!nizrswA^tBW5|rGLHd0^}!A-Q(DPWx_aur ziKa|Bk?6p3yX*TIlV({(|62(MJa#E5{u|E24wkZ9Npw<^sX`ylc5B4+WDy3C992KI z{>bznRlo;KX8?#K2=W}jE2bfohW!T3gafdaW!hmD_erTo85&%BD`V{|O(!zgB)i3c zrT8SKDrFx7E#|-4yOQpZ3EyB58nv%%C{46@u03S^MMH_0`d+D+e-vnem@4k^q>5h^ z2TB~xwXe&i%9>(N?NF>xS!K>2^3DL{6> zQ$81y^)EwMMbsrO$*jUsKV`-K0Pj8lcIH|zs4vm#{*|a4%1#)Mn-^7h;@t5o(&vt= ze1{$8d#kWPR8B)c!0Osp4$EF#zW1HV2Wgqq4ku(WDU~8>*OsdGC0ItH(o`xAG}%pVe@@LU3@RXYJ7aZVR-xy5HV$X7rVmn6r}U! zx9C<(njM+6NCzC0Gl)(jmJ40jEns9SLlv}NkWNAb+Kg9o)%~NqFS=+A^iwxv2xm47 z?xtS(e%gN@*?A9b?TXd{x1d(s*t~X}sDLfBKdAPF(3w1Mpq&`{aB&k;O_SDL@QB+X zQm6026SRN1RQoT1;_^_8FgK^f{LIU=S>lp<g+Dlh1A+9zW^i#|YocNWmc0V%XOo z&{nWHQ7s0$G~UP#?L@mc8op_ETq2R0L_Y%Q3 zobh725C=*{#b?f}(eTVMz-hWu3qGb@ELDFR;M80k`81#c)$XAgNe-LE+IM0nxnhcC zpB7J=U8w~lTHExDwzjWmYoq&6DJihwS~_Ok>sE%EoNu|6BMrTiVOa__^#1N9DV%UC z$COFuSVOAO&{Q;P-P_RnQ7|ku4;URyMX$m)M&(lkk9nZQQJnCKNz03iFz1UWZ&a=I z=>h|jE9zSd@|av!A0=?PY5%96tI6}iT@De~F#3n#SsxvWm$((v&Z`+~NRArZ1EzkU zr!E0+JCH%F4ty?%zptI#zJzQ=?{4KS>OI@H_27H6;)P8`LulKKCL^YD7(&|J0~QBR z>%rfaSd)LPF|1&`2n$i8LbQ&QQ>hQB`HTr!W9@F7VI@D?z+oRJz(_xPeWgT|v zu!Qb&NL4yqrNcXPxLt=#himBiiFBO~1sxXXa8j3hQ-^6C?$hB;9co(e;G>W0Rvq4< z>-nipM|GH$|A6jIIq8iV^!N;UFD{XkmgsPm4qwvc3U&H%UC+;S*r&s-I($l(Z`J8d zI$Wc}8+15dho9;46FPiI=WEt5_L)w1&fq&P)7~+&kX@zG!VH+zb9}D;?wMui(5CZ8 zzodSK_!Q}KY5FE~h$T8LNvxasSr?x0LQG;+Oa@KwldBV<5GmOfNyL0ocT@_S zAMf;aN->G+&%Whi!Lkj=yB)}-ylU#5w-_WnTTY^Gaz>p6{5~``E=Im=db`;g`Gu06 zTmBfytovuC?#VKJJ{DelUicX|v(X=s?r~h)j`O;mX5CJk4l7nqm*-Q^!+K_#xNg0B zeWK*~oBnfg|Em4I&pJPxcWeo{+UN5%%dK%?s}$QNv<2JSgMmay7TO~*0ijWb>Mu{( zJ{AC>O#0>{-_+RRp?7b3=i~3;j;=7+Z1PI%Lx5SHqq>?cxhj{}&6of=D5?t5d$!|S zyj_|0lwDO_9cb@htaKq`_{f*P_Yona0!Po&ayY0sVJtzc0}5 zDtpKtZGQ0VhTnZ~A*4M(=Q)Yj4PMSXt{@&i!*HPMauf=1H2=@CzjL@in{jol+7gdb zb@q3g?C%?_mC=9r1HWT9s+R#}tzh(!jT(>JMEtKxmtAFImKEj9VsNm6R*V6$Ne}d8 z<~(MWm+;?h?nMmK_{&HU@GMOvM416s?t;)&;UJ22f*X-Lb7)xK!)<8#ou+j+H+h`PtJ>%` z^lM0Ni^}VykmQd`jS;lRZ@K@fac`1j5w|0+A3w#j5sl}T;&Lpqjrfe6(0D|+>8IVp z8m)ECMGk44hQJRJ!B|%RE%>~3Z*1^3XRR>fOm6hWaU%=jFvgXPEX6pk06&n3#iX!| z3tK>n%E3q&=j}zfzJPA~4XjJ*ic2!~oW^wm(L&T*osFi<_m^{ za?l?N-aS<%g|`M{k#HA`rZe2v0sXpEwso$^b(#(s)WyDi0ryF`e@fj!=vc&HDv%b< z)^_^)2l|2C=ZoT^0!sq)J}^bWu1jID*47S8YhBNLF{vXMr;*E@2#+=&e(m;$$PGTk z3VQH?3~liT?xgcnAG0RPB_+~J-U>^1`M41Vt=B-LOS5UkG=D_GT&e8eLJ?b+)4yKR zo(Ko{j9!V}VweSP1?ynsj9?ff^GAb~UGd7hg5gR?RN}8d}Xv;cD}~X+u~G`nINQm}5c14UFxh)%~T_%k!{E8?`0kjYR?y zt`LV!Em{9%S?r1Y=D1EoVym$?z*cWeic^qAjo(Y)D(sbFxB_?i!vTx}en#icFKTaY zW8corN_|<_}(;UshFJE=b`(q%9cks4w5pvbwUST!_oKH2OohS=5(rlj7w!-e4)L^T*>- z*Ot&W0SdzL`tn39e0@C7DRuedm0iI=EE12j%aypkTEi`3?g1-Igy?2zJ9mATbT z-DpZzB#*RJ3JD=9>&yM|=J3|Yol>k^NCX=Kbm-TYxBEkJsa#k(rKfJ`m-kY)bec_d zOQ!~h=5$ zA4|J-WVV+b2bC2Hh(lt9-E@RA$N7ESV2BhNV^%qwoXujdL zqc^ahO?-1!x5@M7ti}z2m=KAETcW;J!S4%&!m_Yl5~A^t5C{pi4=op3!%b4D%{Iwt zsBY`~w6pxs&a;`P@>K5G3ef9*@x+-j4xc>2du^WoeTP-qssX(S+zR)&Yzc0i%~jn|!j5vDJ34 zz~FMz0JDl4vo6)em`H{x!vkBf%w_|n;$|#W8qo#$8o}Ulw*zJsH|dMUqJHqWO&WlZ zKG-U|xVfAZ3`3A?M7H8`cM@@}xEWh~jrs~B3y587oz_)i$K?Sc6w4oO18^M|yE>gI z;`G)!X&0H8w9T5z7|4=#kaeyTb*>aBAs5t9JSokQf^Ue*h?p4BWZ9GSINj7;KqIT} zZbB_48=VcJ(x*ALL3CS6e(*(;{gt;xh&EJruYrX6s10Jxu^+YvL^Nm)nD^E-u7amR@nLv|#5e--{W?iDT z0C%O(T9W4UeUMkDgQ@fp^TJYSB3beYu}gLqtb$mXzSw!#=+2bA^KLBNU4F&AU3LoU zzr!Xw1{GWL9L5qKn(Uo((7NqJ{DEG}LtydkNILeCUnFfE0P0UC@dZxm#$CfMoFj`T z9bR2PB!TZkpw}`5y`h_3vbtX~@v(NCRA<1J>Pgs6R0hRF1(R=uFR39uF?lNdu{zn1 z1AkF+HOH?J&(vqKWT%nrVqMlMDwEYl45Z$O3NEXDox?)47|^5iiptxHRUP_7)3BYd z!9Xzd3U}v~xJ8`;3D@c8P3jBKrKB(21c?K>L}mL{cspc1z$PncQCW)lJG!L%LxJ&G9yT zRa9Q29K@wz?)B4XuV_+EBoYWuGFw-f8G`p z5H$XyTt8fgO_#2suO2JxFIiThaodSwWEgvGdb{O*(CR;7_tk%eQ94s`b9w60H1)7f zOmv-4e+=}}#T_`NbdpDPwO8e%D^t$JTX5Vqen++FGb`ElZrllrT|x9#f5>@=U`gAj zL??8aQjFnhwudeCR2Rk@J$Joo|Cj1% zV)9#sV(tLYJTaNy?n&mqA$Co3)>odA3zY}*J(WGtNy=htZjYxj6@?SOT5{<<*J*Lv zY28kVEl&1bve+cpIS(+0o4qit+k3}3^|zR;>oj(3a_7783F7x1Zy}`X>(FJ|tJ0L; z?Kmf!J5R^+RSIedF!KO13m&z(n5g2P)T0NoP~R77fy zLl72~e^4PNCZ8N6zH$-~Lv!3lEpU@XnMjcw;;mfhTC~6_;h8tkbG?Dqu}|(NKTuh<0IyN z$|NI)Tk9<2d5Pdns|^SjVppN4c&+LKI(}MCe$7Nbu zB5f5b--}-0ipiI~xFFJ(PygdvPeKLO#p8#kZ!m&t4)d@R}OEzo#u+sYn69t^vu}yqwi0QO{$yR zgT8m5ORr@DCPLb4yKH8l_M^XqI*P0pc3LvdTe7DlVPYo-K1yIKNwL1tBk%`M;=J;juDXtY0xpp{j$ zqN5mBD|(sNukbp>>!~=jS`p>vTG4sViEw;9uN!&2gx3|kzLVFKgK9<1yr$pDTG8)$ z-(U0k46plm{TQ!IzYLqh2|sBI{xLFBu*!DUYaA zV2yXG6Yr0BloQognAxM8l5eb5+}5T32J_WHPwpwv-{+Zgs@|V|K$%t`Dm4X2Q2?x0 zYE8Lzd9wW_z{Jq7C%4bz!Z0TuzA)tj#LS{&{AguajL>VphqR$_O`ObXFWQ1NxL4@c z*+o%75_bx@^B#m8B(rpl^rKaw7T1Z63hZ^tzN<&+0Uzu9s{AioVE9gb0-qSriY$c6 zbOV~{Cp5~f1}rz=g9Z#5u-$+Q=jrmd8?eBDSB&-{1HNIv!v@@Cz~Q-i|4dzO%;NzA zt~22G4EUg-KO_In*D{z6kB_5YHu`0xrW@mx8}RRpcDF(Q$msvL0UtAi_>sZS%Q!+>Q5 zU;Ui+apI$-yG++NWI%+FF-2mVn2)vM9c7S7tdz;1W%OPW4+b+zGVfdwdDsd(yPbHD zgi^`0u}Jg&_KekVGci}2h80wvS$2Av$O$Gi(2<^InRtFiv^nhwv>?UOR# z_;!BBeunv{W3)T3zyICF{Q3+yV8D{QuP^_nnjzoXcGf;#|FY$^%eR@9RP-F~tvj~z z)Txn+Yc5g-;`P>sL&dTnM>h*iVId&T66$4PV;~r$4-HL$=H`Gu9+ZXVa8%eFj?eOD zmCP9Q1A`t)cksS~-Cxt_q4(JZa320X+}Roen-$>q-Q9p0p0lisEg8ex#F(JJUoQ>N z`)udesULiRzoITJEAuzEFg6GpKbBZ&&9X-4>Y8ej85+kUraG3lhUA9F@ajp7jf~@Q z=Irb->Z@xYXC2Gq`U=MI8hF>ju{{L#Lk`wvd>??nG1^m|cD99s za%&T4I^)Bma?UMVwluAWY1sB+W8P8O@2s!p2lA4_Xiq( zlm2~yzN%ivUF`Q-dfwFbrwbNMiZNpi{=S2K3DmUF`VYUS`n9X!E z%ZniX!GTlg05!~np9*>9Ib|lZiJ2GUrJOyF*_$RZ`vNPoFPj`0f|JAatO_si7b8a| zA12s_XL}ZH=xH!bG_i^6q1S3=)~Gp>yDq0}BI%wDzcpU)RZeH@H9SqwMbMOEVmVls z$!5kpCo)@kUW3VDVU7hynZwl0@~CZ+nN3=d$0n8MMNE8-nCAiuvrnBIp>mglb z`kv@qd_tmoQo#7wr%c%n-d^zBM(#p<58d0duuWOK5O~9o8_eSU0KDCh6S8FOz&tO9DZOv2W(BiUwqf6YsE^sN~a$Rcsfl35H{m z=nFML@SAnZ9<1}Y%1fIlhq2-gs`17ml0SgE#=C*bL>apUe1AL|l|r&t+T@oaav&VS z{c;_y*B{0!1AKSAm$gc*F$oFM%9>>>9&D^%S~q_|nLdu2d1KNBZ*w3hOHpW)@bMBH z+3Sl$yz=IV#3n*F81a}CZS~0;q$p-l$Vho}pd}uaydhsS8s6yjMO)hNQi^#4p@1Cl z1p`|~o1{=%AQ}#}V$yVHd0U|0kjnJV7P(v3feE#;Z(PH@67o1{Qvf>VFiaIlqdwPW z`rc0;l)c^vZeq;DPrvs^Da>m+W~}#h0MmO{F>h3A3B+jS@&;^7lNVoieL*sV7rTTJ zydZ^XJZ=t8eN!3EH*n z=J6V0a#J9jEikUXzS3-g@ftQrzQ~yN|1>X?gEhX04F9Mxyzr02^Mu2X#v@CNRn~=& zU}4`ZXjvJE%5h(CMF}?)t3u z`X=^`EN&zBBrw^eT+C$oX82cYBetkIMlpaewj;NG^pGs~zyn1%AKQx=)k^E*EiF{5BqvUkmtSJS6`tpbPmV;R^u!@svQG;IP3b zcoV)Kk<1Lhl?J{VFpP(EMgV8vhe!kZt_F-ykk0SZE~s^WMw zv@qu1Ahr5pb6W%cXgC&bmgnL+U+9aqmbT3=7H}N|nx&Y$GJ7b|E zH}U$Ep#RU@;eFlvQv3S$4eT4*H?oiIFWX