From 0c052c5a53bcd316ac0ec383bef3f8bd1b8691c3 Mon Sep 17 00:00:00 2001 From: Aleksandr Meshchriakov Date: Thu, 16 Jul 2026 12:59:23 +0200 Subject: [PATCH] feat: add demo report import workflow --- input/demo-periods/Ф-1_2025-09.xlsx | Bin 0 -> 11584 bytes input/demo-periods/Ф-1_2025-12.xlsx | Bin 0 -> 11628 bytes input/demo-periods/Ф-1_2026-03.xlsx | Bin 0 -> 11615 bytes input/demo-periods/Ф-1_2026-06.xlsx | Bin 0 -> 11624 bytes input/demo-periods/Ф-2_2025-Q3.xlsx | Bin 0 -> 16920 bytes input/demo-periods/Ф-2_2025-Q4.xlsx | Bin 0 -> 16920 bytes input/demo-periods/Ф-2_2026-Q1.xlsx | Bin 0 -> 16927 bytes input/demo-periods/Ф-2_2026-Q2.xlsx | Bin 0 -> 16940 bytes input/demo-periods/Ф-3_2022.xlsx | Bin 0 -> 9616 bytes input/demo-periods/Ф-3_2023.xlsx | Bin 0 -> 9648 bytes input/demo-periods/Ф-3_2024.xlsx | Bin 0 -> 9655 bytes input/demo-periods/Ф-3_2025.xlsx | Bin 0 -> 9648 bytes input/demo-periods/Ф-4_2024-H2.xlsx | Bin 0 -> 11510 bytes input/demo-periods/Ф-4_2025-H1.xlsx | Bin 0 -> 11491 bytes input/demo-periods/Ф-4_2025-H2.xlsx | Bin 0 -> 11510 bytes input/demo-periods/Ф-4_2026-H1.xlsx | Bin 0 -> 11503 bytes input/demo-periods/Ф-5_2022.xlsx | Bin 0 -> 11842 bytes input/demo-periods/Ф-5_2023.xlsx | Bin 0 -> 11843 bytes input/demo-periods/Ф-5_2024.xlsx | Bin 0 -> 11846 bytes input/demo-periods/Ф-5_2025.xlsx | Bin 0 -> 11847 bytes input/demo-periods/Ф-6_2022.xlsx | Bin 0 -> 17107 bytes input/demo-periods/Ф-6_2023.xlsx | Bin 0 -> 17136 bytes input/demo-periods/Ф-6_2024.xlsx | Bin 0 -> 17151 bytes input/demo-periods/Ф-6_2025.xlsx | Bin 0 -> 17146 bytes input/ПЕРИОДЫ-ДЛЯ-ДЕМО.md | 32 ++++ input/Ф-1.xlsx | Bin 10322 -> 11497 bytes input/Ф-2.xlsx | Bin 11811 -> 16836 bytes input/Ф-3.xlsx | Bin 9962 -> 9536 bytes input/Ф-4.xlsx | Bin 10093 -> 11403 bytes input/Ф-5.xlsx | Bin 11560 -> 11911 bytes input/Ф-6.xlsx | Bin 20839 -> 17034 bytes .../core/migrations/0002_report_upload.py | 110 ++++++++++++ src/apps/core/models.py | 56 ++++++ src/apps/core/report_uploads.py | 165 ++++++++++++++++++ src/apps/core/upload_contracts.py | 3 +- src/apps/exchange/serializers.py | 19 ++ src/apps/exchange/urls.py | 5 +- src/apps/exchange/views.py | 35 +++- src/apps/form_1/api.py | 12 ++ src/apps/form_1/tasks.py | 8 + src/apps/form_2/api.py | 12 ++ src/apps/form_2/tasks.py | 13 +- src/apps/form_3/api.py | 12 ++ src/apps/form_3/tasks.py | 13 +- src/apps/form_4/api.py | 13 ++ src/apps/form_4/tasks.py | 13 +- src/apps/form_5/api.py | 12 ++ src/apps/form_5/tasks.py | 13 +- src/apps/form_6/api.py | 12 ++ src/apps/form_6/tasks.py | 13 +- src/apps/organization/management/__init__.py | 1 + .../management/commands/__init__.py | 1 + .../commands/delete_test_companies.py | 104 +++++++++++ src/core/api_v1_urls.py | 6 + tests/apps/exchange/test_api.py | 50 ++++++ tests/apps/forms/test_report_uploads_api.py | 103 +++++++++++ tests/apps/forms/test_upload_contracts_api.py | 35 ++++ .../test_delete_test_companies_command.py | 107 ++++++++++++ 58 files changed, 968 insertions(+), 10 deletions(-) create mode 100644 input/demo-periods/Ф-1_2025-09.xlsx create mode 100644 input/demo-periods/Ф-1_2025-12.xlsx create mode 100644 input/demo-periods/Ф-1_2026-03.xlsx create mode 100644 input/demo-periods/Ф-1_2026-06.xlsx create mode 100644 input/demo-periods/Ф-2_2025-Q3.xlsx create mode 100644 input/demo-periods/Ф-2_2025-Q4.xlsx create mode 100644 input/demo-periods/Ф-2_2026-Q1.xlsx create mode 100644 input/demo-periods/Ф-2_2026-Q2.xlsx create mode 100644 input/demo-periods/Ф-3_2022.xlsx create mode 100644 input/demo-periods/Ф-3_2023.xlsx create mode 100644 input/demo-periods/Ф-3_2024.xlsx create mode 100644 input/demo-periods/Ф-3_2025.xlsx create mode 100644 input/demo-periods/Ф-4_2024-H2.xlsx create mode 100644 input/demo-periods/Ф-4_2025-H1.xlsx create mode 100644 input/demo-periods/Ф-4_2025-H2.xlsx create mode 100644 input/demo-periods/Ф-4_2026-H1.xlsx create mode 100644 input/demo-periods/Ф-5_2022.xlsx create mode 100644 input/demo-periods/Ф-5_2023.xlsx create mode 100644 input/demo-periods/Ф-5_2024.xlsx create mode 100644 input/demo-periods/Ф-5_2025.xlsx create mode 100644 input/demo-periods/Ф-6_2022.xlsx create mode 100644 input/demo-periods/Ф-6_2023.xlsx create mode 100644 input/demo-periods/Ф-6_2024.xlsx create mode 100644 input/demo-periods/Ф-6_2025.xlsx create mode 100644 input/ПЕРИОДЫ-ДЛЯ-ДЕМО.md create mode 100644 src/apps/core/migrations/0002_report_upload.py create mode 100644 src/apps/core/report_uploads.py create mode 100644 src/apps/organization/management/__init__.py create mode 100644 src/apps/organization/management/commands/__init__.py create mode 100644 src/apps/organization/management/commands/delete_test_companies.py create mode 100644 tests/apps/forms/test_report_uploads_api.py create mode 100644 tests/apps/organization/test_delete_test_companies_command.py diff --git a/input/demo-periods/Ф-1_2025-09.xlsx b/input/demo-periods/Ф-1_2025-09.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..cd48307ce1eab6e10b89dda4e156c70e673535ea GIT binary patch literal 11584 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 iyZ4{2^*t@U3C@F!CM literal 0 HcmV?d00001 diff --git a/input/demo-periods/Ф-1_2026-06.xlsx b/input/demo-periods/Ф-1_2026-06.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..9d77c6f86039041ef142d42122f2e7fb5f1e18bc GIT binary patch literal 11624 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 literal 0 HcmV?d00001 diff --git a/input/demo-periods/Ф-2_2025-Q3.xlsx b/input/demo-periods/Ф-2_2025-Q3.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..86b52c6fb88d15f5a30e935a29b9c29f1f8b0073 GIT binary patch literal 16920 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

0&VS+^V$thZ+gKABHlgKDE2 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 literal 0 HcmV?d00001 diff --git a/input/demo-periods/Ф-2_2025-Q4.xlsx b/input/demo-periods/Ф-2_2025-Q4.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..4e6bb37757f40cf6214a9cffa86f23418a291649 GIT binary patch literal 16920 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 S_Rm)!f*(O(fJ21;9Q_~K6G*iH literal 0 HcmV?d00001 diff --git a/input/demo-periods/Ф-2_2026-Q1.xlsx b/input/demo-periods/Ф-2_2026-Q1.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..4469acc004cd9b6134a5cb2d7728048bfae47c9b GIT binary patch literal 16927 zcmb`u1yr0%(=Lj;ySsZJxVyW%2ZFmh1Pw3@1PLy|g1b8ecXtS`!5!|fzyIF7&-b7I zTlcJWiq%8+J8$*ORMk`6{jPdc+^{Y1{oim#>YQLs-x(hT%xMT`r?uS*py7D%`NyWdm z0TmBNtmnF>Xsw08RODgdK9zhIC15cU-q%Nfl!>SXVQPZx$Wb_V;9P6`r z_$m+&*Fw3(zJ17j3Gz~L`4)Z2MPpo%-2UO>tEJ^|0RuS=A={4E?Vfe{wPD_DX2h{P zX5#9y&Cyf%z6#rnHg*!;P!daOe?`ZQ;*a1TG_X})u6xNMpF^U6bzvm|@Zy$fn@)N6 zr9smTXvjca4M!K%v^cFlDVqp|=USTaKl8*SC<>|wVNcmOiHV&My6f2)YW)owHQfM2 z$bNF!yV|5Q_w3VX9BsIY{gGgWQAf=rWx{b6JvjSyL-=cRGK?D`b8IBJ9KlT-@@0+H4|n-}^Agw;IOw4^@yG-y8f@UI7??5 zhtSZmuKJ+*rC;e4lv(u59VOH3-cd_3_?SPnSJqUDv7e0-Mrb-2lT#h4I?ydk=Rb5~ zt_XatG`x~3;QD2Yhdj{haDvol?_kbemMV?a ze^6$3kzVs}pC&%&J&zEM7bXpyl43^5E^2CS{ezRQ$cYh^ccWnq{JwvyO8wCtmE>3W0V}>qa`9@TW?wRx+25g>} z3`IPeyN~9}NA|Ak_Q>{?(&7_W8Zi$%*Hd4h-{bQOz=_Em6q`cO{|U#K|B6pHYfF1e z*1ujqyrZ~3dCei64eQtW9ai$Wws?2XuNm%1NpjNULk~0k@na-x4+A1jz5F5qyjz_djRi$*;VYI$O)6ZP7gFqN z;TO|Csu8_oSi{qeTzhq^JA?Vpf~+uVKU z`$(BHan9%47PkD49d_@T*G1s-pPThX7YJEVmq-!}2Rd%HgOBZ=Rlh7?*_>odXZ>`2 zqU-PEsGbU;;Ap|d5}4#sMcdK%G6YkUbXuU04uhg5!S))s55HeclKGiZ?ft2i`#PuyY|089qFZ|=U-E%F#!#CT3f7T~3f86-F zcXXTe9TIbX-`S=?kk~@{PmsX+7bIM*Oaw1%>oKX^+II*KE$^)dGFA80-b*iZbi1zQne1v^Hzf^(3Bi zH*#N6H?0PI_h@K9e4rh#70a!=5XekRA1UO%Jnm1bZ+OVl(UY~r5jl<7ene$OFdpIe z;7Zgp^qAL9ksYJ7V(f%jHYF~qdZ_{EVH2xjW?3WRz8*!x7`SgP*Gq6OqT?Q2%FTu> z{8`agO3_N0XNR)eBQOw((tf^amr7c%tfGUMAbB3y1?SeUVF}~+n?H4R%-qPQOA?=Nu zoy=ZM)#{*W)UV5QZ;BvfZY;nc(!nw^6bu(hJCKXTb8-J_sDM--V~=Q-z%q*%kv9f? z90E>qgy=zb?T0_C;;m6^cw3fk$7Y<1C@{T@fYLQpQ5F&eTi1#ul>*1+WeMFGinXT| zY5<2iBpv%y6^DA(#kZxLibLvdC~gCZw`7Hefc(Ka&rOy>bv>$aTlt?)zi)@w&l&B9d6J}jTT6ZJd(3^# zm{6i}ZI+0$*gaELPt>Bn45;D**DFIItY5&OuTV3>;ZY@XnL_hIAg~~X_&20AyjG{h z^9*(LMT_wHyR^O9{x) zcMNC@uP1+=B94Uurw)j3(oN&*teopF?&(GS6FgwTpIWff7NJ%xuIGQYmyIdu5&^79 z1$QZ;Oe>Ggy|E8b^FXSx&!7aKBO!>ABr;DrviXBBX3lM2LrambUg_zB$VcQhg2{s> z=V={gAQnSL^$kx*an-b#f@E^Q^vcZ%uZ?{Out46NSVjt&RwqZ{%XXn=Vln$jJGl7i z1mUXj+)LQ9Vj*Z2lN3@hqA#cWrnD_gQbg_8!I4s2YleeKfy?lw0GC6QIz24dCY~k{ z=Mh2i)^sG{-q1E#sp3=BH`>~>PV0~Jy%wb-B{uSF#g`3kXTf8KdUeegkoCBBr7AKK zwi3+7)hSMZZ_39eZiICPP7_`0s-^0rQ8p<;OjMj`+b|_W%lWDXiX~f?vHE6Sr8@xl zL%02CCj|R&dcGXFn?2M#hBz;q<8JUWPy9!?#@_fL6s#U!Q@5c(jZgPBYCeiMUxbo( z!DF4~WZ~*iT%*72Hj=;&f90a0txBdXVm=Z=jwzIu#q*F+7&E*GXSaQ8o{sWe44UmV zA2fc9_)*+joUXe5sG&0H`TZ_IcZ$jXi+kF50>H}jF6=SJ9$4}FQks?ncb0>}ICTz5 zSQ&YbuFR9;~@+TQjk`UH&RnmD1o=L6(7Mp#l0&sJ5&s$B1dXs{Yqr0j}d;+Fkd?IG6N&pA<^gK z?2FO{2?t~76>ZjsKL3$%7u3J9WC*kFQ|S$=slh?k>$0TRA%Mr@aPxa3CE^gm(JVAY zP*d~co6&!=(snFS&qH7byHeJJ+>X;d)m?QWa) zo}5akf8bS2u}o>zDjQ{sk>~4RM-Rs{GqJ|WWJHklpZ@Rye^}z;26g5&bV{K`v-UWl z&pBuO5+b8HxhRSGQZgu70`o`l2<)g?XCYaLxqKb25X`jhe~eBQV4 zd7PY~ZSJTf!5rugyA?Pf1$Tq+Z_El3d31xJ4(bVYQ6QEaY!*XBT0bOPCOsKvm=+kR zeXTtBsG14+=oalsnUCVISmvI*cR;GVIBwy}dm|Qi0~47Dfsd&nV2Z5yX$lTo z-A|y@`>)~LGZ4M>Ap$;Ek4>~6b6$n{j~IhQeHUW*MX}eqYOz-jL21ON;?(Wms+Ni> z7h#+lx<>x+s+QjUmI4gxd6&ave!7OD)R*vTMHYjC^b`|6Vk{h96acePmi(SBVmSYUpRHRDtp4JQn!(GXs$!( z%esg05@`5)Ml708j^lrzFjpLQ3>|Fyet^R~16 zYg=)uyXLUMh1Id4j)vsJF`7`esMMl6&WFn4qmEUMh@=w{luQ>zCy9Wyw&)*hbWMDV z(z@EePVSw5Aq}MdrKDEWkEPIo?(Nm#DilzFVrt{pAxD27B&o!6W%{=G1*|qGBCKD? zk3ainoNSQVj65&Hl(fPbWrB7i*0s6tUNNK^iUDH8KUF5}<$%WGh_ zrnDk5Qveh1OEb)m*$V^Doq|X<9{gHMK6y(Nhz^VCh~8nSli!lXO|dX&i%#k!3=9(= zdLdK~PTWYiGFg2#Li0)E;#SQU+7Di?E0*T+&wcjy3m>i|9hFC?vQlq?H0$`yGP%r~ zm2dAe?H@jK7fsr-$MLKTdLWdWvX2Xgphhw@Ia|^7H@qpJG3tb=i7m_@qyccez*haQ z|B#7NXcI2=+`@ho2QM-JE8*g0$>63hj0AomLzUZh07iOk^)8Kac77`4m32lj+Lr(G zy(rROSL$jqJwip#J`2+tIng=1pf6-h0~YJ_fls~GvJ_&GZQvZ`TqnnUgK(V`;3_9J zMv*mN7+Q2)(hiFgMH%%z+85-7)_kq7GJs7mi$d&W9r$7DBPBbk*0y^u z=M)9`S&7U%>#OP^90tpvG`61Oc2n{FV;7KWl7`>3g!GMBL(zykTE}hYwTEH|{ zwrt>10_`?n+^T>;i`^0%S;YGfNd)y!SQvudm7CU7vf7zc(Q7Urwm{>T()44wZ~FTe zfD1l$-$9~h2X_lTcH*=+1?fFB_RvJG%%sqOpNmL({R6g`=|%Pw>IUvQe4#j#`1LVL zMdS8vFvh{-Z(FEF&ZY~)UkE)A7j$@v0$NSa`D_-5Ld6|Jwf@*v;Ay=ohfFmzPZQ8KE3Z>xvJ#V^G*bYqT7NYC?j1=2?7A)2yBw5S^r;Ks* zGbBe7^30(7d{^dKPkWD;<0Zmn9XS3veMqBm5g&GCV0M(xx_{B$sYYva*1A$|1I@{4 z#`avccA#Nk$E(}T#LfQCPFu%hbz%KEDOWDzVA?l`cknY>{P-I4<<`< zbx6uNz;$wy{=1^6&_JED+bnk^dH#s`v;5;l;OoQIQ9tR(O6y4aakkN|up6r}Q{~3G zfq~K6?aWAi@7x=SQAbm&aAyZkXG^ou>-A;j?%K%P!$W7l^VQxhspomh$P+Ge=y7Yd zQAcOz+kK;U<=J|NaR5)})7IYa%a)hDwXxHPtEbzEl?|gc|2D%cV}a+Xh@aXO$J0Mi z_fr;Fg?IlnuJC%Vw)uKKcr?3Q-QJ;&96u?it+G^(pX=Y8uNw!nJ!Py2vwqt3boPC< zvOU^=6e!sqF52)Lsze2DM2s{xa(i;0p9OmPUTsy|EDv9n3fS%oJFdMMEBV_gzWjDM zqQB#s{^b-ELQM*VrjcbGGr^+|;aR zJ8unnbI3ZLJZ6`T>A)K3yK&Ui?C1GLJ@RzbNy=22?0BAntNiA$fA{oLYp~mx^fkcs zhB`E6xAkhH@~nuVZri~@xae)l=6Po1cqm7kc_ckv9X)1uZf_wN@g_MCfz|l= zcyF(_d*$lqr^1fotY_b+tqJ=hi^;L8PKSU%wvpeCv<@#XdwZnn(@Bop?la8Ktvj~yiul4W53UPkLSNJ7m*SJHwRoD_ngZWu zMz$i7` zekkd#%$hscCr$r$PVyR9b2sI)M^U9CB zB&r6-;gDK`imX1u5&5dy2yS-L0*Pk6Xc&Yyat7X)>Oo32&;SeeVL%Xc%NhDtF7q|> zAiU!&us)qTEV6-?P6$v33Dm)sIr!?$I5~;`q(zbU!3mmy&wLBP;(DMD``{opmJw~5 zkWxFRfLp6VM6QHmayq@DSVY0`2_p5--WZIt{Sy7)&_y z6p_rj${!pFd461E%H$M@=)E%y>M*@`WhSl^Ycd!lHj7LMQ^AqDf4}FukU4d!F3h9s2FxmA)E8h2iUKzdD zdEwf*X(YGZ2rmmHyxdy>#5#&|bs{f4a#=jB05ToLJwSseE{nGnK&YcQN+&Y!BiGLT z3Lw!@T&WZJ;bsL;>nLuM8H{gbg2Tba$ic=zr)%X@Gfrli**(k`n(Pk4dW>W?k3U+* zQ4D&ccAU&AvwNH`G|L@E_!uc<9v`WkgHF%NscxL?b7uE6UudB_jPfsh0b;8^ZW-M( z&j0rYA3}>_@C6J&q0uV603(mno-M$k{*58%~ESG z8th+PY(H2U({8A~sH!ubTPuGRjWEt4e;T}HSVw6?YC{Ul93~Yx_2*87zs=1vtNw{7 zZSi1m0x|kwXV>3xp%wddifnE~`CX~%No;N|8el$7xCI2Lcotp!Vv#>YFD9;#;Som3 zLBU%?`tUzRF3>X8f=jzDxG-u@z`=$-+iB-`pF}7j!7AJ}UwMp_P%OA63sRf-<`)|_ zl!(HzVatHS>A#x zQ0DdUNW+oY&|pU8;wNh-tXWGV2)-ugTe+aD>iG7(Y&^c}i7jc};{|S1nutxfPC3M| zi#YhP#Q)CD!?^g(GS*dHt%1r?U(JKcQd{ko%F2aR1hOnxs@syPsTm>5*|06YSJz`nf%G?Ge=eAqloiFTS61UY%DcLbDs$`+M$ILA> zmVqz$$TN45Cqw;(I`aS{#pj0|K8sxPcyQN zt`)q(D+31(;CGXRFv|JlPtO%z0@1sY(S0_eZQ?~@(V`o?Z9h1S!2fm0LRuF(E`ler z5rOJF0;8-Bp!@2P_P#){8+6!NRBB&-bNt{ZdZgQ9p@6MdZEoHFWB(=o z_H<9oZyLJg5R`IuDkrP~i$vaniHzNfV<(EKRln7Q{$WQ+X)Lbf5#C;yDx{-rZz#$l z#hO3~NQw90^@n7?szIqKq05fm+QGp(fN2HPBI`D1l%rPVS9RZU)wpY`k}tD02(tOX zd!(6yK=?xsR^{oFZ)-BrZ}LU|P|7MlxKKk*J}sTmF-J~pevtFTYe*A8&f`uCSG2Nq zm-@!)Au-DrA?OaJp+;&g`g{F`3!$R|K)+l!=YuA4ntIA22ko%Wblf6xwn@eH{opjD zHUgJ{tu5BZnIw2iT)S@yHaf!Ow4a<@1x$<=U0&ELa$%lF-H=5Gq^6{lN{d88Mj;0EO$J;}F$m2K(h5@8X)lqu|SxQK)aR+yjwv{R&Kvx}d zrbkiop_`;?B?O|qHiEc;oYC0FSIb)3RQ$*;p*0#|DdcwW(xK|A)IW&YQMeygtH9C1sJ+`hiOy^Y#9gvcPtu!7)li81nUT4u& zsD~fVLtp~9WuW>H((+tuLJ)T1B#A90cg>2@u@8vb)}Vg&IdV(rhQmfT;#Y);fc3*> zTZVuWp|+?Y5lv*)VakxmvC@(U?^f74#DqCa5UyfJ3MraVufsHvkZkLf@sdPGo*BmzwlsQ zFI?M1bs`+xrvFowTa5=on`2z@fMJ)8%@?^<=x@tJS{F&=t(*BosgP%saZTs`R=9tp z$O0L*hW2mMU{gAO!lulH)?y}+{C=y%Rt)eRFwyNp+D8%a^dL zBCp59s@vD%VW+&}91^qv+7}EuLfwubWhk|@WNiYQp~a3eAN=V#)uWX2=$@ptp{XcC~dwl0J*est+m&Uy|hlV-ar|2t`1jwGamFO_t=sdhi=1DXs`f=r_x71>e3#8PKl_t zdk?0Kv@J7Od()pXXEhGI&2c@cY!Uoo1xw;A2y9(B!G!=D?2|1@qd^h4`DeZ8MkS); zqkc^2y+)eBMjNOzN|Yv2^Nl6^Zn&L^mp@c=k7=0Pe%iDSXtWjZEhTSYXDNbD5_rD% zQEa!@Ghl7Uc7r3Oc{Pm~uitBGI{FBL^41>pv;iZ{gISzA*foYEi$SAmR&&1Us=2jy zrl2i_qQAmvBlfQOaIz#n0%N8fm`OR;zWM4uPFR(dM;Odv0VvUoe zr$~its^}NI%kSd^ON&ay0Z*g4hXR_ZH@~e{ueBt{t)ixBPw`w{h|Q3lL_r`Bdo@ishU-mau}tK!f=Zf;$aOR$lZyY&Vz zovcuaMTjwT*I+yG;C+Wjq~V5}wk^ZpqmmfehWy~uZhqcy-GsApope&Pj%tk%oS=)` z89dERzo!G9v}&+JO(#a@b*r=ruzk`+6JlOGdDU?_@QV?^j@}1~fT84KN;F~Ao*8tn zjVDtTX_VO|>5HJC+iJza9h;9#oFkfcUC)aG41&;{n6RtyB_lqhkPpObiPhJm35*+a z35=VAOLOB8D5-+k;&{Fy5p1_%O5p3>z7~F(s`gr@H9m^EOFsrc(eHb2Z75ptfKfvx z?LCBkgFMKD>@i(kQariB`JI`LO(tlvA?4;#6t|$8L7BE+lmnYGDBHI2av_jqG zAGB+yZH=1q_+t?d2uecZ<1%qw*SsF{j>1|xPky|uZcY$$j%2NhZl!F;gR0zeP1E?u zJ>%^8^SV%_l-)2NBn?$c)|VtVTEq;EEc9C;I#&dYiFhTEhop|R$-D+@TBMP(=k<0R z^or9^YhGZeSPc_a6hM)mxJzN;t;BVk12I;l0@hrN(=zOCV?f4-e2$=zJ$@FAifV^y zFGrSJBy-2ro_H^A_8G7aI{>>d(giiH{Gq328lgbDyS(oqhjF;;0hUWg8YSF2xk-&I zVB==HCa%kG!CUtRVh^>wOdww5S;))rlpo^4U&bYd{*Mq0FDxg-g?>r1T1R07r54>2b;v`T*Yz8ouohNp=c9YGs3>K4yEICOIRyu8Q#q@ zU8n`aSB&Rt5?43+@M;+2%D@(JFO=mdwxx_o znFY9RS)5~=h@*2S6_ZAnEtB1er}qt(63?+52@y|`ntf-u5H2+qd7h9IV895%J6kzWUpkn|w8c*jfkyVv zhmqtD^kNE1ETy!v2SrXW$6piZ3LGM9NEK>=M1Ws(Fvfwc6Y#X{5X)&BPAx?a=@Gxd1W;+4DgBd= zg2fu^5#n&NB)%quYp4ZGd{jANXm~I-I`;>sDVosR?Oi|T^bN(;!@a; zUQoR;!WmxxO>XfSp+xj)8hR;#hF3+kq8LV1tevr>8&bRvJuG*3cNR%jYy%ksM+ivM zWE6fR^PR0u7O=)iEqjokXd58~gxZiwG2Ee)j3mJ21X3w9Hbq&<=COT=&{>Y9LWGmh zJrJ+v?uaWu6u)y*J!+=B_s>Q-BIXHcfRE4FKT8*M5G89huL>da-Q3pA>|oknQod*C zg28vGq~}<=)u&7{Xl_BF+j!~@_`adyAbZBJ2$ssYUO{9B!6ZQ_*)C~$)K0vTwB#n7 zDkv!VUS!6BZypvhk{;&sLg;%24k{N z^++ZWW-_vp3bY+F+`}t?G{u9_O*1EltI^PuMIi9KVIW}OJshOqv^Eb!V+0ZvGiYms z;_d7}mvr}`+2R4ifFEm6)2D8S@c3! zx)VJrSusYQq2HNQ2=sjx?SKRe@L)Q`8KEXSILwr5x#m&?4BirFoU1QH!6%6(|lwz(gDT3pmOvKQTNeJdD zX#}$fmFmE1rP~& zxGJvnk9&f7N~d`Ow$2L8H%7_eO2x=yYc=47MM0R#fPsWs#tJJQCf^5!xxbt+3|2X% z-d%-L7sBNXFCfZZb1x_M$3ZgZ71RIJK1c-jH2sK-~w{ZkRk$FKG7l> zbkLKr41`(2X}lZ(o8b=aD_#^B@`D@$AllP|!B7@XEb6jU)RKD8Md>FH=bmNIgFZ@B zW(kH>6Brs0?OBBnBp>5AgPt*Hu7%a1ek-0M`oP~rirMSZA0-WRvQz780d67-^8C}n35L@zX)wGgT6#k zsAP>(Z6yM>&)58T6-0oZZ+}dVjAo_pB+)+kWMSB7-ep-SO{rX5-Z5x(0m?)OYT2J! zOWnhJ)s#XP_~NzQ`_?a&*bPj&jkK7L5tgYAT?kZ#M_PHm6&p)OFE| zXsvl9Sd77*HA{+mn?>>-eb`WAcpqQmcXE&e{0AehMJ${1h^Ut8%cx*qI9Ru88D-3W z){Y>3lgM?19$`l_*ciPpe3~gjs%S6(4FZIr%ZOlSC0;t{O9v1bSca!PByVXeS+5hocF_8~#la7j7eqs$b3;Ni+^FH{Tzc)Pk!6%n z`4Zt27)7^55)dX+E2$utl<&r4IN*>ygko5G)z}6RQ@{0f@$<6j$s&tgnAuK;ayj0( zK*d0bx;N*M6wsw$B#;O=No0r;=o__tR{PSyx_*Z9l?riuB>7&ZX3~JWdFhKrZgxZD zE&?9ANs8U-Z<)MFmCFJ6Qn6td-)Wf|!15rFwp|tvO{Qm3?$(S*E!@qaK9h9*;!BySn*5CE2u+~wWem%f*^1g&p2%w#v2Sf{~!16f5lqm1&JmEKpC{6zt z5RUkCqx8r~TPP5{8Lbm14;4RHTkvwp&7QZC$!AEs(%}kdSiD_7Oe>ld8(n#o{SJnh zEQEBq45uPHlqCTMZBu`|e z_+@%D4?J|%1ow1JlCnhXU>80mL4v%$09DAfyXNI1kZI>oP8}I91D?uMMv`@$SQcOI z?mG5(e;l+J{K#Lh;`7lBI^Ft$eB8wfXW{r@APOKN4n}Ofsb13z!cOaIFC5)DJLeP| zQrtccvVoQhn;;yv2Sh$150Bq@1lwYos5ZoE& z6o<@j85T+5d>p7|lj`~Rwcs{61uwHjM5rry4q+FsMqpSi>T!&ICP>sLP&B_Y^4X_S zS@PDZXu=HuwnILchmIgpnf*f!1K`s<5KfgNv#AC`f+`73F%^V8AKuOsj~Y0^)i(<= zW!`0&M2wFwNynp%a>2(`3{5~#9va3GE)jL}84SD5Q8dUjD3=Y%X)#bmt;wRK5DdBl zXNV5zfHsiDF4QmIv1S|!iD}Ph7STOup<;BSLi8VZVKbr9g;O&7Dy8;ic8|&jkc!}7 zlz)afBX8V)+#cc@T#V%JR>L4Wt@1qcw3qE0x^dSWPqO}0_4COb71e!FvIsh4=N>K? z)K(u)EeyS|O{f<|c0j8^*>pL2>Ehu$UydKq4#O^Ys=gIrmFUug_04CH6Ic`%^VnA+ zG;X7|^qv+?q})L3vCxoaduz~4%E?_7=0_n5Qm64DWNFyhNcP3Kpm!g@G!v<^Lbcbt zrn(&0wJH^ts~U$0LuYt}0_Mo>__MaEl8#GlGk^W$Gjsexp>Ko8w1~R>tz0EebVx7i zQJgmA68)wK*7Dj#G$+pJ@axG$_lT|`Mv#G9JPLHqoh%oxECjGaMH)i|nDIo8Y@PHa zN7Sc}`Ur!z1S}SWfXTu$UI+YYp$FIa=+mK}AG#c{H87y& zcB6g3JcAQS6o^zE0RtTZ_8K7D%iHYmi2$J&3Uu$HN;dZv^&EpOa{Z%sY8n$POk1M# z7GO*bj#KefaW2_p5@m5+ToHD@8LPoS<+1Y=rLY1&CT+f+O3rNDjR8nVkgF-3PPXb% zf0lp}5IhD1sI}~EELHskg}<&)fMOanV}WgujiJM%AF+xMCtoBtoF&(W^gPUAhdXb2 z6FggcxLwRJ(T;B`auuNHkJvHtW&K_96et5-`i+oygrwkR+?5a-)Tmm+TA&LG`pQ7| z9V*UDB2IY|()b}Ybwf8Zo`fwEBsQ+^(r@+=76^@TW$lBGWIK?cVu;eXNWyERLx_h> z82Axm(R44`S8CNxUT>ceDB~Xq<<1m=M^q*;iyIvj_-Eg8VQ~fQu+(3!pEarBQyum& z9nqvNb1M5(9YS#2K^Sps6+Aia^X5AtJ9gO{WY`399PVh0HmN=*;j;_6lXq)W`OnxjPpMU^BM5P0n zbbOLL4MKp@63Pa5YP!Hgz37tUg9Kqw81b= zeMBYz$n2htw4Z5cDnu63WD@^OJPigvKf<49By+lA-?D}0Bn~$ey#-&->Aqf(k_9pD z6PolbOF^g?=RlIiouu+8vVCq<u93=!&_m{n`VA^K zL1NFO7{MRw4rq~kCp6@0SAbaF?2-)Wp1Y*$5KC@&5Rscw`>Oy^ee>HGz#=ymj~>t6 zbTZEY_?x$Y?SH%_f_{jj7mY1l>G>}C@05<>t}ryPD2dV-xO>DNFc2&I#7 zd>U7byDU9xr0R~;L@o)hDVW<(xOrm22ig~f&K50=*GyDF>yn%nUqxz47bsj~ur`PY zT|0FmEf+BQbRyyNj+BzRbSnE4rb-n_uxpsTVO27CMgzc*RFyRWV0BALDeca{pn{Yn z0MvD+5Q72*+uAH$ZfIZa^obP*6@HGWu`F!(`07EMZjoDj=|!N3{XNTU0XINCkmxJKHf1I1|vok2|XwkhVm#;b%*y zN)yCA=TC4^q0%xtLd3Aj5sT$X(7|P5m7voBm9tZ}my?H4tz4DTyp=H~)AGzO+aMQ= z>2?%4<2+D(8jNe=69gA1=A#!kMT6?S^Ve7kJ(9Z}PVCe_872c3h=<3KF}T|ho0w27 z&rE5(qK+16d!cz7{Y7FYDg7hB7+pdx;CxN#Zo~RNY=(y*^P(s+d;L!BG$Qkiz#s%Jz{LbkE5L zP$ABgbKWWzCAf7XXRboTg6z+moJDykmOgmYzBVA@$+nTtbr&$Y0!=K-=I z&8)#6p^Za<`~ckD8$qwny;6?n32=ckUTZgIIoBRPp8!?q{65{ic^Uup1gddr#XV2i z$4y!2T=RFn3utX`TeN#6DIj9fCkK_}D5LC*o$huzRGd##;(%(9c2Bjf{=8R5J&iOz z#%P!CTx}%l?>BZDHiT3rpX)iSp+4-!tSGVqRJ-NB>o`3#g*Y6K}yWjr(@N4(9d$%)LxIM#TNgsPf*?+;2K$+wLKucv`}5!tXV08>!1ZaWr6HUyuJ&O&dC>rp?09 zT*bxF$(7aI(Z%weD`TH9rUW8@hMfyY?)Yv)QHAAEedBS;!+>CL=Dg){zsNpOoaqo$ zl2b%)J{=7pS!o?RD%SJ>BQ4-$E{O(Om^5KeUo$VY3Gbp(Ar5{u878nEf``y`=SKGA zY$P#ibKg`I8#DvJb9yo_k+*!G?()phrK2!4bG2>%g!kjT#QZttM#ORCGRsDU29KQ& zdXI$~m@U(-UO?FP9TKW2M(fVXumdIu;hO;+H&I~O@Bj+y$}tZlJ%o( zJR7iSXwYR0c63aD6IkiEe)W7Rdp?)S& zD4CzmE(;&cMYz(n4wEcJ6+hLMjeq!k-EuzF_gIIWVDSNQzj0If_jL`}1?0P3r@wpg z6M*d64{HB2kNKVds4wp5;AZLIW~|}uWa(=7ZrXAUeUNFf0`|3;{HgW3Va<_3VOitl zC|-kFvh2Uz0B?hSZ>)I8VC_c+r*PVKuJE>x;*{F~nRRIEhKD|;1E4f=n^iQGjI`qq zk#$FZ^musH5sEF8%>H``o8 zn0oY%gXyCK*{;?_zDL26mPHo+hYFm5Siw!yh${BU@VL7Z&rt-FA)v0G*>t}3$|S1& zf}>t#t!YA5QVWwLxB)KVA$=ML4xT3`*f33uIZc|%Z_~hQScsPM>k}l^y|CP$Y0$4B z^Q79I7p0w_vxkFQVOU7WqO+V(^hx032DY9%-jJLpNr$(Z<$uOrX|MIXLHZdcbScH+ zLd2LgU54hT2(_BQHO51}oeF-Ry1yI~27mXHN`l$bzxc=|+{F6lcPUZevL_u%`&GS!U_rELulWzDP zXMf8U)L+W~&bs~g3I53_cxNU4E!VJrP4M41ivK>tKg*KenFoK18YrWHzQ61L$3ysc z)qiIH_qyf3MH%#6{_Cgzw<_j;pXHy~?R};ATPXSeH|xf~tN#60?{rvEjS3D?on-5*Ay_!o4vgxB@>SD~M4XvVi;>0)7` z)+HLW5m7HV?s-{A_s96{=Bndl6DpGA$c7^&vwapfBym=tHTX=6TJk+=I-J{jzX+Ox zjn<6Z11z<5!QYJz?m~+1)=k%+BUOU$1CpzXk41x>cXYr+Ieu@e=El(9Q;RaPwxP;S z3M(pSf?*~-8*>g0(h(^D)#YrEI zn$C6orZVLNk^2q}V_f3bxC#8)Twox;@i z(bxFtx=@DGh5EK->GJ}hwiTlt5N!vdPp}o2y&s#X!iN?hyp`bYuendQU8fn!qSQL= zr3Tq5jHGmX#w1L|o&r(7HbB8)pUl z;hI0YU?OwQtB;GEU1Hc3JEd+#Qakfy1OPCSPeV$H&$Q!mw`W>@qn$gO5q$g|J$`lB z?C3dYUyf-;6*B>6IDsLhzoO$-`j_u7O6aP=u;*(LP8t3?s^uQT2HM;Wrr97L=VZV zT~%Vr2bO6R);4Tu&%2_7#4^*t<-(#L7aL#jPHeYmf8-I;lh@`+i8onU9#)q;4Z(fc z@RN{vS(@<3s!wK$qR`qtNimYb<8R$Fd;R6_OJ+Xf44624G8R3G?-RFmid{!qj;LdHFQZF7rj(@U*iYz5)5*oMgSquSFfpE?A`JAWT`wW3pZ!!_q)isCBIP0G(`h~=TH6qM_d z;VB;8_<_F-2m;$}WT1H@WyRW^{kMu5xwRQCPq3)Mhp(VHN97A2=rkS&%wCqX`JI}( zkLJrq_ipO;NcLq?qvKZ^(GQ&0Q(hrI#%ExR4V@uyZ1O_>Cmy5!YkWGG0xSWHe?2pQ zu(&^I%_@xvWAOYQBk5dKs7EX$PRWwDE?g#l{tT4BrmK{B$Z2Kw)C2(*MO-XTiA=$7 z{5<`dkC&ISc7^XVc%`uT&r6OvYdRPhTifcivc2B<#sq{Q zh%?;E;-0rjw;6NAXJmzFgVvj^LDQr6y{UJjxxcVK+I;;`Jsi+(j9Ap>=sw>^OrL>u zKHs*m<#}wi`#`_W51aSWtSPX7&xpK46stYZal7q%Z1Ex=xPW1Hl0KbTYX3~#-^p72 z+vjt|dOkssr;O9L*;O>w7EBE8sc-TqJ4%7WP=yJn^-3^35bzQSXM=)ZnP?u(meh>( zB2*Ij3Gb|Vqjt@7;iOOI!$s;0ifwfq*%3S?JY>kz`Bbc;d6Ai4!2Jooie(;XnsO6m zCFB*z)7f}3(l%B@xKhHGpFhm)WA2uuU%!-u-h_4LZ`2m0H=GXm&SIgC8j~#8fcroG zdDBbcqD!&#Bwz09AjdN+E3lIE3BOM`PKfnIU?!8V?kGYS7?MS!=^DF}+tW-rw}i}z zm(>1c=4($`|9h^45}hE{U-MY1$v4eNd=2mNMZ&s?_Pdy~X64Xma%@)Uwaj7q`R0k~NUy6y3A%aF9tpj%FTTj8&?~t{xt2D)AH}AX&-Iw06ZN?8u z%z6A|ng&v03*kRe0^?tlus7AW0~jef*!{3FvH#%2xcZt5zA8$`xnh||qBult&>{+G zbI~l7DRI{)D?bbbKt@qJcq^=>1gSR~CMMLfWP5!icG4}fLgwZPzN7KP(%K(B?m?Yt z;ZIeqwI+LMtb7~k+Fmbz2JDXk`YY-ibQSq0OU((&)D@Pz>WsYF5}x;`Uy-pClN3j= zvv#tqvEXTov*2WoE{{}4qZDg4=W=V~+*D{Rc_a%n>P-S8+gMwhm8pB;&%ZW)y`pGZ z_4?`5&;b8PHBl>=Q+LUok(xGI@b&7rKcT+iF;`7P0)WMT8ovF6%m}AD%H_l!uc7TU zubM0|PG&;e3ALWI-Ev1Z0k9P=q#esX(Dx|oh;56b$F8T>s)z6Eq9`s1Ptj1~B zvKc7kgg|&&*D8Km7uHL&IX%^8jS7^Lp4;s<+?SMdP{9H)vWDE+Tq9*8L=dE?f^2oEbc$+i(47qs~ zr3&G4m+MdS<|k{4fC#E`85)QZ*fLv)%GEBYQ#;*#-0CG=aG+fc;4QL|H7t0^iS zl#QBo8IDcC`1FnWXas5)I@&xz{HX_$kvMja5!zA+_2HKA2C)pY@WHv`kjH+YL`U#W zBsU(oBXX`vMcQ{|X%>v8 z2NM`^P(k2h;~6W8U}{ev)3j6-=kAt!nx<9SsqVF)QkToTa&Y18a-0)4O=ud&aSZrpmMKbYw&2;?<#dJrtKNDiHUt{)f%I4{?Rn3Butv{0_Lnx;S@ zE?1X|e>y-I^HFQfT@phX6LI+QSLZ6CuDRJeL9`jTb7%F8Q??=I`->>I&-Sv=MeKs(YEnS$3dvH- zBXe#o{S=%KYAn;qK<9|?LPZD+6OPO-;KmKVTGmi~%2TX#c7x|6a2Q4Zh9c=~8lWW@ zPC}lD!z;b2U-XG+YC!+m!3L*|WjJPmv^lE$rGlQ(>=V_{qVWmbb>q1U zAE08vXBM3pTspWfyZg4JEkJ}{;n>QWOh{#hl}?IX`!*k&Re&Nbz}GCAG9K#*PWn!N zH1$N%Y3g<$!M|J_qC#{28T1>@k5Qe=1cH;Y>N^(aba^|dfn<| zo0vq|V?77_IxU;Yu66kmMdDDiWL`RQHk56sVuIy7c`fPUEkLBEflJ9w4D6x9ewYoM zWzc8NY{}a_h)X zIwbqBz}-e7=#dC^a;mB%szUlBUc~SMF$o+eaj9|b%ODo>_vYzP_eG!CUc({Xr{G^j zy+vvA>rYB@Q_er{W7U7tc?LSBPQ=ET=-&rCgtRh*>r)MM{a0J;U*&oMcHF_HiV*$C5dnc`Ufngis?O`>l%^6kB=h(#ce?kLg8!P`)QLVNru3{TeD6@1j9_6z`AhGcIBN zvFseA_&iZ@Bo*%Yqi8r5z&sl>efXaopeTHL{OzO&MTVLMkrCDpNtTIECTOO)M{D0I55CA} zfIm5eIg{lfSuK`1ChZ*%%PvkB*>l_qM%_Y%#6!6=kSgJ#D{<>1DjWZX!Bq6%E^+TMeM6AF{fc}TIF+#6b3I@IrWw9SX zlKG?zx6DGpA%+9yvswW`?*uM06<4yFRcg#%roTftm%=4b1y=$9AEw_$SBH(`&<2z& zdRS6=n9C6CzbRI^_02>nYP=$UtS-jwzKRjRfPfgX{-@Oi;(x6!99%5`e=RFc)z_?6 z*fBab6j2b|SjS?^7G+x0CpeKA+!Qg&;Stn=eUhj{sYT#0))qZ|b#4gnkXl#!*GXOT zF2&*~24xfq`!S?CP+eU*?0LQNk@U?xIwU_o_=w1SyVieS3fb%;539Q3tI=FWP;^dD=QBx!o%A$=T5e>~Gb1#_u!HEMA zdj_N1hJPM$RMe{BLi@q%O~uk&-nrZUe!=6lh_&q4@6422ALTkOgA8`VX4$)k49mwK zUkj(qS)#tJ3^~D->$6Po`5}kUG})R^_cy#tq0p)YCbZmdA_Q8f1yan;!I1v-b3sU4APKVMwpCn+%U18w7+a@t0f&SwlFs(`i=Txdp6a64 zQ)$6+8kU*prik&jLHT`t<4VvNr;nV9wSW?^MW%ssq;s`w#|`{-;uw2L!SPR-^M%&l zoMYR2T@Gg33kE7nV?yJ0-6BOtnjEsoNt7sP81_L2D`UZ^xg0@>hpJw~l7Eb(Y{`}J z1h$3wC?>z)Gf>DX=k=L>V!zVI^(ijqO@L*FH=DM^S3a|hr>L=9>n|~-mIsqM#7BIf zU#8AG9;9hew@W=NiWi{O_+pu#>t7R5VWI^cYY+$Oy!&6rr`4lCWD-5~L@PgJSd=c9g4C*vmLke#F9Eq}lD`Av7 zuL+ZUJQWrICL+J<1yL}?a6kZ@#>6M$wbZl%a}_}7WW~7 z7b{02P8Pz{C@HZ$6c+z@_KXC7uhK;Xjs5|1^t3|DPl{TOYMlO9Q@HivGKCYC4p6$j z6YpEdI=1=?BZ2r%@C$0+3cXtO&pFK&2>gYtIaGd2%OBI;cZqmG^qeJI*2RvOj?Oaz zu0?enS-q-FeXqK=ReoEPSeGrS7cL2XY5g@@FI4;9bfgS9nb29XcYAy41%P_u@<2h&6XMK} z<9t`fSxxO7E;tw{_3Ly;G&u=FD}OoCeC1)Aa4RELCr9 z?~XTz+sWJg(oS>hBt<^WIZ=CdU0OXH`9yGw`tbGuiC``(P!neUU6@3((+RTtjdTsyVadChUP)?aR3UQbU4z1v)D zukT*3dJo5uRf&_6Prsg5RPd#*HxO5Pd)r=Ly1BYJ-HQ=3=rmP?GxDZq>hiuP^zv2g z@7Ug+tv#;nj?As_@zOC`^8xJI+rG71&ULzazg_OxTfK9pC2lO;9_pSd@-6HOV5;)I z?tS-aPk!M|?`-dAX?Amd?p-NGzE_^9q+=Y(JAYZIe|{e=Mm|-1=g!g?@tip6UE$Du z+`4(n^7eQ+Pr4s8F5Z}6oUnfHc;4LSdv{5GpSZ1c-p6hnJsvNuogX@vVYEs*btabe z);(jiM&?_8eY@KG52%3OFO4#(W593$L0@OWGp z_xI*&b@jeoFe}|6#xDGt#oG4W!`0KP!PcwUqPTIvdzI=;`?bEQMa_KPl<;xwrt3Uqx*IS z)%cn>mAh`bS6iya4eyL>;D+k0Vp=;NAD5<%LA5i$>)Wepsmt^Gv{wV(0D1K4fLl)!YM)H1f8<%^>!)!zr#@)@`%|3Bu<(r$6 z=K@5QFVE?mp8ZuQINFSx}&`8rp&r)h;(lqIXHm@97&1;5@N?eG7D^A+N)lZlGl zM5DrsG!2GeiXcRzc2f87iI&lP;udXF684BtQxtZKP*WB5ig5WAa)on=M`s+-0*Ycd zC+&k%YX#c3=!j1;P{jqpoU{fR!hA}^A7Ob9Y7pTLf?~KPbYMBqA_l@d&jS@weTMIY zbNmJeJdF-)sF38a?v?WknVe{bh75FJ79B(c(#F^_QC9E|b}u%8kwP2pz$FkwB+|wx z93j*ZNGU3j?CGt5rEn}ZfS4gQ(EFtMTf&p<>vh5}9$IRG@U&aPZx%LMf$qkL#Yk ziA~)E$&ZZgX-@wFM=04rTy8>>3y1XX8QcH=4w(H5!*RK_$2JeQ-}es57Cas*Dju_M zYZOalQSMO;jFsShQefxc_{Thsl7k(a+x!#Op~O@$G4e9n+XK>1${eJbU*!-?wFMZO z4DyI8sTr;R5Lc4cl7>xI7LhJj^-*FRD3};t#Ux(;9{AmWnY5;tXT%kD)g4sh+7HS6E|@GZFvShun=|Oh`SY^e0e&EEU*&9A zKZA0*+-`iiQn~%2q8LA<37LkY03gW-8{-Hr_0xj|E%Yo>ajmV|rW0#vBm#JIyF<9- zjgt@+v$viLOn*=W4HLJsXLU1Ze|zJx9ws$WybLi(rw0IHq`Y;$cXW|s@*ie!K@?+T0W1v>5t zHpsDJ&E+dx*(8MoHM-hH;ip*VY|o=w?MnjRyY_H@2y@>%A#4b!vis&n2OQtKawRHK z2NExv$lrIgK2ITJNB0@D>=+2E(Z4nOaXW3^zbDuWDX>!jzAH3P0K^oWC;+kwcNDw) z3P=>Y;tEj|yOH@XG@q&10rC`pgoMESGH!9#9m?nPBT9G2_|vd3Rpz-DoI(1Pt;m-ibz-F zt>fWN!mE3+jMxxq3i>PqciF$-%|_*V&^e*QtFLpk=GH=29dP(9#<7~jl$^5u+BnU`zqUld09jEFS!&=rlb zgrqeKBChYn&clP*HD)qK)#NI~S`zbH^M%+8y*Pbd64`~rKyJqN2kF1wJc%=bjC$7V zg~R-|&aD>?7WbUqp9hxIS~2PLs~&8;*j|;yP28$VMj5i=x#Gr8s0LZaLnYh&Pf^B| z%I0&7{})=O4h-wSR zERDgsO!}#gNZN@rPJAGIS@}wO?TjLKjv%L+#nbVkBwiO8!VaR@yxSp96&U!4IKI!- z4lKBjJ+GBfHTf2jBT4xd-$$bIPb5b&^H08y_~sKxj>P5@d>_G=cvM!9u^7pf9HIUU zFQM)lb2TK7v@s`-v`wvPZH}XPZHbZ&|zUqXZk!4GlT2uhunT`%W@{pZ-hd(&m?5q z_<`zTsXwbj@}v@@=WpsKwqyy51Ao$&t+Zzgem6N*Q60h(N`N7*;<~G`#6HN#aM|y& zCO#p0k%S=DiunmTXt;l(R0=j|Pe5J*Lw+yeK|$h*N8W`*hpb)aPE9-2Ce6tfg~(mF zuI+nh8HKT{=zFsMD3E(Hbhlj=qO#d)zO4VufwJzbO~o}_oagV2l&;!dF8sLXI^2Fd~yYMoVrb$!JX1rZuaf4WI zR1mQg)$V<&gnXtKa+4M17m($2zvBq7nF21>39p7$8e&hnz6I$t$G z)nsz3J!mYqQLKU;W0wmbVJQI2)7r36GYl{H+DUCmMeQ*Bmd6PLlhggpG?`8}EbtVR z&ec8LhPY%SNKLU4`~Wp0gNM-XP%-&rJ(etxP2j}x;u@#qyk*@=-zAUfm{yV1?YJ>h zZa1$__PrCT7o1a=hk6QmcQWZQ*|h*nvmfw_7-tc0JDjodWPkHA?Uw` z+P=?FaD&)uH05Gm5SHJXl&B?kp0bcwf}uv4WlV*46xI2hh}yKaf`;EbTI^ z&@+(55Zm&}9D(f9O(8{O7)qut(=uanNEsqj8Zw5BL-O_f9&!2G(O43WXU zcv@W=COKST*cnjfcC1_uO1*p=;t0tmW>9tG3F#WB_uOMXR5s2j9g81k_S$ci8wj={ zZu}LR+Du&F4#k4DEK=6#&|FMjdRh7!$faP5;dbb%)g}MeXT4B{WsylB6#i>dZZHLt z8MRw^WP$xCZMSF9IZqSrE5{quV^6lT5&dU(oH-+6D~IM8BH5e@=#Ci~opX?hKl8LP zi)f7^I>c{%HkieWyUyuI+7i{TNjA! z#_C`3zZ^;4P@rI=z|Mt2(3&B)?`I}BIEJA;Ytx*R)cLF^k%oxvB-pQ*z@8Pyw(z~Q z-YUGbu=pw((|QIFh*EgqL~z`(!kF%ul!C1AElsVJB*HTV9lt?lt zs3V|5x+L?8$MU@f;2Tm5n>kXvqq^@7 z;3tl{ERxIgN?Hm{6?Z7SuJ2wqwyn4Ce#N)~`6{e%;hDDYk?obnju)h95KKID{&Nhu z6l{PsU1ACg(|RMR#wWYQ-{A!5;C~Up1GsJ!tpi3gH@m51&ZT06K5HTKSlV%)#|m_0 z7l=I*o=$eKOZTj}-CmeJ;^k};A)T&gl#HfS{udRqI`>x5Y_Ahw}3e z)dhW4lzhX_)OxJQ)B=^A@G=2K9?P63jo_&e!g1Fr1i9o~3N9*IT^h$={7lPbS_UKm zVbU?2*$8&|GSn*3xZd>ChUYeX~ZetxvGt6N>|TC0U^KH3PmpN6^vNm^G^#(GTYv zC!oJkDY-6{tNkkw2^8sK&)zyJdTINxZ05u(>l!po%9}xv zM@z8dDwDYW&?OOb%C_=1f})#jZ!+b-Myb`&f+x%m^~J#sky&d6n=_n!5Ql7N>~4(b z$DH=$q%`K?I69apafcjm&jPqp+H^SHkOzSL%k>B3Ht^}4hW@uZ*^G#2LXg{yIdh|C z)Jz-o)ng3ZVAu9iPFYhhedj{>Uv^qFQ9`H(k3}~dhCPec5z7Em~!%Rz}BS|d%K9}^Qc#eww}-8FM2>-%OFnT zlvZ<`ZV|o#s>K@8UI&BUjmg!$L8f)- zDUUq_y_PAbIz>6Nq}{T0{1^RYEpqroayXf<^3mjQ&1@k}J`e4mC2eB9=nvU-SddGE zWUNlJ#ZgM}wh}~9Du>KCVR5waV289Y)rDr4O~j#UOKjLdKA#`M-EG1xd)Xknopdds zqr=pgP@)*gN^_UYB)g=y^V?(UsS{i#C#2TKRFBTd7Kdze+Z;S4Rzz9foIhaIFfRt%&Pz_Gj8|+&A9}9G7ZLY1grAGS^@`8B26+sr-Cfh zC5a?3v{ zfmB8{znE5>;k!o_*`I3K2hS|@Bf=)X2G4VWXu@yqCw}~Q5xsDJC*9#AcQa2`?f(9)lXrG@(H2}Fl*O;Q1%B*>~nmZQs zgEiR^lC-sAh|Ue##&W_K!XnuYzr`rf2-(K6sGg-pmKYU)KMd-KVog{qWCpn(a3SXN zT|WlgY4E0eeRz2Is}H(r%u}qEth1kP44}An;*T;RD)#QtV+%j;jerlWX}pY^HpLOu z60>6Hljp)HS)A}&_7drH+8}-MX)FkNB`*dXKXyBBv@j-ym1>+%ZevLdlyG6`2|1Wm zi;n^^OUA-J?J&O?L!Oq7tRxEMf>5s?Iiz}KVG%jhjE67-7u9cSe{Imxd}vR5zz!G* z8pPagnA;QqB!|s2Vw4(uF13TqH?fi_C`&5*O9`x1673Q~@s()q@VizI)S)V9(ruj8*cd}v8LDK^j3Yl{B)b#y8Rp)+ zI)|(D5*zfyP#;uR+X>@xK8s;>75#|C#X9>eJ78fzvy_9&Cp<%Ycm3DuvYNhmBXkox z*rLQ6ucvTaJQ9!*M(^9C^?ujgcjshXYz?EYOdl{f+hu~=Y$FJ&NF-6qRB7H_Rk(fd z;S+nc+^vM~!E1b2cDVuh2= zcwYbwB}|w>0xWEROaeTYwkAOO(`G?@Xp1O!<)mtyFFVIfc$EaK-*>!0q0cGlL@NMs z1U&EEbvFfYU8ApB6g;L@c8s*AMp%C|*yvlv(#%m)lg-Xudr?=DJ(jIpravy^=j*W)fJ z0PKt4zUBcm4FQ)-`?U(`{2aa;fMNs7Z`Y#q~Z7Mh(q{N$-E?x8;AC#kZV+$jt;T{CZ;d@Qk9{I zl+Cm*;ezI{yUtNorA-1wDVg?2AWh)lFxJ{eI9=fAStQCmp5}%D(e5tEs2h@zidYV- zppkTUjqhc9d&k%?4w7%EJf5t$r*3U^FSsT~(j?0tM*@2~<`$Dz0SY3QrAdI&fJ{Q@ z61lR&?F7+lV}aex(<-m=n8mPC7I4E}R?8ogPD~1{Iqu`otq)CbRdHqe7jZ1{U+oq^ zb~(9P%D~M+e$^fuR2Ge)m4E3dIPs`*?_meQ+QHhErcuoLya<*eD>N(Z|B@L%$m9f4 zcusY0K!z~2JLF}z?cH61>Id##GNnam4bx#j&mykmHBY4`H^eM~*NJb+u zA%;=Wn%doC{2@vqjyY+!7-9ELXKfMXX0%i13G=@)g|#K#!r33wqv|R;kuFkCzz+6>;xMbgeGa$h zfH)Au@l-kiaexx#>LZ?M6!pYALfq^l%x5RG;Qj;A`fF^#EJLgexK!dmjHav7s|^04 zLOpmm+sthoA=)4X*c{=CAJ+ZY-HvLmpeK?0gmaXWN`BnX+O>?4Ub z<=ny(FPtqcOpYf>!_>cKgqUIE!|6#uIAnQ50i7TYCwREiQ#hiLoqVFI;4iATBqV7! z)so~$LjxDU^g4M@L>*IgrD!!=ko}CxN4o)+w$Pmk;Voj`$g>+1rEMlA6NP zzWm|2rA`>F)$8a?iU@p3c4b~ zwL-zR%A#WlId=!CI-J8gMi!*)+e-@PgSp@P8d__?QD7Z8v#UK%?D3?HVxed))J$~) zDe<#z-n9=nG0dYF39W#^NBMu#qD?Ry5(!e<_Cm6A0BPPhu5A+by1)o|osrRny^R4e zs&vkb0lAq8Rda1jroq`|=8W?>T#P^@jD?YUPPeGe2b;M)L>ni=&6d%XfG#k>+6k9{ z6HNOvor;Fbg8bx}v5(hvufv zG3H?1L7@?8I$SBEiMt3sgLm;u9K+48>zXpDmZ91?;b_5N*?A{~eU z6u!NiM3tU;0~9sYIpHS*9bz6yMMCrW!ATLGLJlh5nM|(dhCXI2_9;dy$umD6 zY@9Hm);{sSh@d~^ZY~aIph`}yqz?b{YbE@EuwFY_=#HL7Ny7lCfGJrjx_SJkA|_Rg z02Y3q3w(0aU=-pXaYwOqQY*Yhnk0vQ=8&q45k-jFX;GekrUe!}RfBD4CO8AGEH-!! zV)0GB9@7EWN%15@nUt}{2V61vyS|aGK{?*BF$_J z%ZLFWX<&3t{WyB0-veSsPK>fzl!zb^&UhCWio0I_KH+ySH%#$~co3#u z*71Ch84pQO=V_nWVYY#M&>4e_bcTYHHX=h(+?349SWDA<@YzFJSbtJLvNI4M8J0Z)izG z@T-TaA{F!-rq4F_v76YdM=BbCw(flgZr^ltbUhHO4o~6SZ%MiYtNnK<6PJb&RW%cq z*6d<$VGe^l&Mj)sK^TU4)LIiX?blCfo`^h!FW3p%Wr<^r3Wq@NV!EBqh0KDcU&ybE z#e8TdM%Qx@rfca$H|kCHPO0Q0V6C1iG#2rTpTRh#77AHQZ;s?~|0 zKWd)W`BTMh46DRQoZ6y$c%zD7EXT#L#^1a=2`PK$ifI)3F!B<3AURhs&pC zECg;Cau&+_5*8*GIW0DyD_tm`UkgLT>;J$5Q z9+@LsflIyRTfWMvV3pMn>gIA2S=w||@uJd>!v=82ASND(XCcO!!+7Axs+%$R5t9yb zLLjly{anO>`{!>%sIs5De^XP&d21Y?MWeKsP_-h)zRg@)VTr@ZL3xG+Vq{Afab7Bj zgU1mJmgR$b@(t}e8F zUX^?%>oz3{)*gj7R}!BX{TB@+P_&NWj!?b)$+uAz_LJp{;^=Oq=XdB0rUP?k8YAVg z3l_5mU?dvd04fAHyK>8@LOxAAngw7K4S0n?GZ9-qgtz0dEDuWKXsE(Av2YB25G zUk7&tbhNYHpO3EYZVam1+O&1NZ=te2Ql)sjOFLbDOY**YHoLmLKD*LB7(7<&&cDWF z^0mJ0*sQ-k-yQu~>-_2bv@&ODFUI%&McKiX=XDm3t?_di{&Gac^{Mr`w)Wap<=LnO z=KG&Nwb6yd$qUc>?>cWc9vbG>$`}uu=b@S5I6j_t7od{V)6Hvz#>@8UF6;K{kf6t;NG=HZgjCyf&lcZt174;<}C}Fi)y5tK%$QS>+tz;^gFI zt=0H)bY<@PIIU8|Q(~Q$>v?yw^6hPsPbVXzd<`(gIppu%=3T=^NOaw;SX9IxjYS3BTpH9=*ymW^B4Gb`SP?(gW^>y?)|t)D-X2*ej)bnKB4 z%FprK=nd#eY#0d#Vzbh`BZ@FtUs3jF9!b5|#>8t1hH0^E2%YN^Nr+^b4ZFjWg8kF) zmJ?ZHcN|1;c<;L|J-pGXMML2x?tZ;A9-rZVq!G&ZJXBDDf`EMekD^kPe|lNp#^%Gx z8L{%RJxnNr8?PAO|InI$#YLD-M2Wl<@c%90LDqOSVAjx}PU~xJ9Sg&~(sA?V{J8e+ z=23m#Y8vdXD2h!UiW@5TU6Hn(en{-`+la&t_W>SfUNs4{gAu9K!?7M6l1@%Im_Vyv z-TDg0FPVl#|8OCVU@5~OA`h5gdN%1ia$cOrwYIdTvXAM*OpB% z|G8;7|K0aghZ$?c48PyFDf{Q92ILa_!>`jnUAXXoe(eX=|6SDlA%@fxvbJ&nSUKn_ zx!M5iwLe^2uA~WcEr!>=DxD{VW;e7Uf6M z=AA1X?PFNw7IE}yRCOc6U(#YAlyaKolx1{OqYn|)$HZ#qCVakgt2C$2hU_INsLqn4 zj@E(hs!Cc?2)&!rnyFPAV@{P0@BGBlAf=XKHjQ~aA(CwP!Q^WC>aed#vx9&uamHy; zH44jGfC?#uoMWkR#1nES*@j;f^&l98V4IU=sKiGxcF#)p#foHCb^Jqq0^%HZ!4xP6Sj78~^ZgDk~O_ zGaJYVWw;?_s@xxa?;B{amh+nv1o^#yoYGXtH@|seRp-l+&L3GLzO7IUL?mIEHb|O8 zuu%hBFCFg)wo}9-Tg~4~Bd=B0dfvf3v}3zuBC)~34Vtd}^OAX64PY9h!QW4Le*S*A z8s`K3zzML7NooSbi25(lDkvBR$ltpBe+tt-bou|i{6nQL_x-;c{!^*_pyXj|0P)b_a6S4qx>O5_`4_oBMR{I+y6hJgnu{vXY~I_V*b0x0zb=tef9qiPwasR{ozXIaFTmN%t{dWM)c>YJ)%YBE0`gjXC O;KK(9a1!6g(ftAyR0yVRO6nQ~)r{>sD`sI%YPh)kdatx(YUjIAscB?*>*qI`cOHBw`-h;^p^8 zEatkV=q-eylw=VA=4Jkk8xXZ$K|?|2{|gu*$QAB3Z2!W>&ECn{*xufn)!o+SUpT3V zT73axwC&;=pVS`~1gfy?Vj(pb?ZX7NHOSdWTkzVR-Id8(kN|QKvU^9Z-UWk3<{bC> z=p}x%sVbTB16=wSGOcmF4%e~_jMT@5UtXon;MeF=#JwkB{5-m;F2jL`AfJl9H(hY* zIGJH&V>W62NjLFa&~TV<-uH)us*M$#qbfed`(odxsVn&zLOoAsg2_`-9gL)xLVC77Xc+XRg>Vs}K~I3bBM3H`w81V{AL3n(d_{bKw2Y(9Z1bpll@(j zobHBW8iTV9Umko_viGsVVqmGb#Pa7l7tx{PCbMNe=}Vg0d^xEmJKO#0vR{KpT%%PwweZvBauFVBq?mUpRUB$8bWgK#93!ajfnKqlH{n=KQ^ zt&1z9yvtD$AB}5>I{8t1l+`SAd z9xG?8Ib(}oE^)XRFr=ht;*sz@@ZepmT!GepZm2TN&-C}{99%Ul=!GdxT8j~sSBrL% zVl~4($%zi?0+@lI!orcj9W3Z*)ymV57u~9q7_4Y23z0bQYf=EI?kG`@MM0qacda*Z zRBNoMP@hu9a?Myn@i<*zQ+_xRJFDx#iBIIC?ebN9TP1ynlJU{EJNndK?{@JHiX>Pd z!p`PesL8MyciDG%nQWcehr2=7>&sKqm-Xhp;=UN`wSDafvvzaTk~UY*`CjsunRqAj zZ3~;=1H11xFV{p6^Y5E=MHh(K&=<+#^!qz5xBL!l?v;ZUaI6k9rnAbO?-=?zIjg69 z8LQR`NJ_v8@A+m|usBL+}DvJvyfRtA;P%_2 zQPL}x6k9OOQf~(hkyS;Jos4h9b>cx{oF581wQ_Yw2}=Kn`qBZIqyC=1skY7~#T$cDGgU_nz5yuVz2^de9{^b(R79b}xQ&kryOS^Z@&pz=z`N?ic3S;2uM74q?b5;hU4IV`; z@KJd`D+dgfctccRG{vXScM`m{1`%)NhYvq) zXG_F&UAejKaK7Rs`w`=9ZC|@9%4_A?;~Mg*84bB7YTTUJtKnD>eCFKo<1>R@aQfJh z0zt*APK3Dg630(uZ`lJ1L3PJAeW&AJ-cT-mMOqrOsI0{f{JEX1(6}18S#wu`apV%P zV_t^~>*(3K(OhL{!K<75g-4(jgksLGwTP5e@mj>_YQ15VdBW}h&P~i zn!QEtD31LE_lQ+EP{XG1J!=I&8+S#m1BRuklwq^`6`iMpBbBFvbE4J8FSXH>Cg__~ zX!7pe)Fc#Vxk#gQ<|eln#wN?JLuV0tE6|t2*%R(QU&DPB>Wla^+LbnP(M`ZZREErM zd3JBKMv;LJ&_Zy35};N_$#h%n31=So5+#7ITm5H@C>S|Un#fhKwpxJqLLw8hLMR)*kwh@()Ekz% z$rzq)>KFc35)($cRDByPjBd_a=j}+GJ~)9WETzIK)Y&2LCVBGD3ZF~$OGCh}YC}<0 zR@p6UiHGd2;kzjYKa9+`us91QhEeJxTT!N8#Xab<2jUHDz&}2;v{6)DQ-)Me;~xtt zeJt8qZ>98hiZu~dM&}$0DCGc@wiP${)x@5pmL=AyW)?St!Po5JdsuBA2?7W)Sb-_K zWc)++%k+f>b#qVOei}=ZkRjVryrxoyH$wC+x6&b;q{cbDz|b3=napIzX(4XShpFC`b7tK3oHsfzoXq@Mne)zUN-T^6 zhRb!7F~5(LhV!U#Rg0=uXe;B6Fy}EXDoypmtA{125JCo&ky4APso&o>MYbtZYYa|4Q8pD*Ea`T){mj#R3ae^@V;FDGZyGP2?;KSaQ zRoh6S94~`z%ZU)egaf&fjv~96H4?BtRa7+C1fxJWmFYw&w6&D^#V*ScidXxo*QRCi zIWkb*Gc}}ggl_RCN!~jaRpV_3F@zI8y?72?HX!m`4_GKD7}9?VU8w&KT`nFrX1`@STI6z6L?n`i2Dd337fly)w?^F=K;i*`H~} zp8N4A=_C00MSO`xr@UF|EgU{HpZ z+b2f7dAY=pe=xw*qV1HrUy>lotixqnkQY!BS@lj2A!2jAj{R0s$<42>c$!JNR~`TwgP{dID&n_}EjSG6%qFygpj_#S z{xflmEAR1l1woG^UbNjwOm8a|Lh(8-vQy4`e>-?w-b; z3UGK1lHA+5nhJ1`rbf$2?qF~PB=BS=26&f$MbYW&x5iE{wxv?lbJY?Ez?&qjk5DKc zw{?Lx^c#QLL^p5*Eer<{zeirs;w$!U1)T_3Esz9=+4E~m$txc)Uw6IrhV3~{wyldB zD<7F>Gdq_sbmjD}w(vXa-qM(|DYLIw)Gl5W<7zFOtrx3(YWkrLH<8#`wsU!Tyoy*j3*T{?L^sew9F30clZtAFD$~UNVKhWm8URY->pHN&C z)|r#ZXgX*n4zxb0`85+!?xX*3u=O&sV?cI7mT9R=pre8{!SwuHCEi5R+Hh2q!?(&y z`Us#-bJ!#IFO3M^xZUwuVI4T`S_3yL<^@B|M!d&JA!BMimitsU>~RB)HGxHU*@^kdXbjjm%J1fiygHYaO#rIcFIQ?Z)M?IoP^>~L;1Yq`z@23dBlK@W0cp5*TOe3#h#T- z7`N+50=;pKQt#=ouMcLC+qAdFuAl7A;$fGDE_Q!d6C9$9wg=r|(O3eO^a*em3|)JZ z=UkVv{dfrNRPagJ0MqX^m}?VBE$*V#EANrM%(?8qw0E3y^7KiFq5tCYHP`&Ps;nqQ)!2fm#1jM;g(KFZeEdfK5r6EZ5@e8`T- z-8Wa2h;d!RZoz*%-5olsS>nhrU$*2v(r4Re-}khPImo%3Ta?WREZ>q@yX(C8*;VMU zd`^8bhg=uN((_=w^u3|GUPW9Jza{zG;d)&sj2m__bsF)iz=YUp^x|~(L_4=@`mJ8G zu*=3TAD_$za(dwzc3Dp!>;Agw$6tCr=EoB>kBPUpk3`L#@aMZ;9m34l@7R6l_Y_}U zzpFh}4W7I4N>(_Y2C))L9Kg0Ojq3B1j!axH3_sMTbhdypjq)0tlWln%mn2ld9kS|d zy@u};h=W%J{bp9fza){krrqX;n@LW&7K8RK@6I#vtYh*bVr=UaHtV!}arFHT6Grvb zE8c{^6kFPtrc_9W!>pxCIHuwPwdw3=rWmjr<3A6JYht}m z-IMNN#0E=qjr59ORdTQ=inq$G#E}IkkYd7qxXhxMtTgc#=~MtflirD7>@Bjv`c;8x z02fDz6qC)0uzqV`y4s_5H)|bfi9W=LX>0{p_h^T!x>? z^Ca0PmHY+kH^j{sjS@rcHV}s?YJ|5=F4;d2hbXFq3@iGQM3O9qdgj~UjN|rgqm(pq zRIODmB)4xQqzNZGW3bAIqfxDw6Wuw9KJN)i z1M1(7rs(O;YuB3%y<_w;tqo)%x*3(g@Uox=2-Ryl&Dt2X#Iv8`O(w`87ik+(;ju8n zgmJwfl<9?+bfYn_m=5JetfR&BiY3H`-Ps7F0LG%jirU60`%4JRh%=YNMWtaG!bkTc z1p2zunWHg`2$k2^l(OsOL9{q`(+~5f$+=9Aw~!7kSo6zAZ{2j2EVmmXP51 zopE7z;r9%69R)m1uuuP&{QgTk%R_3Qp8!_1(Vjg3`kP}bxvbFoLDNWlWEgKlmg!Q8 zeQapdGE3M-rM*&Vh`Z=7Xnw;#abQN4+`YTw!eTc!DZdZ8<8yseqK1S|~7+%xl z|ClW4Ftu^uj+H{5@#sZbYn1BpjRZhfuVBNTdlbw8<>_HX9Z4lSVnJoZKx#7Df^5W7 z#`iL9L#s)Fz;ek^l0nnDai*#y9DH*Q9TmKkAqs#w2f#lyGKqxS6k;k}_iyo$Wnz5b zp&S-?EK3uAB`UPRt!P-3c3y#Kh!E_+g1N~(MA5Ec7*QoX(-b)vUOg=1Qj{%uyQV=t z-=yANOemcasZeu8DZ2$6BvL=#~7#`wE$!*p2+ zXE-x+&kI+O0QEbWo-QwV6JTyP!Kg*z7ULO8N+`V&OtEx~2vV_bwut))AyCX!&ITyf z^k59ip9BQN#9c@FUiE5`mMZ zj793JJD{IH5RMv!$7Ylumwy_V%iqJL8D$wcvncHY1QI#eN@CYE#r8TSPu6jXKz2fY&sbWR?Vx zSoJ0nvtB;FyLg=41jj0xYgBZs+CY4)dQ+rNI{3R-%B$vgCYe#;)WK*Z38m*6ZY9BL zBy?|`iVAQ>!-4QKRFU0nQjA%8j!n2fuuA-{XUY6<$Vx8}XX}(4dohIcQ4wcVO8BrE z80ctFvLvx3n4*DnOwn9&4ADS5rfAdVlK2&m2%$t;nh?%= zfp=Gh{%-zgCgRnsAo1oZTG|CX+*T~B9F-5SD(-w!^cY#e=qZ$5P{bT!#+>wof?_1q zMVq4BAcrr!=8+7Ww5Zm3+gfaS+ft)vQc+4Q9z7)SV;KeF{A}zl8-qHTjU?iWD$Z1X z#6ut*?r=pZ0u5|M=!L#_|a{dp^2k|GEJ3k(gK8t^6Ti47(Px=4PJ7{i2D{7e`y zM;REGMvaP{MjgqJk&MD`NsS|)gAroNNza(e&-3_f69G(G6N66i;}a=J-Wql+a|j_cUM1)FIBD6QjW`mM&uS4s_Y@!q)jEF% z0@u!Y!H)&Fk<6Nh==ZGKnnAmSHI26@YG!MNs5m4u*uOl2on) zu{9N<>E>7t1h1i7A-|u5u3adbIOJG>`_d?!%M6BAjbl`sidd(l-iPHENV#%_c#SQn?rs1xiv6@W!1Q^sqAeWoCHS`LbUO!m`Z>!;P*zEv< z5a329{bn4_+i)3*Dnz=3743A#cI zj3Ne#rOXj>0BQx?V0+kjqO_KOiexNy_ptRCrH%)(-$W_T11SZtVg$3OaYk|>t|C0p zkE%Xk6^mAKJbLmN%gwNL$FxwyLZ<90m!|}%Wx(m-3YV5aad7@h8ynPE0`W*Y$~%-E zRstY^*F+3@Q|t>V=yRTD?^5uU6;1o7ovzE(me@Yml^Yn8t+i%`akNK8a(b3)+gZD|U-SoPl5_sklbkK_`uqJSt z*Y4)r{y}+bVjH3UXxa5-buaxBDZ-+z^`(De=K#+WKO*m<;s?wdB08PRKKqeFv!;Ff z29=kE@9e*@kF^v&nPUbcK9w|h=AVod)j0ARa9#R%EHAJgx7YG`&e%Wluz!4N@m#R3 zk55YxPrdfIY4Fzha1dr!Xy8v}$jjl0dv4~6Eg`-AD-2E0;obU^!NimHuc71b-5))+ zkK2pgcHl(m^$Jg1=3lp?EfgxWFW!83AuY!I;rwBkW#wjn&yP z0d#qg9FCgqKb`Y1A?G|(dlMxmdk1GW6MHAK=j60)+?WES;u?4&_;%ZK3zjA@kLDwv zLmn11lOy*PkLzjnq5Mq8YXup3%;uv}Z?fgqu^%Ps@1e*GxL=lr$D0~8;Z9$?Tx=8m zj!uI-7-=+2WHE#Yt?kN->c-tjX3*xkq5NjhI2MuH?d2k6OWJgoTaGpZ70B4xy4{?h z@TAn_KH^fue&j66N`#JpLjZ1vl{P+Gs#~>yxGfC^wm3&5pj)IoFRzoue*tvbwbD#g z-AL>c7Z@CeC0W>XTNBkN{N)e3~%A zFeO=4=JuC^lDB-r(%XW2L<0HM6bLS+ly)}kxZf?9PAhhR@ody=s7o z@t+x~WbOhxtQ6x7^-t~;`to}zoZV2rWNz!uW&ZY2yh@w+ms<37 z!$Vx@v9M~n%}VMD2AVPZsM@2FwR7XXvVt1T8MC1~Nh+GN6saS1FTQKa*wTtUSuil>e zdL`3FToQfrCK$yrH`_!_n0EA)(5?ff_zR<%b-e*kZ#3OLyh8m`eFriCT`Udj3 zK!9#Jxi~~o-U-YtPlbE*pC{LJJ1y(9%pUe@g=ZzB2+wjr(v zmMxDu*Iey+g7MOi>r#lqhmJ6AIt$287HTyHG{(R@9lcJQx;YyY{+&uTTf(J$2eA>u z@51m4XdI}&dSCu*{&?KwB8?`7`4Gx#&h{#*w9i!Km;Gx)Ef;NLm?nW}rv z#{Wg1AVo*WPjLQ!x%s~@{WJPM=kord3P>>ex9b0u+50<}Kcn08o#HP_gk%r@>%Q^# y<$pTya|ry4ev$vN{NDlb@2mgZTK{PP70Umw+bhY!!9R;Yf;@a72L46$Jo`WLJ`T75 literal 0 HcmV?d00001 diff --git a/input/demo-periods/Ф-3_2023.xlsx b/input/demo-periods/Ф-3_2023.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..9e96cfcf5009994647546b18a05d9916dedf0978 GIT binary patch literal 9648 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 literal 0 HcmV?d00001 diff --git a/input/demo-periods/Ф-3_2024.xlsx b/input/demo-periods/Ф-3_2024.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..be590ea23863cdf4f3e409e24823ac11925d43ee GIT binary patch literal 9655 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 literal 0 HcmV?d00001 diff --git a/input/demo-periods/Ф-3_2025.xlsx b/input/demo-periods/Ф-3_2025.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..46bc5f88f6c05546935158fe3af3c0c82e9351dd GIT binary patch literal 9648 zcmaKS1z20#(l!N(OK_*SyF>BfR@^N>DDD&}1Wj>wch}I$a$WoWu| zsFZ!FE@OD)J-%mN7TWb8QMBcsoN%Jbb_;W#{5xzO!Z&GSDRxcgZ@W|d5`94lvDSjc)_jJaeJR?CKw#19e zj%2R!H*%*5V+!$W%K{36;5OBwTu>bcqK@#?7JY7;Xv2o)VSUt*uFnOJHa(_U$|JQq zofQVTE6o&)ddB2DoSkNQpK38pT_2#(ptZ~XG+ju0FpEcHXm08$<2h@Nr*C8K*#WM7}fCs2ue zuoA!{p1_{-%hz4mDIxR+4~TVb&wKo#5bUnb%)%WQs3zY z0BWp`y1kQ1N~GrZq;;giQ%#MivRrWqiu_MR@W*W2BqR<<-Sr#{wP5{54VP$QR4=)# z9j#Y1HyqOd&Ne(n@Ky1CLb=7@Vo|Z>_cboUBgYL!%RCZhs@gmSnI=2igX+?sLr7d} z{<2E<3!lBR>XXxi^X#rRii$Ot$;ffdML=WADaV611!` zIG4)j8MMYn9q6??Lg}-$Gvz3Zi*`?>#*0`n#eCVsgte&M7?Q^}woU5LSr~+P`XJ|3bsBn1)QXU0YMNEK zuw*YEqK{K1#2?!ol;DNr-b%N-1#A>I3L3DS9pTc34gY`_7*#2{VbZ-Fu)1F`5Pjd= z{cWydboZiemuycdB`R*I5o_OVHTl=eXZ!pZ?Z9OEWShb-|H+TB{$-yo79d*?>+g~M z*^B!VSM1W*um?}Cu@g_V-t3*M%v?&7Hg;cIYZ&A9}yEbNmhk5g;R-r%tKr zKYp5iE+Q;UQ@bQW4^t%}lX}KqXU~LyfL$hJd?EE?$?p*B2@e;EtW9?!_! zy%aMRGkd%_eUo1yexwLtSoy7~N8AqN@Lj7yzV<;*unN`pwD)NoTs2JS1<6j@3t{9} z3wF|PYDRjJ;vF;uFd)E!f>FpWCUm4)#aYmcZZ&cM3!3VDIQILRWP}uVl!%AIkHEZl ztv4|gt1Kx{RmtNyAeLZUP8ZnZZ%#zc8u~9KCi2ks_$s$nNPb1g`54$8SGCu>UA%)L z4ipHpv$+;-GHS+I@*P+j^O zp7N!yT+Jsg1}nYin_0%>Y{9`6oa9phY^#49hAWCcu2)Csfkl>$KN%E<&cyU;wxwgO zm!y@=kALLM8+B@C3M2n%JzT8AqSjW&pB*k#DnyAsolnatl^2o81rtERE1kKoXCX+M z6`xnA!sGyEWo)d5^`JqnIK7$O!`UfKKff;xxd`pdU#l%nZ#W+Co595xH7A>QfC;$W zdN59W&6I2lrdsUlpdz#?FSL{M4ZDs%jF0g{VW(87?kGkX7;e?8e^p%?g}(n-H{pOUi&<3Wz0N z7nl;?qqszBSkpFe9Agg-MlTn8m?{ydSvoMA7@K+XtK4P!?&2rgH?@WcUM&%ZAa{%U z`30;^ET#2qVQeBHz{PbJ_v;luq zkCpJtUw6XCoEJM*kxH@$6aec^Z2HeW_llD*ennawx2UMaf_&djQfgcY->A7O2OPTu z?3&l%z&d)it~Xa2S@7!R^zsO_0#VHQwHHwJI#1xDE=lIy2rr9giy1l5^D=hfw1dF8 z*>{2tgqt!b{o4AW5(@na;pK&4<9ouVA*={0C}nfna3Pw$Is9?@)_31$vZo@Ynq= z#l4|Ua){Zq(~GCuqE9(NL|`fxRHDuddp9Y*`lR%!#GoVy?5aK- zVP%!ovKoKH?i#w6Z1~OCd=ry1e_{lsKD-rW`gP1NJ$4B0h$h^_ua-8l%4_nV>S??a zVdaFv&9zo?Z>MNe5fyaK@qiKzgp#(R2EUr<)0EQqI<<_VW-$1gJ#-(l%_B|#J_-|( zyhqAEY`;WXkY6|Zxb@vcs+bhnmQ093T_HNK;Vj2$@8?Z|G-n>@vs-INCcGuhhxg47 z?L0!fr?V$BCR5{hr*kI5<4GrTCJW<9r*pZwTna|9V~r!^UWdc0gle)rHB#qzg4y&T z8RI=GS~tS9Ew{2koFpdMeQd!ux?eJq9H)i3wSG;#=S?k%Vp~(G8*U>3Td)aCnHe|F*>q{3m>nk&&<~fm0_h$tON9%O zEUmVYMmbpm-j)%;h7Yywf9B$et$D7Cee`b94(5J*(}Y1F1> z@Hx_v-!n9%a0GAiCraNt7FOeKf20c~dVKL5x@>^2ay($6pkPS;DRiO!J9N2t*nob= ztYe)OyCoj%jx{v^$_LJ|nDVbmEjphC&{;mHVOJodXb1Tw(uL4TB4Mw51^XFZkX)g) zF88mJd*q!-$5Ia}sTTEPD|BFZxOX@Ud*`D8t-Lzq=x=-_mH5tqk6%AR)%pfO`h~q- zXI*|K8=^KL&rJuus&qt~pk0e_ZZ5o0^sk0xfF1=W%cT6;=kthO$KDwf>{W=6(9f4C ztqjf(#KQmB3|BC7rth|$AI!!_Pzw@}2cbcCm`w-uj=&ymNftLnzyZEGsF5--OtAMt ztLz`Skn&`(epn00dlebEY&ze*|LdZ1VK(pd!`@!u?YX4=+p($4BUJ!7K8yIH2QxG|zN71JcvJu|YC}}T=jZlQqH*1!mcbX_ z$;2qMh!%RT;JMzsDAI>2;o)aV=cO+Uj{Qi6F1KkH8|=Q(yD-MxXxgE!DgQmS zC>X3Gbv~IEq^xV3iDiKr=NOpZ=Rd9vk9~YApjHbih5pJmaEf-So$b0twE8OASx$VM zB6F_D-bY|;bGOUIYIEL1b7AbwxKp=e@i#sGx9Ev908DJ>!2PAMAdFo8z=Q)W?_s$u zGX+N~4MMR^2@&cEE+Q7{w;FkU78E=`fCRoJCBpHD?8sKrwnQ2ywsF)owk!Rm7IZ4m z3I{}}H_VH4d541xEjmsq2gPw>jJjO5`MCi#;g#?7;bTlfkb7AN3VbnQ2rif?{)#Zpbuy!Jq#G8~@Qry!DaY{8~WV>G1}1m?(= z5B!h-TzP+fmrtn40m4BQ_4rO2L_G|FAnBgFXig=no=6ov$& zhO-Iv%aH3_SH?+CdylyN52PP;F9=rY{Tq#n1aPW+vO+$rf{S*K)mxi0SCw)aXpWB4 zH)pf7d<=X#9$YRbF89hht?d)lMD%8*oOz7=Xdj`Uou3g@2I_%O0w9~uc{F%Yi(@&9nJHK({x>FTrOBvI7 zfqCqGk7=`+TYq}KW@S(6aoSS$QN)wQ&|YMrzKCgRl_6OYNX!zu$fUnhIc(VQtwL3# zQ+oGtKDNeHYt8>cDMiw>Y~l36X-9I+kk@CwfmcA)C;$|FKO~^v-ZHe<8O9K1oN_Z| z%Qw&KvB7L=;&HfkfIL)lBev!!^?sG}tr{-<|-rUr$Nqs}kAU$q8Q0afy>EQ_NoSGmT*XmcGMsS;JU{deEnu~_Z|@IR!V_8D2?kbA+;rZO+%^F% zd+$W>8Vl1<3BXn7GW&G*SYvTXqosPzsmz16i>-7Ap3~P~f~|`#XBVu~A!VC#q`$I$ zUUd~X5ZzWk?y|aKr3Bs0*A3eS9a2YCvbe-=9j$S#%G+ZVxpCRMSPQzjdQKSn-!2=e z)uxOmTpPTud_dMC2Ka%&wER?PM)~6 zZvO6z%|dA_A{w=XS@zSziUMP1dApfprQ^$HajExSo_2NykaOGrW#cJ(2SIVe|J< z%(BdmN=J+;&2IDkeNEz z=c3>aI~dCU65|oeKgm=`8K)%u(eT?+{rr2aZR*uoN$d`-T$`0T?skL1<8n}#c&$$D z$5%U`%{h&YwEgT8H!Bu{)qxa^Un|;1;8qTnZ}uet{8Nb#1}qZUWYDHAW(0>LC1RO^ z3pFq)B$FzgV=76aRsn@-BQYe0N*81zK>;U5f(4uVK^}l`2q6Q^(~FUPa)b37@+L=s zTxF60mf-zG9bO?qPk|}&jwxGQne#Fd$BZlwlB3Z|?z3aZma9IH6SqxvBhR~U48(&2 zfKx(|7m<`;|E_gHV(Gxam?=jy1pt13<6z9NqnR9F23kxRc`)W~YpB<8`;70$g?xVg z#{r%C$!PCxuc=jvU18{R$sjT|BYiB`-LN#U(cBVk7$Ct+0X~Z*Rt0WEj)RAbGg=0D z;6RxIZA6X&^*dtP}y;*w5H%v2QRT zbq<#_81PB(uyJj!_iHbNN zopw6Bw;q(Gq1P~j3u(2L*ARVt4eR&9M-hhH^BhX~CJ6bB^J6y?iLj*y6De=!;Yb690}c_LamHW#y)RKPWU zQ{iY5qp09&Zc48W9UZ>sxEd5({&|IKc|oQoG-3XO{w6-M}YvI`OxI%apmE#wKoco)Q7|JVNOabXujef7)j zknmLGs782`a+(JHBVpebgiR+`?upXMLgl2FbPj;B4CJ&R1uS3`n3iIWQS^SL|-cTfJ z^qK`i!U>g((fg9WI#n-0ZBodDg^dc8HR;o{jJ<18#Z8_dL)hg+@V`aT3Psk^F&O3| z#t(jik$3_;ydG&Rn%a%ht<1sV&PhQUP{1x`9K0eY5gbOAOiN|puje5Rz)q52Dhkwb zMy!UwRnxc`!20WKgw>?R{k4X=*Pcy(fP0jI)zYz0@qK({`;Dcgd|4_Yn#FOvPTLp@-h zC{ZN5L@;!7@^@p@jV*H-vNK~-yRDuWwq(r~5K87p47jM7!g5n_M~G$aX0XT)!Ej}& z%kHC)6@pglV!r7}S5e2kigx8fWn$8l2IuE_e4cc972XXiGo0o1vu9Z|NiZN4 zB&{;C8f7{8SQ8on1m2nwdIQU5>?aME^dd%T915wY0zsa#bG|8yRpbp5`UFCM4b@oo z*P$tgynO`cb$8v2#;Z3v;x6t8GoMqy)$1^Mz4$7%^7tzC*0NI@y`SXCkmu=ypy`*3 zE)gM7MK7!ovP$2~MMpe|rU@G;x2CaD;%Hh+1HfHpsSP9-^W#d+5TEO$mtchEDeRtC(R2fupjqQe=W(IzDG3~)G#~=?^Ckdl0jl5<0yoey_OxKsaJc)sT4vX)+ z&ZU>ps4X#Ug`uERm%wzZte_|FJket83SA(n1za)K!=15y$E0v z<1zz824MJow{RN6XQDGl$pir4<`2|xDa+{#9VKSjv--)2bF^_kYD5nSk(6ACO~nMF zr8||K&qdSeNcaOS7_DPwD z(`d0KF+vQPLKeh;gn@7sx|Xd3`lo5m8cmoY=>&Fb`BEvdD^k9AP{LABf6f3fYas8(hW;EL7314_W>a1N2Wdy?*rF{j6u7 zYu1fO%2c0Fj$;|Zg#`SUF5(P)68s!~Hu{BEPl$;;P(}A(a2o?oJcCer`hEuUuS$$# z42X`$#G*S&NXw~zdVuuHSezv75I64zGdoFK>v7XDMLS7L2O?TUuJ}|oUsNFM-Je^$ zu|oSo$FDYxRH%X=CcCIpdJtDQ_ z(K3b{aOfxq0VRouK!d6*)S|28J^Kby^nRMn1MyQ#pHd%jRq?o%!S29e|)^3Us90jr} zwlLpfVL6ow+^#AeWEdL>$kR_%4+}?n{2p<~c*7}5lm=}=xHgC=`$d35hLBmb*B1mw z;)x-|fb(C>K!-bCaug-OXM2M+4Ob>DYsA=dg-{$|q47+fox+fem+(#ojmF_K0T@CEL<6${(#lUwx zD|)OS(CRioR}^~fxI;#^X^-iUv?E#}R4-Jlio4Cmq@!O=2lfrBmD5g^e1(?UKVOHj zDcne3uE={E@g_txp5+Ct7j=TMwpOieYLlKGTk+Lyt6JwfH5o0jzR=YQqp!_Ju|9k# z^(>*yp_|MYTm9^%vjS1U^bpG>G5Szz?^Ct+*aka%0`5uh*gkG=aoc50%5X^N*wvB# zKvF3$*1ih+0ZG$Ma6_pZ0+mPy0YK zdsAg6dk1G$Q+p@SbMo3YW?bp1A`3Ycl-%~*gr$PyQYG*?&! z8+RkAVVmo^iujO8G$OYf^8$HG>U5V|whkQy(8Srg-5kH*w8Zp2>{8Tz^hc(ZC=EV` zz{_10>ewuqZnb=(wp19{qHNKCZqc&b+)gI{dEi;sax+DJUtECX#k9f&`w(p8mUg%s zC*hjWRMh49(*3M{s--%y%shgjGdfDeDd7iZ6J|08R+533tTdnSVjRw2fW0rb@*N!?OkWuQp{rrfhOXP8}H@DLbm$^=T)c_Oa|7En6i?l`cl1@8%;)Rj! z5U^PagHt;?TF`IIVgcbew)9>GdoS28iQBq!iNAdex56ftS(~08dg20Sy@BLP%G*H zRcB1PcJ{Ncyr5=t`b_X{qN>&mS;}bLiybXFTk1ED){Iu#)#f;pWy9O4xVq$Y3hWlq zw@0LM4VG*k7QbBf^cc2L2xLzLY(9-5au#B|e1o22tNTqT_)4ygs5tUQJP^e(C(Be_ zgnI0nlZnfYY)A7f?|uHArdcKddnN8bgwQ&A&?k<`z{u+(w=pEN;aD9nlj%H*rAc(# zd3)WeT3}3Od<&E03w=DI1NszBTzoffs1celQ<@azEuhZ@Jao(H#Sx0iE+nTc<>iC_ z+$$}&v(iq>tP#IfI2KZ}&`bw3JyOKTfsOl)M-<1&S0fwE@?{a{S}Q$|FkS{RT}lyn z&|xM`KLYZSgj-Dz8lzwykA+gFZhnl5{7yB47IDbmJ*^Sl@51p5Xl$szdSm`<4teg4 z`A_yLE#SY3hJTmvXDaVGTmKhTJryON{(|%W%iaH- z_0Q=4oa_6G%AbPKzg7RQ%-`Ro{2ASz?-YMg-BWh)zwR4>FMSBw7`Uv&qx0UG~_wn literal 0 HcmV?d00001 diff --git a/input/demo-periods/Ф-4_2024-H2.xlsx b/input/demo-periods/Ф-4_2024-H2.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e3faab5e0021bea2cd773e99a8abc3d901ef1607 GIT binary patch literal 11510 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 literal 0 HcmV?d00001 diff --git a/input/demo-periods/Ф-4_2025-H1.xlsx b/input/demo-periods/Ф-4_2025-H1.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e5ec3668f91d5f0bfab2b4631ad4b8b025be8ed6 GIT binary patch literal 11491 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 E0NG}IZ2$lO literal 0 HcmV?d00001 diff --git a/input/demo-periods/Ф-5_2024.xlsx b/input/demo-periods/Ф-5_2024.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..b07e6ea4e056c79ae40e637d92be30d437d6a364 GIT binary patch literal 11846 zcmaKS1y~$Qvo_8m3GR}`A-Dwz9^5UsI|PT|4uQpCad&rj2pT-NyK8WV@WVOx`A_b- z_kOic&&ASQIrQCDdBZ7!tp728QtV6BvmX# z)TUU2HZ0;1*F7iW?ad)U+ZWXlvQZUDaumbC;;A0XOCZ=9vYLQtPD`OnO^16!FORS( z$Y|NfJ-|v^7y8*~?;2Eey<)cV5Uvt*6Od3@bSN6+yrlyr$~C^BnjJ-dLoLe4+KMLk zQ&{P9CcbQoC8P75yDWfuMzd-SWS7>cToabq@s+13$Uco9V>h7uw*yxrKs54qD_CZK z$ZY!iIF%VcguE0yz@*r(VeO^cAE6*#zW-mq;J^IC#gg%FY@BWEzZlrqd|`00viut- zML~;hCe+qlEQ6D}quc;Rx?Oa{ru=>AfYy3xO9?X$tMi9q88bpa7JNp}u!U)${?N4D zUN4pCL93Fy5f{L*Z#L}G;PE2M5 zeYKyi3uP!>uy1RIKA$n%hEk;C8@s;9BOIj#@4H5-(EeE%Z)L=r3!bA5*9nHw2(=Ce z=^yOnM$)=n!;-EJ_R}1%IJJ*)?1lRKaeq9{ZIMQ`CYOn!R6_l)KfJr~susEV;eNxFm(*Vr$xsmtKxE=Ss5 z_WvLh$DH-#<05Y#7jpiAQnx(5jrlCh*myAaJqaZN)0WHij#=5IcJ@?S(4iDY%+i9z z!9(D#Jkz8qRxIv7EJI>%dHa=2o^Ku{eC4;xZXoEj<#S|7wvaGsZY2TyF%vrxku73p9n1R~PpyW}j!}efJR~!= zRo_wGvP__|w&KWmUKj4gm74unC@3^PU1h^RvRkJ$&mp2GugQ@XZ?v}BuPVOpM`T;| zlaPI!AN9znOJIti(AqdkG?K;_XxXuNqPas{%4ST8?U71?**+CnhXkFQkW?VeO+=;QsV_uY@4UxF>EC7)G&Z%IV&}-PqX%bSDeDPj6hOltizhPwKnEbQDhdxr*N2}R)EsB{)FOYq_V@XqR(R}gxa@pLQB>)^WXxg%#-8&^;uGwve}0Ryr89i-O+MKF6vr5U`=_Isv6V67Uq|NG zDDI74woYNf{Bd%F8GoYssY?t5R<`1+4V8_V`2|U6`@Mv@-)V9C*c2H7Ra`7bnM~1d zCa!3zJ(dArM5zPU{F6fWtlZGBwPR_A&;%T>Cye%*uC1+ThJT%Wo2JI)VR&$O=0U-_nDq|^l8{9 zGp)1ho`=@kxAZFl2sw{Unu4EmX8YGW-%>}QYX?&93H59J6Nm6 zeQ3&8atRAPWt}*ume5(7u`qeYI2BO0l)nwY6~rFbDFeD-kR)P%{SbmmNB3y5qGqfU zp_0greP+!WvTvdbCAt4HP^iwJ)LP4x8OB@8ONKI$OT{Xh6Q0fn?N7uZmcFNH#zUMD zo0G3VXY0vG+fW7LN{Lif86Igg^f030-Uvl_P^Ww ztr!21F44-9e4(eE9N(fe-&)cq^d|N&Hrf}NnM|Roy%4#tUk?5K_u*^#9nHiOE7+_U zN$orfUkA#%@#$hp48mxC%|q!%-xMS9W&E>837baXteMxDFjP^!PAb&Yi(wSQ+GIf( zu>nEFo)uHSeE?b@;Z(K{g`PDIzV(noSsYnfjYXb??~}+W34S<{dv$VoXLaPVI*cx~ z5PbX{aeNMOJOr(pV6QsPUk#BN4l6lo)rM(j#2i8rkZe%eu%gvfhzfV2{tM- z@i;@5jZRcb8rrmUD-6r@n1e$%EKQb9+%>I@%F?b4D!*`sE{X<<=3|{Z8ZVEZx=eRu z7*gcuhvVY0ceWA<@}_$=9k~Z+ux5xc6_G6Drj;|3i_0~N%iiu6iTwO3SNBzfX#NMr z=Sh_PRXqkJoy4Ka)*+)`B?$)t$2mQWQ?zwKXwQQ82D#7HzXO9kBxd=pr?|8m=v8^Q zaGHx}_r1dqH|=v5gh~080Wla~rTNnae)_JQl^1@JQ{CUKU!ORP&j7XvcDT4Hom!#~ z6z!U_wr8lot1`o`Mzzw9Z%DHtT#~sdeSQP>vcRG`9HZ6lC2t?YY7?C0Qf05Mar@ak z9=cf$y+@?nAdnV{{DhG;o+&jeFU1l-ZvX(K`dAxkm5zW8t=iT7&qVX;!s^r@p?W0s z#`^2NexvJ&N-O$~kvVf^i2BriCb+UTZr=AnJ7vuGQ8S!)6n6G&n{Qg}(5!L8M5Nuc z?A|HL0Y1{^VgcEh`YTO*n1YoqwmqB`AwkO+s3k*z2w-hGNQfCnFUXMQTr-yLbN@eeC z*%!?_D_=4ohh9FJtH~E9A>7MAf0uaR=vTukw9P&C~=(ODKIv&{Na}0Qpem6=Lvn-bbp(-Ei%@o2j<4qdnHzOd-S6UR_x06FOo5fZ9`z4_%(U z+TriWpetqys#>zD+2Ep2WOu=`V++UAAE`l&~wit?$%U!ABfL4r^i5I zDv^}w;crx6HYuulT*ui|msMH{CVj5Rycp7ES(YQ3^jvzx)1w>l*|*8Vm;6T@g1ZT9 zOX@!tJCum?NwTXgpiQ0#r-tV#kYGN^1vR_(>L@j*1 z)Od^Y%SD{p*KzQB-j?Qm)4)$SWhoPk3vdL6JU zBwXj*5psXNfgg==#Ya?_^f{r}4aG&EoIAco+&IgC|D@*Ushq6%3JW&Ng<9L5ql%vT zc*$min51H~LQA>tn4ZIH2(3vaNh5>r!sdR;>|Vr^pxB`{ zrLLKhod4{Q?jG!qKX&C#7?I&(I@TrJ8Q}1W{UCfFjQz7QvDDNkz_Tue^5%~9I0v6c z>0#wZhig2x61ydbaNmPVpu`?0#Q|-L$+SQ(*x7;i8V^d4NXF%%O15xinNfS`sZJrO z1zq`#iiv@MgF%9|Fe%1I%IC7A@8o*;#A+?SC59*J)1sy*C*yt#qQ?dA=TmL(_z&b6 zh8RdI5%l8Pk%u_2$|@j(Q>fvXBgB~dV?jJow7;NZ469Koe`o;6BGk<6X9k2~W{K!v zNKqS5`(rCn`>`6vrV{A_2CA^TKxEj-U6Pt+Sv14y;ok&cHn5?R(6OPKHn6)|tt!7U zam@(f+Vu#{F4Mt)36OjNJ@hav6m&55z4S02DBvI0Nsr8rn}@8mNOe`L#!CjLJf(YQ zYu}vH6j^JoZdS#$o8uIG2a(A#hm&A%_p;5L;1_(4mEeT!kF`aN`U0GryP})JwSzh0 ziN6%8yij9d(K8$*{|=XguIH}>-PyN5jr2j35Yiovww`2;RSk$+$!z@clQcr5V7afJ z;hR`k0|@#CI#OeBaltv^ zEWP8RO>jBK)tivPWM&U)b_nBe18)|(k6iR9i5ITwiAE0BamZFqm5&wQYQtZhHu&4FOcND_7t(nDalAbKcz>qIW_Jy?jXA$p7Bs4mdKC0sqygNr?KuY z8(9O`&PV$6L<9P{thk;CRa|9YkZaxvCb`|x_jBReC3wP%6AF4vn3HYGaSvN$vLN&b z<`aV=zjSW395D)P05+6l2`Ie>_2B{UV+06|4t#GLu|?a5_@KxmfWPV^Pb)qiT?!bZ zgZ!m=QQyr%0gj01Hp;u(`Hur{Yr7-fDpUG$_D?~d*}ZvOgXaltJnT8yO`DBC03Dus3wn}QUR zM&7Y+6t=ma$SsJWWsk_jT3IpHXu#0jghvoab}qWH`LObE8;wabm^1WQxRZ(wy(_ccJd}fl|O5SK7=|e9B(Anuz8$Z?uT;!z{3g|oo(dU?xW2~J~#4sFTQ|d8vJcMXg zK>H$athZ;MqqEYXew&fqwVu8!z9Qp%*gqQPYd9{Mxwx6mF85q*Zk4w2Zn8KIo?pbM zA*=*B$(4Gs$3Iy{uIdfRwWufQY>xZYgj;?xL*7(4$MX)QF&iP4q3>YnVBJzIZTWhjE?l-Gi=oI z&zY(NiTreHO6ddVNN3?Ivi_gCigKiA=m23|J&K6AZBDCqgZ@Q;~Fe zTP~cqnK&RbGJRNuS9=+>fXRAliC&wtbQ}?4n2foSWa6j?C0kV{-FaKl%>&HIpkNOz zxTta*hFB7bAF|2Ti-q_aXfjcFtV-=7MEz8skSZ z!h?v^5&Ld~Ur}k|Iawc*o0X**sS(ry8VGff7^1z@yDDISGX_qYxx~ANv!sYX>mN z8CLCTz;#VyRE;XTIoW*6f?qUpLkBm%o{oOkSHV{jxBBRL5L)ceQ0RG`rfMpaXa~2 z-p36~-iFGI2F7Hi`THep;wXtU#cZbE;Yn9ppAbI*Vt*yn{tB&Mjcx%8R>4zLAou8} zl$|5xmW7N_*{pi}qa(|WkyVc8C9kHZ!<~*rMvmwBo%qjQor=&S3y&k_kNmG$!;TR< z{s9^Sf|lYxWewcFv&QSXm4lhFv7-ayU#Gto2imlUoHiuUmwu|+s*TX~<&&TBSpP)R zdxRn2XR6EzU)s?M!~Oni@#e6gX9yL|2mb0Re=#?krG}+MNRdX0`~GJ}#Z!+v6aGzC zXG1QRI0Z)M8qLu)9Dh5-yI-`=qZAmM5~gFvm)(M=^mnwlRL>5NkvSRbdy!{SsM6>v zoqCV-cPvTBNI^lH1qo|)tbBl=&hNyoZ^bIof}gnV?Kp`e{A8UM_UgR%aut)hXJu`o zQq8Hu_;ScRyngY*ZlCTSv*SveNQw%+ynp|S)OG7V6I#qzmfJs!;O4hd#ra*@sFqHo ze!xn+?|#f1-eq^o!{vggyIXF@coB40=k=S*{(91AqQ2y$jaq3`X#Q~0)a`Bo@9FHr zW5YCWZS?)h;SFU+K9MZ(JDIE1F!Y~ozsYewcbChYI~4H0J*v{*6|=>WCJvn3jCnZi zL&Oe3iHv-^8y*?i%$pL~U(-YF@;m-grnBSg5`gs^n_K74v%%HiGpXAe1743q=RTxw zO6&WDvuy`&plH*=R(84;Pfcl#GUmpYo^|r#iN;!al8; zqdTfDYIn%o&-5=>%%13b7iALgIIrBt^uvB(Af(?qnc1`%5X2m7|BUyR3?nadHIh47 znnz^Lp@e^v0>k^;`r)!tflarOVo}^`ow-A-C}i8gBjRele$u<}otYb^M>2E~HzkGS z{5B92&ynzj?Jp6Q@v4cNweFP2)tda^Gw)rRyMDD?m#Y&Ii}#bvhB3U60pVSS6(3#i z;)jWhs_QglQIcDCq1q}FNm69o-tD2VP#n)dCMkJ?{P96I^?vVE+(TezF#wthZ&lm8q^)sdYl zGM-Un*GjF^F`LfXunTbSyL-A`YT{L$AA0n1Us*~oIFi|P<&@eC)BhMVdNxk|n1m~% z#8ksQbUQKT=;4|KO(nxuiqe#nvW4??^qQ+0M<(uUs?_RZ{lv}Y)cCsl);ghrQGmKw zEbe+K*~$`?+S0SE5j z2G8{OEK5>;Of;JO`b+e^U4c$6e<2Jk1!k;*?MAu$fPl803NB>#uUIsuy-{4qPrp*p znB*B=?ree4n8eFp?&J;vGQTH-aOKzPd<2wjU|_m5a8N;qWj+FWConLi?u=LHQG^V&iT#Zc9Hls$rHzUG*$& z4vG0@4T&)a?Vl^??Y$JHa|7&&Z<&cfjwIA3q}qUxqCJDHUag)X8eM78R*&;uORXj^ zjgN9JnxhyQ>aMpPa#$;=H>$D`OfVs=;wD$=??eS81oR+cVPVd_yV`R}p0FT&k1`Me zLqz?)qtzfg22sH6_9ZypU%yTZFgHPW3=$K3<`&tDyH=|;;{OJs07f(Uh%b-iU= zP=Y&5#Np7ryLH@T5rf3EsiB;$VPOJ)5G_g)Wv08MeQi9bK*#j1fry+YI#(Ku0ag~bmjttdQ)9OL$P>t$NG0OP z*}+;dTY=45Z|OQb9>Q91>dooSzU}3vaC=&vaFhf^v!i{0c~m_AsiaW zexk+dfC!`+QcHEx%ct&{xfREcSwGAcx4gEs!sJ5*_X+b$>A`{l>7rfl!MVa<771B# zMUnv;iBWNTSuhe<3%nIV{uw+aZZ88S08dHSw~(rnT@I^axCK(7YvEzB3iqnxLQ+8b zN@!!FW)@(qBMr}n_(1$jX9)mkoB48iGt>gJkO1gzCWn|Sl6!c`sqteZgwx0O4T{1t zjgeuas0NNslMeQcoVqw6QR5=A-_t(U$8ifNwwOj8qUW4sB#4GZ@%R1J;A+=IBYL;a(YPoN=|gd(X#5;+xlQPfr}xhXjp)c~vngM_^Z_`QS$c@yQp8;Jw*Chh1_ zX18mp*_|3CMn&4D5&fzk$YAYndUZiQdQC5-E$9>$i4O*bmJe6Rk)d|YFLcb$@de{u zR&nch+`7~4xem5j%^km!Pl@MKNqTmU@^-l!o7G?1J0c>PS>tRuRL!N6!P-B9k#h2` zzVAAJah^wXk@AN2MBWwAe}aKe%QDo+L%N5Za?q0oW7`GB=dhR10T4Ei{^=Zbu-Zoe zC^whDbE+;P;PX=!Pe_`)b`3);3pPnyAS&4YfmK148I3P;>D4;2Ip)mNGE^1yfXl#zg2x1O zh4d$=*-+Pf)P73|0idLDU?OI~LqHlcO{s@GZmFjpvR$+ybgUD@6c7&q09NqwW*MYq z=~7&H8L-uD#GB}FTp`OIYd0OljF8!Hq()?ro$v}T{YRUTWuhKI$-e$6W%!&Q$y`0X zWxai&hB}5mAimk{`)YoOH0EBBJ7jpgwa1j&VT?OrO$igBYnK{5Ku$4N?v_r(@6`M}2L1_P}q+2appn-%lp@lL?rsyvyIUWOIJMdi6%Cu??_*xV^sF&eCG@0^!||`HvWknBF{=A|Gj>8n zOO{_OSj{5MtoB(A48$3b^yML^-B!YXxnL1jK{lvX45=1Z5kiZO`;MxfgllAssg6fp z@SY?r;>Cvg$zDK#2y@1Os&A@hA!uPaQHy)_vs>r7=V=LlkdnMtM zSQ<;J<)at^DuoH`9}E^$i6EtgAFycocFf^bjMSqNreANM+E(jtn%Ar-V%dwUfrYap zJRcJBZuPmhU!F|%=-nopbx8aC5JGAWJ>*c{S$u2RM0IdkyAw{hU9Xl5nP!upAxpms zVysBLVkTjA+&N98C53=Xq}O|aVHL?}!Fu!%P#H|%++cX8O1S|o&b);;68khXDQzE< zdR2iAx4-Jq*SwJa5awE2hT-54WGp_rca7e+_#YR30ZVYhQ?hNY`Jg$lYhmb2Z3!Db z_jAx?rC4cl{f4VPf9X1R6_;7Kfo+hCgkPnKv|pu$^nJjU0eS$IA$mYdECt|(h8Fc$ z85@{S%Lu3K>Q{cM(}LeEB;ypLqn#yid5(BJ&Fbo*sFl!ctC|flzR_GsRs0r45;M9N zq-Q9$NEC*ZW2baEvI4PAlTD#FkK94@DZpcLd%C_2(Hq(@uNRbMe9d-&{0oy&0+qgo z_O)b~C29M<6raQ@7y!prs+2>I8nQv31nJ>UuVb12T#TRe97Rome_}NYGc|1vH4=wbZ>4<9 zGI^gO(17lG+JVQhp5ZH+Au~vIX+E7=UtT8|>*k4U4m5sk_tNixUTs!c?9D0kN@=(X z{sqzv0))dap(Af*)A3V{M7rZP;ATHaA_fd=#{)HNaroA?1w{PJI$!!+8B3{QhXbT6 zm7B^)!G+!Xa?fE+9ipE_*&-2;Cm^hr{dRdkze+;;fVAsgn5Mb1-~dmUw_eRLQX!l; z=Xf)s{v#l?#Y7AKU3wi1T}+qMcs=M=wCjE$*|D3w7>=U==M7FQfd_;V7^vZ(`dawL zlUpFxi7%C44Z0MQ&BkBbz^9OJZ7@|-vA^1AY!dX1h~ryvMvoeza9G~KG!fl=iIjGa zS_ZW`&b6|FKlKte?FqBc94LDI<=yth+xkXqVdDY5LA&?$h<7hbVHIUM9NA$hPG$rO zZnEyR6d;uqte5hF_W29i=YOO9YgPrAUn+-LlY%>aBpP3{xsr^FZBd=_msN_v!ewM@ zwZgy6et9vg51pforxG@JO=RUvXV^<)t?KFE(5POPr`IQ-g z_7TA^!v30ZQs@B{UNJzAyOeVT4mwqGfG$LVz@wyL9)j7WmhWv{A2R7+vf*`hDf<(F z^IFgAXbTU5fw^?+CA&Lz9IDy}LWAf)4Og6NVOReU;3{_CUp{^ui}jLTE=K~?iU#_}QoK4^%-`pX zLPuu<<>rso6GRQ$N0pUNee%~aoKn7^8s(~%P~WnbzN=>xI=$HT^+zOG#qASUB$K`U zJGbC5hTcfi!%8(>@=2jxgr{EBZU2g(zV36z#w1e6ji?}hv5n6q<;&8qK1g*h8UVE& zRRaU!k}}V>5d)w)%upe&q~XGzM9{hXSmt7;n=;}EuEqpWODVUys}~P|UxJHI;hf

X#9kjs|Ll1J>w< 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 WIY~&UHxsb0Ki}5@uBLf=`hNgb literal 0 HcmV?d00001 diff --git a/input/demo-periods/Ф-6_2022.xlsx b/input/demo-periods/Ф-6_2022.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..dfb69102e88298891be0f358d7d7dbd41b4520aa GIT binary patch literal 17107 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 M52IkwCl_b`4;_V)wg3PC literal 0 HcmV?d00001 diff --git a/input/demo-periods/Ф-6_2023.xlsx b/input/demo-periods/Ф-6_2023.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..b204cfd9b087b131b86a7cd843cb56392ca533a1 GIT binary patch literal 17136 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 KSpU(*(f1g$zok4!NA4E#c-AXsf+Qub{&0e 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 G_5T3P@z;p} literal 0 HcmV?d00001 diff --git a/input/demo-periods/Ф-6_2025.xlsx b/input/demo-periods/Ф-6_2025.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..60f782278c105b666fb3172dc0e6749046dfc301 GIT binary patch literal 17146 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 literal 0 HcmV?d00001 diff --git a/input/ПЕРИОДЫ-ДЛЯ-ДЕМО.md b/input/ПЕРИОДЫ-ДЛЯ-ДЕМО.md new file mode 100644 index 0000000..6c1199e --- /dev/null +++ b/input/ПЕРИОДЫ-ДЛЯ-ДЕМО.md @@ -0,0 +1,32 @@ +# Периоды загрузки демонстрационных форм + +Отчётный период передаётся в API отдельно от Excel-файла. Полный набор находится в каталоге `demo-periods/`. + +| Файл | Параметры периода | Отображаемый период | +|---|---|---| +| `Ф-1_2025-09.xlsx` | `report_year=2025`, `report_month=9` | Сентябрь 2025 | +| `Ф-1_2025-12.xlsx` | `report_year=2025`, `report_month=12` | Декабрь 2025 | +| `Ф-1_2026-03.xlsx` | `report_year=2026`, `report_month=3` | Март 2026 | +| `Ф-1_2026-06.xlsx` | `report_year=2026`, `report_month=6` | Июнь 2026 | +| `Ф-2_2025-Q3.xlsx` | `report_year=2025`, `report_quarter=3` | III квартал 2025 | +| `Ф-2_2025-Q4.xlsx` | `report_year=2025`, `report_quarter=4` | IV квартал 2025 | +| `Ф-2_2026-Q1.xlsx` | `report_year=2026`, `report_quarter=1` | I квартал 2026 | +| `Ф-2_2026-Q2.xlsx` | `report_year=2026`, `report_quarter=2` | II квартал 2026 | +| `Ф-3_2022.xlsx` | `report_year=2022` | 2022 год | +| `Ф-3_2023.xlsx` | `report_year=2023` | 2023 год | +| `Ф-3_2024.xlsx` | `report_year=2024` | 2024 год | +| `Ф-3_2025.xlsx` | `report_year=2025` | 2025 год | +| `Ф-4_2024-H2.xlsx` | `report_year=2024`, `report_half_year=2` | II полугодие 2024 | +| `Ф-4_2025-H1.xlsx` | `report_year=2025`, `report_half_year=1` | I полугодие 2025 | +| `Ф-4_2025-H2.xlsx` | `report_year=2025`, `report_half_year=2` | II полугодие 2025 | +| `Ф-4_2026-H1.xlsx` | `report_year=2026`, `report_half_year=1` | I полугодие 2026 | +| `Ф-5_2022.xlsx` | `report_year=2022` | 2022 год | +| `Ф-5_2023.xlsx` | `report_year=2023` | 2023 год | +| `Ф-5_2024.xlsx` | `report_year=2024` | 2024 год | +| `Ф-5_2025.xlsx` | `report_year=2025` | 2025 год | +| `Ф-6_2022.xlsx` | `report_year=2022` | 2022 год | +| `Ф-6_2023.xlsx` | `report_year=2023` | 2023 год | +| `Ф-6_2024.xlsx` | `report_year=2024` | 2024 год | +| `Ф-6_2025.xlsx` | `report_year=2025` | 2025 год | + +Каждый файл содержит только организации `Тестовая компания 1` — `Тестовая компания 20`. ИНН, ОГРН и ОКПО совпадают с данными команды Mostovik `create_test_companies`. Показатели плавно растут от ранних периодов к поздним, чтобы графики и сравнения на фронте показывали заметную динамику. diff --git a/input/Ф-1.xlsx b/input/Ф-1.xlsx index 9950bb57a76b130dd6d8994fce8243ebfbd7d7c1..6087128e1f1134c03aeb6254a182eca8b3db6c4a 100644 GIT binary patch literal 11497 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 literal 11811 zcmeHtbyQqg)^7!O3Mky&o!}lcxCMvc?(Px_w*Y}4!6m_6f(Do15Zo=eyM5K&Gq0yJ z{nmQl`*-HnT6J%o+P}T-k>A;8i?SRv3`CI8KKxtL^RTgTs59RZ*gX`a3iX z2zgk0`VOeuaq$zJb+nJOL4>00_=bit=IMZsP7PhEToP+yuS*Fmv2lb0H$Khxy}?-N zZ9*y5`OMe9@NHG`%`yh>;Fn3@#yHlLwH3XO!TAQWEKC%I&mxYyL4h*4mKwdWYLoL_ zid>ruT_fl8TN9{dw$S)iw55?1xaKw<5(O@T>MxNO#X7z5HjM4QdcNN6bg@wv%6DJ6 zu`Lambu&eS$b%%z+N+xLIz_#e!{ zf9ZN@f`U>P8%pT0%tKiJ_4HCaP+ZPKOs1J!-9J!v5xp)ZkBV@qot6lwPVf#|I-u46 zVQ^tdFlMix{A!)6Gzt?WKw0lm7MgPBNzC=^F1HAtsdL3`Qwru@aUxY}V^Xk`OW_Fm#>dcaI_ z;V!C3IG_B%L@IW_i?PLAxo^KM`QlJa{*!^=DALc%5DWG1B{b0L~y3LWhiu zr!A|8gR_mXgM-a)cB@ol$bO0qv_yG|{{Gr(oohfo*Iao=< zVptSG{unhamg5sA9FFuDVdr}2UTM(XN!0QrGubk7uLADLHiG4`9DO2)?dVr`I!V*V zv<_1`YR|qTfrD{)c6EVs2AH!w=#{IcHYiD zSa6|C6xXf4I(fnz=G!pOS?-OdzEGspkJ-GnODLA7mXVVom&QosLQ;kg^%WbX?O

RR;RZ2%uqt$19Sma)xSC(P0dyoAR~8# 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 LHa>>&w_pDQMm*&_ diff --git a/input/Ф-3.xlsx b/input/Ф-3.xlsx index 80955829af37d61647c122351039d3e66039f58f..5dd0e49f63768c45957b14ec35069048f135516c 100644 GIT binary patch literal 9536 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 literal 9962 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 af7?bC1qA5o0syGcPaxFszoGf<+y4QpB5D5s diff --git a/input/Ф-4.xlsx b/input/Ф-4.xlsx index f3a523ad8ed548f6844ef6417e39a938466f1916..604f6d66c17a0f5ddf52ec94477717d2eaa0cf73 100644 GIT binary patch literal 11403 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 NKd|9n0RHyr{{RpcvBdxY diff --git a/input/Ф-5.xlsx b/input/Ф-5.xlsx index bb1ae39c867c30099c3f0f6cb2e918c76e918741..8f497b343e5e0c2f45f6d6998f63c1ebade5e028 100644 GIT binary patch literal 11911 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 literal 11560 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 al=xfOKUcVX<@_fIFn@j+1H&cHU;RI=oqnSL literal 20839 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 str: + """Build a storage key without trusting client-supplied path components.""" + safe_name = Path(filename).name or "report.xlsx" + return f"report_uploads/{instance.form}/{instance.id}/{safe_name}" + + +class ReportUploadStatus(models.TextChoices): + QUEUED = "queued", _("Ожидает обработки") + PROCESSING = "processing", _("Обрабатывается") + SUCCESS = "success", _("Обработан") + FAILED = "failed", _("Ошибка") + + +class ReportUpload(TimestampMixin, models.Model): + """Persistent original file for one F-1 ... F-6 report upload.""" + + FORM_CHOICES = tuple((f"f{number}", f"Ф-{number}") for number in range(1, 7)) + + id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) + form = models.CharField(max_length=2, choices=FORM_CHOICES, db_index=True) + load_batch = models.PositiveIntegerField(null=True, blank=True, db_index=True) + original_file = models.FileField(upload_to=report_upload_path, max_length=500) + file_name = models.CharField(max_length=255) + content_type = models.CharField(max_length=127) + file_size = models.PositiveBigIntegerField() + file_hash = models.CharField(max_length=64, db_index=True) + status = models.CharField( + max_length=16, + choices=ReportUploadStatus.choices, + default=ReportUploadStatus.PROCESSING, + db_index=True, + ) + uploaded_by = models.ForeignKey( + settings.AUTH_USER_MODEL, + on_delete=models.SET_NULL, + null=True, + blank=True, + related_name="report_uploads", + ) + + class Meta: + ordering = ["-created_at"] + constraints = [ + models.UniqueConstraint( + fields=["form", "load_batch"], + condition=models.Q(load_batch__isnull=False), + name="unique_report_upload_form_batch", + ) + ] + + def __str__(self) -> str: + return f"{self.form}:{self.load_batch or self.id}" + + class JobStatus(models.TextChoices): """Статусы фоновых задач.""" diff --git a/src/apps/core/report_uploads.py b/src/apps/core/report_uploads.py new file mode 100644 index 0000000..bee21f9 --- /dev/null +++ b/src/apps/core/report_uploads.py @@ -0,0 +1,165 @@ +"""Persistence and download contract for original reporting files.""" + +from __future__ import annotations + +import hashlib +import mimetypes +from pathlib import Path +from typing import Any +from uuid import UUID + +from apps.core.models import ReportUpload, ReportUploadStatus +from apps.core.response import api_error_response +from django.core.files.base import ContentFile +from django.http import FileResponse +from drf_yasg import openapi +from drf_yasg.utils import swagger_auto_schema +from rest_framework import status +from rest_framework.permissions import IsAuthenticated +from rest_framework.views import APIView + +ALLOWED_FORMS = frozenset(f"f{number}" for number in range(1, 7)) +EXCEL_CONTENT_TYPES = { + ".xls": "application/vnd.ms-excel", + ".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", +} + + +class ReportUploadService: + """Own lifecycle transitions for a persisted report upload.""" + + @staticmethod + def create(*, uploaded_file, form: str, user=None) -> ReportUpload: + if form not in ALLOWED_FORMS: + raise ValueError(f"Unsupported report form: {form}") + + file_name = Path(str(uploaded_file.name)).name + content = uploaded_file.read() + uploaded_file.seek(0) + suffix = Path(file_name).suffix.lower() + content_type = EXCEL_CONTENT_TYPES.get(suffix) or ( + mimetypes.guess_type(file_name)[0] or "application/octet-stream" + ) + report_upload = ReportUpload( + form=form, + file_name=file_name, + content_type=content_type, + file_size=len(content), + file_hash=hashlib.sha256(content).hexdigest(), + status=ReportUploadStatus.PROCESSING, + uploaded_by=user if getattr(user, "is_authenticated", False) else None, + ) + report_upload.original_file.save( + file_name, + ContentFile(content), + save=False, + ) + report_upload.save() + return report_upload + + @staticmethod + def finalize(upload_id: UUID | str, result: Any) -> ReportUpload: + batch_id = ( + result.get("batch_id") + if isinstance(result, dict) + else getattr(result, "batch_id", None) + ) + if batch_id is None: + raise ValueError("Parser result does not contain batch_id") + + report_upload = ReportUpload.objects.get(pk=upload_id) + report_upload.load_batch = int(batch_id) + report_upload.status = ReportUploadStatus.SUCCESS + report_upload.save(update_fields=["load_batch", "status", "updated_at"]) + return report_upload + + @staticmethod + def mark_failed(upload_id: UUID | str) -> None: + ReportUpload.objects.filter(pk=upload_id).update( + status=ReportUploadStatus.FAILED + ) + + @staticmethod + def mark_queued(upload_id: UUID | str) -> None: + ReportUpload.objects.filter(pk=upload_id).update( + status=ReportUploadStatus.QUEUED + ) + + @staticmethod + def mark_processing(upload_id: UUID | str) -> None: + ReportUpload.objects.filter(pk=upload_id).update( + status=ReportUploadStatus.PROCESSING + ) + + +class ReportUploadDownloadView(APIView): + """Stream the unchanged original Excel file for a processed load batch.""" + + permission_classes = [IsAuthenticated] + + @swagger_auto_schema( + tags=["Формы отчетности"], + operation_summary="Скачать исходный файл загрузки отчетности", + responses={ + 200: openapi.Response( + "Исходный .xls или .xlsx файл", + schema=openapi.Schema(type=openapi.TYPE_STRING, format="binary"), + ), + 401: "Требуется JWT-аутентификация", + 403: "Нет доступа к загрузке", + 404: "Загрузка не найдена", + 410: "Исходный файл был удален", + }, + ) + def get(self, request, form: str, load_batch: int): + if form not in ALLOWED_FORMS: + return api_error_response( + [{"code": "upload_not_found", "message": "Загрузка не найдена."}], + status_code=status.HTTP_404_NOT_FOUND, + ) + + report_upload = ReportUpload.objects.filter( + form=form, + load_batch=load_batch, + ).first() + if report_upload is None: + return api_error_response( + [{"code": "upload_not_found", "message": "Загрузка не найдена."}], + status_code=status.HTTP_404_NOT_FOUND, + ) + if ( + report_upload.uploaded_by_id != request.user.id + and not request.user.is_staff + ): + return api_error_response( + [ + { + "code": "upload_forbidden", + "message": "Нет доступа к исходному файлу загрузки.", + } + ], + status_code=status.HTTP_403_FORBIDDEN, + ) + if ( + not report_upload.original_file + or not report_upload.original_file.storage.exists( + report_upload.original_file.name + ) + ): + return api_error_response( + [ + { + "code": "source_file_gone", + "message": "Исходный файл загрузки удален.", + } + ], + status_code=status.HTTP_410_GONE, + ) + + file_handle = report_upload.original_file.open("rb") + return FileResponse( + file_handle, + as_attachment=True, + filename=Path(report_upload.file_name).name, + content_type=report_upload.content_type, + ) diff --git a/src/apps/core/upload_contracts.py b/src/apps/core/upload_contracts.py index 3a9a1ec..f004ced 100644 --- a/src/apps/core/upload_contracts.py +++ b/src/apps/core/upload_contracts.py @@ -79,10 +79,11 @@ def build_upload_success_payload( result: dict[str, Any] | None = None, job_id: str | None = None, created_at: datetime | None = None, + upload_id: str | None = None, ) -> dict[str, Any]: created = created_at or timezone.now() payload: dict[str, Any] = { - "upload_id": str(uuid4()), + "upload_id": upload_id or str(uuid4()), "form": form, "report_year": report_year, "status": status, diff --git a/src/apps/exchange/serializers.py b/src/apps/exchange/serializers.py index c19b4e2..202c0f1 100644 --- a/src/apps/exchange/serializers.py +++ b/src/apps/exchange/serializers.py @@ -1,5 +1,6 @@ """Serializers for exchange package upload endpoints.""" +from apps.exchange.models import ExchangePackageImport from rest_framework import serializers @@ -16,3 +17,21 @@ class ExchangePackageUploadSerializer(serializers.Serializer): "Поддерживаются только архивы .zip или контейнеры .bin." ) return value + + +class ExchangePackageImportSerializer(serializers.ModelSerializer): + """Frontend-facing metadata for an imported exchange package.""" + + class Meta: + model = ExchangePackageImport + fields = ( + "id", + "package_id", + "package_name", + "source_system", + "schema_version", + "delivery_channel", + "status", + "created_at", + ) + read_only_fields = fields diff --git a/src/apps/exchange/urls.py b/src/apps/exchange/urls.py index e37fad3..0e9ac33 100644 --- a/src/apps/exchange/urls.py +++ b/src/apps/exchange/urls.py @@ -1,11 +1,14 @@ """URL routes for exchange uploads.""" -from apps.exchange.views import ExchangePackageUploadView +from apps.exchange.views import ExchangePackageLatestView, ExchangePackageUploadView from django.urls import path app_name = "exchange" urlpatterns = [ + path( + "packages/latest/", ExchangePackageLatestView.as_view(), name="package-latest" + ), path( "packages/upload/", ExchangePackageUploadView.as_view(), name="package-upload" ), diff --git a/src/apps/exchange/views.py b/src/apps/exchange/views.py index e7c1c86..c89a5cf 100644 --- a/src/apps/exchange/views.py +++ b/src/apps/exchange/views.py @@ -2,8 +2,12 @@ from __future__ import annotations -from apps.exchange.models import ExchangeDeliveryChannel -from apps.exchange.serializers import ExchangePackageUploadSerializer +from apps.core.response import api_response +from apps.exchange.models import ExchangeDeliveryChannel, ExchangePackageImport +from apps.exchange.serializers import ( + ExchangePackageImportSerializer, + ExchangePackageUploadSerializer, +) from apps.exchange.services import ExchangeImportError, ExchangePackageImportService from django.conf import settings from django.utils.crypto import constant_time_compare @@ -11,13 +15,38 @@ from drf_yasg import openapi from drf_yasg.utils import swagger_auto_schema from rest_framework import status from rest_framework.parsers import MultiPartParser -from rest_framework.permissions import AllowAny +from rest_framework.permissions import AllowAny, IsAuthenticated from rest_framework.response import Response from rest_framework.views import APIView EXCHANGE_TAG = "Обмен данными" +class ExchangePackageLatestView(APIView): + """Return metadata for the most recent package import attempt.""" + + permission_classes = [IsAuthenticated] + + @swagger_auto_schema( + tags=[EXCHANGE_TAG], + operation_summary="Получить последнюю загрузку пакета обмена", + responses={ + 200: ExchangePackageImportSerializer(), + 401: "Требуется JWT-аутентификация", + }, + ) + def get(self, request): + package_import = ExchangePackageImport.objects.order_by( + "-created_at", "-id" + ).first() + data = ( + ExchangePackageImportSerializer(package_import).data + if package_import is not None + else None + ) + return api_response(data) + + class ExchangePackageUploadView(APIView): """Accept encrypted exchange package uploads for dev integration.""" diff --git a/src/apps/form_1/api.py b/src/apps/form_1/api.py index a4cd4b5..c2f1d6a 100644 --- a/src/apps/form_1/api.py +++ b/src/apps/form_1/api.py @@ -8,6 +8,7 @@ API для формы Ф-1. import logging +from apps.core.report_uploads import ReportUploadService from apps.core.response import api_response from apps.core.upload_contracts import ( build_upload_error_response, @@ -140,6 +141,11 @@ class FormF1UploadView(APIView): file = serializer.validated_data["file"] report_year = serializer.validated_data["report_year"] report_month = serializer.validated_data["report_month"] + report_upload = ReportUploadService.create( + uploaded_file=file, + form="f1", + user=request.user, + ) # Определяем размер файла для выбора режима обработки file_size = file.size @@ -152,6 +158,7 @@ class FormF1UploadView(APIView): report_year=report_year, report_month=report_month, ) + ReportUploadService.finalize(report_upload.id, result) result_serializer = ParseResultSerializer(result) return Response( build_upload_success_payload( @@ -160,10 +167,12 @@ class FormF1UploadView(APIView): report_month=report_month, status="done", result=result_serializer.data, + upload_id=str(report_upload.id), ), status=status.HTTP_200_OK, ) except Exception as e: + ReportUploadService.mark_failed(report_upload.id) logger.exception("Ошибка обработки файла Ф-1") return build_upload_error_response( error_code="processing_error", @@ -172,6 +181,7 @@ class FormF1UploadView(APIView): ) # Для больших файлов - фоновая обработка + ReportUploadService.mark_queued(report_upload.id) # Сохраняем файл во временное хранилище file_path = f"uploads/form_f1/{file.name}" saved_path = default_storage.save(file_path, file) @@ -182,6 +192,7 @@ class FormF1UploadView(APIView): user_id=request.user.id, report_year=report_year, report_month=report_month, + report_upload_id=str(report_upload.id), ) return Response( @@ -191,6 +202,7 @@ class FormF1UploadView(APIView): report_month=report_month, status="queued", job_id=task.id, + upload_id=str(report_upload.id), ), status=status.HTTP_202_ACCEPTED, ) diff --git a/src/apps/form_1/tasks.py b/src/apps/form_1/tasks.py index 03b775b..ecf1fef 100644 --- a/src/apps/form_1/tasks.py +++ b/src/apps/form_1/tasks.py @@ -8,6 +8,7 @@ Celery задачи для формы Ф-1. import logging from contextlib import suppress +from apps.core.report_uploads import ReportUploadService from apps.core.tasks import TrackedTask from apps.form_1.services import parse_form_f1_file from celery import shared_task @@ -25,6 +26,7 @@ def process_form_f1_file( report_year: int | None = None, report_month: int | None = None, report_quarter: int | None = None, + report_upload_id: str | None = None, ): """ Фоновая обработка файла формы Ф-1. @@ -40,6 +42,8 @@ def process_form_f1_file( job.update_progress(10, "Загрузка файла...") try: + if report_upload_id is not None: + ReportUploadService.mark_processing(report_upload_id) # Открываем файл из storage with default_storage.open(file_path, "rb") as f: job.update_progress(20, "Парсинг данных...") @@ -52,6 +56,8 @@ def process_form_f1_file( or (report_quarter * 3 if report_quarter is not None else None) or timezone.now().month, ) + if report_upload_id is not None: + ReportUploadService.finalize(report_upload_id, result) job.update_progress(90, "Завершение...") @@ -61,6 +67,8 @@ def process_form_f1_file( return result.to_dict() except Exception as e: + if report_upload_id is not None: + ReportUploadService.mark_failed(report_upload_id) logger.exception(f"Ошибка обработки файла Ф-1: {e}") # Пытаемся удалить файл при ошибке with suppress(Exception): diff --git a/src/apps/form_2/api.py b/src/apps/form_2/api.py index 6120006..2a385df 100644 --- a/src/apps/form_2/api.py +++ b/src/apps/form_2/api.py @@ -8,6 +8,7 @@ API формы Ф-2. import logging +from apps.core.report_uploads import ReportUploadService from apps.core.upload_contracts import ( build_upload_error_response, build_upload_success_payload, @@ -65,15 +66,22 @@ class FormF2UploadView(APIView): file = serializer.validated_data["file"] report_year = serializer.validated_data["report_year"] report_quarter = serializer.validated_data.get("report_quarter") + report_upload = ReportUploadService.create( + uploaded_file=file, + form="f2", + user=request.user, + ) # Для больших файлов - фоновая обработка if file.size > BACKGROUND_THRESHOLD: + ReportUploadService.mark_queued(report_upload.id) file_content = file.read() task = process_form_f2_file.delay( file_content, file.name, report_year, report_quarter, + str(report_upload.id), ) return Response( @@ -83,6 +91,7 @@ class FormF2UploadView(APIView): report_quarter=report_quarter, status="queued", job_id=task.id, + upload_id=str(report_upload.id), ), status=status.HTTP_202_ACCEPTED, ) @@ -94,6 +103,7 @@ class FormF2UploadView(APIView): report_year=report_year, report_quarter=report_quarter, ) + ReportUploadService.finalize(report_upload.id, result) result_serializer = FormF2ParseResultSerializer(result) return Response( @@ -103,10 +113,12 @@ class FormF2UploadView(APIView): report_quarter=report_quarter, status="done", result=result_serializer.data, + upload_id=str(report_upload.id), ), status=status.HTTP_200_OK, ) except Exception as e: + ReportUploadService.mark_failed(report_upload.id) logger.exception("Ошибка обработки файла Ф-2") return build_upload_error_response( error_code="processing_error", diff --git a/src/apps/form_2/tasks.py b/src/apps/form_2/tasks.py index d292b1f..be4d54a 100644 --- a/src/apps/form_2/tasks.py +++ b/src/apps/form_2/tasks.py @@ -7,6 +7,7 @@ Celery задачи для формы Ф-2. import logging +from apps.core.report_uploads import ReportUploadService from apps.core.tasks import TrackedTask from apps.form_2.services import FormF2Parser from celery import shared_task @@ -21,6 +22,7 @@ def process_form_f2_file( file_name: str, report_year: int, report_quarter: int | None = None, + report_upload_id: str | None = None, ) -> dict: """ Фоновая обработка файла формы Ф-2. @@ -40,8 +42,17 @@ def process_form_f2_file( file_io = BytesIO(file_content) # Парсим файл + if report_upload_id is not None: + ReportUploadService.mark_processing(report_upload_id) parser = FormF2Parser(report_year=report_year, report_quarter=report_quarter) - result = parser.parse(file_io) + try: + result = parser.parse(file_io) + if report_upload_id is not None: + ReportUploadService.finalize(report_upload_id, result) + except Exception: + if report_upload_id is not None: + ReportUploadService.mark_failed(report_upload_id) + raise logger.info( f"Обработка Ф-2 завершена: загружено {result.loaded_count}, " diff --git a/src/apps/form_3/api.py b/src/apps/form_3/api.py index 84c10fd..ac8c8ab 100644 --- a/src/apps/form_3/api.py +++ b/src/apps/form_3/api.py @@ -8,6 +8,7 @@ API формы Ф-3. import logging +from apps.core.report_uploads import ReportUploadService from apps.core.upload_contracts import ( build_upload_error_response, build_upload_success_payload, @@ -64,14 +65,21 @@ class FormF3UploadView(APIView): file = serializer.validated_data["file"] report_year = serializer.validated_data["report_year"] report_quarter = serializer.validated_data.get("report_quarter") + report_upload = ReportUploadService.create( + uploaded_file=file, + form="f3", + user=request.user, + ) if file.size > BACKGROUND_THRESHOLD: + ReportUploadService.mark_queued(report_upload.id) file_content = file.read() task = process_form_f3_file.delay( file_content, file.name, report_year, report_quarter, + str(report_upload.id), ) return Response( @@ -80,6 +88,7 @@ class FormF3UploadView(APIView): report_year=report_year, status="queued", job_id=task.id, + upload_id=str(report_upload.id), ), status=status.HTTP_202_ACCEPTED, ) @@ -90,6 +99,7 @@ class FormF3UploadView(APIView): report_year=report_year, report_quarter=report_quarter, ) + ReportUploadService.finalize(report_upload.id, result) result_serializer = FormF3ParseResultSerializer(result) return Response( @@ -98,10 +108,12 @@ class FormF3UploadView(APIView): report_year=report_year, status="done", result=result_serializer.data, + upload_id=str(report_upload.id), ), status=status.HTTP_200_OK, ) except Exception as e: + ReportUploadService.mark_failed(report_upload.id) logger.exception("Ошибка обработки файла Ф-3") return build_upload_error_response( error_code="processing_error", diff --git a/src/apps/form_3/tasks.py b/src/apps/form_3/tasks.py index 1423678..fd47a69 100644 --- a/src/apps/form_3/tasks.py +++ b/src/apps/form_3/tasks.py @@ -7,6 +7,7 @@ Celery задачи для формы Ф-3. import logging +from apps.core.report_uploads import ReportUploadService from apps.core.tasks import TrackedTask from apps.form_3.services import FormF3Parser from celery import shared_task @@ -21,6 +22,7 @@ def process_form_f3_file( file_name: str, report_year: int, report_quarter: int | None = None, + report_upload_id: str | None = None, ) -> dict: """ Фоновая обработка файла формы Ф-3. @@ -37,8 +39,17 @@ def process_form_f3_file( logger.info(f"Начало обработки файла Ф-3: {file_name}") file_io = BytesIO(file_content) + if report_upload_id is not None: + ReportUploadService.mark_processing(report_upload_id) parser = FormF3Parser(report_year=report_year, report_quarter=report_quarter) - result = parser.parse(file_io) + try: + result = parser.parse(file_io) + if report_upload_id is not None: + ReportUploadService.finalize(report_upload_id, result) + except Exception: + if report_upload_id is not None: + ReportUploadService.mark_failed(report_upload_id) + raise logger.info( f"Обработка Ф-3 завершена: загружено {result.loaded_count}, " diff --git a/src/apps/form_4/api.py b/src/apps/form_4/api.py index d84e9ab..5252efc 100644 --- a/src/apps/form_4/api.py +++ b/src/apps/form_4/api.py @@ -2,6 +2,7 @@ import logging +from apps.core.report_uploads import ReportUploadService from apps.core.upload_contracts import ( build_upload_error_response, build_upload_success_payload, @@ -49,13 +50,21 @@ class FormF4UploadView(APIView): file = serializer.validated_data["file"] report_year = serializer.validated_data["report_year"] report_half_year = serializer.validated_data["report_half_year"] + report_upload = ReportUploadService.create( + uploaded_file=file, + form="f4", + user=request.user, + ) if file.size > BACKGROUND_THRESHOLD: + ReportUploadService.mark_queued(report_upload.id) task = process_form_f4_file.delay( file.read(), file.name, report_year, report_half_year, + None, + str(report_upload.id), ) return Response( build_upload_success_payload( @@ -64,6 +73,7 @@ class FormF4UploadView(APIView): report_half_year=report_half_year, status="queued", job_id=task.id, + upload_id=str(report_upload.id), ), status=status.HTTP_202_ACCEPTED, ) @@ -74,6 +84,7 @@ class FormF4UploadView(APIView): report_year=report_year, report_half_year=report_half_year, ) + ReportUploadService.finalize(report_upload.id, result) return Response( build_upload_success_payload( form="f4", @@ -81,10 +92,12 @@ class FormF4UploadView(APIView): report_half_year=report_half_year, status="done", result=FormF4ParseResultSerializer(result).data, + upload_id=str(report_upload.id), ), status=status.HTTP_200_OK, ) except Exception as e: + ReportUploadService.mark_failed(report_upload.id) logger.exception("Ошибка обработки файла Ф-4") return build_upload_error_response( error_code="processing_error", diff --git a/src/apps/form_4/tasks.py b/src/apps/form_4/tasks.py index bb8e91d..dc4582c 100644 --- a/src/apps/form_4/tasks.py +++ b/src/apps/form_4/tasks.py @@ -3,6 +3,7 @@ import logging from io import BytesIO +from apps.core.report_uploads import ReportUploadService from apps.core.tasks import TrackedTask from apps.form_4.services import FormF4Parser from celery import shared_task @@ -18,13 +19,23 @@ def process_form_f4_file( report_year: int, report_half_year: int | None = None, report_quarter: int | None = None, + report_upload_id: str | None = None, ) -> dict: logger.info(f"Начало обработки файла Ф-4: {file_name}") + if report_upload_id is not None: + ReportUploadService.mark_processing(report_upload_id) parser = FormF4Parser( report_year=report_year, report_half_year=report_half_year or report_quarter, ) - result = parser.parse(BytesIO(file_content)) + try: + result = parser.parse(BytesIO(file_content)) + if report_upload_id is not None: + ReportUploadService.finalize(report_upload_id, result) + except Exception: + if report_upload_id is not None: + ReportUploadService.mark_failed(report_upload_id) + raise logger.info( f"Обработка Ф-4 завершена: {result.loaded_count} загружено, {result.skipped_count} пропущено" ) diff --git a/src/apps/form_5/api.py b/src/apps/form_5/api.py index a1d2c59..e7e4784 100644 --- a/src/apps/form_5/api.py +++ b/src/apps/form_5/api.py @@ -2,6 +2,7 @@ import logging +from apps.core.report_uploads import ReportUploadService from apps.core.upload_contracts import ( build_upload_error_response, build_upload_success_payload, @@ -50,13 +51,20 @@ class FormF5UploadView(APIView): report_year = serializer.validated_data["report_year"] report_quarter = serializer.validated_data.get("report_quarter") + report_upload = ReportUploadService.create( + uploaded_file=file, + form="f5", + user=request.user, + ) if file.size > BACKGROUND_THRESHOLD: + ReportUploadService.mark_queued(report_upload.id) task = process_form_f5_file.delay( file.read(), file.name, report_year, report_quarter, + str(report_upload.id), ) return Response( build_upload_success_payload( @@ -64,6 +72,7 @@ class FormF5UploadView(APIView): report_year=report_year, status="queued", job_id=task.id, + upload_id=str(report_upload.id), ), status=status.HTTP_202_ACCEPTED, ) @@ -74,16 +83,19 @@ class FormF5UploadView(APIView): report_year=report_year, report_quarter=report_quarter, ) + ReportUploadService.finalize(report_upload.id, result) return Response( build_upload_success_payload( form="f5", report_year=report_year, status="done", result=FormF5ParseResultSerializer(result).data, + upload_id=str(report_upload.id), ), status=status.HTTP_200_OK, ) except Exception as e: + ReportUploadService.mark_failed(report_upload.id) logger.exception("Ошибка обработки файла Ф-5") return build_upload_error_response( error_code="processing_error", diff --git a/src/apps/form_5/tasks.py b/src/apps/form_5/tasks.py index 1937261..8843d5a 100644 --- a/src/apps/form_5/tasks.py +++ b/src/apps/form_5/tasks.py @@ -3,6 +3,7 @@ import logging from io import BytesIO +from apps.core.report_uploads import ReportUploadService from apps.core.tasks import TrackedTask from apps.form_5.services import FormF5Parser from celery import shared_task @@ -17,10 +18,20 @@ def process_form_f5_file( file_name: str, report_year: int, report_quarter: int | None = None, + report_upload_id: str | None = None, ) -> dict: logger.info(f"Начало обработки файла Ф-5: {file_name}") + if report_upload_id is not None: + ReportUploadService.mark_processing(report_upload_id) parser = FormF5Parser(report_year=report_year, report_quarter=report_quarter) - result = parser.parse(BytesIO(file_content)) + try: + result = parser.parse(BytesIO(file_content)) + if report_upload_id is not None: + ReportUploadService.finalize(report_upload_id, result) + except Exception: + if report_upload_id is not None: + ReportUploadService.mark_failed(report_upload_id) + raise logger.info( f"Обработка Ф-5 завершена: {result.loaded_count} загружено, {result.skipped_count} пропущено" ) diff --git a/src/apps/form_6/api.py b/src/apps/form_6/api.py index de8d18f..3a35539 100644 --- a/src/apps/form_6/api.py +++ b/src/apps/form_6/api.py @@ -2,6 +2,7 @@ import logging +from apps.core.report_uploads import ReportUploadService from apps.core.upload_contracts import ( build_upload_error_response, build_upload_success_payload, @@ -49,13 +50,20 @@ class FormF6UploadView(APIView): file = serializer.validated_data["file"] report_year = serializer.validated_data["report_year"] report_quarter = serializer.validated_data.get("report_quarter") + report_upload = ReportUploadService.create( + uploaded_file=file, + form="f6", + user=request.user, + ) if file.size > BACKGROUND_THRESHOLD: + ReportUploadService.mark_queued(report_upload.id) task = process_form_f6_file.delay( file.read(), file.name, report_year, report_quarter, + str(report_upload.id), ) return Response( build_upload_success_payload( @@ -63,6 +71,7 @@ class FormF6UploadView(APIView): report_year=report_year, status="queued", job_id=task.id, + upload_id=str(report_upload.id), ), status=status.HTTP_202_ACCEPTED, ) @@ -73,16 +82,19 @@ class FormF6UploadView(APIView): report_year=report_year, report_quarter=report_quarter, ) + ReportUploadService.finalize(report_upload.id, result) return Response( build_upload_success_payload( form="f6", report_year=report_year, status="done", result=FormF6ParseResultSerializer(result).data, + upload_id=str(report_upload.id), ), status=status.HTTP_200_OK, ) except Exception as e: + ReportUploadService.mark_failed(report_upload.id) logger.exception("Ошибка обработки файла Ф-6") return build_upload_error_response( error_code="processing_error", diff --git a/src/apps/form_6/tasks.py b/src/apps/form_6/tasks.py index 7c88e57..3fe45f5 100644 --- a/src/apps/form_6/tasks.py +++ b/src/apps/form_6/tasks.py @@ -3,6 +3,7 @@ import logging from io import BytesIO +from apps.core.report_uploads import ReportUploadService from apps.core.tasks import TrackedTask from apps.form_6.services import FormF6Parser from celery import shared_task @@ -17,10 +18,20 @@ def process_form_f6_file( file_name: str, report_year: int, report_quarter: int | None = None, + report_upload_id: str | None = None, ) -> dict: logger.info(f"Начало обработки файла Ф-6: {file_name}") + if report_upload_id is not None: + ReportUploadService.mark_processing(report_upload_id) parser = FormF6Parser(report_year=report_year, report_quarter=report_quarter) - result = parser.parse(BytesIO(file_content)) + try: + result = parser.parse(BytesIO(file_content)) + if report_upload_id is not None: + ReportUploadService.finalize(report_upload_id, result) + except Exception: + if report_upload_id is not None: + ReportUploadService.mark_failed(report_upload_id) + raise logger.info( f"Обработка Ф-6 завершена: {result.loaded_count} загружено, {result.skipped_count} пропущено" ) diff --git a/src/apps/organization/management/__init__.py b/src/apps/organization/management/__init__.py new file mode 100644 index 0000000..4ee6e5a --- /dev/null +++ b/src/apps/organization/management/__init__.py @@ -0,0 +1 @@ +"""Organization management commands.""" diff --git a/src/apps/organization/management/commands/__init__.py b/src/apps/organization/management/commands/__init__.py new file mode 100644 index 0000000..0362fa3 --- /dev/null +++ b/src/apps/organization/management/commands/__init__.py @@ -0,0 +1 @@ +"""Organization command package.""" diff --git a/src/apps/organization/management/commands/delete_test_companies.py b/src/apps/organization/management/commands/delete_test_companies.py new file mode 100644 index 0000000..b98571a --- /dev/null +++ b/src/apps/organization/management/commands/delete_test_companies.py @@ -0,0 +1,104 @@ +"""Delete the fixed Mostovik demonstration companies and related data.""" + +from __future__ import annotations + +import json + +from apps.core.management.commands.base import BaseAppCommand +from apps.core.models import ReportUpload +from apps.organization.models import Organization +from django.db import transaction +from django.db.models import Q + +TEST_COMPANY_COUNT = 20 + + +def _legal_entity_inn(index: int) -> str: + base = f"770900{index:03d}" + weights = (2, 4, 10, 3, 5, 9, 4, 6, 8) + checksum = sum( + int(digit) * weight for digit, weight in zip(base, weights, strict=True) + ) + return f"{base}{checksum % 11 % 10}" + + +TEST_COMPANY_IDENTITIES = tuple( + (f"Тестовая компания {index}", _legal_entity_inn(index)) + for index in range(1, TEST_COMPANY_COUNT + 1) +) +DEMO_REPORT_FILE_NAMES = ( + "Ф-1_2025-09.xlsx", + "Ф-1_2025-12.xlsx", + "Ф-1_2026-03.xlsx", + "Ф-1_2026-06.xlsx", + "Ф-2_2025-Q3.xlsx", + "Ф-2_2025-Q4.xlsx", + "Ф-2_2026-Q1.xlsx", + "Ф-2_2026-Q2.xlsx", + "Ф-3_2022.xlsx", + "Ф-3_2023.xlsx", + "Ф-3_2024.xlsx", + "Ф-3_2025.xlsx", + "Ф-4_2024-H2.xlsx", + "Ф-4_2025-H1.xlsx", + "Ф-4_2025-H2.xlsx", + "Ф-4_2026-H1.xlsx", + "Ф-5_2022.xlsx", + "Ф-5_2023.xlsx", + "Ф-5_2024.xlsx", + "Ф-5_2025.xlsx", + "Ф-6_2022.xlsx", + "Ф-6_2023.xlsx", + "Ф-6_2024.xlsx", + "Ф-6_2025.xlsx", +) + + +class Command(BaseAppCommand): + """Delete only the deterministic companies imported from Mostovik.""" + + help = "Удаляет 20 тестовых компаний Mostovik и все связанные данные" + use_transaction = True + + def execute_command(self, *args, **options) -> str: + report_uploads = list( + ReportUpload.objects.filter(file_name__in=DEMO_REPORT_FILE_NAMES) + ) + stored_files = [ + (upload.original_file.storage, upload.original_file.name) + for upload in report_uploads + if upload.original_file and upload.original_file.name + ] + report_uploads_deleted = len(report_uploads) + ReportUpload.objects.filter( + pk__in=[item.pk for item in report_uploads] + ).delete() + for storage, file_name in stored_files: + transaction.on_commit( + lambda storage=storage, file_name=file_name: storage.delete(file_name) + ) + + identity_query = Q() + for name, inn in TEST_COMPANY_IDENTITIES: + identity_query |= Q(name=name, inn=inn) + + queryset = Organization.objects.filter(identity_query) + organizations_deleted = queryset.count() + total_deleted, deleted_by_model = queryset.delete() + organization_label = Organization._meta.label + related_objects_deleted = total_deleted - deleted_by_model.get( + organization_label, 0 + ) + + rendered = json.dumps( + { + "dry_run": self.dry_run, + "organizations_deleted": organizations_deleted, + "report_uploads_deleted": report_uploads_deleted, + "related_objects_deleted": related_objects_deleted, + }, + ensure_ascii=False, + sort_keys=True, + ) + self.log_success(rendered) + return rendered diff --git a/src/core/api_v1_urls.py b/src/core/api_v1_urls.py index 37acc04..305b0d6 100644 --- a/src/core/api_v1_urls.py +++ b/src/core/api_v1_urls.py @@ -4,6 +4,7 @@ API v1 URL configuration. Все API эндпоинты версионированы под /api/v1/ """ +from apps.core.report_uploads import ReportUploadDownloadView from apps.core.views import ( BackgroundJobListView, BackgroundJobStatusView, @@ -34,4 +35,9 @@ urlpatterns = [ path("forms/f4/", include("apps.form_4.urls")), path("forms/f5/", include("apps.form_5.urls")), path("forms/f6/", include("apps.form_6.urls")), + path( + "forms//uploads//download/", + ReportUploadDownloadView.as_view(), + name="report-upload-download", + ), ] diff --git a/tests/apps/exchange/test_api.py b/tests/apps/exchange/test_api.py index 44c48bc..10366cb 100644 --- a/tests/apps/exchange/test_api.py +++ b/tests/apps/exchange/test_api.py @@ -371,6 +371,7 @@ class ExchangePackageApiTest(APITestCase): def setUp(self): self.url = reverse("api_v1:exchange:package-upload") + self.latest_url = reverse("api_v1:exchange:package-latest") password = get_random_string(16) self.user = User.objects.create_user( username="exchange-admin", @@ -378,6 +379,55 @@ class ExchangePackageApiTest(APITestCase): password=password, ) + def test_latest_requires_authentication(self): + response = self.client.get(self.latest_url) + + self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) + + def test_latest_returns_null_when_no_packages_exist(self): + self.client.force_authenticate(self.user) + + response = self.client.get(self.latest_url) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual( + response.data, + {"success": True, "data": None, "errors": None, "meta": None}, + ) + + def test_latest_returns_newest_package_metadata(self): + older = ExchangePackageImport.objects.create( + package_id="older-package", + package_name="older.zip", + package_hash="a" * 64, + source_system="mostovik", + schema_version=1, + delivery_channel=ExchangeDeliveryChannel.API, + status="failed", + ) + latest = ExchangePackageImport.objects.create( + package_id="latest-package", + package_name="latest.zip", + package_hash="b" * 64, + source_system="mostovik", + schema_version=1, + delivery_channel=ExchangeDeliveryChannel.API, + status="success", + ) + ExchangePackageImport.objects.filter(pk=older.pk).update( + created_at=older.created_at.replace(year=older.created_at.year - 1) + ) + self.client.force_authenticate(self.user) + + response = self.client.get(self.latest_url) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(response.data["data"]["id"], str(latest.id)) + self.assertEqual(response.data["data"]["package_id"], "latest-package") + self.assertEqual(response.data["data"]["package_name"], "latest.zip") + self.assertEqual(response.data["data"]["status"], "success") + self.assertIn("created_at", response.data["data"]) + def test_upload_imports_package_and_upserts_models(self): Organization.objects.create( inn="7707083893", diff --git a/tests/apps/forms/test_report_uploads_api.py b/tests/apps/forms/test_report_uploads_api.py new file mode 100644 index 0000000..3d5f371 --- /dev/null +++ b/tests/apps/forms/test_report_uploads_api.py @@ -0,0 +1,103 @@ +"""Tests for persistent original report uploads and binary downloads.""" + +import hashlib +import tempfile + +from apps.core.models import ReportUpload, ReportUploadStatus +from apps.core.report_uploads import ReportUploadService +from django.core.files.uploadedfile import SimpleUploadedFile +from django.test import override_settings +from django.urls import reverse +from rest_framework import status +from rest_framework.test import APITestCase + +from tests.apps.user.factories import UserFactory + + +class ReportUploadApiTest(APITestCase): + def setUp(self): + self.media_directory = tempfile.TemporaryDirectory() + self.addCleanup(self.media_directory.cleanup) + self.override = override_settings(MEDIA_ROOT=self.media_directory.name) + self.override.enable() + self.addCleanup(self.override.disable) + self.user = UserFactory.create_user() + + def _create_upload(self, *, content=b"original excel bytes") -> ReportUpload: + return ReportUploadService.create( + uploaded_file=SimpleUploadedFile( + "Ф-1 отчет.xlsx", + content, + content_type="application/octet-stream", + ), + form="f1", + user=self.user, + ) + + def test_service_persists_original_bytes_and_finalizes_batch(self): + content = b"same bytes that arrived" + report_upload = self._create_upload(content=content) + + ReportUploadService.finalize(report_upload.id, {"batch_id": 42}) + report_upload.refresh_from_db() + + self.assertEqual(report_upload.load_batch, 42) + self.assertEqual(report_upload.status, ReportUploadStatus.SUCCESS) + self.assertEqual(report_upload.file_hash, hashlib.sha256(content).hexdigest()) + self.assertEqual(report_upload.original_file.read(), content) + self.assertEqual(report_upload.file_name, "Ф-1 отчет.xlsx") + self.assertEqual(report_upload.uploaded_by, self.user) + + def test_download_requires_authentication(self): + report_upload = self._create_upload() + ReportUploadService.finalize(report_upload.id, {"batch_id": 42}) + + response = self.client.get( + reverse("api_v1:report-upload-download", args=["f1", 42]) + ) + + self.assertEqual(response.status_code, status.HTTP_401_UNAUTHORIZED) + + def test_download_streams_original_bytes_and_filename(self): + content = b"unchanged original xlsx bytes" + report_upload = self._create_upload(content=content) + ReportUploadService.finalize(report_upload.id, {"batch_id": 42}) + self.client.force_authenticate(self.user) + + response = self.client.get( + reverse("api_v1:report-upload-download", args=["f1", 42]) + ) + + self.assertEqual(response.status_code, status.HTTP_200_OK) + self.assertEqual(b"".join(response.streaming_content), content) + self.assertEqual( + response["Content-Type"], + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + ) + self.assertIn("attachment", response["Content-Disposition"]) + self.assertIn("utf-8", response["Content-Disposition"].lower()) + + def test_download_rejects_a_different_non_staff_user(self): + report_upload = self._create_upload() + ReportUploadService.finalize(report_upload.id, {"batch_id": 42}) + self.client.force_authenticate(UserFactory.create_user()) + + response = self.client.get( + reverse("api_v1:report-upload-download", args=["f1", 42]) + ) + + self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) + self.assertEqual(response.data["errors"][0]["code"], "upload_forbidden") + + def test_download_returns_gone_when_storage_object_was_removed(self): + report_upload = self._create_upload() + ReportUploadService.finalize(report_upload.id, {"batch_id": 42}) + report_upload.original_file.storage.delete(report_upload.original_file.name) + self.client.force_authenticate(self.user) + + response = self.client.get( + reverse("api_v1:report-upload-download", args=["f1", 42]) + ) + + self.assertEqual(response.status_code, status.HTTP_410_GONE) + self.assertEqual(response.data["errors"][0]["code"], "source_file_gone") diff --git a/tests/apps/forms/test_upload_contracts_api.py b/tests/apps/forms/test_upload_contracts_api.py index 3a9f71b..22dc194 100644 --- a/tests/apps/forms/test_upload_contracts_api.py +++ b/tests/apps/forms/test_upload_contracts_api.py @@ -2,10 +2,12 @@ from __future__ import annotations +import tempfile from datetime import datetime from types import SimpleNamespace from unittest.mock import Mock, patch +from apps.core.models import ReportUpload, ReportUploadStatus from django.core.files.uploadedfile import SimpleUploadedFile from django.test import override_settings from rest_framework import status @@ -89,6 +91,11 @@ class FormUploadContractsApiTest(APITestCase): } def setUp(self): + self.media_directory = tempfile.TemporaryDirectory() + self.addCleanup(self.media_directory.cleanup) + self.media_override = override_settings(MEDIA_ROOT=self.media_directory.name) + self.media_override.enable() + self.addCleanup(self.media_override.disable) self.user = UserFactory.create_user() self.client.force_authenticate(self.user) @@ -172,6 +179,23 @@ class FormUploadContractsApiTest(APITestCase): ) parse_mock.assert_not_called() task_mock.delay.assert_called_once() + task_args, task_kwargs = task_mock.delay.call_args + self.assertIn( + response.data["upload_id"], + (*task_args, *task_kwargs.values()), + ) + report_upload = ReportUpload.objects.get( + pk=response.data["upload_id"] + ) + self.assertEqual(report_upload.form, case["form"]) + self.assertEqual( + report_upload.status, ReportUploadStatus.QUEUED + ) + self.assertIsNone(report_upload.load_batch) + self.assertEqual( + report_upload.original_file.read(), + b"0" * self.BACKGROUND_THRESHOLD_PLUS, + ) def test_upload_sync_contract(self): for _, case in self.CASES.items(): @@ -201,6 +225,13 @@ class FormUploadContractsApiTest(APITestCase): ) parse_mock.assert_called_once() task_mock.delay.assert_not_called() + report_upload = ReportUpload.objects.get( + pk=response.data["upload_id"] + ) + self.assertEqual(report_upload.form, case["form"]) + self.assertEqual(report_upload.load_batch, 101) + self.assertEqual(report_upload.status, ReportUploadStatus.SUCCESS) + self.assertEqual(report_upload.original_file.read(), b"0" * 256) def test_upload_processing_error_contract(self): for _, case in self.CASES.items(): @@ -219,3 +250,7 @@ class FormUploadContractsApiTest(APITestCase): self.assertEqual(response.data["error_message"], "parse failed") self.assertEqual(response.data["details"], []) parse_mock.assert_called_once() + report_upload = ReportUpload.objects.filter(form=case["form"]).latest( + "created_at" + ) + self.assertEqual(report_upload.status, ReportUploadStatus.FAILED) diff --git a/tests/apps/organization/test_delete_test_companies_command.py b/tests/apps/organization/test_delete_test_companies_command.py new file mode 100644 index 0000000..d8d777c --- /dev/null +++ b/tests/apps/organization/test_delete_test_companies_command.py @@ -0,0 +1,107 @@ +"""Tests for deleting the fixed Mostovik demonstration companies.""" + +from __future__ import annotations + +import json +from io import StringIO + +from apps.core.models import ReportUpload +from apps.core.report_uploads import ReportUploadService +from apps.external_data.models import IndustrialProduct +from apps.form_1.models import FormF1Record +from apps.organization.models import Organization +from django.core.files.uploadedfile import SimpleUploadedFile +from django.core.management import call_command +from django.test import TestCase + + +class DeleteTestCompaniesCommandTest(TestCase): + """The cleanup command must be narrow, cascading, and idempotent.""" + + def test_deletes_only_exact_test_identities_with_related_data(self): + first = Organization.objects.create( + name="Тестовая компания 1", + inn="7709000010", + ) + second = Organization.objects.create( + name="Тестовая компания 2", + inn="7709000028", + ) + same_pattern_but_not_test_identity = Organization.objects.create( + name="Тестовая компания 99", + inn="7709000099", + ) + same_inn_pattern_but_real_name = Organization.objects.create( + name="Производственная компания", + inn="7709000035", + ) + FormF1Record.objects.create( + organization=first, + load_batch=1, + report_year=2025, + report_month=9, + ) + IndustrialProduct.objects.create( + organization=second, + product_name="Тестовый комплекс", + product_class="Оборудование", + ) + demo_upload = ReportUploadService.create( + uploaded_file=SimpleUploadedFile("Ф-1_2025-09.xlsx", b"demo"), + form="f1", + ) + demo_file_name = demo_upload.original_file.name + demo_storage = demo_upload.original_file.storage + unrelated_upload = ReportUploadService.create( + uploaded_file=SimpleUploadedFile("Ф-1.xlsx", b"unrelated"), + form="f1", + ) + + stdout = StringIO() + with self.captureOnCommitCallbacks(execute=True): + result = call_command("delete_test_companies", stdout=stdout) + payload = json.loads(result) + + self.assertEqual(payload["organizations_deleted"], 2) + self.assertEqual(payload["related_objects_deleted"], 2) + self.assertEqual(payload["report_uploads_deleted"], 1) + self.assertFalse(Organization.objects.filter(pk__in=[first.pk, second.pk])) + self.assertTrue( + Organization.objects.filter(pk=same_pattern_but_not_test_identity.pk) + ) + self.assertTrue( + Organization.objects.filter(pk=same_inn_pattern_but_real_name.pk) + ) + self.assertFalse(FormF1Record.objects.exists()) + self.assertFalse(IndustrialProduct.objects.exists()) + self.assertFalse(ReportUpload.objects.filter(pk=demo_upload.pk).exists()) + self.assertFalse(demo_storage.exists(demo_file_name)) + self.assertTrue(ReportUpload.objects.filter(pk=unrelated_upload.pk).exists()) + + repeated = json.loads( + call_command("delete_test_companies", stdout=StringIO()) + ) + self.assertEqual(repeated["organizations_deleted"], 0) + self.assertEqual(repeated["related_objects_deleted"], 0) + self.assertEqual(repeated["report_uploads_deleted"], 0) + + def test_dry_run_preserves_test_companies(self): + organization = Organization.objects.create( + name="Тестовая компания 1", + inn="7709000010", + ) + demo_upload = ReportUploadService.create( + uploaded_file=SimpleUploadedFile("Ф-1_2025-09.xlsx", b"demo"), + form="f1", + ) + + result = call_command( + "delete_test_companies", + dry_run=True, + stdout=StringIO(), + ) + + self.assertTrue(Organization.objects.filter(pk=organization.pk).exists()) + self.assertTrue(ReportUpload.objects.filter(pk=demo_upload.pk).exists()) + self.assertTrue(demo_upload.original_file.storage.exists(demo_upload.original_file.name)) + self.assertTrue(json.loads(result)["dry_run"])