YDd%uchc#0!3;~=mdS-=tH
z)d)6kfVw*f4pL+s7Q={SBNEIwT8k_m7AGt0nPfm35dKOxfL)L?=iH1Z
z5X)J3JXd9jvXLMtHpbk4@(qS<*p``bbV#&;n;tI3WU7I*8nJ2=uU?}XqATjbWVXQr
z5qm*H>5tSk{)
z()462=m{81s6LTm!(8O(QDUrA9f{yF4JGOe=nIky_Nrv3^c6Ym(s*Pk6C0*BjW9f^
z^u%=IVF$SfLkDaJ_y;7ny70Ni!cHa6YJ1eGlh(4hhp30_htOu3tRleTY}M^wh3aS=
z2|A)Rg{`V}DiOah*xj;urbDo0P}oc(YDiw6f@>D7p6|7PBKm)
z?mZBZ!m&ceA}y$KbH2fRv%vNER+lMXhPxPpJEqRe#d4l`oQ0C*0Mw#wrS-*1nuJf2
zO`}Z1r)5&Fs4T18sYC$Y0jJaxD)iO-Y9)beYWo#%OX*d>%3S4hHGDOT3cg0oZIEE=3rq_MlX}dB%2)kkg
zDk}Dg4KXQXRY
zNmr>aZZI{EBV=D;oKGZT++LYoK
zc8PoR*_U5t=Jo0a=E*yh?|AhbzY_Q{eW-ufy_P>nA!
zjHZlFo=<*k`uB9v^hy>-jsVLl>v7I;&T7tXo1u=U4t?vd)^;u2S9YTMXW@k)Z4c?vXnV*+Jek1qkr%V=Fv#7IcZ2PSk
zQ#8X?xoSC!QWiKC9WEhvkugzn!BdPGf{Z!%qub*>2ePgYPCx#7FFfStH02Cl{MxL$
z*=D!eUr9_U$fD(#jLC#4Nwa3PzOB@w
z^2z85NAOY5Ie%YppPy@obw}IaH&=h#c-xfHkVBq9*sfRr*_Y{;_t!k2Jdgs+0wO9%
zBuE$h?b+Lxq%U5Gchl^#as5IhwxB};Th`roBgnb{JOs4T4j$VZ`gZE+O
z*cFWE^t|c9@{x+%sn;T?w7;-pDQ+=5DB|J01_=i(NSWq2=Ofp|^k|6`Z>4D!yp#VW
zb#r);kFb@}A9jRNRU~%HBgt>)@aAD>yA#{73h?%@gd`^=I*C@2D5SJnoLL;1yH8b{
zg*AST*vGUn5v9RQ*fb?pLuoU>w~CgXsOwO#(!w-am}#2#O-D`gq*vw9O<(+On%qp}
z`gxWAb%8#J{x`X`G+a)Tfl%wHr`npQk>AN{6Mi2HiY{COx|+W|x|P;$S*hwmGo#kO
zhtgZYCP;r^GI*c`%;p>c2!9yncfPfH@k2?ANqe`&=rueSUl1!Qx)yU2Cj%>Bje5)T
z5I@3UvM*~ZwYj2dxWjbTe8K$mXon$B7dgE$<0u2!9%+4}8EIFe`QqVGVv{LjntHP<
zq*bh=xR1ZR+pK(IW|~h(y+r+9{Z*awa$&p0X!Y5C{u1A(`;q0%6G0pbIO47qi+V`-UiK|ozKVTJBo3VG~%
z?`Q6n2Llo(5-{%P=pLD)xYxny6Ws0-5fbl)d#q3OUzo-3?t~VEOxB{=x7m_8YT0kP
z#=4zKzXj)4&UU=tr8d8#{AB0X_L99*pRn3E4PH#KxSfs7P0RK3XMEW*+$?JKIX0Qu
zwMKEc>O^(@yCCrubIjMxH=}pk?t0s}d5EFeu9;oOYhZWgddB~mvZyrH^|LFxwnNXR
zjwL4WjT*WV7uqe+u>>C>0uXp+uxb$V`i#r-Gl0~rdz4o
z;9mGbWL<1KVp&M{b8GEtE5N$nqu_3SOX>+aEM)dG=^+6{3@RZjVJaLc{5+3akcVea
z$ob>+yZ5}Qb?
zDgXf96aYYA2mtW%1v;Ms0B+0xz?mTcz?%sG;5Z~3j7S0id;&7!BI=$S|9*J+;xD&+
zUeYI5kEE}1J7Gs8LPnAx>#mVOgtZDs(a6bZC%gUyDT=Bm#qyg&zikK_^~YCmeG!waG9)>J?&7mMTu7UvI2ldwTnzjAt*-s><>a@;lyg
znW0EkWd;#}?4LCTLl6y*^n)leCJ01mI1msJWQ@=tlGH;4QEdA+5IM2@H)7BD|8D<(
zcMqWwoB9xwm=5D_{$lkLCo0}x!f`BmTu5Kk&)~(9f
zwqtx8{`PH@=Ew+;>^ZwW!!H=XrBLw4!2xD;wUPXTi3I2L&tJv%H
zIlLX+wB>tab;%);#T7Zt*qEb&{kg=}9AbU+gpaAzRnj3!BwfwOrr$k#U*BXpc~a_I
zbaS_uYa9LT)OY1?I7Ij_o&^yr#BBx#%BceF=6pGW5OBo2s}Yp8a#8MkVMu--3S^%>
z)xS|3%h2?FlUL&A#swgUzQgns_K(gO^mZ3t#tmm41gWJP%
zQd7wlv7PUB^I%C{Q44s%*EA5aqaC}maOA&=c39?Uk@`GJl0rG9#n){M5ce+ry9>;g
zv;S`<7=Z2Rj^9wkn}@*l-_IYKS9ec4R~e-FiX9i-DehlS_?xu9S8O`LcXk_%#+Zv@
zxl}u%r!P4zn!4;vn!4gDb$uGPGA1XpCnz+|NkuTfXtICv@#K|fan74=n6m2D3RzvA
zmWkD%sBby%oyOY;i-o5a1O*Oinip&NT1NxoRp{k|Q`&sAV2SobQ
zG6y!r0|Bzil1n(juFByKYF8{UyJ!BMLp}~nuhV1+d5#wktJGokU)9=DO6#wu=?+c=
z0pO+0@v3I&MbsLAKVJS+rT2bK6YsxvujFnGCe*X&)LxV385*`7!_R+9*=H*T4apOD
zfGoX|YUp*ygiFHI3pp^L>F=1bW$d^A)I6PpGvr%D7f4~<$v2E!(l#)8I+ym>18Rz>
zAEUiEsQC&JAH!8q(IU?ktR3Iv>qCP3of41FZs4F(Ygs&yml`jDn;)PLC2$>0+>*_i%q9;)?=T)Qed-ZgD?Oh#uCSR>E{
zvw!Z(RSkQn2m-Tkh+g;dEQsiTXk+iQ#oL;qyUs0N;QgZYJCjTj{^P%GAE+x-
zo~fHd>a2^PApR$f_s(E_;nU_{4D{*uw#^jNYAU`K_1O3*53
zrWx>r;d@-oJL+@bmYK+csZcOXW83f*C>NO8V*#$a+^_g~{byKH4tD{HnT}()W|FJ)
zSn_>QlMAcmySIn90Of%4Dp4?j9n$O_6R}96C5(*hnI^mjS0V=ZyaY?u9GvHm-n8Z8
z<(m}ypYRQm@+?p-rllw2la|Gp1+2m}?nhlcRMP_6wymjKXvh&l!WH$u{x#AZota4$
zmQ>)?yWmblSK?C(w=dPFUwnNWY2+og4bETt!KrfTZcfp!xC1<&ZC3ehxH8@i)KUAu
z0Dgb_RpTA6F1w%NnAT8@zafsU$Y$eas^qx@teNt>rpMB6=X=M}4J
zmcYiRL<{Fo6e2d2TO4VhbzF*A)|1m7+fT|xP(?-gJnWTJ<$ehHoX1#saQbzytv%^Y
z*HGmS+zk5VK7CY?_4a{$Au@ubn8%}p=(OA8ZJlrH`|^eDGjpu
zwl>Fp!SNrUTTB_)QD&6HB5FFCwpEnuEJh)N{`e=X^_ar*N1lKf#t$>InSDS1T{dQ?
zl*zih@MJbxL?F>Z=-NDcD7LSMkY`?iUV2IDtZkRYhpyU{s{-G*+b>#L2|=c=7f%$W
zXZNhhhaRIowS#sc&FHf5+4R27F5!>SFs+Bpb>637n10G(Y(*X(5fQU~%z_#m7ute*-Gco20q%ZQCTT(iuKjEL?k{N&ADd#$kyZ6bI#VXUudC`Y5%sG
zLRBebKTlUS{rSgZwGJ6Ou=;0Y*aSV4a{l4i3b!)B;W`H+*f_HFx&A$VDrm^Vl3Q+xu+1>C1(v}7H={9Bnqj{bH-&;EBz
z*V_F-nfhEIMjMQ|lXmjkQb@li-`EqPFAeSFcB*W@m0AHi}js$IO_Jao*&UQJ)&9+9|1m5%PQ`%}?V@aqeP3FD+c#W#ArV?PN@YG#m
z*Pk~C*WLA7mAq7dNicSjbfVUk6BP)p?SJ;V6X9HUPKUO%
zXR^yBuH)F6VqPSDmLPZBXRBeKb^FIwczha?{g#Y|*L}0^9z(hd+@{2mohm<CD*f4Op1n0?Xg-&
zW{!GG`aMLYeoPSBYM@rOQGQoqlc3Vap#wQyoSq3^ErGZ~oJ?XGSd@%T;{wlEi}(W5
zV&EJl3iXJKlHfx**bo#w1%;w^JU;`1Ywun5Y5h+ftABOD4Slk58s2@Hz6SS0`uDZ(
zkhh<65gJu36UP_ZdZB(w`LBlqs5qa%A(HGkUwzwOYW4oB_s-MwNn!XY$
zsgh$I`)XoD(9B?J{h}i3j2y~ML*8!kM;#8ZebclFNOoDhl?c-3-4pOJr=2eU?tf|W7mmDi=dBJ`
zo;lpZ;kP*n;J6No9AH+oxK;g#>+bYkOo3V2_xzWV1LXncBnzW7o7#939R2Qi8
z3t6nc>*j=D^*ctA?9vFuB=I0y*pc+Z^<*aCW`2KG${!jAHU||XDM2Lmps52jJ~@8ik0#VrJ=_!dhE;JY
zIlljqF3^)^1xpHpv((B92cNto_I(Nn?!V&$G4bBc
zt|}L{XC6**G(g_`&bV*(?Gg613i|w=XhpEFlX1gMLzqYRwboM^(Mb>D1r?rlerk$N
zu|Pcw=&WZpNl#n~AzpkAJ1y-u9~dm10~3lmWY$TkR8e=fw)07AJJ{TKZVs+U!ebhQ
zSH<|@7FncX04S;nrqaZ>=shf}Eabsp`MyE5BKMoa?*
z?c*ay2*~L^9!Zm1B#fzpEs=WPx
zQPYcUzwaxGV|E{n&&+zBb0F&0Nk4SHBRCGEG~`udS^p`I3|R_8n)vuUaPuz4yFiN}
zaU)}Wq)6ZM8L36c;MZ@1hcP#nt#JJN-s^28&b3@6{{?(|
z6G2xGsj87Yr3LEIqn3l&33s%8uahOlM4#!Tt>`)Z^t$nrb?lpGYhqbNqah|N-lq}@
zcl@0}!1U7>no!@e#@Qe4S_$-27ugH~DAx7tqMduwG{wVteYk;TgZ{Vk1QC?b-HOWU
zS`?@dA>Y%(V={>ahx=JyyTbiD=V8k2b4kwovHAqL2N(MBJ!Ox=Uge8txWgYm-ez3$
zG&ug)7WU5Rx8A4~uJVE<_I>ys!s7xS-Q11#4x*G)FsvE_JSf|BQ5}H|xFz}#$w-q&O
zVcB*_9`dT}`<5zJ$(kxY(XUfzl7pt&+L;8ff|B9aRY!8)yu0k;enN8v{B8S^Em(jk
z&EV{X$XX8!!Cy|Dnw6`U?wu#m0mFvJEU(U0C4%6OozmKn>jK$sB1tF{aiivQ_^j;THQ9BH5~|bH!`)9um&NWTrCYC_kzU?ro02Vnmn4}ni{*v25g?qU
zsJ&4kpE`5z_U&W$P*(g}iaU8pjWPgB#CeH#8dVqTV;rKA+I8<>0ww=#+2wn>+39Ah
z10k}%yY{HGuP9COEixwY?W
zWje)SYxf_p1z8n!^H=-X`G-zWcLBMVijosklJu^9+9
z0->+oWxNkg6dn4xzJ}l8qUAU+&YO5zm4nLT7aCJO{C6Rns>*iZ@@EXf?wjJslXD%6Bon!U)|QF)CtO_u;2VlGWvPjyWo}0m;cjr
z(FK9^UNhYgNl%2VlqTW5J)lb6StnLYD`K(V*VcTAnHNj5)!cYsNrM>GFp;@$xkI@Q049ZOj$2;3qDogQ=KR#T_Kb
zr|YnIAiAN&xRzj11;vXsEVi}d@mtg6QbH_q=VK8P^b8-;QtthScA$$o_Pjiw#m+qF
z6|FpwAk+`rr!lXCO;MyYkf+RFHiQF@do%sn~!4zG!<=%O`wDou)nhU+O7~=V^@>=OJJqF)u=9;gSsVZI1s@AtxVzn3=xV1+VCd^_5m10xlh_p}^1cOZ-4kwVgaRM@ReiM?$
zecfKpOY7j>o(Wse58&ep#4_$>Yswq^S;_Gqri*Tr=3dBJfh3@|7FeV=
zG1JpQXHgXs4o`&Qt?!cs#h0wf{X{2h0C6Kd7p7DG9Lh?Ii4pOy8{JD1EgZxVS-r|3
zR-Ck@j6mR+Wp+xNaEfyY07C!-x^9-c{ds{_T~E1veDq75*YRb
z3j=!V5(;k$JnZC+Fj;spHBDGJ{LhxMumkhx2(`e+Aew4bY*o8ojZl;;yogp3{n
zGF7w1J>g*-_iF%-dP%QsXHudZIB56LRe37nPNb{aBYIIbT3D-jJ)5&Cn5FvsrIKx1
zn%Us*u77YPiX}Lp8IR>tc4r*vvn(Onruo{W-^6-?;Fbr%;f4xp+ntkVh6p+8s3$vo
zTd?$6Xqx(Dfk1e|HG{PK-sFm(O_JJ1fZcTW9Lo@Lnf=kYDuGzHzM_zrZE$m1WIB6&
z=NxI+mrCv``l??KLGM5s%0B>5X7v~AX4tM+Sc`QXdB$9Hb|8;V`-#rGxlxyyH?qp|
zy2?Pvvy5EkVGnJ_G^_-XpgfJ!lq98cAq8upsxo%QH!o1$DNyzCTt9S9Q}V*B&D0fD
z6Ag*eThQPKxO~g8IXEruZ(dUeaC8A}qk^>HB^O%EgKJglXx~?}4F9T(%`5?0Z0k+#@r%ZWhMhQT3Ou)u)M!-^}+b-M@5
zCLhC0xK5%7_jMvkJ+Ie8!qy1ELi@d>)P>Xc-;LG9D=;SD3!1!W-ERV+0bi$qlm+QD
z6=2#F6(U^#qe_fW#|&&W3u(42Rt@=$7jJY6w#tzhy+IP^kHZH<&El@k#~;&aSpy0#
z_f)(PRyI9UODK(e>B<0~;K=R<82;Js1(<2Foy);XcgU_Ysmw7Zw8U*bifma7Zb^=o
zPl>VS+O1+L@es@q!nr~DM-Yzh(1R}Pn2iq00_O-UoXK%&>3SyjAR*IfB9=QG==po&
zV&<9Z`O`C0oWw6{CJ2X;-Y#(lF0|RXzjX=DQG}bO(X=9rvKU3#C^A7%-2zI#p#D(t
zqyX7@;rd?yjOxgjylIb@t#my;L6!h^M^yDBVOd!bdPT?5{eGbQMcMqx9Y6y^#r0TN
zFAjtiYm#W>5{a-mH3VfnLl#Fg$mk92;aAk;DsQ(07!-5&H19&-%m@9FgCn0E?srpfZf0pP_J9y~t&M_bFw6?|-(!-rI13YMUYO4<7J!D*`
zs)T>l^>x$DuXs^pKdFqY&UDIh-%e@HTi)jrA3&4BZXz5UbiawXk<>mc@^H|Fho@REhIZq&pog9CGO!m4$1PdNuz>RqZKm~S+Mg1IB
z572hzH6GQI_&CO!B$;x4Nw3MlL6p`?MaPTVk@SNRMCrRZSso~Nph!Z=gGTZc#)48`
zv5V$hjRc1$zFLpHuIdwheu(H54e`qd@ixfrU)utG=GDVHE`?#$0jTDxN5*Eg{?-+3
zqeVQikTINvRX{<`f{Qh+%r$j*)z?cRzHj2-o+8NGx}jLBO_4!-l?G*B}qcM*y^Y?FT9ORA%h@JRJf)EroRs3tU}J(xgV^
z3~cAJ{XfbV{jJ1A#roJ|Q*`EH=H!GT4!1UmKw8F08eM0pt|`^jRYMbpryclDgLxL)
zet43~BIIFcYeWaQVE%2Y%(yoMCqKYxTN~iX+T*IMaxN28kXj}_J;ihdK6~c?4e`mf
zxBC7Pjg=1pz$w(u3EX%j9?>hE@Jds}7$&17nY#Tr_InUjL${JiChXrFaHAWQ5(>ak
zFDz($9Whm?46Notz*5et%mJqzF@R8qCWcT3;2{&gj~0U?y{#&T-9l5EV8E;UcfroV
z7ev)mjYon!AeYjC@O_-(4>Nmqm>3)
zI;BzCNGp^@`gao*L>G$b{Ft;Ulr{7y4zOZtTyXeF3UjkLtL?v~8kCkfbc{#c2
zGk*oIM;EClSA2++XT1YYZ7fPJ_aDPhKeiyMN)I&WrO6LB8tJd3G*R`++UaxaVw6pA
zzRB!=-&Z0;d07mJ@9o_gNnPMWjoTq|{vu+h8PpJf0gJ4FEZgs0ff4PMf-FptEUwG&
zy?88#P};F7OA=mSm0O*4Z(-tqgKtKwMzlf>@1CJWH0V;)-ktJbk
zLKumq7otYfIS4X>5}Ezq;3tqa8lRP}f8iwsnLx56AnDrqT;)^3-64<5KOVq0c%Je#@gB^Tqg30#jK>9g@;in^#Dd;ubxsl2wAEkIpX?)Vw
zz)2(dDsJSG6NmUaqZV1d?z6;=+Gv3gO5i1O;8m2l890cG#GRx%fpk7Ag8rn&Ts{we
zg6-E@SzcLMG#dC}Tq=lA{`4(nqtesRIxiDJ=4@+PSu0qDLS^KCkbnl**8_e|dfZzX
zy^tHQ0|_UfW&(aW^<>i4zsl-&AOv)hPrO{to(Ro0Jm6lK*-N#5+#v1R
z%S=i`ym+hKk>2w@vp6BV`D0(pkOnA>#e-%FF9Ft&E|$q&l?FTbw&9K*Pc6>eH>Rm5
zt7@el1#?_R(#$Oq&%6YW^m}zUQD_g(6xUo+5Dym-Y8D(oa3t*jZmtZ>62(qkfdELy
z>>h6?U%t`>^xg`AGudiBJ}>43vP1CTao?%QDyRjvg8C;T_@(gnG+sK~&E0*K0DRTtlDBg)m%|oe>pc~rBGv3H3G!KGTFg{h;&@p{EVrCUVo#~L
zK92kfhVUX5tcbH?Rm?;B8S`LOv&k9A-@+OjCTVSaA{4aicJbwnR%4U-b-od(w-wC~
z!ZVbHdce}M_xmdtC{GKx*H`a`2Vr3nr)6@RqQCp*-yq6Pdf;*JR_z;;LCF{tDvbA-BMGF|haNw^JpRO`{$n{H-a&!QiZoBE-()9v~-HPbRk_5}JXQAlC+JGsoA-nzPy)e7pSw!2Z=Z*vQKlaI6!DeW`hu
zFpzAN)c~Fg{*v`-~`X$LC0ut;NCg7|W}h
z26{41^dJBPF(4NaLS9IVs09n3N&ArvoOKtn0$<(Frui
z=A5=?!I}hAl5yd~mKvY{id>dE5AzIHxRuS~z({T{CsKNgA3G4D{;Y$3j=dXgD~*50
znf0O(#1ii{kDaeyaPovSlS{~+D`vJZGSq&{F1NW6BU-iL050L5-=H5T!2Q1{MNoI5
z?bkAht8C@_T}{m}flM>5gRE8XLRyU_@10nE8+Lsc0pJu08G+a4%2}ct4^SJszAuP5
z+YQ~j@~M?+JC{u*7rJjiyi%*SOfV;;mD#kEj&D)o
zipTQcsWK};z_h==jjf5P?Jl4L1puFd&6|?`jBc-i5QU(^j{H%PQGBtek)RWS>{0xf
zNtNbmTn;DUQ`_Z^uKQDd_amLX$V3L?*rVSMJ?3xEQ4_ZQH_3GYLy)oonBIpn3WtkY
z4~wa1=+WR#-ekXB`feSr-6y&gg+yAS7M{aH}s(atj)0nN?foqS((?=vwIFLA8wku;hWvzR@WEajTTWW4ym%T(&21<@h)}^7ocgQ&>=X{+?i0jK_c;L5(NxAyoX~ZREs-#
z?7h_#^2V?8zs5G)Gvx6H55{-jKgZ$xP9yLHX~|s_by@TgV`iyn-Q~-|ZSlY%jwwWB
z)B;S<%0$$Kk2QM6%6L6L!L9DdRA9C~?wwJiDOF@0NKb>~HeBj75WOGz09?0|PJQ}r
zwO?L-Fo4px@BTh0+!OtJ;@M|tQKbG8K#zNsd+Fx~*k7W;1eBS0mCDYK>Z!hm%&9+t
zC|3F3(@GDuy!M|^{hv6dP(w9aK^VucwXm&)Ei}4z?#VE
zWYJ9}Xrg)~zp(qhPcnWd-Sl?cZR}FMUC1|<$3n?TOdEz5zF~%~b%(FUG1!C>ttB=!
zr6aDgwgFpXeL{qytSvl9WgyIKKVWNzdlb*Q|B0S~mFqxPM7-e+0OTc8oC*s%b(c&jf@0ogd}wk
zYsH6J+L05;3rxGs247+#xt>wfWADS&TuCSHY*A=~tuDJvmp2l;k=J5sKU07m^oTBO
z0yQ9E|FX70LI^VaMze=!ZJ$+m7A;vE*S(l5XsM=YMxy3uabIi?c$SkGX+)skaAin;MF)>i4`t?Pk7AZxD@|Gqi
z2tkq&+svjSz80D;QBi0*A3(0qJyjr<8LY>PyjIsCbDIU`H-X_8%?uus89pZ=iHt@UVmw5
z@cfDsxt5L}Y(a?yxgur2O`U_(NzHbF2u)KbsAWbLY#E30;*sS3M)2KtU~n+<|!|3pty1^zHt0x
zCffif3)?$~3|S(8EOmN8=A7|(i2*-x3`Xs`R`
zgQDWC-`_k?!1_9Mo77v6yift%fsMMCK`)_f_T)v+RmP`=XQba4B1h~L%t%lXWrn!r
zJ}27tz{B;EOY|QChO7Av>N56U?oJ1;H-nCQg-^2V5?cu%;l?``SlEx=HZX(_9t5sG
zKTRNawg(P0^^1KG@+mGb+*UHOXn1d5Fy}jtPLh%_lq=e?EErScjQ|tg
z>B)J44w9L_kLsk8UC9EO!2ZCF1+m=_gTquRj}KV>=24RFqR#$Q2Ld0ae(-q^&>!LZ
z&)&X;`UJSo9!As8YW`wXN8++E7L*e*h
zy_lUs#b{X2zNi>47)oX%d00}(FvvPWx2if1bv52z}
z7w$=9n8HO+WFSHgiwFKv1qT3uz{4jd1Hrf8gdO4glve-Ig+y#v!)zDQNqc?h+U_$u
zz#Et^VgXFx_dp4b{agSg7&VL`cxh89;ij$ZlVB)UchvY1in9NegIR6SMsl4hSLGFJ
zZEH5DaBj~jj~gA=t_N5-{_8_;<-}2qcZb4;#{hBS((|RXf=r0cMi(xNJTq}<@HH%OY#r@X{W;{
z0q{i@Dgrri7N!_;5ah@SZVBl!&W4ELbm&5H?mK+Ujg}LHH>GsT)w|p$$Z_2!L`86Q
z!}?oYm0jibBi@U;Gp!a0dwedVOJ*rg=*>4Xp6BnZ7kNz@trb{52pB;e3hGA7I2+Q+
ziBRLH%nhK=j`Vy}}9T&@vLHu@`h$-faJ;GHUZD||~`t7qI8M#TtF
zo)`_RRlVO9C>5W^98Z_D7Sag|wV67=k2=b~n9xRq4uYEZD0@?~A`v5s_P~vS41Bka
zMCG#jGb(kh~f1dj(T@PDE&@c
z2T{!{WZ2S(fU3->apo=5TfaeU&5-i-?N-zmxCBe}fQcN*7nc)klzgH$!lZ)|<*>Eg
z=YNL2gq-A$i_cCnZ1DgR%nG(7%%c>gpu1WS4#=Hw?MwYVf#752c?DF=*SHMkhh}6W
z=(HRpK7U1u*o)>n(>y$Ntp&lNXY=p(k;DY3$oWnVBSR=bE~$^@cjPqGBmJvkreTy;
zSUOuyyM4C_A3m#vzK6v*BI9u4n0$8yts2EbkfSO4D8E%X?Qx?g)MNKA`LkjH^@d9+
z8Pq#gg2kuVXE^%zYkdI%?UiR*4=~zn_|%K)qA47ql=z9+1ZvvL0R}K{MK<4|XJ<)@
zP9`v{80L~STKyR~486ec{SiZmm|oz86&6MC(P9c_aIoVa-JXAurv)v@0rc?g-mcfK
zyYNxHzJy@=KCvyyvzZZOWF2W<6~uxf4*#(k3BF)vD)EKf?o;uD8A73rFnAHums=Bc
zHai^etxl@dvkp-+W94UY*(jIo)uU%@$lySXTj;F}HZ(?3rC7}B52hY1wEJfr#RPl&^XPye$`52R2(sEe
zaz=@c1gpT@QwH9JNg5Otie7ib8h?Dy
zu=iQovH|p#A+DoS-x$zW2r~_t-Ey9SumuGaS-_Nlo_I&-6#kynBy2JLQ4tc%j3XQ$
zlRUmloqEHuzmzpEl~(0`_BNp2iD{m^v9R~hal^`O@SJ`Kz=j{mGX;;;Zjn_>)N0+u
zouQwFlY2t`Os-!{(R{wD93&J(ToNEk?4{)3|@{$%)2XC|you1!~`ztktL7?-?K
z=_Z-*Ce)&z6*wBFL0H7ojYR?DQ~ms9MpHJQOtxzw>f!j!dETb{+8&^zA3v=(vydjt
zT;6}=@Xj6GPzjn~dCIrws>W~ryD0`u*|`lfhZRkEq03%_t#*MubZ+*lM>2qQYkUU3
z_QH9E2WBhZwS+rlC}ZP>w_uGII`|{{bNuzEA%^F>tGj@GKF4}u^WGTqH;iI5tC6Q%
zp$7E6Ts{bemKjWmoOp6JKl>&03|W1fh@kGDfE6xKV|&9Tujyc=<~c~qE}T)qn_aQU
zoGEJ#p=FEdFh|T2zUK&hhGw;E191^YujQQg@=nthkl4=W5=Ev*gjO#R4(~huhBBk$
zfEr+{t=!wdUh=UGKoDw9MCNWxR(wawif_qlQ=o_j3-BX5#DA3QceR`<;zcj2hQqmh
zrl`}B)-W1}t|T~4PcKjTKA$hiyQ$h&VtaKjbcRC3CD#ZYAJkA+EDXo6L!+((HJTCe}G^j94{}+!^F?u(B%vh?6yx~j;m$yG!3j4`9P2RfY
zBqWI8_1Fqk3J-tfE5Z$uZ=PFcQnjT&Zgg4})phg40XoN?KLh)OnvglL8w@VwD~N8g
z6nhMqaY&IY^M<5faKe&^xbbdvqTa`z+X2m>?YWesw_Jt@=WbxHeA+Ur-we^hOYliN
z)(<3sCRnw>3^Yi-GmZ!8Pra|Z-^PGB#&alcDvEKG!E9n?#K~H3buVR2G9D~wv2D}Y
zKks)y+SS-;A15JCdXsd^06)SUseWrM;V(wftOftadf8VmgavW=s+k?4p}DeTnPvQL
zb~Yk-C7Y4Zi?!;%b&=Mz^Hw%QY6<#Si(+jvH_gmN<Mrnc8TzrN0#(H*$|@l&xRn#M
zj0W9-Xt5lF&XrBI7r4?kSjKD-Arv)|m{vqZ{?P#-LxRIv#fsj$vGYlZ7iy?<9ba8U
zUktZrBGRP7=5+PBxn9|pa5B)a-Qg+d)D!F?nzC3mnQz`GxoTeD|IU)4NnJKmn(gee
zG{TCF!WP6JVXOVDQq$k4tmU-m_*a=Wqf7?9X}cMDj1Kbm}VZ8}C7X264|F$zc{b6=gx8gG2r?a;_dX`x8;dt7+
zHnC3ula+toY*{F&TxB2S5cKI+O|dF(u0@O4l7ng=cI0^R%AH!k@K{Aseg8J4j+w$;
zr4P35kh-?2PQTW*spjxXtw~GIzT38yVV*@u_OjK9yq_8G%s6T*z3G&c-X*4na{h|R
zA*UB*KK{7*Y;%0i3T+Y3s@$uBmjlvnURo)nyQ=-c`BUa!6nWLdEF0GTR6gm{p#7}z
z#-pqk8HJ{29RG#!NpXB;+yZR%@Bx=VhRJJrF9B^hS^bdx?J6(XjxAw|+YXfkP713j
z$YlTD8OnFZU~}Gu%kO{PT)%VbNjsfdtH9m%OB5HTY+ceTHa}}~O6gwX(ucCjGxZkd
z&-Z=cuESJ!MN?04(wmwbv+WXH5tIkd`tKW22+$mgRRzceNqFWy>
z-~5{Kn)kr5VrR8=^OtdMKCw;8EqcBDbN@H<73VzNBHGGnv8uycb$!?oneV3qZnTO$
zdUn00^gx+{+2@~DNvm(|;C`_=i^V|y-n5t)8Lh;%XM>};KJh%dDz_#0zgeTX%$MM|
z(-_(BIY*a27C-Lmy<*$xWg*OLiLCtjcjvk^N$>hyaC6G5BhRyRk{0Cd
z4lY_I@WI;%mm7TYuy%kDp{57e8Nr=Daz-_piT}pIY*-q;lHKBID0JkJeenGcZNB-SC+u
zoGhJpB+d0Y&*8tRuN9089!ar%DpC^LVkO3z!`s0A`C*B@;>g^~g{
zuC{k@T8b1K$XUET`Pp{O@dFpXf%Z|hbsl-9{Cz@WQk#2dxc`&rSi`HQfV(ayM(mq9
zRr<(CMo
+
+
+ {% block title %}{% endblock %}
+
+
+
+
+
+
+
+
+ {% block styles %}
+
+ {% endblock %}
+
+
+
+
+ {% block content %}dashboard{% endblock %}
+
+
+
+
+
+{% block scripts %}
+
+ {% endblock %}
+
+
\ No newline at end of file
diff --git a/templates/component-info.html b/templates/component-info.html
new file mode 100644
index 0000000..7219dcc
--- /dev/null
+++ b/templates/component-info.html
@@ -0,0 +1,86 @@
+{% extends "base.html" %}
+{% block styles %}
+
+
+
+
+
+{% endblock %}
+{% block content %}
+
+
+ {% if selected_component %}
+
+
}})
+
K2CloudERP-2.5.1.27
+
{{selected_component.name|title}}
+
+
{{selected_component.description|title}} -
+ quickly design and customize responsive mobile-first components with Python and Bootstrap.
+
+
Посилання на репозиторій: {{selected_component.git_link}}
+
Версія: {{selected_component.version}}
+
Розробка: K2 Cloud
+
+
+
+
+

+
+
+
+
+ {% else %}
+ Помилка завантаження компоненти з сервера
+ {% endif %}
+
+
+
+
+{% endblock %}
+
diff --git a/templates/dashboard.html b/templates/dashboard.html
new file mode 100644
index 0000000..f918360
--- /dev/null
+++ b/templates/dashboard.html
@@ -0,0 +1,166 @@
+{% extends "base.html" %}
+
+{% block styles %}
+
+{% endblock %}
+
+{% block content %}
+K2CloudERP-2.5.1.27
+Вітаємо, {{ username }}, вихід
+
+Встановлені компоненти
+
+
+
+
+ | Name |
+ Description |
+ Version |
+ Dependencies |
+ Git Link |
+ Install At |
+ Status |
+ Action |
+
+
+
+
+
+ | k2root |
+ {% for component in components %}
+
+ | {{ component.name }} |
+ {{ component.description }} |
+ {{ component.version }} |
+ {{ component.dependencies }} |
+ {{ component.git_link }} |
+ {{ component.date_installed }} |
+
+ {% if component.installed %}
+ Yes
+ {% else %}
+ No
+ {% endif %}
+ |
+
+ {% if component.installed %}
+ Вимкнути
+ {% else %}
+ Увімкнути
+
+
+
+
+
+
+
+
+
+ Видалити компоненту?
+
+
+
+
+
+
+
+
+
+ {% endif %}
+ |
+
+ {% endfor %}
+
+
+
+
+
+
+
+
+
+
Магазин компонент
+
+
+
+
+ {% if component_server %}
+ {% for component in component_server %}
+
+
+

+
+
+
{{ component.name|title }}
+
{{ component.description }}
+
ВЕРСІЯ {{ component.version }}
+ {% if component.name in components_names %}
+
+ {% else %}
+
Install
+ {% endif %}
+
+
+ {% endfor %}
+ {% else %}
+
+
No components available.
+
+ {% endif %}
+
+
+
+{% endblock %}
diff --git a/templates/index.html b/templates/index.html
new file mode 100644
index 0000000..66191be
--- /dev/null
+++ b/templates/index.html
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+ Головна сторінка
+
+
+
+ Index Main
+
+
+ {{ name }}
+ {% for js_file in js_files %}
+
+ {% endfor %}
+
+
diff --git a/templates/login.html b/templates/login.html
new file mode 100644
index 0000000..23e91c1
--- /dev/null
+++ b/templates/login.html
@@ -0,0 +1,92 @@
+
+
+
+
+
+ K2CloudERP-2.5.1.27 Login
+
+
+
+
+
+
+
+
+
+
diff --git a/yml/gruntcontrols.yml b/yml/gruntcontrols.yml
new file mode 100644
index 0000000..36c5f4e
--- /dev/null
+++ b/yml/gruntcontrols.yml
@@ -0,0 +1,526 @@
+select:
+ select g.gruntcontrolid, g.zajavkid, g.VirobnikId, g.num, g.cultid, g.sortid, g.catid, g.genid, g.mass_part, g.partnum, g.agronomid, g.posvnum, g.actnum, g.actdate, g.oblastid, g.posada, g.vidpravlenoid,
+ g.factnadhid, g.zvitnum, g.zvitdate, g.sortchyst, g.oplataid, g.active, g.usercreate, g.datecreate, g.userupdate, g.dateupdate, g.dogstatusid, g.gruntcontrol_year, g.firmid,
+
+ z.zajavn, obl.OblastNameUA, s.NameUA, k.Kultura, ge.generation_name, c.cat_name, a.fio, a.dp_posad_name, ds.statusname,
+ v.name as vname, o.name as oname, fn.name as fnname, uc.login as uclogin, uu.login as uulogin, vyr.VirobnikNameUA, f.name_firm
+
+ from dp2_gruntcontrols g
+
+ left join dp2_zajavka_obsteg z
+ on g.zajavkid = z.zajavkid
+
+ left join k2firms f
+ on g.firmid = f.firmid
+
+ left join dp2Virobn vyr
+ on g.VirobnikId = vyr.VirobnikId
+
+ left join dp2Kultur k
+ on g.cultid=k.CodKult
+
+ left join dp2SortReestr s
+ on g.sortid=s.SortID
+
+ left join dp2Categors c
+ on g.catid=c.catid
+
+ left join dp2generation ge
+ on g.genid=ge.generationid
+
+ left join dp2_auditors a
+ on g.agronomid=a.auditid
+
+ left join dp2_grunt_factnadh fn
+ on g.factnadhid = fn.factnadhid
+
+ left join dp2_grunt_oplat o
+ on g.oplataid = o.oplataid
+
+ left join dp2_grunt_vidprav v
+ on g.vidpravlenoid = v.vidpravlenoid
+
+ left join dp2Oblast obl
+ ON g.oblastid = obl.OblastId
+
+ left join k2users uc
+ on g.usercreate = uc.user_id
+
+ left join k2users uu
+ on g.userupdate = uu.user_id
+
+ left join dp2_grunt_dogstatus ds
+ on g.dogstatusid = ds.dogstatusid
+
+where: "where (g.actdate >= '<%year%>-01-01') and (g.actdate <= '<%year%>-12-31') and (z.oblastid='<%oblid%>' or g.oblastid IN (<%listoblid%>) or '<%ROLE%>'='-1' or '<%ROLE%>'='acd5f33a70b6b05512e5859aa9c0115d' ) "
+table: dp2_gruntcontrols
+typeid: 1
+sortname: num
+sortorder: desc
+caption: Грунтконтроль
+detile: dp2_files_grunt
+onRightClickRow: contMenu(rowid)
+height: 350
+rows: 20
+custom_form: true
+form_width: 825
+form_height: 420
+is_add: false
+is_del: false
+is_edit: false
+footer: true
+after_save_script: afterSave();
+fields:
+ gruntcontrolid:
+ field: gruntcontrolid
+ caption: ID
+ width: 120
+ hidden: true
+ readonly: true
+ align: center
+ type_field: text
+
+ zajavkid:
+ field: zajavn
+ caption: Заявка №
+ alias: z.zajavn
+ width: 65
+ readonly: true
+ align: right
+ disabled: true
+ width_form: 220
+ main_filter: true
+ formoptions:
+ rowpos: 1
+ colpos: 2
+ type_field: text
+
+ firms:
+ field: name_firm
+ alias: f.name_firm
+ caption: Назва компанії
+ alias_form: firmid
+ type_fieldform: DropDown
+ sql_form: select firmid as k, name_firm as v from k2firms
+ width: 150
+ hidden_form: true
+ type_field: text
+ align: left
+ width_form: 220
+
+ num:
+ field: num
+ alias: g.num
+ caption: №
+ width: 75
+ readonly: false
+ align: right
+ disabled: true
+ width_form: 220
+ formoptions:
+ rowpos: 2
+ colpos: 0
+ type_field: text
+
+ gruntcontrol_year:
+ field: gruntcontrol_year
+ alias: g.gruntcontrol_year
+ caption: Рік
+ width: 75
+ readonly: true
+ align: right
+ disabled: true
+ width_form: 220
+ type_field: text
+ formoptions:
+ rowpos: 3
+ colpos: 0
+
+ oblastid:
+ field: OblastNameUA
+ alias: obl.OblastNameUA
+ caption: Область
+ width: 100
+ readonly: false
+ align: left
+ type_fieldform: DropDown
+ alias_form: oblastid
+ sql_form: select OblastId as k, OblastNameUA as v from dp2Oblast order by OblastNameUA
+ formoptions:
+ rowpos: 4
+ colpos: 0
+ width_form: 220
+ main_filter: true
+ type_field: text
+
+ VirobnikId:
+ field: VirobnikNameUA
+ alias: vyr.VirobnikNameUA
+ caption: Контрагент
+ width: 150
+ readonly: false
+ align: left
+ type_fieldform: DropDown
+ alias_form: VirobnikId
+ sql: select VirobnikId as k, VirobnikNameUA as v from dp2Virobn order by VirobnikNameUA
+ is_book: true
+ sql_form: select VirobnikId as k, VirobnikNameUA as v from dp2Virobn where active = 1 order by VirobnikNameUA
+ formoptions:
+ rowpos: 5
+ colpos: 0
+ width_form: 190
+ main_filter: true
+ type_field: text
+
+ VirobnikId2:
+ field: VirobnikId
+ alias: g.VirobnikId
+ caption: VirobnikId
+ width: 200
+ readonly: true
+ hidden: true
+ type_field: text
+
+ agronomid:
+ field: fio
+ alias: a.fio
+ caption: ПІБ агронома-інспектора
+ width: 75
+ readonly: false
+ hidden: false
+ align: left
+ width_form: 220
+ alias_form: agronomid
+ formoptions:
+ rowpos: 5
+ colpos: 2
+ type_fieldform: DropDown
+ sql_form: select auditid as k, fio as v from dp2_auditors
+ main_filter: true
+ type_field: text
+
+ cultid:
+ field: Kultura
+ alias: k.Kultura
+ caption: Культура
+ depend: sortid
+ depend_sql: 'select SortID as k, NameUA as v from dp2SortReestr where CodKult = {mid} '
+ width: 150
+ readonly: false
+ required: true
+ align: left
+ formoptions:
+ rowpos: 7
+ colpos: 0
+ width_form: 220
+ additems:
+ '': ---------------
+ alias_form: cultid
+ type_fieldform: DropDown
+ sql_form: select CodKult as k, Kultura as v from dp2Kultur order by Kultura
+ main_filter: true
+ type_field: text
+
+ sortid:
+ field: NameUA
+ alias: s.NameUA
+ caption: Сорт
+ width: 75
+ readonly: false
+ align: left
+ type_fieldform: DropDown
+ alias_form: sortid
+ sql_form: select SortID as k, NameUA as v from dp2SortReestr order by NameUA
+ formoptions:
+ rowpos: 7
+ colpos: 2
+ additems:
+ '': ---------------
+ child: true
+ width_form: 220
+ main_filter: true
+ type_field: text
+
+ catid:
+ field: cat_name
+ alias: c.cat_name
+ caption: Категорія
+ width: 100
+ readonly: false
+ required: true
+ align: left
+ formoptions:
+ rowpos: 10
+ colpos: 0
+ width_form: 220
+ alias_form: catid
+ additems:
+ '': ---------------
+ type_fieldform: DropDown
+ sql_form: select catid as k, cat_name as v from dp2Categors order by active desc
+ main_filter: true
+ type_field: text
+
+ genid:
+ field: generation_name
+ alias: ge.generation_name
+ caption: Генерація, щосертифікується
+ width: 100
+ readonly: false
+ # required: true
+ align: left
+ alias_form: genid
+ formoptions:
+ rowpos: 10
+ colpos: 2
+ width_form: 220
+ additems:
+ '': ---------------
+ type_fieldform: DropDown
+ sql_form: select generationid as k, generation_name as v from dp2generation order by active desc
+ main_filter: true
+ type_field: text
+
+ actnum:
+ field: actnum
+ caption: № Акт відбору
+ alias: g.actnum
+ width: 100
+ readonly: false
+ align: left
+ width_form: 220
+ type_field: text
+ formoptions:
+ rowpos: 12
+ colpos: 0
+
+ actdate:
+ field: actdate
+ caption: Дата акту відбору
+ alias: g.actdate
+ width: 100
+ readonly: false
+ align: left
+ width_form: 200
+ type_field: date
+ formoptions:
+ rowpos: 12
+ colpos: 2
+
+ partnum:
+ field: partnum
+ caption: Номер партії
+ alias: g.partnum
+ width: 150
+ readonly: false
+ align: left
+ width_form: 220
+ formoptions:
+ rowpos: 13
+ colpos: 0
+ adds_class: brd_btm
+ type_field: text
+
+ mass_part:
+ field: mass_part
+ caption: Маса партії
+ alias: g.mass_part
+ width: 150
+ readonly: true
+ align: left
+ type_field: text
+
+ posada:
+ field: dp_posad_name
+ caption: Посада
+ alias: a.dp_posad_name
+ width: 150
+ readonly: true
+ align: left
+ type_field: text
+
+ vidpravlenoid:
+ field: vname
+ alias: v.name
+ caption: Відправлено зразок
+ width: 75
+ readonly: false
+ hidden: false
+ align: left
+ width_form: 220
+ alias_form: vidpravlenoid
+ additems:
+ '': ---------------
+ formoptions:
+ rowpos: 13
+ colpos: 2
+ type_fieldform: DropDown
+ sql_form: select vidpravlenoid as k, name as v from dp2_grunt_vidprav
+ adds_class: brd_btm
+ type_field: text
+
+ dogstatusid:
+ field: statusname
+ alias: ds.statusname
+ caption: Договір
проект/укладено
+ width: 100
+ readonly: false
+ hidden: false
+ align: left
+ width_form: 220
+ alias_form: dogstatusid
+ additems:
+ '': ---------------
+ formoptions:
+ rowpos: 30
+ colpos: 2
+ type_fieldform: DropDown
+ sql_form: select dogstatusid as k, statusname as v from dp2_grunt_dogstatus
+ type_field: text
+
+ oplataid:
+ field: oname
+ alias: o.name
+ caption: Оплата
+ width: 75
+ readonly: false
+ hidden: false
+ align: left
+ width_form: 220
+ alias_form: oplataid
+ additems:
+ '': ---------------
+ formoptions:
+ rowpos: 40
+ colpos: 2
+ type_fieldform: DropDown
+ sql_form: select oplataid as k, name as v from dp2_grunt_oplat
+ type_field: text
+
+ factnadhid:
+ field: fnname
+ alias: fn.name
+ caption: Фактичне надходження
зразка/Акту відбору
+ width: 75
+ readonly: false
+ hidden: false
+ align: left
+ width_form: 220
+ alias_form: factnadhid
+ additems:
+ '': ---------------
+ formoptions:
+ rowpos: 30
+ colpos: 0
+ type_fieldform: DropDown
+ sql_form: select factnadhid as k, name as v from dp2_grunt_factnadh
+ type_field: text
+
+ zvitnum:
+ field: zvitnum
+ caption: № Звіту
+ alias: zvitnum
+ width: 100
+ readonly: false
+ align: left
+ width_form: 220
+ type_field: text
+ formoptions:
+ rowpos: 34
+ colpos: 0
+
+ zvitdate:
+ field: zvitdate
+ caption: Дата звіту
+ alias: g.zvitdate
+ width: 100
+ readonly: false
+ align: left
+ width_form: 198
+ type_field: date
+ formoptions:
+ rowpos: 34
+ colpos: 2
+ sortchyst:
+ field: sortchyst
+ caption: Сортова
чистота, %
+ alias: g.sortchyst
+ width: 75
+ readonly: false
+ align: right
+ type_field: text
+ formoptions:
+ rowpos: 40
+ colpos: 0
+
+ usercreate:
+ field: uclogin
+ alias: g.usercreate
+ alias_form: uclogin
+ caption: Створив
+ width: 75
+ readonly: true
+ disabled: true
+ is_change: true
+ align: left
+ width_form: 150
+ hidden_form: true
+ type_field: text
+
+ datecreate:
+ field: datecreate
+ alias: g.datecreate
+ caption: Коли створив
+ width: 100
+ readonly: true
+ Акdisabled: true
+ width_form: 150
+ type_field: datetime
+ hidden_form: true
+
+ userupdate:
+ field: uulogin
+ alias: g.userupdate
+ alias_form: uulogin
+ caption: Змінив
+ width: 75
+ readonly: false
+ is_change: true
+ align: left
+ def_value: <%USERID%>
+ width_form: 150
+ hidden_form: true
+ type_field: text
+
+ dateupdate:
+ field: dateupdate
+ alias: g.dateupdate
+ caption: Коли змінено
+ width: 100
+ readonly: false
+ disabled: true
+ is_change: true
+ def_value: <%Now%>
+ # formoptions:
+ # rowpos: 46
+ # colpos: 2
+ width_form: 150
+ type_field: datetime
+ hidden_form: true
+
+detail_field:
+ fileid:
+ field: fileid
+ caption: ID
+
+ gruntcontrolid:
+ field: gruntcontrolid
+ caption: Зовнішній ключ з Грунтконтроль
+
+ filename:
+ field: file_name
+ caption: Назва файлу
+
+ usercreate:
+ field: usercreate
+ caption: Створив
diff --git a/yml/roles.yml b/yml/roles.yml
new file mode 100644
index 0000000..6e25c30
--- /dev/null
+++ b/yml/roles.yml
@@ -0,0 +1,74 @@
+select:
+ select roleid, rolename, commentrole, active, pubrole, order_roles, is_admin, classrole
+ from k2roles
+table: k2roles
+sortname: order_roles
+typeid: 1
+sortorder: asc
+caption: <%lnRights%>
+fields:
+ roleid:
+ field: roleid
+ caption: ID
+ width: 40
+ readonly: true
+ align: left
+ hidden: true
+
+ rolename:
+ field: rolename
+ caption: Назва ролі
+ width: 250
+ readonly: false
+ align: left
+
+ order_roles:
+ field: order_roles
+ caption: Сортування
+ width: 100
+ readonly: false
+ align: right
+
+ commentrole:
+ field: commentrole
+ caption: Примітка
+ width: 150
+ readonly: false,
+ align: left
+
+
+ active:
+ field: active
+ caption: Активність
+ width: 100
+ readonly: false
+ align: center
+ type_field: checkbox
+ def_value: 1
+
+ # 5:
+ # field: pubrole
+ # caption: <%lnPublic%>
+ # width: 100
+ # readonly: false
+ # align: center
+ # type_field: checkbox
+ # def_value: 1
+
+ classrole:
+ field: classrole
+ caption: Стороння роль
+ width: 100
+ readonly: false
+ align: center
+ type_field: checkbox
+ def_value: 1
+
+ is_admin:
+ field: is_admin
+ caption: Доступ до адмін
+ width: 100
+ readonly: false
+ align: center
+ type_field: checkbox
+ def_value: 1
diff --git a/yml/users.yml b/yml/users.yml
new file mode 100644
index 0000000..c006ecc
--- /dev/null
+++ b/yml/users.yml
@@ -0,0 +1,175 @@
+select:
+ select u.user_id, u.name, u.login, u.password, u.email, u.phone, u.photo, u.firstname, u.middlename,
+ u.lastname, u.roleid, u.create_datetime, u.who_create, u.firmid, u.partner_transid, u.departmentid, u.tab_number, u.name_rod, u.posada_rod,
+ u.all_obl, u.order_ins, u.prover, u.active, u.birth_date, f.name_firm, f.edrpou, r.rolename, r.classrole, d.department_name, u.passwd_decode
+ from k2users u
+
+ left join k2firms f
+ on u.firmid=f.firmid
+
+ left join k2roles r
+ on u.roleid=r.roleid
+
+ left join k2department d
+ on u.departmentid=d.departmentid
+
+table: k2users
+typeid: 1
+rows: 20
+sortname: create_datetime
+sortorder: desc
+detile: k2users_obl
+caption: <%lnUsers%>
+readonly_form:
+ who_create:
+height: 550
+form_height: 325
+custom_form: true
+
+fields:
+ user_id:
+ field: user_id
+ caption: ID
+ width: 40
+ readonly: true
+ align: left
+ hidden: true
+
+ order_ins:
+ field: order_ins
+ caption: №
+ width: 40
+ readonly: true
+ align: left
+ hidden: true
+
+
+
+ login:
+ field: login
+ caption: Email
+ width: 100
+ width_form: 250
+ readonly: false
+ align: left
+
+ act:
+ field: " "
+ alias: u.active
+ caption: Акт.
+ width: 95
+ readonly: true
+ align: center
+ type_field: condition
+ cond:
+ exp: ($row["active"]==0)
+ url1: ""
+ target1: _self
+ target2: _self
+ caption1:
+ url2: ""
+ caption2:
+
+ 2:
+ field: " "
+ caption: Зміна пароля
+ width: 110
+ readonly: true
+ align: center
+ type_field: condition
+ cond:
+ exp: (false)
+ url2: "/?adm=k2adminfunc_changepassword&userid={login}&mode=admin"
+ caption2: "Змінити"
+
+
+ name:
+ field: name
+ caption: Ім'я
+ width: 250
+ readonly: false
+ align: left
+
+ birth_date:
+ field: birth_date
+ caption: Дата
народження
+ width: 100
+ width_form: 250
+ readonly: false
+ align: left
+ type_field: date
+
+ email:
+ field: email
+ alias: u.email
+ caption: Електронна пошта
+ width: 175
+ width_form: 250
+ readonly: false
+ align: left
+
+ phone:
+ field: phone
+ caption: Номер
+ width: 100
+ width_form: 250
+ readonly: false
+ align: left
+
+ tab_number:
+ field: tab_number
+ caption: Таб. номер
+ width: 75
+ width_form: 250
+ readonly: false
+ align: left
+
+
+ rolename:
+ field: rolename
+ alias: r.rolename
+ caption: Права
+ width: 150
+ width_form: 250
+ readonly: false
+ align: left
+# type_field: DropDown
+ multy: false
+# sql: "select roleid as k, rolename as v from k2roles where (active='1') order by rolename"
+ type_fieldform: DropDown
+ alias_form: roleid
+ sql_form: select roleid as k, rolename as v from k2roles where (active='1') order by rolename
+
+ roleid:
+ field: roleid
+ caption:
+ width: 150
+ readonly: true
+ hidden: true
+
+ department_name:
+ field: department_name
+ alias: d.department_name
+ caption: Підрозділ
+ width: 150
+ width_form: 250
+ readonly: false
+ align: left
+# type_field: DropDown
+ multy: false
+# sql: "select roleid as k, rolename as v from k2roles where (active='1') order by rolename"
+ type_fieldform: DropDown
+ alias_form: departmentid
+ additems:
+ '': ---------------
+ sql_form: select departmentid as k, department_name as v from k2department
+
+ departmentid:
+ field: departmentid
+ caption:
+ width: 150
+ readonly: true
+ hidden: true
+
+
+
\ No newline at end of file