From 6acd25aac58c2f77b6adabbccd5b16f381e91ebf Mon Sep 17 00:00:00 2001 From: N95JPL <37276225+N95JPL@users.noreply.github.com> Date: Sun, 7 Jan 2024 16:20:04 +0000 Subject: [PATCH] Fixed CAN Issues - Test CI --- build/entitlements.mac.plist | 12 - build/icon.icns | Bin 85649 -> 0 bytes build/icon.ico | Bin 123545 -> 0 bytes build/icon.png | Bin 35949 -> 0 bytes out/main/index.js | 561 +- out/renderer/assets/index-222068a4.js | 51828 ---------------- out/renderer/assets/index-333b9a83.js | 31723 ++++++++++ out/renderer/index.html | 2 +- package-lock.json | 4 +- package.json | 148 +- src/main/index.js | 175 +- src/main/resources/MediumSpeedBus/1025.js | 792 +- src/main/resources/MediumSpeedBus/1168.js | 12 +- src/main/resources/MediumSpeedBus/1234.js | 28 +- src/main/resources/MediumSpeedBus/1236.js | 36 +- src/main/resources/MediumSpeedBus/1249.js | 12 +- src/main/resources/MediumSpeedBus/1251.js | 46 +- src/main/resources/MediumSpeedBus/488.js | 36 +- .../resources/VariableMaps/MediumSpeedVar.js | 129 +- .../resources/VariableMaps/VehicleInfoVar.js | 88 +- src/main/server.js | 437 +- src/renderer/src/Modules/Home.jsx | 382 +- src/renderer/src/Modules/Layout.jsx | 609 +- .../src/Modules/Vehicle/Dashboard.jsx | 160 +- .../src/Modules/Vehicle/Electrical.jsx | 183 +- src/renderer/src/Stores/mediumSpeed.jsx | 179 +- src/renderer/src/main.jsx | 514 +- 27 files changed, 34175 insertions(+), 53921 deletions(-) delete mode 100644 build/entitlements.mac.plist delete mode 100644 build/icon.icns delete mode 100644 build/icon.ico delete mode 100644 build/icon.png delete mode 100644 out/renderer/assets/index-222068a4.js create mode 100644 out/renderer/assets/index-333b9a83.js diff --git a/build/entitlements.mac.plist b/build/entitlements.mac.plist deleted file mode 100644 index 38c887b..0000000 --- a/build/entitlements.mac.plist +++ /dev/null @@ -1,12 +0,0 @@ - - - - - com.apple.security.cs.allow-jit - - com.apple.security.cs.allow-unsigned-executable-memory - - com.apple.security.cs.allow-dyld-environment-variables - - - diff --git a/build/icon.icns b/build/icon.icns deleted file mode 100644 index 28644aa9d97942c50008d03bc0f93505f7824737..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85649 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

-KY5Dg)0#~?~rEbJH_9`n*G*i+1Ec#;TIAa-b zp>SkP?E+F12}rKhHh&dPhQXtzrWsj#nho@dp!=Z>A@|d?U7>z%#oM5iZ|j~(`#_|t zlH*hjw#;9e<_fJhIGcB_973A z6MQ;4%60~-nym$Gdr}uiwi}?rd(}1kwdD|Y9RnsJi(LPC5-V)}0wbP2ibIR`mxX9y zSvG8&n(erxz$J%iTNKgjWQGr+MH)oc8XV7{#CPvy2@b1njAsl?*~i!tR_&UI?yMRs zq9#6$s*Gd0C4^?ZNSd2?x3*WL@k>x=X7{2F#6RfzIx}cyKcFOr)s5TwD}#Rv-bkcCwunkod|A%B~38%&N-b`pkae zv?0!`c|01s_Axq%os!Ga$rk|7G3tJ~tAi$ZJ zxV}RzQ?As>QU8yyzqheEpLhzwgRYnxUuy*U;_tsdOAj%;!4yfH-a)l1a0}gd*w0#g zJ;(?}lSXia`0$*V9w@Cv^%DZjJeGc1Lqtm-Ey;6dpW;D9Sq7RJ)U4U^FQFunJtVSF z!MczH@@eD<+u|lwYz+Z43fkT^Wyd^4(zP&- znMp%f;S>`v+NS>Sj2db3@Nj$0q0Gik{4jF8RsI|?IOQKd0gxi2{G&;Dbqe~s^VbVV zwjzPrBM)2yMn}b+WVurC7XLgdDWNL?7b%PAJbUhQ9AgAie=gO*Ve5Xt!A^$eJR6Kp zGFpTs*5TxN{7kQxAH?9LNOvR1t>IJkO8SxIEs;}{kY|DI)px*E>*Q&MoPGxSUam%g zOcO02dsAxpHHk_ez;&=7E;IxG)Sv8N#VNU)M&gzy9$a=Y3}ToUO`kWin_Wr2$|Hy zzw3}k$QXyVsDQx7e-tX#+JoR4JtXP~L!Ua9#BlM}+(wEkHtif>UR&`EU~rBzcHDTPKmfF*zDukaz$mC5_vm&qWRS#~Eg#$xVv8ufzH2=l{}dgXi*IBihvKQJe( zz;vZ+Nl9?`aOLU*z>w8tIzH!8=n5c?)OO+0w4G?Jd#CSJ{G$Rry9PW#qfEGrs!Do` zhp(Q4T{3DL_9qv&Fc9$_=B1sB^U98qC6Ccw``a=`J{#b?Cyp4-Kw5PxTDi{S1gD*q zZL9hsqS{*cq?aQdguGL$hJP@!FAjv;pF2K+E3K>MD=AM<;N`IE0TK6~PhI*)?pJHA z)@)01A6q((q?WtC@MA>LoT$l!-0imv~hmI=!Uke@@O1 ztyX6d&l6w@kf3L7L2jeRzzK@@^ybLaLqT3T*vyg?)3C#=n6j#MfW5a6`|AQA=Nv02SmuWzG~V2YYI$2z7&Ltm**=JE-xkd2slDG@J;maDf2tFPA^+5 z+SLK!va&?e4jFPU5v>r?7eDO0NifhkcI(b?fyoo^Pf#j7BXKK+d=|jjNS(pR9oRA$t+AlaCp) z4FUr#eggApj*rj1ITJtglL@;%$a7RZsT7z#G#O|+F(kg8j>eXs9+kxLBMv{M8cI7xKg{|CI`#{a8>ATx97&Lu6eofWJdRJH#FxH%_F1 zz{QUmjL)uS+^%G-!|Buqu|!6FOiwVF8E~xKIFS@(HfA7BX{bz;DdG?SlFP&F*QhLX z&ajm9@~qNybrS0fzy9j24{p{!aR1v$v6M-&HX748IyB_K_J}xq`uM_*%NT+XdqoP~ znEcqe`cykn1>J1mck}InCyvCl;my2?Mk5SudYnZ43-zlNs)KGe?Y*B$xtNJmPp7E- z8qoEu(L*MLy~kBR(o-V%{6wbMtgFSReb5?#M65NbwhsiGo17j$07RrR^*se;6;eqT z#>0EF$GHYJXBE%yVNL06X~!i(DJTu=uD3tTW$H$AmnlhmHPvF$2;chmGs7CyrT=>d zxDzPeD%zA6dWqcM%5n5De@Gg*f_tygDEmg)txF1%ZQX5pM6kXwm3A|VB6(5jwp4@Z zZ)UiWfTOi{Cu{p=AnU%rXZYyBpfs#bLd7@ zBrQMZ?o|TFMfEs~yJQMn^L71^1FLH%KfvjO75azkHtUg{=*m$OBTu3twhhJFW-n#u} zWex;XpmWM#lSvET^3m<@irRy8{&ZT?ioHZjj4Ws270@DAw6?}E0Rp6eGh;H{O83jZ zzJ{*Dt9cS3;sDV3zz=45G+`#7VT{6?+a9H?78=6c$~y;*ulfbZ$=Y4iuquOv)s!7Zj8Ce5)SfH#sz|VIdDjJqZ%F z_l3W`6(Hvg+<#w2nqE7(x_q6Rim}$O)zs!+5>;jqFsd_Ij&{o(VI2+hg0|OR{svR z?(EDaE2!o*v^WH&N97dRs?;&TnCYg-@{3~O;32{~o@D-G=+CuB^&?jOH<8eEo;|dY zz$Mjp{e1tDxIcc({hK!h;5;D*Z4o;u6ids?e4U{sgDe(p&OCdu_xw+m&$#9ZI~DiZ zUV=xma};!S!CIOxVaQSu=Y8_~?cJPG1{cnd=frIa1(`PtYW@I1as&Sa6meGlwWh9< z@wC!)r%$nQ`(P6p!5`l?ZL$tLvnJZxBMToR8b^M+l~h@3z#dyq}7a(WO>MdeDcyv2rr9E7HfyClWH~Nda>Kl zUp9;WB<&V(QE$yB&VFCDXQAd}PVe@Bf9_sY?`YRJyonD|DUeN*FZBr0DHaOTx{Nf} ze)iu96Z8lxIe06>cXoVHi}#_WV3`ixSUo&mOczz4D2xj zZlUOqyz9-KRo|7veYs<8Geg=y1OecWtnJHZ?mj>bV$p9zAZ+l6lLyoW1a#wBP5p!I z=MLAt0_R_(MG!%3;^D~SXa;P#b?DzZMY5BmTC?APhZ*+Lj8W})c8B+~U7E!s=$GOR z8;MmPCzf%Q73n`;8jwZ7Kw0V&9y^Z#b1n*sE^gt5V-mtDo9v3TwtDgDwIF0FcA{1p zwhGRw$B^A_JPxw7D~g#GWC3gTj3;1yIwx=zIcyeQE}MwgDZZtX6wst-x8^R(-h56n zo$;Yp1j`o^48^2qa99H3&Q;Nroevy{6*)k;CWZQp;yA(}Lmdx=hx0x4B?LcAcR-bxNNFT9h6fFOeVM-up2X(;R-H!snY~*Qx8$LN`|85?;M<86vq;w+E@y!+ znJ`>ye3nj*A8NB%zd#7i?p|&6qa}?ubA2Ku8AzkebDW^qr`bS+4ab{Jj6k-&r zO0bGHA2?#u5OsHzm2i>4d4H^a@n>?dn|&D7_|q%>hUfa9X`0&$$rTAp%OJB7u?O)h z_XqKzh?ME~dBQRyGR>PhHprgs#{KC0Uwy;L+>rnH7uP>6-Wgr%W*5XjD@SQJL_ANO z6NcQe7uD=bp86JmR4Dy9ZNbzjaKC3TGVl~sHoZ9>Gd{xQw^`TMr9Y+~c_5XTN5*`m z-y}0R?}|5ulATlyLCZg+JT2y#N?@W;ATYEt362aq?jNEv`hv9sXMVAY)lOE6{57`l z%;aV^;>6Hyr=hf81Udvd#_~-4umo~`*cmr*`0?h-;grDMFQllkjpC|yVkr9o<(Z;~ zK5q@{3NFdR^y#eY#TfFcCK9seLZm8o0Wyr_QHVhn{smtUUmo&nTH$HjwrNU>R1i3R zIap-j)I5|4^XHW&%z@LYfxN2TPWG{j<}zR|3Sdu%*5|`4-@6c{gQ~Ki&(Dx#1`84N za|(}p3HU_+E>sr85O3+C7r!Et{6Ud)yXP+G@?Jt;T9u0TasKnV1QB{=ksxAW1W-w# zeCtpE!Xf*mm@u5aXXEW>A?0x6!t>W*1|j140L36eMKd9DXBy&g-O=J+lr!Mj&Aa$D z_9EzrPAdS6*{g>ESmz#cDYUluiN9d2%p1%OaMrPXs5=1pt_2CR907l$mza+{P?+Z-_a;MbQFGMdW~YdmMlyD$wELAn&) z@I+vJhLX^>ng(Ec3U?i>dw{nXHBeI_rSHbEEYAMQPb7whD04u4^+Pza8pX=Fx|UO4 z(OBRIaRekTq2zsMFtb9E3X>Pg?9?SVkes9RNIAf??Q3~F+Zv#a+iD7e_en#o^NWt% zw=^hgs*)fA*W*cK9g=kaMdE_ezZ_b6L4u#8=bOSe$zbH^gmz=%H2bpgwdifo+jx{$ zIU;TS1JPcq^&-KZdY2@o@JumaKo9s6w4hXZft2&Uk6XbqM;De*rL1T9?HHaQ!5h)N zqU<7Wm~z1%SX>uJ*uixUVQ)TPPfe98<1j%$?FGwX!CZc&{3EKCeO?NBA$8H72dyjK zoE@i8hFa}w0If~yy5ON|UMuJK2o!Fb!-wTu&})i(Kn;hN3B2$k^6 zG0sIcmGgPFK(Wp=;G3~x+M@l+52)@ony5Y zEEPsg6+otxBbkKAK&-I>~oEjW5A+Yjp)EgYiQ>S-PXB$$WIAY*QEhJ`WL0& zcj7NB>P@m%HNM7{ZfMv8NN12&Fn9j1*dW#(h-Pyppm+%Yi0UOF+E?&4@AdN-nP9Sz3VE3um0e_Fd*o;8F`M^ez0W~5kZ;x;CB-MF zAUU63DX=A~mqb?M=?r*NG)7R*?1VFPK~*I*oL81h;^WMg+xWca@#}zYqAYXwx!aA- zwkb|XUd)LZ7o|`)_;Dk%>|b%r^Yd&&p3@k?Y6tFAswWR$Iits`YuqI3tZk7nxpJ zpju=BSh#Yfo|CdgYFQ8X6=lQCRVWC4ZOTZ{OjnO@f)9>eJN5L9x*|R?bTG<-shANJ zJ135iP883t3us2gZ0~wYcbBUpCNYvK3n*pCUvlkNIg)$D(y$$`<;ZDOrp9 zC4$FcO705akpY!L5lN(c(6;LsoPIWcbrU(gyVsovBz;a#C(_3sb*5zyEj?;-%t}m1 z=uYQgqL^nO=H;@xgU600yn|T}Yxvc$#OTCSYRR<1F^#2QSG4ja^gAbe^3%(^~ zh0M=Ath=Q~T(wYt>AO;DWg94bH%8_uNFupglTmMldh+CjrFU<~Nq8#pN7%G67MiY@ zx{a3{L4k@lYA2GUprZ2w57C{83iOV*#3LMXK@u-o@ED_Bgvx~(o^-2quTHOE+ ziFt@K`H(5dSlqDIBr9eh6Pwo4cmG2CVa}At0{>TTlQ-J+Y4uR~Bow19%YC%vkS}4Y z8;y?5DDkK`8^ZNH)0^PN(a0X#aXM;J^k!{@Bi}5RJw(Bc#5c{q>b!-Fs>zm&r4Y+k z?Jw~?^siZClYsRL(W_fr%w&B!K_laS^W`T>$tXl84tQ!#t2P9LM2T^4JKQU=lrVDR zU2qPggdLwzWNc-t*2H5h!f8|$W4pdXeP!Od_JM``wYI1(&t zM!%vSYHRws03shQniF`YvW?up`Qlv_k3P7ZswpafuS9)G_ly8e7+m`f_6z)~_R^G1 zg-l|!in!LurSkq|i>K$n_JP-?K*23qyO+l2AS-vVO0yMdGXI-@R?@8f8;A9VAuA?r zQ1(K7^JKVkU^{RKRTeIvrt3(W_NUBcz_;@G8GD<`aft$eFJhL)80r(Z7wyi(WQ4u! zrAR{?LK^^%wdOLIrAizj?(CsGsz_sRoGN%4*EB&`W8}5zTd4w@B6q)A=&`9UeAB|J|#q!S5;?R}@K@XOHChzO3V` zKUUj#5;z@EBvQc_V}Xb`<*g#+V7K+l`OhJqxr~<~r9-nt`kg~xK*aBQ*hmLuc+-Wb zh5vhby#DK9PWw4!%tmcR*0pvGeet7B7A3y&7^@A30s^?FNYfXdsWwVjb z>Eo?qA9OGz&ibUP3)%0KQ70Y#pXUs?_(oMLQE3LK zjAmKc2E5c|uW>SVQ6~v)xb*rUk_9;!BE&NZy8ENKXV#Ttmp|}OQccA0xlIpuL)$rmb%D^``ybgp%;>` zaTa5mpd-7Kq>}PW@+q=#VLbG(rzF`GGKUn35>6y?=hRLfUU5;oHCCAkY)q`>Co9A+ zCDVz8ME?&!fuCM2R_s`amSvA>*wW91z7wtxNj5J5#wBfQHas8J_si23#(1p4cy`0b zQ8lgn_L@Dw@Jswl1dZ)%A$#EmrH2sXQ<)b(pSx#ZJHe`CGM)&+emfu6Y!WDP$1N?l zL=+k828+xu&`4JjE!unC=a^a(9$OEIpdDpc?GYhOR6HFD%JF+S^^WcOap1_#BY+Yg zI!C2WHh6%5AROD{i1}cSr<}{<7ZcJi3Qaeg?UznpW3H|jUIkJASaG=*YqR*9SOmnB zv0Q4BWUIE>FsPesf~pGy*MAIim|ufQW>Wn=nJ<^WFa|r*QgQSJyZO^{QcW)P^|692 zMpr0He~6jAn~XzeFlEjwobO6C;~(Id^2$1K6&!;IEBEV%$+)g6l0 zYPIS|2dZ))@495b!(9Syn1YnJ zzkFuNJoHgqsUT=Ir{G^{u)OLreZvrtoa!#<&#+I7!9&zAFL{*~m#u!_BT?X+fME>- zF5`=tg$k@G9Nv!u?$arK+7-$Qt57(4!2nDkc$a5#92`bsMuX z-ykzFC|=0$f`Fq-*N>F2hshn{{ILD2+IbpJ%}kISI5xv2wY-(fpqi$LKaw;sddm9LQU_#gTN3qoXBMJ4*KBd>IZhmHr;e2rW4$;zD5xC)V{Y+es zLwhNO{w zBV!`15HuXd6e$R#^xO{|<*l%-^*0=Wff!xc>(@_vdi}`m`?GF|?Fm5m$xV&h%2KYn z$5?&1{ExPbP{eoiL!E{$qHNS!J+!NEi({N;%I_DqQ(30Zo724yN)nQhm21V&DprdY zVUYN4ZwW9%pD~@Y{f1ufO$YL&TMx3$6fF!o+EyYypy6}+gNXQK@hPjE=;5;Wk3D9G zZy?w{=*yT$B`>li%%@PO?Vy((4Yd80d0kB?K~<#y4BTEga-c#STJu!Zn>hb|lbWbN(93s}n(#Kajj zQF0yfkDrX2^QsVbywWl8QO9U&^ScY2CynDow`v^9;n5VmF7Ml}4}w4(Nj zINV{3(s2ml&2`Lq5XE;1xD=N~AQVFu#9!*vGkWs0n<~q_phHRN)7oJ_{JvnYvf6~v z68fn#4s$1^CE@Xek0sI8whV0GCqUNg&$M8zo2!T$^84LT)zA95!$iVO9LPkR{;$D) z&^;{ObT$1vT87#w1o2Rm46^6wbW6j$PG@$?D)oWzdj*ZeGPkTSv<1=^Kb)pqoV%d zhGy3rhcd51=Vwnu%5{uj(JE354N%|K z?mX(>H&Sj{MIE@OSDNp=++;TDPZk}Km?m`5;X&h7R$VgU7^U>nN>tjZx5y&7p-U0Y zUfD0rnb@TxJS)0g51$@QtIXt|SrxD=Y}1dFm3vl4k~0Kb0K-5ju*K5&D}$S7GVAmO zyiO0LxSow4={Q{$p&b9T;xkUF3wN}|Ms;@P&)04#t4;|Hhsm~gHtuipC{SgSM`>d1 zk)VcI>|=}j5Z^Uhk=G-vzOj|3;Umt=on}8ja{uDNbZ*T0M|tc;vHLu=vq379T!Ld; z#q^crQ!oYQXQXJ7BP;#!?^XAx(B(12nX^z+j>?9>Ng}|+M|JUm_xk|vGAXu5#V`R@ zBi}#!(?i%+jmGv6H((TmE=DM;IOReFOG9nmuxZu)#`wu&MYOMSoB70hJ6SIh4`{LW ze`3Df&z<{pp67gDq{5oB2ttM=yAAx^JLy&P3Z8?~NQxlgkrak2H^A~!mW&jepOCry z?=v}`a+?(p2U)eDZsY3rP6A&&!ch{VLH8^voy8`k5Xfh6jF1Omwnw(} zi@#*=1g-B8iO|AiT2yfeK6s(bY(9%t_I9Aata%3`KEnMAizkb)am}&PVKMYxasL$_ zYvqONn>@s@e%PW!kkMc+t$~{OU5NKz=8*}pX;$N<+-_p3!PdL4vaN(^Rj)4?u_MNc z1(V8l$4Wt0P58=xpx%+^w{Kj@rDRuSweRa{oC@5-acRfISpY=nun&o5VCi{v{RUn65&tEw7+6(&(?oIc2m0gy4vBafJ1Fazd;@}D`ZC&3$NJ;8}rLt3pJ*oy5b&r9=?Y2B4mG3~OBN`aIY;S~9ZKpqbEDyuidJL>_~DDyq{1Q7n6tUsp+nkd?tP0G4Pl6mdokms5`t}S>Ezvt1rnT?qpQ`M zBUQxsfjCjQbA>j%VkSUU{lAyxoG0@Ce2HHb7tnQ%hElZMLVztH5z)jkzBp6-OsAC? zXEC|ZI$kg?n`4QaROlZhufAb;#+Q)>vXZ=%Ok?NDK+m8vSi>z^9e{w7&EiGhrz?m{ zEY;|qwb2uo%GNUWzVf24(c5=mu~4n|YS|+`_0G@<9N<9jY40@feHfTp5q9y`0`YDH4UM4%^v;SiMO-Mvc9bNwpx~KxS{=qNm z7n(EjOqaOHj_|Z_WeWP9{I*hNVUXt{j?;ZVkQ$Lj)7-1mV#BWUkN}?Y_7xTRzaTUt za5yHT)IWgG;X>{wmgXvCmH>9`tpsg}s1^(^$*#r&0 zQmK#_E*Ap6i#avBU>%i=?6BL043$7H-=2$KmWD^+Re;@HU<}j5<+}T{H!FskF#cT_ zfB|t87*ojxK{I3U@IPYZ$A_PSOdtPrWDm5MA&TY}zDO>wXx1ngh zYH?=@+pnAE`Mz(P=KT!_avLRX>($^S?E*4xJM|iaO!(J%rjP$< zctp@#Z^0*L!}=m5kNlzCu&7H2?2iz00000000cCrFeTcj|2N_ z9i`fBjJH4hI46tzJ?k&;J$(Hrl%oF+I>1Lx6Pcg@000000007smvKriaqMM*tP_uf zr?C*0hTiZXB$*TS<{S7s8?dpPEa;T3~N$y#O8?$m8!@xYcXRBFQ z(smGrB;Q9_w);%XsoN$^iFQILE0K?PVe>dTwTK?Xg@%uVZ{kd>r@D#Ts1{PszwJkQawmv5R7AFi5$2mw^?YLzEt-g;{ z`YsL_W*y+6h%Q|WBwQ|#=!Bxs*Y2`lz~O@HT@qUffI=Hfdh`J&oboxR-nlwpC+^{17UdM(CKjI^d zx-zNx4W?-qFct%f4@ zQ-XjBqnkrH8AQc)vhzbbcEx0583ripcR{gl(^oJ!{?Ol6sc;ckgm~`F@t$bLjbC}I zL|MugY_=m1M;%FD*;9IVyd#6X1ax^!ZCqdt)xJ#}vV9bk(u9+LYh%x%YD(A^2uezE z% zr2dhHcjZBoVt>L0*Kqq*cbOP^{YEYsYg~(M1*TNkMy_({KkuZjrM!-mw{m~h0h(a!`y zt66jLnhEiuM}>Ah!ixi^e=8HHI3|oMZF5nImid*dd8O<#n~vkkAq<%9_ZvnC4b}ezC?d)x1MfRLA2sq=uz72@n@p8MjlKMUq$8?JA?-MCsZnK13pbFH%mG>|h}djk(mjMyV>2Z%tC zm7YPh47wYGw}Hcsy3hW%prQkWn9LF4)S(eSi4xN-Gv>eQ*|q1XMX5M37kv`A1~qj} ztVlqZSdmKSJ*hU-8oq!(#|J|%)v(|Tt*q6c%SDLLb}uDoZaqY%iu-O))?`JLQN5?W zWBp2+6;UkcP9z*=d#kd6 z#(4a9sun_v_RlmPL)UhR#0oTf$S)=^mu$8UuRmziJgsQ@1|u#h>XJJe{k27@7Q$0M z_gwbZv9*-v!EX+Z>h^;0^45X5GetC#y|0v1USZFTMT0>)xJ_{)OzTJgf~9lFty=NI zXYpnhu}BW0T_fdA7sF+X5jHEer}CjB=~1m1P^Hn;?ltl6J*}V=pR4 z=#6SYP}fy|LA^tT5nJ`%l!QpDMU1Tvucg~~!O%7w-cicr?@eOA!~SO8YGYcbCX+Oe zM)jx*a1*tsO-3#&PaGT}c0CoNz8&q@L%CU6s1I(jBfYX}OyZ?}Z{bHS0hd!mi~m6) ze5_bc>tiJLG>*psxUf74UuKWQWSa-6#}$EME7LHO(EdW3&0d<|ImU2SH}drTg* zVm1*zg-)#cKGw}&S?{Bz{s5gX`^)9RgqTXjA5klNlarkDSh;JuA(ulaS=70%re8sLvTqbK$0cr&DU!}6TTbD7Xji00j7WF z2jv19AkSDB;jARa72rsVb<2{4=e?S{2DuW}8iMOc!W!*jTTMnW9nl&0W2Ekb*r$^) zNG!nvu&1ehzfroRXlw8(wEsJsd0W}U-%oPuz*JE z_sbB@2zh~+TvP3S9qa`fRmM}B4A_$YXu~_ZbaYTjXpzRlGi#>U?vP}H3ok1+wFtTn zS^KM7COaXm!ZZI>gI9t+L*$#p)P;{~ZQCq=nmavqKLX&_rpQ2ZYA%K{Fcm1A1A1(E zjB6HP6;S?kx>K{@NG5notqYLIC7oxbCtzw*$tby~^*w6b;?(>ukyHdHYQ`CK<}RFq z{_j*ciy4qY)@eS5Ub`23aQh`Nk=`VAqf602a98rewuuyO^y`;_$E{u49~>n{Q9*$G z6eAo{r@#{q73x(}~sk5xDb_ zv^|eG(UQY&1=Riet=4H?`Ayy6hq~ZMl^L?^RZ*KVcAo$c?9Mm>`=vbRbQpf^~qt!VG6nal77pGB4sfozHrZTP>!IqDxm6a(CIA%q5htlj+ zDV8oeU4o!7FWv4wm7CfAd7C}ud;$ie60yo-CIra;Qy>BRr1*Dg1izL^)V*Tjr7p{8wNE@ zdu?~+vco4cBH_Or{vFn+T};VyyRXeIz1Nbq(EG`uFTD_$^QVT4nJl@U!##WoMm!L> zVl-U~k$$5!)fGMiRQ}^Zd0?gY4R`ue$i`I=sN-u&4$yE8lh_ZEO>ShGT`lR)BE{+u zZAUVl!#%MkNt*WkwAN2=f|G_FbjX0xZvm(G<3i~?35EMAM$WWngTUFI3baCyCLoZI}(fGeRCif1j(S{x&n85cq`)o=sVy|C~ ztlY$amtuK^Yw!A2dr*T(s03FA@4n#zDnaair9FrStkZIT3OVn3>luBG*AKxM0Z)+n zU-RS9o;Yfo9<|A9#mW zV;uPE`|bGCKga(aGp35Us%|}&4fG!#ZazWuM@Ggir0X@Ga1&<9{;TrjdwzhJwdK>i zg-3VBfq;XM$L*ux4AZjE>zgd5^0Ul29zls*>O*Kl^<)I{iO-3#wctd1B#0^J0+=wO zU=GnbX3hv@%ztw10GmvraT{AjI_pAW^e-U4-~U`xBpI{h25)l&W~nCCSBlLB?Ul2*Q%`Y9IbA#e1BB#tZhG zwl(}FibP#rJqf032#fEg!8n31?54W6^6yzBLA(aJTY(PIO(sxEefaGq34iynwu zj6mL8m4Ls4Tbn->Z5UH*2xxU0zRk{|Rxx5{zT=o_Y{@6RGcLJ$u3t!Ai^FI&U$WNA z^ox?DJ79R!YN26H`yyE_W{wtor|f8#7t-o>kwJETenzYR8JA9yL`3}m6E}v{GK6Zd zU_&mlR{wBdofjP5+Z@!&tkBId4JmQZncA8Psg`tj0idS4?{(%I6oSXQbs<;(1Ep=@ zJ|ME}Npu42R;qiOzM0NE>X!gQ-6j2i-fXcq+=+&K;DfP*!5!L#Jb&3msdLs`lw0l@ z;|5q;jc@%go#N=m4L0_k<2FO7l0H`)p2Ld&PQ+<$!14*i=o;?bp-N9({oOk;N3wel z`t49%`;L&VDv9VA?FUAHVJ|trC>qBj$3Rj~#^;j11$qp(QId zS8PAtUV-|y_abEeuj4nzg(=iJ6nvG#X%=+wcZi4LyQlJ6b5dZ?3I^WBhyXND0|f~k z#Fj@dV$dR8ZqP<}fzD8y_?jc|54GE7PaZ@nWZw_%&xb23S1p^vqw@E=y3ju*@lR3y z6U+zxkh!*5dPxwdtQ`$tqzMq+A5<1LB)DPjUYO;cNv7XOE*$Jmr<<~bZgOtup=ndj zWthU_w((LiBwk+#X)?{TkJ@l^)EA(ksZl7b8^Q3`Y`^&#tZe%9n{jg+9~K38Dmjb| z_Zs0b1)Hgth3@nI7qDy=T2FUp>gvlJdx%steSy!Pwzfk9v(P4h%#_Qz0>bs5+r|*AZu2XZ%V}h`kdO!NGTR#fZ|#{B;~l7=26ls z@U3f@xG0^_kiY5|bp>xm7$ZqN*l|_5wtvW^d5G^PinAHNfnnc!A@kh#Mc`|d6&H3l z-_<4aPDle(5}Q>`8!2;~y@UnNDzRpiUTO8n6cm3gF9jq(Lb-noibG-b3vS{lQ_Mh# z7KE_D95-iWABj-<+=6l3qcxsYi`07qW=f?oE`kOWa{y1T#@wW@W%O=aj#&F7on*VZ0f=ksDHXl z@B?m-|6GjVtcXq}fllF}qNHjhN$3jAmrzY~fIkKZzHh zsnP=eA<~qDj#O`){4VrKxuDfvG~VLoAX(qrxdu1y#`RK%B>IMLg%VEuc&k*0O%8No zm;#+D6<1Cro)L)kkFz}E)`qs81DaK8KFrw5wc3ZQqc9Y0FxJ)N%D}hsY<(l|+nkF- z*l$?JQS35WMEmz4#e3)==Wv5k{Nhg>>yolb2qoH808t-jo1vz`V1?ngBvSAxo=doO zxi;ueN51x|E4f%?%^^|?IQn$REP=aU@52c)Y-vy1{L6~+8hKGTh%oBhxVp5fci6cw zkN{-eplJP)Vz?FD6ETgNB zt_~p+?@=YYo?|>4o5;DMf)b0h1el!gQa&hQNSGgPL;wH)00000029PQ8t9he2tw{O zQmPW7@gn1FT7MQT){CQQikz3s<~;TRV_7$&HRPr`o#Aq#LS^@>hPlozesq&)Yt)jP z3%jHss9?#63dG*@Z*d?{s*?LGM*-jZLlGrSa|qf`kw8B{fL<%3qacb)_W99Zb@vmp zBGn}yW5oM{R~qVuWr2u4++ip|w&OfoXcqxKE#N*EL>&$<|9RyVj&5GKjj%;0`6`pV zOSyn<8@WM3BgG)ik-ZS%AgiS&5f|S;N+u>9o9>I_8mU^zHMqyihBj{SeQRM z&Av7{KWiLQ!B{NC$`TCGYDvt0N5N}vI4n6(cGrakN`n|e+XyMWK)vx=h1~|Y1Zr1n zO8;W9zVe(}gsYBPB?}k-fkNd~;g`y{^jxjjZtBB$87zBPl~;Vr~IEtU5yDWP?^ zKIBw_21-lI(Gf7T!Oq81Dxe+&R>e;m)DS^t42h&i%K5JKw414B?{?#krH9`=Twur%OF#ErfY?3C$%c>?5R+}S_ zQ5(fvypu=y2y=TK!7<g5)4)lL->@+XuwCVl`!kV{@ zNW(9VFSQt_F9az>V}m<2VVc_ROXV!^u3+!;zcv@C%N5Ac z?4mq993PTPLx=<5kE{n3XGEhS4oJ*O0Q=+3a#!| zwUyKWDK59~As0)_;EFO6+m3%6F(9MA0p-H5cCiC^hz=iTtD12S<74UbeQ#g6tw{ZN zsBse#k8zb4>FCh}ck4Fh(EmYN^LCMtQBB##ma>MIAV7s&jhb7Yf&3VA)P<>n?M(se zEu^pS54-pSt&Jp_-zC+;JI~8mXe+mYiioTR-57UK&sUMkZC6?Wc?8G-)T;AeWYDO8 zMOQ>v6^r{I|3PRebG4`ZA_0SQu+J5|(ZGyjSE5LjHol*Uf~t-0u6Yz9(NZ`VVP$>NCj(6odMBA0?4A~*G2V%kcy2HIH(ZIw9y|m^7YM4adGU?!*NS+fg309M^k?9eUWvPk@U_ojFUax+-Jr4sZyb{kt35vk0Oapj zTF+c7Zt|p8fR}BJO}3qFqnubPGg|5ZZn^^YQ2Rmf_7n|Z9lfZ{*Y$K1Cx@ouDU1QC z{He9u5tpYho>WvS)@b!o{(cUyI&La|uq*0O_#S-C63R*sh0M<)({Y4Lzyhv#`@ar- zY8vKCTk%^Tp3J2<)#E`M*4WJWt*id#NZ!MakPR|WbV*Qm?G{Kv{?g_-s?M8)sHBF~ z4fikJ*fd>>8!Gm=Q{41($uEp>`bYr*?k-ySiJAh${Syy}^ziaPs;}(ht?oSmA04`g zuo1RmIY>C=tfQEL=AZY~G)rU!Z4%yzb~cWX>X-j3wpNWTj7}($%OU`iW(eO@i6FSM z(i(qm&97J&Yjien3%t~$ylfw<@!yYA>M^;zuIO~qEnBEOmYUB1mauC7V9(u)pjF^9 z0q=$@tf*rmF;^5#szUeDp;yw^7yn1tJsq%9fusDe7KPt!O&(@DMLew$`B8vMCPez4 zQROrT{p}`_^Eqai%f{l7((3qrw$v;w)AvM#^(&E*cz~1>wEW|lusg!xZDN7Wuy$`rtKz8t7^m?!gzgd05_;>~0U-eYg4xlpOZ~ZtvDhc;} zjQXNwCHL0C=TNZ&*k9JFraVfKot#t%X~a{NiBA+4n1a94SPPQ8_<%?j@N;uYq+w`E zI!#)-g$-QOH<_fW|9d`7(`8{XP9GO@XPR|%Xu{OhF3KD102<8Pb}~mJlX14sdVK+~ z*T79XFOK49cmEb>WnKov>%!+?sOz#<=7R>J+GUmL-Yi}I3A$Kr{PBsCI^5dnvCMuK zpzNdcaE}?s#Dpv}5cQ+mu_xfZmZt%fjVjs-C&*?q1-VGto{nji;JUkVvP55=&y^Q~ zzrC;Yq;)K`BVm;de*{Kk*B9jpmNSlS#@O2M6HI`O^&hi#R0(JH^L<37+-~T=XZy*# zpx3lnRa3DU`y})w8r3(PGfQ{XgkMw9m*AFTi|Tpo;#P+`lZ6t;J$h6~&|(?M=;_+G z62cRv7Kes3g&c61#r`%r;5l~#qx-ZkZJpi3|JU;Il+n8U@q1Olgm8?oCsVV5(S+jKjqnwTiOA-2R+XR&^?M{WuEwhouUw3_bjnS(0w5dELW`o3}UAm*mw zJ_>PQ{He(Pj9{?0vg>;(;2Ct=Dch%|3%?FhdytRgy22RDM*?Nyu(^WXA367ZwilVI zQS(xkR;kwdTd)+^`itSSAU$AT=|)g9_{j;9tY}=1HxaIIjl3v<#kP`clr2>tR1#J` zT(4c+)5}#gJbIU^qe=M)Y@(#~S5C`Yxu91hO?O_#o0Qat>f2|7t|;?Q6Ys}S5_&}P zKA~vvr?G}a=-ddb-115mEl2mA9XDh`d<%JlZOp#fi-@d2js**YikEUwP2Cp;crIf{ zK_7i4ur5(-(`-maj$~LI$1ShJ0dt(G!i!g|BzIXB1@Tk6cyeX`bG5d4luLvFTb^hJ zS5EFL!i%|g8woEYyC{9pf%`&jY(fzvF{YKVkskOCpy-g`V+Z}@4VFT{;Ov~f+|^lD zbY#ziXGH`f#g<{~QjVN#j#*>UX`JKQjUqUI<@R*peZ5xx{=sjztDJt$qd#v>zqhXc zZR)=t!=+#0(?{^@SNL?&=T_qm!Vig2QGR{96w>Q#aVh@Y0Esd=PeHLK+`a2c#qY9Ny$~F^=f^5I~vKybwB}DrdEqX%DKGQc@ zM*xa|VHC8y2U7wrAB$>x@Mr;vu)tBDmZByJo%=@UqMK;H_OmlG{rvOTQp{QcElkeO zALe_^NqRa%*LO3gSbFk72ZUy0p@7!MM7+H+gu)fZ*$pYw)RD4bnjR!19IcRqOn;D@ zt*^Ey-{NnnvkA`laWRLlGE=a+K;fj>x8LPE{|3Hw+%LJN&!%R;F-d5KmL*?ux|1eG zC?)A-sv|LzFBH2Vit-HH8{5fVUj*r|}cf64M!SAcZtZba>Ve69Hpj5 zsUWoP{(*U$`8k(^utdPcx*E%qxjQ4`FWXmJXNXQtU~N54E716LW^ zVyU&xA~Kni3q)e#^fO#O&3dZz+-7DLR7MeJy38a+lc0~1zqZ{VFbubnW^CTGV`A4TEX3OPNZ>2`89tt{|TXxrG zpQD@4X0tayH;R1zT4C4GuuVpJaYS5e`q>tVqpsra#!wg4Lx1WK+ddCI`0Ubo4L2~0 zEs8h@ad!9j)4IUWg^Ec(-LLVmXah=IuD!wPYQD{t!AkN&sk#XYcD)X2}rMPQec44F_QQXKj`enuRN%kfn&wZT!IaypTL<2+XdW z_)xVU1X8iYJOzSJbxQPWYY`2H<_l!(1zI(js<#)8ub#xjrZw%1VmOpu@us5!%}}%4 z09hH1Hhp^4y!y~HA30pYM$yr@{ctNLWUyEwCOzK~T{_xQMSe%QJ35Kj-_0591#~L9 zoR}SX^|F!ve8fwva`%P}zOn+Up_Ib3On;wPmW9!g7*KU<7eDIfxlFcfUOXa7Yb&32 zw0My1RIF{~8k8wYg3{804JeBj;U%KDq`Xe*)y6_}NWV<kn%O+Bi z%gChk(m+<@H6t8>>O^jL48&m{BAZQ&9s2yBUMoon z0E!aYovj@yh4R%-ek21mulopdH*EWzb z9gmQnged5EgBWQk0kdWG&Azy+Ec2T1`I_R})Y>GcGDV?BP`LUn`p_yRj>!#C-!8m8 z!4VP@C;1VSeWd>-S+ zVxoM&PyaF-?QS_jwn2B-W>g0}WIv+ryCjR$!u~Y%f&j=$K4g)1xIW$v>Fr z(yNw}!ML<%LsZ#J`Q(8ovlI)ou&P~|+g%Tdb&DEPhISN@k2n;UBStjz2rHc<&=~x~ zn9X8Y`J-5AFO#$dcC#0l<&fwcyXmG-uL1JOL5=oi3zj)vBx0xg zzOAn)S|InDr-0PW9Wch3qCQwyG=4EM4R%PKOea3$#o?~eN8bPnIr(t;D66BOb3}b~ z>DxLqSoT7I4AH6e^jA9s*G%I2vGt&K?dDB&$M~t=UvDlYbz~w078)Ccp~(vW9+I-k^RFP;Y4@TkoM+;9vt5Q&Vt! zB_#@jFEkYau@l>7t(7~EX+Qy{O5-=!0NEEv4#Lv||0_-u==pv#xxQghW7TOcl6I+& z`Q)8bYCF8;F0;j5Jews|B8`bUNG^;CU|_r)MICMrEdyRmmem+{<)^L14HZ+z1Z>^v z1E<94mPYmT{a9pq&a~nLQ4w@ml|R91H@~&x%pnq6qaWzgL?&wRh{SOuI)X?_=Q`-L z%jKPD>gz~H(f@07*nyrJ8g#-A&YbgqWDT#gk~XL?o_Sq=PZUmHT;~We3z_Doq!|9D zHis9*m%r8;*8Vbu+q&GNDg#e`X0G@Oc%(gses+UGmX0QddQYzJ)E_X`?EZ12WVyOC; zYu`worTbQgjqauNzHPwQP9dd}f*H(MP_pf>q{(Pq*HT#0P+^~CR%>C^pA1elxkcb) zOe=gU5p9Gf5~TW4o-Yjy6zEER(b076>xq3MoN$_A5{6?4ahItM)%P7(1M0$c5F_c! zWvzS?oyD#-9aK{>%MU*CYsxK<0Hf}+@YYky&3CJ|^|3}s5iWs1(2%ETh=azs$qb@^ z0e+^>T?NoLtOjJh6O>CWFDv6orc)Dd#SSgG0|!b%6Fb09&T4DhlC4i!A2>5f9E~;bD1{$05 z$YAB1xGUoYFXO@8itmvCQWJeJyW&OMf%dSKAdSI|Ad-mKN@~?o|1*c)RnjuuA(qno zC}9>z(gYZYD};P0l}^P1$7fMlx5PRMS#CO1(rke4Wb8!9vI? z6X=~ls!0sBX>~gFcEMpXe>GM^s(50KWxeXChaAVl!m<6j>*B9|sr88Rj66{O(hR0# zxO&bW%KsBnaAmU{r54nbyxFoD?NTX2!^DgUU@rK` z=15Ury~f$Z1Uj$jo@EbtW@BBHtN{VPbk45P8dw=GXn{7Ah>M*YL@~^QN{j;*eyN}p z7%X2J&#d0-hXBWWa9E`t^f*yuTXl0^q>psLHB# zHxBrw6a%iXgTj#Btq2y=IS$TRQpA=?b7@C6kT)>yZGC6^=`2n+0XipCwgP*{S@r|4 zJ*(><(nHX%bPe4wEDt?ezzp}A<+czv>)ypxd%B&IP(47q_pF3r(GLlw0z5RxE9pcj z)rSS``Z4X6PI4i!!aU#I*-L|dnNY|^Sx-(%X#H=!?7o*_jn(J=*hr`t2b+6d1G-$m z-ZeBhDi37@tv1*J9y0museX8#$P>x85?E6&;mt4W;AOQflfPzz@!t;OXL!qs5W;}Q zewmqo1Fs`@EeuY4%Ofe(;UPGf=+(R?ixxNT@5i!~Q}Y<;GM6E$w%>S%{_sfPbcK;s z!Qq=C-8ao^XZB-_pgg={s<0wtQSt6cf`=ngx`d6u8h3`!{|@|?96va36V5?ZhMUcr zSW+wtX1~m3IYq7A;XgY~)~g#^B``YEq*m5`7q|EDd|pr)5l?3lEpXC)*!`1&r(a-j zaYr0w8Dr?UR6&~G?azI4aa^vM{xX*WZyfC5*KBmKlr;9;S?SQeHJ97e&OIC{F$&<2 z(uiMU$!n$`p#d7|=yJ^~GP>2(7%(ZRvMKfI$2 zDsP*@x$CT;)z<`PhxPw}L|EP=(U)nr`G26N*XS(V|&^S<45KI40{9lh3mv54+ zD9qBNP(wNeZdxVSRZyPQx3n_Nn9V)kr`;dvp4y|hMc86}{|n$#waFo{$J5@+LKB2Y zZ2wPKRrqLfKbB3J+%**1EqL~*^NPt?r4)+Loz%%}rm_7p;GHETZ*RwW5G{US zsbF?ki;B~ai4@HLF#drPm5n+%0%T-$y4Nx4lZkp04#p`Ca^0Qu+9%r>3#yrN444T- zI7#rp{Vda@CDBTO!ds+NbieevD=04z$4^S#zHx*s z16wuwCrLm;HoOWkcu_0AeAc}^d8QlW%|*}lMG-nU?Z#N@TS-76R;{2drq_|<5efnD zCBD=g;iW$XRp6J$X=+;>y}bTg7L}(+&U8a+Xb>5L}Fg~rl=3C zj)QoA68iSvFOLfGd>`RkwoGCIJlI)vvy%TT*8)l~Dnu~)kL!({2H!;asW9xQ_dUC5TU+xoi+!H$?J=U1s{-|T@F!n z=9wWy;U$j1KS`Fo`s4L&G3o)vSlxQGH*`{sMZ=9$)k`Lnq z1h{)#c0A31IMJ#D%&39tZlJ;jLq>x}S|+QimVaW}#(JDcAc~j)<5Wn1SIZcQgJ;SA zdj+7zT!^yOgidtfv$Ib*(rTp!3`15*O&?1C4(AyeTuAL(_<#PL;wQ zRHi0DKleS!anq+YD6YHE`s+M}(T2P4g>I-q8GDud6o>vLZPiKvP{c(SF2RQG)91@! z%8vK-w6-_w2FR#75hVh<;ncg^t8o)*8bBgJUqnGS!$S6RC;*4$!%g&)ASQe)yz%+a zP@ED&zFeWx^0>4Qmq3Hgs7NO1THZ2|9Ssmu+ml(js4V%;gA8zNu=~} zgQ3rwa`CRaqwY#&-*uoePWn1GoZ*8cH!avbZSowYC5M)_jYZueA^?{ihyot2)d(u^ zN-@z?F41<6J6}*ZhUkuPmnzMXYVwSC{HSNI_7Hne*j%6PVP|jAwI8*N(A?BdhzS6c z%-`pTi<^)}X#OL;wx#h< z$8X_acpcn}P$7gnqh?qQ@6n6xq#u@CIl;x5IB|o!=j_hSu)9F8c|Q$7f^9R4m1Gq& zS`nRr6zo%BhFA6nK1g#!H(Xn*G`1l>{Majf7|>uMD%;J#W-gF%b6uuRuJ~D67z>G# zgl$;`+U@kpO5WU*pHvE5*UkwQ=A$K72FBn$?~=PS52Q;UNj9(m0000000008u6@P; z*?;$zUP?zsVo=7MB*c>U7~64LBhQ5ugte{B7%wmdgiqL~&I+R$j;ISS7dRZ)jpYs^VB@Axi2EaYR20sRq{ zClI$ttUV-_l2Dr{fJMiAIa(S~*iPBo|8@yFK;8L44wxWuVjNYFCG3AJ^8Zu{ht`)6 z3RBDcIEwahuG(cwRvHG(6kbyw%z0?7NP}*==nnbvZj}@vj2Hy1Bq*5rC}kt_ zQu!Xn;B@TZhMH64a|9^o`rq2Eq%?x4>(EOSkkmxkX5v0Hc?1gt&?6`)iZ@n<8b@Pz zt`7V&U{P9a^&;>`{IR0zx(xxbU4s+~OYbL)Q)zn7Yxcc8$Qz)P2B$Q5EjHw=0=F1M z$Wyj&AVmSL1?I-zCRu%o+pMI^$V78&^<*;|KXc>V@~b1ii&d$Aycwrh7fAkYO<%!N zanmpD5jz=>dFK8>XY(%FXSK5`p!Xi=K&Z!CtED;7HBukYhj}M89$c)XOk<;>@rUpW zFgFZ2KFs8!H0SM3|1yL?F)-#`vKa=_nV&l#=rQp+hWH4~W%(7WY_mZ~-<7HezRcbeipX3_`^wURyQLc}1 zdiFWF#M`sv#&zXP5Dw&qr&!!@xs%W>e!r5t+cVgcW1p0tK6@v0jkvAok9m-#)57%M z$s>C?ks$){LvF!MbNEUNVOp%FYCv%hKe;>X8}FktPD>PJnC-S)ybl>v_^5n95O8i4 zryYc$8063yn+iY=9LP^Jb-J7}FYuNBX*5@`;XiQ^BEzKauP>*;VKh6~d-GOa^Z2I% zUoIb7{mC|(InQObHRB8*H_@ z4!NlF!7Ga~O~@Y2A&2Lu-S>xB>c!Axc_TInCJa{oNOkonY2WKb`GEep(dCmjbsBw( zq-4QzB+c5V6Czr&8Ej{hRjJytRwoy;ePItiEbLRr(bb4hfO%$JAaWbXYvT!-18U=R zHeNGNNfvP{@BscQcV4cN#nf04An-LTsNiijwsayZoxrAI zOOn$;&J+(-E5uw2v0b!Z=wKu9kCrV;w5$PStMgl(pQl`!Vt!B+l))>eeJHv|0TYCw zp{>q+@kGl;tah9W%&3#^x|Jo(s<6t6uKK<4dvZhx9s`OrU~E+(uV{u4EsZSE_R@=G zcN=3lu@AdOt#N*RzeXm-GKb?X@*t(9Z%61(oRxw3S_Uux(v=*+0JF50p^*BDaThA8 zGcGIBn%XsPg^FPvU%p?IFIk2y>ck7oa0jbqmA3#}didc__MHd}hC7a@6I6R?xbG~3 z&<%D@juEVuqDEK}f+LVB;=f*DYbMNYCe|{ft0prmQE{4aq#&6uzO1>m+bQ7pAJ5m? z71rmy#2KPq12y9kYMW)bbQ2cfTQ08zD^J_S$8H@HHlq>un1}oDztky@72)#Mm`u@O z&Gi&U@?5JJ_*4=3t~yxB|73*X zUFvb+kAs_PryNoUprwmm%%r-0309oAtm1d{>s~TWOl{jJwom}neXho=Hk`1rt3EiW zl=rgeEiA*P{jyN3+^dA2+=9sqcpl(h5MU`F81hWhkG2j+Q7=aZ9YQDue!V;T@?tW0 zu8sNCF!|r|!f`X&-k8+xqRWlVPkB?cn5c1V(&tkhJ`CF)XFYWOo<_Y?@(1qENl+7& zJo!+XKYY6>&@9Vh1OA};p+8EPF_5=YCDsv{oN-(Fq1`N55MPB3iib8-g80R$XepmB zI&Y^dEgmI-U)};d;l&*j3If{P(3bbMC#N(N7XJTSF>x19;PZ>NA)MzxYcGo$ex7dk z1Y-YJ8eXRU&n|28H4VG8++bQv{J#r8cF#jZjR$+JIwSEk``Xauh3k;z2j$oAr1V4? zCL(hkHOgHQS4GHXF#F{d9HzBvC-^Q-l)25+0hJ>WECeV?utR_dg4heS= zv+cE($t@I2y@AniKVLbM*N z*Y}5;Nq%j;_BoB0al~Vo{wDw*C%LByb)O)y?B1E$dB!f%k<-Adt17{GuMcZX()3sO zCSYR@g#u*x0{$_B44`T2XB-iX3uJh;%+$pVhc{xm`Ee68rJt|NTnH%`SZ3o z%TIiP-yGFQyab6ZC9taY+fnx8hD6T?pthIpZ+{YA;@Kb<()i6nEEq@(Y^#_c-7i7v z527T%sQw!7E@q#kz$=-9R&=!-Wp%3O@H2ax5mPHwj*ff8<2lleD=5{CjZenoV=DV%W_$bZNI5y46g6iA0dtL^hEC3)>|F&Ymx9}X)kx3 z5_@P9J)uwXeafKmpNVV6qONhS@>POTFg%pPVzUbd4H{+Z-PqSlc$9epKy(D(h`S`J z^iE-;0O?;Srv>|J%`x`#n<`$A(vV?J7U#ygbwMr3nx6Q^5UODG&;rl?N@c4@IuXN+ z5y9?*auCiD3%JAnJUCBl7j>{9C?LMTN8*yir{8Cx(6lTRLFUg>4i>w~xQyS-|5X<$ zY~rxg57N0;5bQxlWE!wax|ujN6vWJd9j+5-LN3^XM7hRaSAauF&gi(?-9XjzBW)^^ zPI=CWj9Y{);md`>P~rOqK;%LrH4;q{0>F*i=1Lr=6wQn87W6!XYi_v$ z5dZxL=b!I+X7rh zTiv6Ufue7vBL>@ql$X-R2|IxC*Iou6Sj-w;eMjR}Nz|5}P_x2|W9t0OhD&WUvP^1M zg=pFvX+Nsr&x>oWCi=cV$;nOavzhgp17@HtixP$6wj~ps9gi%?;WWQfg^+%R<5-lT zE|*&hg06-xg5f~flXyT_?0%_r1NmbK=^IuOP;q?aoGw{4*4OZbiv(w%MpH2-dnq`| z6unIK+MmnH znK*!VnbshBiZ|9xsc86isH^9z14SV<-JJeID|rOmvcNgA)Ns_N0trc{LyZKEE1M5ZZS?5HkZyz>a?YeDRi_{S@t_gRHdFzqfVA?+D2xA=N@QsY)zv1ubw zIs4+yH$flVL3vfUviWkZglbTd?5(v|%{h+3e^u2t>PO z8X=Bo9ID*CXmU^;gX*){f4IDV^o!$6cqqj}v1#Bxp$|jBg`5&KFn*(zsU%dL&S8S~ zZh91dxU?`)?q|;FPi9s9^J`qlL~RfNRF%m#*n1wm8`Oy$YE_xFIlLY5@PUX_(+Bn} zH^?gc1geNiSwra6)yD=P7GD9+mF)@}Mz5f^o;E=?K?~9(p85Zq(YrPwlO}h0CLaNV z=M^+gn#Exlvm+JB@hRq;0tJvG^anH^0YC$EZKsB+i1&kY@V6fi4hj|mdCz(Z2Dxw< zJ(R*}M*1BtZ{dz=5fZ6Y4wfJ_;}3n5hknA&&8*9dil&LJn~yVhBi|S@-#e>525iv> znA35FO17AdQ=tE@y*hJn1tSp#E7!5%gVDy_Y!!xU-f~zdg zjGR4D%Flg`2R)@{S85&vFhl>na8)oY*tqm~GRvZl#)>cHt~ypHjeDht65>v3CGy^G zC9RPDSTh^hG{l?h+3N8P7s+93*A7!@0(lt)_-1Wgq9K6Ydyz)cjnk!U8+JTZH-yW= zPKLd`?2;KgfNKRawoYjKDM<3J4qaI2O01gIxh)JwQf}<1zBDn;NkRYhAD1DI3EZVh zFX-0Z(3u1ErTW8QNo3ek-f$xu((nH1qmBey<~kP>z1P-^vw}}~^9J3O;IO|ZJk4&E zW?W%{@hBHpx)|Wy7+d_f~wb3a=e;r%c+&V5r(g{$|eSFYbR! zJ}RJB=AOh5P~G1eO$xcA3&YMLexcye^OJwTZNYr0bjFNq{|iYwCjd-xk6u)F78d^h zB=ulKg>`I6ieeNx?9&3meBuCfptE4ba55|{hRDL#9)C&}lSE`R#aZ?+a{}}I9V+~h zkF1%T*VNSY6-CdobGYk41^l-dCeB{ll&$NNSH|X+@**zSfyc-l75Fd%Vf>NTNEctuc-YORpp5fTp0YFYFr8FeGt;#M#%7dQWCcCQh4$7 z?K?H#^Xk5UuUj?7O~SJ6XnCW@5j&PsRlix!n=3ey5FUtGd@2QI41jSj0IlBtonV|O z)GD?893H4)wKy5D55x*A&Q}hVvPp%oO80}K)j)@T?q^2hMcQ^iT@&sL+zC-HN2y+m zUWTO4xO%TSKx4NAU$8-#VGFJgbJR?|TPtBc>?X+s1)Rz$u|V?|2bXF2EVlrw<1UWS z2}u^Xigi~UjnWyDU1(UNPHNawk-bo9h!-X_>z;W{bsx2_d_;0*RLEqn?io2ZE6X8xq8XcN9+!-6t^v#@rSdxUK;>05wu@!O?3a4Mqa5ei30ai)$G#=jzm)E zBmz!eD;aMcm|3J`Rw*Kr>iK+5f$MaN90bmzh*6~9UsBWX(yJJ5aLLhu7eItEh_Rk& zAm`xvai`6W>!7XdbZ3%nk_Zh&r05*^?%RT5xhuA~WSu6o*YV^$Wxy%^KD*BvRX@kx zHAVUSNCegBxJzCkj`nh|LjeB-@R-Y*lY~&*FKsad-RK1nGS$POW4=3)RbGhJ=uAf~ z_Bl45KTYcQJ5%6U9M=3jnCQsA<@0Q)5MikV<{a@?j8rbFPv>a&T>1Zp+?R^&oM9)= z&UYSqO|J`2>3*nn@K4PeZFF5G$i7l`iAy1Xq`BJzv@BfbQ68%S)2IV0(0L2dCOLnv z;hlKDy(}{{tJ5By9iJE#lBr#)odaxiV(vL9cad9av42&%(hfs;(T&Xn6ANTME?9Do zWT9d9JjjLSuVb_)cK@fjw6OlW%6k{CU;^~5XzUcdsrug>!oUyj+3JcX*$u0@9_&R>2@kT zhYhM;C_L@rOY~-clKRl|f~u~;3L4w5;|ZaSl$ITcwJUk4o6Czd=?VeD{@mL0UP@@z z3VKxOfZPJL4TRrMjZUu=3h3&sOn~XP!$%UusEF}1u3Pp%=g~##u_THv4XaBIM!U0r zg{=0^IN!x4vPJtCQx+3TyGn@^`1U76`VY71M1=ogWx#AWJOw0gR_tS#G3Km2wuM2O zu~X-3`cKEcNp6GkE}k4LGa8v@x+fqNLQlUTA!NNN?@%dlCUgBtY*Z&>e=p`D{cvX9 z+$<29DitO55!Ub0+vi@N2GoCT%^I6oN~udSC0Zig^Gn{T%dq*99iPFOB1H9TBVDlI zJ6Pb0K(m_?&9M!S75dV1*B43(@YXv?GM2SmHUY0?NkH)*e<94s(}o?0CyxknbOI+v zOB|nTCb;3`-nQA0@FkV{s#4yLJC@##6n7=XOLC@TnQ{xqyijvYMaMkYEs0Z5Tq;=f zNj~s+Z{(Jl2pwy(pC|6k$yFVQ$76%yYseLUpn3OPrsJ#t<-=fi4&5I+bp&Xx$1%u- zcErjZ!XYEhiszsI{~gCK_tWrw)O33_7AUL|V{u1*U*&7iiPwOlMIS>$euV~v-yz_} zTXL>a+bt{tKC6&SOQd9WBryEvxXvl!dwpo2UlFW3{gcKM2E{I1SbP8S=Yw1(XCubN z{TmU68z&VEar9|&@IB7966k!=db3}n_Pwv6w&^Nf(p%}u3r_c|HT)Zi+1k87tC7o< z$4$0Drjh(c8%{KyS z(yEe^kcI{2VM|0Q!;2eFzhzGQc|BM(PC05#ZJS5|W#h@XGhCf&=w?KYi6@8D)v}wA z48|Wj!_Un6W^e|jz1Y|2rCdM0;{QbE&6I>UOJ|pK?AZLH`AS>d2qnvYO4VurLSj0Y zGiNKD(QFoPD>{{!e&??TW4~R5r~{dy+)TGKZyr@8$J>dp%!*9bKJ?jbW-`G=np)NW z9;*`X#MILfIdmyJ{L;xFuet4BVYQw-Z-Ne8tbSIb5PGghje#cfu}?k;uWvX(I0jp56LFIhzX4=to=ZSYQm>#ir@F%$!1h#%`R>F~xSc$86%;~Jtpn&N zUXzh?V{5(30lGiVvT#He(|Cz|uz>nnHi(=l)Rb@EcM3q<2lM#J)tfo*f8j_=q88^# zLGDZ`uK$G5wi*hXUA+WUk;G&+f9FX`bS|M9-q(;eWO8vBn;;H_7$1@mHg z9kSq0P&%WQgb{nmnzwX0lVxQ#)P6}N`%hc;)8LC}8+tZ?jr*Jb|ImC^6FB6~hK#iw~LxkUl+i93AvguI}nQQ|&RFn`f zxJpDQ?rH+&wwsHAlL@msC4@owzjAS%gXRINTUc%f{Q*Sc*Q2cud^ zs$Xs*jSi^z+1z<*@GX7a?mSZCxQ{8c!?d{Fwlp5?=ZiB7j6K;0<5E&^H^>d|Rv#g%w~^g(VU5@q8kV2+q`IDuUlL+TwAbOlM?%K3>r; zeIN*MOBkeiSxA{+I%-_J7BU)8_6o6+ogGDfghse zG~CyN-i7DUMXN>8o5>D>R;>+3TcQy&ZNoSw8ljb*p^E)nHBk`xA|uoAd8ePVfDFXz zN$cU=V&k44sC)b6FOY4Y1fYDajmyQ2)EL{{F&GWo#o?XN8<5zn5oH>&xq`T3o)Jh9 zbaX8HXEaY$h@p!v2yd5EAQAvpT8cbZvKape(cXyGczCwE* z4TuRIrs7^D{d~ULWbXrM%n^=xGfi%lH5-K_^^$!iz?zay1cB2u08BZeKu5m<%BQAZFeNx6n-PlUhuOR|%#y@P!@N?^fQ!Be(0xc9x zU%xIo(cO8E6}k|kkf?*RVJG|82l%bz-2t6SjXk#q>Nz`D&Z-wpc}`TuUR6ZBQgvda zaP?WNP^9k_DraypqKgZG_|I3Z4*`1QF#PJUY7{$uJqT!78$-QpxSwu-k@sKl93Db*agR0)~izdBZ)nH-tY35AmXfN|E>_Oo_U39{C6MPt5d}-lV7M z@o@V;PFX0FJmIGvXi>a_ynjoBzh}w;+?7xJ9s#b;34IOF%X+_qzzgu4`^U$0l(Uv# zxN9Q=mLQg3myl?}fMe~0O-qM&6A@;HwYvIzCzC~|s?R5q2_#LoCcA)`2}UaSe>Th{ z&lT~NP4_BFPL!1&JTR@{8(&Ynm#8`fX2tpWz69%lfkdLIk_1O9{&gkCD&d`G&zv0s zKJYV08%J zpSKwoPKUVRAP<>*_s&@cmprX;5VS)S(Y+Zn@Mz1~RwCyGo z>S1G>^@Xl|WGi(zM;lHwi*lI)z7=y+k6zCiUn*p$gm*EW#V}K;N{O)D>TBvYdpBOV zf6OaVlz{US`QBH0N6m?$V5wGrWH4!$vP`?v%nK#>sE%xSaX+htu+GUd&9uA!40Nqz zgSMlab(UR;{q>+{DY-q3#}`1gU*Qg&*4WrIEQ+w;OB-UcG$W3M+xy1JgIlSf8`H7!BFwb;oUuXP~T1QUI1tBiMjz0wu1Q&ISa-h>ono6IICmT_Xx!%n< z{xw7N5G`AS4sH}&U0imYEs^*&P*r?VjKljM52H)cyLIho(jv-L1~KcCPlCgNp)s+* zIRMab!=`5bd3Xv&H4!f1SKqOXl zeUR@CwB=6D=&so>c zM+MV%b-*dGg(fwfu3EnwViy0np&?oH5+5;1%9@Ch*pp_7M(*Ev zd+0taf`?0S%NQE3!j<{?ZB%AP5=9k_jSwgGFfC8^BmkL>v3O?%eu*`zPPGQYIZF|gvlO0q z`sqs4kzM)L3{S~Np-6yh59cAn`Y$+`f{P`W(4IkbO-#nJhq1K>{1TvRE!{^0K~46W zYmq~RgV*^!Ve!?i*?mL9QW|GQJvh+zHQ+{)aOVJVhW$Rz_1r8sxFE9UrvRJ9m94oF zPyLY=QYX4raneF;0v!~7s<{a7&iNbsT4CXjYNd9)?>fFdtVE>U{KS8iA0p0G3 zdP9h?m{@Q?uP^{b!}Kga#ulSlJsrpM3AgF}XT@DrKml4-M5I=PE2Jv2Cl{)c+CTgz z?LZ-{$LWSDa1Tug8r5y)U0%K9`tu^M;f;$n{wdi^+s0}C{{Z}*{RSHvP`R(0Q+FwC zDF)md!vYLXoqP5A%j9GyB{lIgh7}2oi`_`H2!_7}jeky?L4%bZx9XVM65}(k#RI;I zHpPObajNb~`QPj{%_u2?40E}?Yx?Q_+!S8m-HXQHa!7w94hz_>Un;XcXJwf=auU&= zk-?peq3s5bO3KzBcqnZX%gnyySudjtJrb0n;kxs<)EvoyxPxp_jcZ#;C;8J|w``@G zH9(D8Q%iHj5`?7WgLzx8nr*ZoGb?+^aX}l>I`cZXsGox!CQQ{K9WGFoZ4-5!1){|Y z53$DT@+k9L$vW2e?9_-~i&<`Kj!$>Gz6RnjWbgbZdpXXvAN@z3c^U6HrYa4Iw&s=p zc@z?Q0(42s3(p++YtS?~=UNIV+Ptyfs5}6KoN(kU( zS@GV`DtxgNp=6)eSL*^XHg2NqRM*ws*NOlBTe0o1N<31PiSaj0W3x3Ez)3&gF1R4@ zQLBAxVj7OXK4URy_D$&Y_JZuQS=qe#zo-0;eU<#q5p_G+DNE?S^V4=JM1LMGV(0A9 z=Z?(}>1I?&Y9PG^iwfLL1}xoc`&Z*s#8&z(kEIgtW0gi{ypN46J>WX;+bm4kJ~x)H zpCGl@f*k8Y=aDm{!gr7TUw!l)*cN|&$q|M)MpL01san@gX3H%hWEtQb{+QXhq7W)S z%&2Vr9ts2td`dpeMN!%QgkLjf`gy<3eHzdw6Fa^5pYMI+5fGbq|80d6i$^^B2V!VY z!8n&@nSin(_U7_Qt)~IS^I&Y(3zm~Z6Xcq5W3A}!L$0?e(Xy!{j0>mHb#X9;x6Z}( zgK{u<&hbnl)H2!l<&V09$S_{sG~&k^00IT=S$QFb0-mOqQ`g`4V`fM}t^!S%KFJU}XPyU9jfR*N~i2B%CN}JkPOoa3H)ZxflhK(N} zNAU+3y9<%PjAqXBB7$rHoJ*9CNR*obkrRuj|(XL7!$k!y%pL*TaX2+DkL#0>xtF8|6&nH)xv}QrZ|U zQ@YE6v%~PAx>Z7&NE$twdR0DQ`AgMnK|(CXv-Tz?S0s;UuYHe^IhbT~Hh@L4(A$f4 zz>2U-b6qiOL3@3-H%=IPwIe(nE?RmY{fk*m=NmME)`^`nt>$dwS2ufJ5q9Cebe}$^ zY+V9_M^+k=x^n75Hj5IpeF0dv9}Hy9;YuDGYOwv&$WE3xtMu9%RuPA;dp2`Lt-NES z?YQHe&d#xigVt|1$ws#SPw=8P)%{R?tsgy0owuds>=zP zh!c1QHTr3B#~EggU^zGC^|ZtP!rB(OKwWV`9;W# z*2WSbTcRVk7xv)syF!Ktev0;bSuUAvVRpYB?%8 z9GMv|;4H<21tIq=#H-WLwi172((9TD8E)hXH>iTSM95902k*xLg7^F{sogEVq+AXVsNnSs=HNTqb&buM<>^_?FzDZOA|u5{V##h z;pB|Z4*Cfxv=~QDq`EU$gdeX(#)3IoU@KW#$N}Q?rH&0wbU{Ll2D>C*x-?q4kM*dv z2qQ<7SCLXyxr=xtgY4oz&iCGRxNt=(*Rc-#FpmB-3mKWAljnumvo^J>3`d8e_(WjU zN{aB)GtL%JGkX~7BG+*d?TluTv^*G?Co+(`2J0K7HYP~BCVGSLV{XfvKfLJm5Kl=2 z+Q%cV$Es5=lJ@PzlxlkrULvi9@H7druSRiKBt!!+PL z8FjR^VEj2l@K(V}foL=r+Av7fP>(wn(qu)FfA}OBWLvNU@=)v_ADGsp;7$9hf<{MS zOcJ`Ea;~?oZ80nJz$w9~J_Y0hU_Kc0ZP*dNMJh<$z5V&WdMzpkQ(5P{Co-6OvtRw$GFg^K~)do)|pCb_M+O)3ME z3>sn3`EH!iXx_b8A47=L@%~epT(C`D^3RIeHShx2vHJ7s_sN7if=k7o%YBKL}!wvAbvg0*&&MlIej67jU$0_lNM>V^(dm$wJBV+ptmLNEREKi8Jn zot{oc7y)>RoUzlFJ5TGtMx~nbPZ7&h=(I+O0!P=pedsXlm_E1NDs#dvMF_x0VmfWS z1wDeNDv?NmC>1Da(>f$4fspnTtAjv>^rI*+$5E!UB)ZS*ISatCBAV1P-QD^WW27&+ z5NGYxng`)eU+V@1$t$4!#LIp59gv-||Id^UE3ILLiD^HL-InF;bfc0Jk`4yhO}F!Q4b)!RukgEbYt*-%5}fd5?-Zo>I<#PTE5xl(*ZK+t%4i+@0E;t;K9*l{&*l=cvR(DwWThdd2>~p zEX{G}L8Cm&TVYK>hatR3I=Dlmn3-2n7k}f65;-zCKmK4{w{nW4;{!1rD4)U;>0*BN zOl7SqAZc||65+RT9)P}i14PYEn^cFv*#Yq|D<{tPM6^sFzC`p7mOt%A9_uH%R__J- zTs0|4W378@=Z>1^m~p|So0<(f@q_Xa?o+RtDQBMKV-eA<{#2Vc>%B;}?muLDGtejk zq*12Mm*Zp1FAio4+}=Cd9U=_+F(VR#AZ4m3;R@%;$PmX~-(seB)ED_Z2av4a`Km4y zv--VZCF9yalDz1D-zU))*Z91`$!W_r6|aw+8E5$Ujpb8vb(NS{SVTpf$Ov`q)fh+I zGMtMtx@NV`V}TLB{r{94O+uB4?bF{LBBt3;oIm&w1MXCq}Gz9C~#No}^^q z28y8_w+=09jUx1`Vm}9AdhX$5P`9LWVi)n)NjTnOWZCb*(r6BAm1j9R5=e^{ee)07 zPbb4Wh~i56COP)3mKjoS;_vs^!hg8vf7JCa=Kaen@T)EP)#iWmlKiWk`{YgktXAq* zs@~>G`s6l$)Wa{UIP9|p{c=@*^TPL7uU_=<%e(Qb_5P@K|ERV6)n@&xCHv$h`Q;LS zxc|JoWIwCuurHl|Qoz4xr7x|2{)ykLcU>-PU$*|)uKd}o?S9tBZxpI8-+bBBZ&~fh z1;vf@N(1i4iH%!||5}@#_wP0!2rhv#%9odIl!|UZA0_M7I%Ws4`L--mKLn)4#&p^Vvh_)aA~i z27bA-DLQRiTT$1|_-vGvy)fKC!LJV#sbL1|sVyg%{lGC7epDa(-$-tvy1}`cPF7Ew zrWOpFEBab{wLzKl(MQl+<4*~rs2>WZzVjl@IJ=T998ONZH)(#hSNe&HsCAekkR2{ytc7_r!IW?^dP@thm(vP$_HgoVn0US8UCpH z6PA2cEZFHR(*aZV9JQqh1{qt`FuD#1*5^`Jt1R~|Qb2BWClUJN;7f|Wx%&wbjt}x? zXXhGcg>NjJ7SIIHGi$e?L^7{5=2dQeIwi~9dA%08H(urwk$r>Kq;|+O1yC1;r}hG2 z;WW$}YvZfW`E`@_)WeFtU`UqSsvmH8wSDn?i z&drG$Bg6yXrg++oQ}4IaHc+at+VgZs{FgQBPtRMUS>m~0C{BrDBPSC?#!Q+LaZ{D| zwmy$pK%h`LFlwH61a9lJd~@CBJ6SNNB1j`7$bC7Kj}TczkSGL}dn_>|Fc;lR68y+R zHl}29A@P7GpBy$0#5z`I8MrKFBV1=04GY^om&VUV7Hmf5(p|im{Iv;NUYurMAO0l0 z5uWJ-8srmhssC+Gq&QRm`80fgFxp-C7r!YHC-rlra5(n1fpr?+mi@lRR$0BrMEOF& z|L1=J+;cWtWfLMS-_&m8jMbrKnfaoPzOEv37Uon;Vg)x?F|UdVxC6HMw45V$D-NGg zKV)9>9qLoR-Cj_TBuNfoxX9vtZI9GfG4ka558iIV1zsLO=B2BXMQ8$6Z+5Ga(8LcH zHL#k@+t}S+2SUrpeCzr>cT%e`*m7w02WcD{1eWM!{aU+sk&qK!Q69S${dw$eht^aDXko49IHpXXgr0R#l<$I0@ol*Z;gmF>v zOqw;q*DX(NiDo5B&Nt<1@vQ+oQW~_#Z`q4&E9^Ol_uTit)Qh)y^+JPD`@ws~Mok!+ zJ!G!ijwPLRYSr16i|s@8lB1%G=PD1nu>SCH#%LSG-cA?_)czD^3a7f(~`E-`#wR((JyS%Y{&2OPf}S@UnuW= zHa_g6`sLV73=mwveaz1Smq>)Ly2$YsX~8bmO2M4~tu~LA`;jI*CVipoQ<4$J6g#Wj z=!Mer2I7+%*VWk?^_2Xf+i=N6{~Pp z?|g}lKGx$8s^6>j4K;8Y903|gRHlEbmK`t5>6I9GFHt5s1-1w+BZ;g z`B)p@;a{-QK0}4QOSMs);2W?Ca0_JdWOSpwEi`0>q9Uysr+H3wue&R0`Vk;v+_xBj zdKaYt%J!IyXtd>FCo%4%qRBt(V7uZtc=&zlM8rscoY`@y%f_+$aziu5ENS7w!=RW& z8kBJ0)WZd52x3`7g3VZ{D3a)DO&uIIgn|$T`m`k5vSk~g?a82~ zE24p)*{>5UA0FpP%&cn-X`B9ExtM>TEh`ZydvvQsM{UWkaz4}+t8k&yofZM-Jkl#C z3wpLY%|w(Yq>v_6<6&NGI^jZQe6{FVj_KWVnkZxZoZBewn)IKKN<9>#EmN*}L9d~b zTjM##6wt%jn$+}!8T-oJw|#!CJpFKb9(hIWyfJM0Hx@R-c`qtzFb@Mj2yKq8c^n-U z@Rtg<>2(1EbkLI}CSFl+C?oBX%0o=NQP>#JeDTnh-BYjd58Jtin35NzKa?qg@g7O1 zFMC>PL%EL{vk;Jfnb*)lMed$-b!zV~tAi<*`|#&523N#`!a}y=~=pMalJU>_(j3eYS_&=6}0*{vn(7X3Ajdg(P5wY(pFX zq@eX@L3S}aZ-K8Lk|BU6wRe}95?{8LKAt*|dOQ`fLhlmnAFQ1J@IbH;LWH!Y1|0%( zhb5F{;FTMR^7-0$$(c4~(*J2)b@$Z7E~1ve((S9#@blV8h#(zv0{mRl>US_>|P zNW@mLN%M2HKyES+H5m$pf!2AA9Z@nCB@b=@dnI(Fs-fC12aLUYkCo?wi8;EnI6q+) z^V(N^r#C?Og-$ROp<&qiK2>O#-Lt!?cX-P2k@xiVw0gZAo}u2~OUDXtU@}xv@N??# zJ2oUNNF>EcP?ng+z$SE3u#@iM4+WjaPEi(*u0=BiCQDyBZIp=AYj%hVM-UcJ#NsaT zsgyS^fBZ`*&KUYt<0eB+3Fq=Pd{!M7==upn z+F)La=?n4nL=^n&!;#%`+1=^Ox;Y67)futQ!E={<#1uu`D&GH0myFR)ZT=Rm^aDoODDbldy?D^ zoVq)`20LoAT2(N0I|Jm9E4VVB4M%tuJg=xIfY(#*Juscs;mt><3f~0v%=gH<%+l2O z_wa*KASKf5o>r;6X(YWfVmnLLw1HiILd&=TYn(8927woi?h9=gZMDpaS_61~(waA@si?N+_I;x`*=LECL z7f@J&GFNhw6h8_9HJeJQu4>6|=XrB>+6qHUSoR@#R9A*xcP0HqBJ$JCr?vL40D zl&+&eIQ!g($+Tj|LK9De*c%OC4aw^Gmn;hdBhECNTlC~t#%;hY(d^>Zuf+yac~Q+Z!`Yoe^7k!WETRx}Yhcq;m_+AM>gh;X(oa^kCzh#`!#M zQT{c_@cbWp3Ta;|XfTr;rlOTH-K`#2zeO&y213BlGL&JbJ<(f{`i<_dT619<62@D= zz!DB!e+j{h6&$zD%sL}$v{!6IZ}x&4b825BgJJP@9uP^IP}F=yKvs-D+suwmOjwE4 zg(&+tu|W-S@6rQ0P4hn>{RgP#RuBLwgh6l*9l^#6`S%rp2ORHY{dEW!>mtRWdpZ+e zMa_Ae=IVU5X@4r7i{Ij^O`V}u-W za3k2On2Tvf@+B?aE@EX`8dT;=10g8?-nY%MZ~$!Ig*9ynsU-x7L9fi7wXpL58@D#s zvLL9jgOYnQ9P<*YKZa9%l-n^B?{mv2Yo%nCvHT+iAJuW2RT1*VwmoI&oL805MYNG+ z_wcLMc;4=i2i!IZ$XG{VLh(0bQVK|2CUwFYNE-ESuuXeJZRmJ;fY+g4Gznv+UV#?v z)$fYJhw>`#p4gt2YBohq&vOJk6OnytoXeNLxzSAy?r;}=jv#K^8@$iU+SJ*TV_#PSp&qw+{IwxI;(22iH$V`%5%mW$XtbcWZvcUEfYHKxc7)+ux5-nu-?vaXuiE@I-^gyA(zgfCl zYQkdU$8c<;{(9t$daT+=G~s6x`QDju?ayVl zwHcR2`w~(i4pIJj5D134GS_K>?%TN4^E$Kpl1ok-6F8@j`5&U+Bh*DVkB>FOR^x}F zm0J^_JU$qvC-o9VIAHxiwbxz&2kR34raX=YAi9Jg1Qtw}?8ZzTVh+N^$QmVeFbp;g zZ1jT=jEj}H<*$Ma(Si0)cj)8X;j;Yk>csWiWZfj)og%L$rG{IX)=tMG$^VuOuT+a_%&$I(n*Ad)z|Ik+>CA&ysmy<+-?6|jDb8eEqjhs93*prOsrFWNx zj1fF5}|7+*!1M;GRo{}c)6up--C4Q7JI!<`fVWk?ee)0HEJtKmH_Al(yX=LQq zHifoo2D+p}&1+x}2{!Jm&>b%+Ga9@BBRj^ka)<8}-V3vjE~@n&t*F-771yJA;Ls%U zGl~yS<}dig#cX}p1?y6B8g~);8+6*PEAKNjB#IGLNaCo{KI0ipy@;X#-0^0 z`G84Cd=y2isl~j1utC`=lqysoK;C!Ga@csOllPwWRDp1IK_FT$mA%^$9~FZs-I&}%EI!V8RN*CQ|{Yof+*I8 zVm`S#JIj#bCY~veAh4T~#hT!_ZD$jobNqNA03>tZ3E)fYUsg=@4@^`VQs>@m&$Li= z&@Wx+IRt>1+93KMFHeTzSnAo33BcxRIf8nE=)a&ZC?HN>kjcSunMNU7ru5GQs)6sA zdtdMT?F$9TGz89`|4Q7)YnaqQ^WsCj3Key*n!1Em)03^J_~&31@p7(`Ng!yJReJ7x z7>;Ywe{dp$`1lx`HFWOg8Jb;INQ z{Ojwb-#{!DYnDsk5Ha5$Y|Ah3GAtzR(8KyG5vwg*BI)w|dJv#w3Qjw?X&Dpjrv$@R z^J3#v){-(RC^@GCDlX_*ZvtMNcTo+2g_n&Q52<#{ z9;0Zk{ab6ST;xcig+$#P$OP5rg7s7_{3y2I%c?sp915DTuRQa9+w~ZC)09}_Jj>Zl z_9oe_G`kj5bjem6QkY(ei*^|R1d-(0Ahrn(ZdwQ?8hb+zrBvNQ_K^G2exyd%k^z6B zM?`?ExbqZH*7P_knuiz~H>}P{r@)&Oxb;-!r|?YMz%u3@Nu%`9{z3o4I-@AuCLEVK zq)}H?QV3KP5;G=-MVjo2Az0Nfvt$pchH2n7CUD%&BY9A$p-0^Gue7IY145Freo(qI zA$HHs=YIg1bDz;T?X_CjTLxYm!G1#rgBS?qBg; zC&81}X)fGgDxQQcy?Vr=Bn`!%vjR|hWM^7g1BWv>{oXdQ79Uss8hP`@4($AJ%Gyd>F^=A z85?q9(AQ`GZ0md#kpo`n&?sdx-TekhTZ8CP&dp`&KcRM&y#l$^8ggp{=R2sUmmXCD zgIY1AFgR7@xl~Z>$2K~JQwIiIcsvgr?|NVkpWEU!%OIHKh*M;aY(XJ_3)p9IUhjiZ z5m`eN1pf-Q{7;90&m@Nn8f}W))WwefOsHzqLoa@B9^z_wcg7^-EU)a@o^F3cN$p=> z2XFt}=`D^7_+TrYYzjLgzBTX^Af7{M#}ii$?h)J&_wxkq{{?42n7_^JI3rXdHNYdD zzg$|8NGA&aa=-B3v0IV) zA>1eO%Sgyc2D`)`G%;nxeQ|aj)xxYI{z%Al>8)Y znAteQvvG&&5=jO=5(4nLsths+eJY1{ifsQM&7H095-Y=O&7_i>kX6*%V=bZB{Sp_d)HO!5H=An`$SeaF$PP~&#fk8_<$i|qrJpmD-6uy}&Dd+)j$ zm;-NPn!Y+CYXoOUZjQ!L*;eNPUwF$SDe%4tn#J>iH9Wn?`I7~hv#c>H0*#g`qlXO} zfD=_L{}pTd&M*z8Gx($wFW&tM`2{-%2|9L=t_)=O+=mZ7v%Oht>^WmE`w}*FOe$^%@%dTeHsz3FSObh!m`2q zYeI7^F3-BLvdp71?_VSEN{-&WIN3RkSV^6 zvspklUWbPNHxtEd3FY*q=7rpP zg$joQPC7S(9q{IB+ikN8*1q-FTn;*2Ek_Xd7#u82UkgR}S z6AUwtS9m@-T5Ibi|$&uoD zZw0yMXN!j=dqWjUP9;iTX0!`k0z?W=Gno`=rBnZXr@C;IrN#e5VO{1owyO!{^yLH< zT;4X;_v=QAJJls48T06%3W|O!4I}NyxOz0qqd5LML<701TMi+sU|ilAc)alg4*u~x zspfS#-S-cu(*VsPlGiJP?LmD+Jyqa@$~mIO znyabUn{L7xtuuZDI(GgLO;k2oHaZl`iYQKC%1Lfy&MY$o9R37!d3h;Rx*RN3)(@}e z@DLLn?(K;nui*I^f(7>P8q2>(atexC_e4t(BeW7UV=J=pwz|&4PV;OiTf}ifV@po#A)Pb zR(I)903sGUQDHnGg`teC#tbDPV;Q$JT9)YVGf`&CRd$&9;^IcHzNUJ$%FCw6HAkidp8dnX*)R}R>Z%0mQURNrCKbexmd)$dFj5XB8O%L$ zuu-qank6w4`~N4mYIu#mKWAR*Xlzn0rwVOYN_7Q-nN`L0@&yy(9@aDc_EV2)is@1T zk@Ql3{G(lupW#GwtlGBFCkA!&6w ze7{aXSh-ATyeI%u^BLEm#cZP{+&y2fF7&lOwNNx44v1=q+vs0Er_$ z&-7K)RL1CyF7#T&;oa%UZWK%}K7VuLmiYGFw_n3ZSK4v`#>hA34Q_P@c7p*%Hwme?4P&A%_0 zt(Z#aQ|VMbVE9CXj1n8IR8D62fS2tQ3$=Icw9!Iu|9@qZrIo-zZ_0!`?(`g2yiNzC z;t`zKHmk!ugfFjh@RUbDMz5U`!rcc)1w^GLW0fudU*R zG}XuN7KcoERhY)gmdtt3_yksu3(9#iF)J&O`4apHq=g2i^kwdGGgyJNdcCB%`6B7#R$wM)02@w_x8yjLQfFyJ2xlRnN1RM-s0(&W;@Vr0q7a(8Q zK^f*-aP^u|>F;V1fuq(qpXu--I`@$C$3E1EC!{qcXUuRpnyrd6qM#5nkA}&f$OYC2 zQThY*3gGKh}YzTnLD|0#N7hyPAvz1xal|8KuJ+`|fXcX7B|1W4oh6VzAW z2tFnGs1%oa-9NW%^7|RRqos=$4#V^7iF)a=!G`iLz7h;k92~wMcVJ6n6J;i2(>wF7 zckg_P5P&}5(v%PQrH);O_UH*lX?VQpM@#UZsjH_vaV1%GlB^ZSzz6?-`wQxQWE1)4 zA8cOzU8?c(ysF8{O-0JwV^3I;-3hjB-!CPzOH8FaQUmhRc5$WhDenzBT9mk}jOCtw za8@s-@MoU%Guz!nmF$5bhnYefQ;su{I5rK^Em;0l+C7&h6U+8EXjyD$Auj~p4&sqN z8^w%LLx_d9ZcQEp$uiX$hL_vDN6gYQLxkl#PMahmm*2s<6z!l4%iIra{C8rWMtLcV zGqD;YW5sy&L73e1vsB7wPH6%G4>Fo3eq8k@hniGq^EY~bvDrO(mL^(=!6DCR>_hVh zpC_|BSrH|5i)`II3NuHAMxjU|saiTwXQ32tkYUj=q-vtcl63zRI1`f(r7A$$^GrAC zFZk=V#-`2ErY{x^I64=)r5C&_FQH6C8Sey$@fzk^C3lH!NI z;LyyU)kuiKHXWj*dB9KC-ViidY|bv;1ewU1DBe0&K(c3%YyHzXiLFiZXw7uc+s0_L z2L*nQ$ntiQxJKflXIaY~O0JpIGy)%D~(C;z>z{{B%U71|C9Ry&!6iy3R$_-#@pi7mDLmSjY9Z7Ln{QT8=-qNLG)Eh!$0wL zrGo2TGzJKk0PGIFiE_PA1cBv|7!VPpG1}$RpG-yIq_C!WHh3l1!_W)$fJisxCZMdv z7d;hzd(|$+fecW|iuZCaC+{UP-nmY;11m>Ra_yZ5PEgxK z$olilyt4C7w!AY+%W5y3b_c@H+zR-I&=Dn)eZ!H+VHMu177b`9Q(yJpkH#VmuVi7c zIj56tD+v{tL3F5@g>QfXRq$wQ+lCh+ik*K#cySBz`DOGSW2DIgt%V)Ur%JdR%?8~# z%N6Xu!9KysM>1(_Lgnx00)_~ zI14NuC)ei==hGTbxaZlTWV0vLEFc*7!ntMa!jdq-tB9akz3%7w-t`Gz!$yjS7^^02 zJ{a0YRQwl450Xq*yG~%n8d8@SZ2<^*=~^*$ugq1syTp%u=G^#qrL)a3j{h<=d+r`a zi-Jnw9kZva&VT;bSg_UI|aYE z0>Yj!38%P~!m?@s3h>Kc{3O!zG2=^U%#$DZAlA_Aia?7$q-`qT|7+Hyw1R|xikU^E z_5HkMV3Yu16*0sq_2|EF4AJm(A;MLGGl{Q5Wcsz0=XI%^Ncbus{bSp;S%m{u>1tf) z8lAJL9Ow((%!?K7^yNRARBMb$g_T61--ry) zOEheruyizkzF~KW#{jvB`@Tf(pVS`tF|kwEP1^6LwzM$l!MbgI+rE2Tdcyh=R)>Ze zc`|_O%iUk~EMu$wV=TF&^P+X=7; z?48ZW_aI;T&H5h5Y7d@*8Y(L(J|!YXyIFz)FV_fbyG`L0+3Wx(=@_wZe9Xb48!q${ z^CyJ-a0|#HCP#MuU*oq2s@FrWL#4Q34EwAd6;`^B7+i2gDCXr=Z}cwqTL5eweVVJR zV_Uq~T(yqpfOGa-<+77)Hs~fnNsUop+?7z~$7*kkP}4ZXRr1)UZr*}v`WVuiG-UWD zq@N0!W8?aC&oE;g&inQwoYZA^O-37{1d;P`qkm5#^k!aji+ENCSGC3E;aT#-_B0;h z07vhG+o3o;q>QMqW{#{qH83GUbo#d#(D#+o;cn1&{8W*NKVI0Ny!A; zQyO&7rOaaOp8;&H&Pdy%k#0u%%x_om0tL!RBJJo*dz>u|qyEsW$p0jw@OyQOEDZTCy1hEV=n zRrF_APJs)y9U;4Vg@xnG<%Z#onKo^KFJ(D_M&8)}dp8;OuJ?*$qIpC~DFaD2&hLiG z@fxL66hMBnVT4WAP{I~8I492`{+stLgoy!M^#Iu2HRMa78^iZ}|3U?89Y_cRu8~4O znIy7E7BkO_42CVu!QaV)#D;cHNX;qNGWsh*Ko{Ww>zZ$LDN^p~u0C>bwm<5{WCiK` z;G9l8D)Cw*MlLfGSs{2PGj^ z#v_0@<*u@E-Ex{_Q-Qd-0R|9EvyYP}_R!j=Jr^u_@Q9p^y135uF z1v1&u!f!ev+`$91%;$%$cO@Uv!lTC}LBNkTlFPOYT6a?PtE0>9YKzm1_gsKl4*g?D zA<<`qeAb%|dO@0&ljm@JoJH3Avc}u&2F~kRp++vTgUeJ#Essv#PlcHp2b3sKklc*T z4zbbsK~0ychYYWNUO@yG@*FYQs~EK)qM>8|BK$oT7|g`&T`c@3Fq^4Ue4$$v?gIk} zpcr^0YKkx-D!E;0=Enu)VW5T^8BU&KGu#leVVe&D8}pOURfH=C0X6|ty3yg_YwWAn z3W2YJ&jHE~O`iWa-qZ^a_-X2&we|a_Eq9@$cxhf(EWCXyCx47NFNWqnaq}1Tmn%d= z_J#04HQ0RS$%kN15(E1rlEZ=Y&BS7c+U`cx;dYws!x{qe2`O@oNksQPw7dP}$=lBC zEqu9cp`EmiJAx1E<(P^Zc^@I38m)KinWGE{c>M#?ypQOBnp zO#(8uBIL33m^k=p=WZ>EZja#=EHryo=-Cgup8S@7{)_cdE@~cVJfz5dzy|+6@ob-k zS6&XZ-;#(bVJV1%Uq@$lYLgZekaw)xM%j38*iK0~36%~UYd!>6BQHERYqjVBr`E{$ zyY7gTxT3(M>A6tDZQ%v4UX0JDJdg$634SQ9ZmLNuM0y`ErhQq7m+1JmV&Pw>|1;~a zNj7n-QFIMjgs0x8mR1YynF3(jEdZ>hZcOu#3;qG0k%zyf6Vsy&F-X~M$jUe?-}M9p zADshs#K@8x3#!Y+=2aB{+~i@WS<^%l$RgG@u*)Ad!sI>hg) zwPhi!a(V({J`XHD`B|a*gWFUx3c?)a65~^nN9~Ae5Bic3Ei|L}&BioLdzCim)sxJs zp7R$7UE50``!WuYDi39h;JJ82@`eI@FYK1p*On?x}5;)Gj zi^j`939@pK67YW4Xqmz8`~9FYE_Xgb0NJU3r-#D4c<^-qA-X9X-Gveynp$R!9?&$h z)c=|LDghA0v@`oA(-4HE z>%Y*Yj8v$77O-j=bBUbK(wpc-ui;abNf9r<^R8Rp*MSG03SA`Bmo zsn^T1w84t8eZCq3>T~~muTIG~QPW4&>pFrP#MdP&5F)JylG)YCpI05o`%Gn7B|b8e zrC&}NW?@^mw0Ak~Z49n>K~hH{6vC`5kU#Ohoe}#g5BBIS^xyw8UH>y(EnLtf3r^Sr$GMQ5dEDG{@tzpxA*&YllJbn z`*kb!YA5WYKW2>n%|HFM2O0F-FS3l^vgE#|yX?>p;k7@vT7PZTziz(%&7I%3M89T@ z-&4ozw|{NheN+hWBK^z6>MQ}n7AIM5i{Yr5A-w$08LjKVi<~h3Y(;8kR`?bFcBJ4K zRAZ}NoIewLvau-&mJaar0!LzrhlKl&tmP{RdZAzR&OvfFoIn%%@=RrVue=V=px^XR ztPZx)2#m`mf}^n0B*<12YdW8GlB$cCp+)+JF+@LDCkj9 zsp{QhCPr=lifHOjXEW0%+9>bJR%ZD8RoK;e+S7Srn1hTu+dwTmGxO+ge{T5cw z!!vVd1PynzY4wMj2`!fc>fD?MyPDchfTbeD11QVJO#(>G+?FT=kFxJj3&mQDyJ@cC z)Sd@!iRyv1F*FG?uxw9ode>sEfX)n;a8F23f8rBYRO)M269^tRq$qa(I+pkHZ`Rgg zdw z?4PlFu=Pl!2msAN2+9F!W~L-2UuFeP2t8$X1k)hX(^BrfE2VY81a256vlftd%(3tU zb6k9aLN?;Zryy^kT!O_RD9$p@DZi_wdqTDZ)@g6@E zrhe7-{HXjM%snbTDVthdaf@0RA7yA-M}DX%*KOAjg8ITbOmdv{1)j0_5_L)Ez(mPC z8+Da0s|u9MljxzJQmNuFv+AQv+2-|kB)9pzG{DIa#u2*%n(Gv658AW@Z>fSQLs^Ce z|7ty(4n+v=c1ENR#~{a)fggwN#N>RQqD%ZT-QdXh03Fl@7;5bgJ=N)1iKObw74II(PSo|!Jx(kdLD5HBpM+D07EQ1#>4gK8xd!iJSa9l z$aD+Ie)0azXI4j$-^V!_tm@&LwtKB_?Xki0A>Je1p2q{*t6GfZe7Rj z4@JYPs`rx0!VLCmS(#IJDiW5JXR}923OXzLQBf!{*R^xNZ4rLIQEfm%%|b5 zCm+R4*u}v;@+c->Ao!Uc4zDIaIa0b%Y2`4tl^KQvm_k=m1W{-2$l@rWE$OoUd8o$B zfuc=%D-uF_TX#B7JqQ_%1&RrL!M*##3$IJ{{+-<)*q6#V;|6db#eeX+!Z6=V>-wPz zfWfZYCh;U}8vqrnL2HNdoI5epXYjN8K?*|Z>}a9pC2UFz!X?5QU+9Dj+<)>|ej81O zlo*G!N4*YB?RbXxS>%8pK&5>87yI73$(JJO^;;syqpyRs$`JoyqPhl3b%~|kp4-0` z2mM2F7*mTM(3D+sIXwy|3s?~?amHsFyGIs$0962OzE;`*9E^d)%T*c=L|&!%eq3imV7 zvHwcETX;3Km8C3@wzxL`hB{aXr-X?T)Xs$hcn2nM6zjrtKf!#7sjF(9Pg$wa}*;pEN6re+S}yp(1! zVJfB&1!#u!xcK5KH1Un$1q}3aZEea!wVxRdXm^9Ec2S(~>lvTII8!qiep{FzrV~?w z9F6PTsG(r#^{AGGsd>?JzT#~DPPJ3LTYlWY`6y2v$+xaQk;9DJSuMZdhBNT|Ntdat zjv0}ayfjM=4Yx^?@WlTgW_qj%Y^jmD6o05M+P5S|2hpW*p_L-OjTyUQ{F=~{rU+K+ z7zT4rxqi#Hfdf?qOZhtcA62GQu3^sFz#MIsr%2H7p$3a04B$n;a`a7@w-X-qV)LU` zNf$U5!EH7Hh4~a-buJ$2D`veelXL~~?Htf`yZk4AEQZ65SnyVz1hTm=3j+ecM79C; z7Q_^DzX{&86?vZ@qk`t$g*jhz<_fnKlj6BfjqvW0Qt zrQL0RNeBkNz5{P`9rK6!C`o=AAFs$G2m>2tD`>M+BpacShMA8m1)d;Bnf9U1ndQ`4-*i7K6 zn^H~Pl9i`iAXuT#3|v5*?njbx7Kerb^AXjrn07f4co1s%K7!>Il>Y}bvxLG0Q5&kv z0ZE-DHvJL-h=+>obq#Av!-ymktLuW>E?=zz`01S}2~;I>O7cJnm4X}a-_CdDk6tReO(ro#O{ z=drOtn+oes0;+ezwiJoQh8zW&NG#7B0|$*oS^MPqt3P`U)b%7ye^V>wmNn+I)y+TJ ze`B?V>`-p^aNUtM!77WU(Q;dA>tsSg@e*XcEvg?U=xLJ_nT#7G`g#kM5k6^^d~txx z==Lu@gOy-=6ReuRKr~L0XJNzVmqXlHi$*=IhE6|O$++N0vtuYACFcmikw0>&x9{$) z`5!thG*qRAy&Z~Ij4o@w7rMlM37c*5zGBkUlO7?hD8w%52kaOWI5B^Dd>3(=a7l=U zH82H{9nU5T}aee4J`t=0LHr!O5he%dRHrEeR>Wb%&}Odx*R>$ z=G5eQXCAWxA;{B5h8AnFkxkv~&0C6hoacJ!1vh$gc|rTdxUN;bh%ONBcGN`doCtQU z&2t|z%cH2fR4B${dS4_$GQysBN#Qq(B1cXj+~cm_52rsD#icP=yH&n!iWKUg$R4My z3~1p+Mc-9t?Ety`#d3uPb|}a6;x1hC#G`4!Fi-Ko(zD9n6*@aGnOj^yKhum`{`t5_ zsbpGgu2NGFGK@Thel^Gvj`ura8&V=SEX~-OD-1W3#PdadaXONg0y{FJRUU7iT|#x7 z;P_`6pGv0g6Ze%P0UBC)J93P$yi`)NA%*gkiI_@d3lzsTt;RGh@sVCw2=%cq*rVqP z5fID}8cvO>0oZmCfy~GA(7SY`IG8LM4ZV(qa2NMKWmUCsX7f!B4dV&QHLl5uRKHjD zn4~W>%uzr~xm7$@iEf^sN(^!VZrZCBL&w{@iZR1ZnP<4k5PED{qAdDNRtr`sW0TF-(SPRx$S57-q~%NTd-G9>5(z%#P?zM(6uQUC}{sr0q^Gq;QP``!?Dud?6+r-V;eY0I^baAO}k5*K%v6`5e z9YlVOZNrhLLTBMVgeQ!)jJ$Ei^x-r4>Bh_Eu7=F*)dx)j8=!B1eWRPZ8fhOQCqu8? zYr0>)I0|?~yij!1w7~!yUECCo(RRPc5B>U-bEgrc*}cE3yI(8DHyk(Sg(7*AaB25X z_3IovQ?{g@l0XRi2_U`*=4&G)9rm;5>LDFA-{*PMk2dK>OcT{+Y&O2rIW*eI@lY9l z=$9O=nqbv{e9EoD{{Am&dFkt!snT9s1&vkr$m`Om?~1N$*Zk*IN4oDaw&Ug>uWfym zu&-ZC3rcQWeA0~U#3do~k}auQoK?{#+LiukYZf%D-)qSZZ`*LF;YMBy9+!ljGS@|i zCvYZPJ#@L$yB|BR#^9@W(}#M#V*52;hOd^b#G@T)j5QwO9+d>YrlWUvo=a~&g<9d# z8?*9LmuJe+j+0+J3^&TnHlk^Lfl-XFab$(mqOzVBC?9^9s&9p+%C+E{J}OudqBiFF zo%_1S&N77&FAMadc)M47_fV};0E9vNAbxapE*|vTk~;j%T_NU>3*!m!gHI&oRE%*r z>Z^--`qulq%?rDr7SHt9^vov?Kg#YQ5`EG$hwsw6UYg1!pe>-Tygu@PRgcfU@2}Of z9}gPy$qFs(ImgRm)A@_p)Wb3&F=3)qX6->j1n1o{3st>K3vx?;lWd9tEeK_TX{jVi zO9!9ipMS%+*|$TBO;jW&RP&`VeWz43zJYBH?q{XAjtG8CgotlzR3K>H0>>zY5~m1E zV(jmSeNb;&NK5Z(JF)Ng@D`A4--W=MJn*|q`5-MXZnPl7f8tbc+!35|>g984CnR2; zk6H^%>8wSDwYK-pXG$E@O1NF64+jwnLg4_$f-u|fUxdiyDD$AW!nlmwzV&$+4afd* zI*a}0iu3EGeG8HC%HHE*vT`wi&LqN=LN6dN6T4EMaD~}Y>Q;AG< zJUvqxOH$+{Q33CRYessvY_2L;ufl?NzA<-C&7QCIYawaV$s|>Z;;bjjT)tTP?=YJH zcEx5oE!K72b&+}%u1NngvMI8eiIC9a6@*J}kBe)Hm< zeRLl>LK)tgFt3D-3g@6uoGMkPtdn$|ZQYvhC`!7XJc%YC=H}Fft&CjkbDMP0)+U?g z`*!bIx8)0*XOQ_#kP=BjJRpgL*6}$@!v9&mXHOgc^uspJOWK`T)|MLK=`}B;KHvO| zxifPRs-aQlOT2mQcIVW%P+w~iu<~wsxt+!DxlC?RSuJy=-E}8|)Q!k7v|c~)Kw0fb z0uJr}AR#-^ui)=W_@uyaj0zIA!p1wZ7kYXv;RHjFy{gWzq=Kr~j=(q%UPU18JD55b zP-Q_ZFc-nMDeyE?zG|a4PvTP1)nlQd;rNoA!tm4W<#mgYbpKAVXE=o86^ z&Cd&$J8CBI;lJJU`0+N{nEKGN5AbAh=~%$owkT4C0sce}x6h zk|eXEGba_8qMW7NtZMZ4R^%WaIMv+Iy>S42 zaW(p#{1r7`{foE1YfJHPYk^_t5(et#dkMR0nV#3X*%QnrKr?TPGRM95=9DOG#+YJg z4-^bUaN%y~vr~x}heue}^!+%hpe0q`{~7IWPuEX`HEu%(mx(t57H&sKoPbD{cwjTYD{T&C-|OlD=&K>WP00wGu2 zLeg;x=Rm(4H+79i;`$$WM?gAo`tB(7siRYJ*^w*;X`-7MxL}_L?altk>8lH@hS4;n zax1v9GyGMF$+}(r&~fcwy;MmxE(2+BWNU&!v||7g1_WUyYNLhLu{^gYIwZzrRC1mJ={>49E9v20!|rQ&knGzcBcU z?yw8Wg9_IeP7+5XZ~pI8YW^yJy2!6ezKz~&Z}4kG87gHSJ#ACRev1qM7rGVxctryM z!5f0U+dc;2Eh(gQS+hG3I_;Xaa-A5E>}_WtdcQqvRU3a(--vl}Vh8Zlv{p%HRfbfSF@=A7!ythk2O%~CnW!nk)lmXJI?=Oz2 z{d%)T(T^ELdec#`s$E6J*CVBf9c@Xw%gvb+OeCf4C2BD5$mz_J^B>HDT<5Zo!2^hp zCMA}OeihqGRl(Ya-bX55@fGysiC5qivJzfmkEZL=tSGt@ifyv6X384KIPsQ4)%Sph z`z(1I6|BX^qsh~9>H=5=_y2$YEkt^1(R=;f8&O3KR89vUn?R|s61T%Nr;WdHFC#6x29t6;s+fIbEK?n|od0(}A9A12_egQaOsjW@&5`Zwd~SR)rCwyZw;J`7)&Cbd2r#rL z%#r9bGm7xG0@yX4=xWbP+5R+5u)-KOYM*~ACAqVHHU+ME25E6tLj_RJVxF!kyLbQ{ zsV2r>M5nEfHH(jAA}MhJ7*ENF+at6k5pQWTYf@awzcOh`p)9jjv;J^II#TA9uEn|U z172v8hcDsD zwgZn7Z-9S{ld2Zs5Z}&+d8av`f#W@DIg!$C)&lg76*aI3j&f~o{xNl4EPp z3V@L3HRMvQc??ZLTYcV&47ouJBJl;5XH|{iQhsG!_zKsO40{EG^pSNYtI8~}eMo@@ z``1kYFvO%-2t+CM%v=zcMt!c$j^YQ`;Lw>v{$IPF+~VBro^8Eag`!JFDB?Y=o9UEN zPG18}L9p?hM?R8VWUavUJT|kPVF$%4mP@tKwl`t%EQ27!h`NX{Mbyqlg-q|kc{u10 z1}^UbIj|tF9aD~qeT`0s;Lh*cq``yX+GLaHm!`&Ft}q;wH zRp@Ti=bh`ptrUOxlU9HDGx&2ytmbxZgIt`}>B~ZGe}@SC(|QCr;)*=CcY~jTOggss zF;O9c0qHN`-T>MG-7`h7VHe_Suz}jSE60g_-8~EJnOvEUfH12RmfE_9udj7*`Fs3j z0iLRKyug8q75U5(iG=Qd@6D!4Soj7rc%U~)`RMS~OL|n&IZf7s0QsC`mH4@7+5&GA zw`CU7f(63?qA>4-DdDlHn=RU|D+bX|*w~>KHu8B$W!1=S%9iK0nevK;`RVRip5)@S zR6MjHG1cJ!wIV_TJS-q#*)_kSqWN@DER1(v}T~M~>DOqIX z*@=B<;Mk}I0vdm&z$Xn^AjP!9Z|*g4k;Gqim1w_5^>-Z>7?rLI8GGGa>&7&4j;75T zYFaVNjWJxa*wS-d+ZwgfhLs44ceoiQ*(y_l6}?Q5$_h!ugz!`rZp zAe}SWaPkQ|fsHkZlLBV_?9cT~blfi$f5!Xk6(9>R=Ou9Mj@K-=XLXLPGm}xcv!_u9 zJ{PP(r&QJsnbM$&iHvxi-)WTotDE-ngBIziL0+_5yA5F6eKmew5qsk=-Cr+#UrWIV z5fA?yjLR}NJ)e?m=?KTif(_MeK>>auP8^Fo;pyE|^iG%w3oXPA8Y|(}4&Bu-w&_f4 zUga$)4;$@iexChbrOO=Y#K3 znfZAf=~s6sO3_ZeMDg1X`!8j-I?}1fQ1_P5kpYGqJtvTe1~oQ5#~gmIe&r&z0z;c& zyo?V8lsG(R?n_hUd%}p9=guZj={_iVejBdARN&vrBCC3IPnDdTMlJp3BfeReAj%T{ z=BO68OWQ!%r0cIBV@^XI4hB>BqD3CVUC4b{sB()&f=!DXKsvDWM$6DkkJztvR|?-* zD_lA9F~Yj<=NhGh=^NwJn+<3rC7G*d4*i^=_XzzK6aOPH9CCIz-BgYhcH_8EI4Cl zLkVLvcH)-x2|f+f$a!J5$Fnk>laO5@tvu$(r9W~s85ZRMgnTB??#K9uy2!Ge-VIWoG-IAZqyV8K=bNsv?B z$68CKZs_CA9?U@Gaq*tHmXmD~i*^`+@=rTC8V7{1?Bk= z3z-k{!sGf5(X)-~j251LhgPUH?aI$J2Dw13aG-{fyS1%S>VNx%sLWK#C2+zJyj5!q z1;ib=d%4vyNCHV$HUss1o6H!Lm1BZklkO>KFZ<6i#wRpQw5J2}6LT(ULBp>Z?y1ed zAkT#wmN=UkjAtJj(I0m&udKnmWK;*9*{;DmboPvZ?S<^Dz_s$dKemnj;+6<;b_a8) zdL*2+lM6IzgGvyeoPntJvB#3M!ts?K_UIpzQaJ#9#>W)@N5Y+J!{;5sQuTQNgMkEV zIpB-8SOq1=21byiCTlYQiGKpJ-#b79RFTSCu0vL;y4bsp4j@TbDi@>osuD7jnxhZVc?~5rI0w0_=`>ON z#}^06i3vpi2G5c>VR=!$*vfmN0=oR)ETaDh^rPVEAG2}uiFyy1hs}IB9C+5+ zNEzxN!Fa+3JSA=-B{MyVU~_g*=k)jRXWz{OkWujeEU0Yrbm4}{pcMf*s-m%J&FY|U zQQyB0$za(+rMn*|m2YOD?cv9Hmsag@4SH?C&q9S7DKnn4Yng@tSbX-J&v2k!nl>Bc zJmVPPQ{(%dBbOJ+4M{8fU0(XNqtS1{R@3PcW!+w9;k`+2SuzDCwyng*_-9}jP@INH zKs1eCn^>3lY~40J6y4X4!eBcWtKi(-h7^vP+-OjQKbqa(jNNC`8si}`cUy|`UvY_9 ze)Tq{cjLmRM6Y4aPAPX`xF=;!0ee^ddKz&d9CTG;8nT*8YK3GuwfN>T3~c&O+jh<+N7tk0X zrld7b)a1u{iJKBZ$DxClwrToWt>yB-CSa8%DF~h?Q-2hH;WkUpQ=XUcn-cE7xGo_&BM#{6Ms zXF07OuSeW^da6Ugg)u}=Si+z!JPB=YXR^g9kkn_@=$nR}S1ZZ#FUG%~QJZ;Y@=ipkg#B`*d(HkW*u+RW_tBJB(UA@` zdn)xUOg<1*y_L^dJ2h{oaJ5;|cK&H=!|2*tE2yErfdL7*`l)~>t*%7t$?x)s+TpEG zY+F!`4;u9e1w@CSSH47N7HfrL6w`-XG%?`4 zRCQr0)-D9^;w*T}H|_`*?1#Pm68F@nEt0Bsia|Wb$QT>;ztVDd>R$21o+P(DeIYSn zJGUU&LpdUruM7w6q;U5+;96E>i0FRJacon?|c zf>eWq+0&XOF%$d&|6B1ZXasDC$p{+W5~OAN}T!B1qOk@_T!0rL4Gl7$) zmHd6G1n=e92+nS;PmE>_5c)hwM=HpAeUI5eMWry!l8Y%+U!k}XK zK_gkQqV#YBCDWXImO}3xF)S0y6C@{RRh-em(1~tR49gDvTAZZr?*L&8g)jhvx`)`a z0S{v`UN)ps-}NHD)y>ZcPQ;kFtkd&Ds{W8K2Y>&1c5Ee5Um95ek)jQYE@G88-zNDA z7OHS+xBRm8r;P~Y)t>zBuwLNX_lAdtILW}GHl=iz^`;809NLWXu1iSELg&y--qwkP z-x7Vn7 zrSEWr0=)ZI9qh-ISgH05RuZ{9IF+BMl1A2%z$M%{aCR-ujf~ zukBY@zs0s8#VLPZ8no3vw|aCkbD$V`?GkEGn_tkHZ^g51@5-o=AHa$7WDyC9+HI0; zhxG`9m8_%L+^_##dJ0LzFl+A^5A4c9MJeok7X`NnV>^`H+}j%rqqJEgAP@tX#aiH>aAqtb>ey$;p#faw2fE z#owezjbt-4rHN9H z{}mbN76`N!&}_gT9xPrXaROPHo6^;HF6(tfPe^s+C5dkEK{Q}5hM9?s;uJ<3W7kAT zEYIX#I^0rYD*LmSJVG3nGeB+@+I%26D>lOAn8DFQE0im7aQP-aGG;Hf>5Px z^(eHf!K~I2$b(E+y2<0pU8+6dfdK|2Rgk3W)9N@8Li^Z#0rl)txi?%s1ww*(1Fb${|H(U*TYip6Q#_hA>MpSrVA$$+KI zEcO3r=)z}<%qc$EQ4<(AP24x6yW!gu^K7x`?!K7*n8A&f$#oF5aj=>K=A-1r`yUB~ zA*x*^)%o904DXg*bcM=TqZEX^2j@?tAR;4y-pCFca>ZwioIOun&J$5pKDyviRW7%& zdFNS(8xHNcoE@Pr^1ty~W77d50{o>mpN!GBGe5P`KX+moAs4Z>HjT}-w^#MJ20lw? zlqTH8WtbcLg7NFdSNd**^S}V7xM05wD0EvCpAJUK6#NhyWkfyJsUKF=uJe>C^^~9m z^PE+Y;J0v-|2`{E28Yi{|(1c|9{ur8+>~Z2XRXSX|;?=+)LlI zXL;5cL*UNuDk}cRC}+I>vJrZX$_Rx@(#4Z=#vtplq_u+YXp=lRh{?em5v<(uOLrVB3K>7-x8p3C+T{00}QV0QXm6 z7F)nbMuT3M&a68&;bN@6h9+>R@fB4!HbhGTPdfHTc|bas5sEMQ!MiY7ZHi+ z#pPh(u$Y1SIaumYa_7B&1Hjrz(3@jcitI}Iz@3^*eD_)X@O(Q*>9`_DOgjPmuYEaQ zc3Xt|s*|(r%XIjYrTGWEZFNHLe)fp_gC;Vk|B)oe$G#2VohDrjeBSqH^oBab(T@+V zmHRV`$li%-PcoC9^H`=gz9umF!o=5W9A+Ca4Ay4KYG=doRHo~~*{r${cb}13pkFC% zj=%24j`LEJqrGB57VQoQ)e8QA9)?~RuQRBegD#`=3WeYfF`K4HHBe_|yLiLzKWyJ}S!2@<*bx z`10Pg>YW2Pt?Ft=tajIa9l zU^lD{(1FuPhv-Evs7nASvbZpW&l}(1FuS$U5$Fx$Apx8#9YL@2EXH&UJmo8xui_w& zR+Qf$m=B@L@FF`W>)tTawPN$0pN0%&5)t!Y@n??a;(0uazDPuMiz0k&jf~9LX}}8^;K7R_2N6{=z`J8M~(!&^1Ur2q6_<|!*`$=L3Ts}6NR_5k6~otFyYMN=Z_Omw9x zeY^mr2GYCq^)jtuF-WI7v=Gg-B7d7K({H0de3E>g^i9*zRE1JO1sw0%#jtP|-Ba=C zRkkjw3#{v;y!QU^FN%9nA?`F+A zraL}}G(v`)8o)ESO7^uPyO{gHN`wSu8{ zI*qWh*IK|k>xUXQ=rs}kPtf0)c=j)=T>1_U11Q8<7$3+Uk(n@VA(}>aGxJbnj4BWs z%SNi2ZaA(xLgTv3t*QmsT(?e$L-}C6;y+iiC2;@H-+V1}u7HD3XUo>zgKm69njC5n zxpt>PyeY-Hl` z6?`SVLgjnPt_9Ry$BQ`hIub`wJU9YzZez!VDnT=LF^WJKxz87eURrw11Kwdd*gTw? zL4LwWL$&IIo6y>vug*-JQ|`5JF+IDc$ycGMk1En5*L3uYV$<7t3JF&mvbnMV%JJ5^ zsp`5P5<+B%Lmy~i=X`f9`==)scEgHfJ zph{j~`ix`kFO?Y+hN4f#w$$PFwodoSpRblHG$QAJ-AAWzpWWbm{1-_^m}zX8qhxXb)or9^AxFwmC-i)Zph0BFURY{41Y%tU9W$toYKb+deseOQOwoX>2a#A)6Y8S z?W;)e#O}Z`rfi93F%8i5{+@JZ$W21l9!eepYnJc3Z)d?GJ{%^^|5%75(>3ez^CE!D zf%Ait+GDI#KDX(3<_B!YJByD0D3S>uoSJEu+WGn`jan)AmmO8K>QRzx+X=`+-#WuS zNhjSUV$QVLuwg4;L;^AHN20tXaA?2bXPH|8IM9-cq}2}kmk4LzHume1*)-BeQ| z>NRnV+B>jOq5s2aJpL6@EocO&NZ%aamvK^@~(eq=gK}!pbpa%v+XCm zRtY9W$)vjXw>u@t2`RA&vM))_NwgmSe^pX}CI?#n^PuWNE70r1o@Ok9Mc(ywd{ebN zLq0}{XI6x=QA&cy1V&}qhVMep+z!Td-(Mn4PPdN2?C5HA5L`|OKnXynfIa?E!@-@@ zBJmdxtfsqVVk*n%H4}TsDaY7wvxFKK{0*C3mxSC085IUKis>t2XA_pnRJWQb^+z>s z&xTC5qgltP_<21^sT@TFT{a6ap=5rTBOC_NBx9KsnZ92?7Slt4)0$omYnT}o)O>B=_2tZQR{h=Tl@#wG5Z0Ee@kJYywe$p>=;M)8 z9Z=G~x~B3(v<=RS17lNFbs^`|uCBILq_G72?2D1)qe-dN`SsqTQPFRfqfH;)-`hbY z!Dw6HW1p^L22P7G;^#s;)1rB)zMOr%=_do{TkKW4JQ9|iN1IHo%w*l)-O!vA*`L{L2W`e z94Q9)+Gl_AKNf~QplSSYjn~a>!d>L{$f^%=DUM&CNj1(53pRM!4fLarj{c0vJzyFm z%^XJ_0pulQgP8?fOiPCed(uXtKxH@9JxX~_q-Iu|D#{`nz+%M9e5>kNsUZ21hWC8c-&@iqKK_0?djCxqtB8jtMs zwq4Hw>4DHMXe@lXX!}_b3t>jkDo>-;&H6aqaNZ`$as4Y#l{M!Rk@qO|4^%}jQeKdv zX_1Vofq-`?@nlka)VMWT>D;g-d9rYjjwy>nKiXj{>oeWUw80d$7K;ODTNNhMk4M{F zc`a!yywC7e3(ru`Nah<+a@#6dhOTAMN7|mfLiM)flj(>XZY?KU?Jpu^aQg;i8a6cH zIGBdUst^4Mm_dj2G@Xwl19oyU7>96@(bS0{cF*g~dN{QOUDf>6Rz&>lzoRaV0tuT~ z&9zEDR}7SSuNc=?Iye9qrveX{*-G4%pT~GU^y}7My&lvL&gCHq3#^J#8YMxDzb)Ju z8M;r<9T$KN7T(?X7rl+Hm}tndnjTF^&R;G$2&JQ|ReuWsEal(I+Yf%v&)R@^PV1h3R3(Z`bv2=Qdv!)m=i)FTaEQke^o_A!ojarnJIbN`7mIe3$in+ z<*+ZV+U@cnd*1_dt2(n-9q|D)p3Ooe<`oziVp?PWrKODjFV6Cim=R8_@Pti{gRmQ5 zDQ#ZpPI;VZqXXQ8F^ms-U@bZsZoayx&~V`M{l|Fm(~;2FDf~ZtMf^#5`ww3|EBTF-DdjCA8;hzcQi@+C6AkGn7w8w@DhVc_o$|si)&SM4^C%O z@y_=#NAr`rwqRHt8#T9-VRlIvjdUkZQekXtAAZ+PT#Q(u(M!7ADs7`u71Si-YYn7v zE{SWF?I*!8?`*zVq;920hi#U!l2V121#eMqAC84U9MP4J)iR~T{!+reD#`Mr?S=ZY zol${f2qkALw!ZMcr?4bEKZ(fj%UCq~;OS%PbznfDfN~q&{A)c8^02Ob(nBgq1a9sRab0&g% z8)nLsuoD+pEzKSuL!QETSo#bBDbD!C#5GsT(hkjReH(a%(KlQ&r48m_it_%Y z68ME0K}N9GDA50(v5t_j|JAzZdykPLx?^w+`6#VkeC(9;P zE{}^vwr-CUPCuXal7)2_1)1&ZD2VsIu}MB>IV@e0C1+%u6fu!wr{C4C9X9D>i~KWd z%&ll$ox+YhOQJ~YTiS|AGKiV#$ZZCNwFsMgp5qjN@ExBBT~1+TxPMrhC2;h0vq~;fiI*w5l@4 zeyJ72=x@eZW8F+uW|QW47q%PG*+A2Du$ns|!Jpz9>1ahdAN`O&H-Y(-;I&WnPy`D{ zPCciQKG51F!DMA$&G1GxDV8Wo4W@E;m83LQavd*AG?_Jcv~5Ap%hazr+-}&fg!l*)AmkI~rJt)$e*=cjwx%-t9h_|z? z$`U1_R^O%n5iEhGO$0A5qgYGiftC|gJw4chs>uTZP2M+gnPPtF`_fM*9RasR`rj)E zkmhY!>&4vL>(n9jiD88qudsNHZVHywZVo6tEh4-D3{xFf+i*0&1D_|!V!SoY5q$A| zU5Cr!6!dw=a9OM7Dn+ly+njZrT=Tz_n@8c1gfkB>=t0@BhM#{Eb&Cv*dy7ykXBK*3 zQZ%09{Q;JxN1hktb4R>yveKMZKFnXs13TKgIljJUy+r`#ny7l$lY(jkmgasb?pEC= zXYV`*G3v>)1gTfX?o2eZDMKSl9n+^CLLc}vTaEd65G|*#Rnu*Iwf&^1bH-3DIDq0VP(h~{jB{8IC< zsB?(SS&AFgUR~=Iq&=@Ba1ZEcvD#1UJWT}u`>xFRC|9yLA~-_L7TGeoqC0BQ)E-Wh zlI`6C_Lv8W#AYu9calaC_Vq3Mx-o-yKNmgG%m$p#E|q-?dLLxGowl zCC)U(oYCXvR~9RX&f3#5N%_E9T(0oHJUd2qnftdE$&R=};TDKks@b5&iSv41IupGo z95s=fPkP38qTC6j#~+5QkLoKz5_7%cACMXO76O879cVj0KJ=N@a07$gTrQK`i6Y8< zcm@>t&RslUw601`F4s3HU=o7;0Zw0Ao2`O&UR=>YK4yg1O(NI1DVBj`amGMp3iV@jI!G#dyoa&L}wh0-`er zOj{E+yItg`zyhl>>oObY`WKFGd~T+*wzcpdm7G3%dYqLKI1)?ZCr5H?x}I99PU88RchQQ>GknM zlImRBGa3(P2z^$~3ibwYZ;ulp?S||G0~ypxr3}4Hi;>gDXr# zE6Ve8!jzxp(qD%f7*+wdIlmH;Hl!oqEH8g((Kc;F!UbXRdl1oA3!|~y$5f0#YK3#r z@Y_&T-BxDW6e(F7ZpG;;3VDZ`INCm{mK@(_xSIt(3gXnBB$U=8C8X_Gmvv86xR@E* zo&mE9d{w#%FC|qX5z482%e)<#dmLZQH+aG;9&H9|YCl@JhH~iHSk>#@OHg zX=4C14{Xa{*_RF_dbgIF7&KdUJD%LYMVaOCVSea64OrAf&QCLOmRwMGdf}d%xB{wU zR6S@mq?csmhAQ{eUZofy!nw|9>QV& z>57zQunvy^d1-+ZWl_YLuF7vT)z}GU6X5(JngYD995AR53LSQj_E?0D7uXvQyK^+m z1P++zwA_brnztaDl(huvp5{leOENg0UxFJh6JWDZpguIBmw^x^1cGO|;kx`VJh`Ya zc_|x05tQ9_B>Z>JAeVq~iq<+557N`EQdTb3bfI6)DGy=dfY5yg4AG<*YL+ise*d5S zz(H*k>{vhv*HoXcNJ=uSs%1`OJ5cxuzwK@KIGb{6fLSh)ib>LRlpqZZ+J~z@Grns> zCcM%U7|BDk9)WPm$2+2_anv(MigRl0+65AC*Xf8&%H!ARQ{odbn-@UzDJ!Um3M@|V zpSIBk5)fO!MRGFUkwE$vv2L`uH#p`d5nh0xbK?y5d&!*(q4*rP<45%?4L@$WeQsvN zOFFIH2>O1I$YhE6>Tph9U_6h?sHAvB4l6ublk<0__l$L#rC?4C?Q4S9g5kIOwBMP^ z{|#sDqnR07UQVoBRi5%%5aj<+qv5cEb=v?YbeW3l>7=zuoY?OvCamJ%)*M$QQp@7f z$Ci{Yu8@tiU@+OO)d)bfDk9^I?nID>fT;m1Yq}Zi{VRXLC*4-?vf(*dRE#Ve!1CUj z84pS;=pH!e4L&W`?{fH(|8H*wro*VXuj6i9@CSG&KD>hq`dMg=aqQ_1hb*Wm$9g!6 zg@Jt{I#2{4U3Q3Zs6ye4eM%~2XQX$Gl6WNvv-gM1PW*#f={T`~GNPKnmUt3Y#h_{E*>04{1FaU7Kh*tV8#w!JPmOf$ZXDH6@S3h$z= zyS#is<)N<#aIhGg*^z*y(dbN*SmS2>{|_cBVgWt(1Y3qbdjMc&IH^;OV?Se@WOd*Z za0|Jcpyc6i>gG(6DJBPJ3H+%3ub~+T;nYgWH?EO{s-rMJlEeMzcrw(R$DaqT-3r}J zG|{SKnA|_%xZ|#tvr12()aO9ym?hpkjJZAGL*BW&U|&1o(W3p{2NTj^o|UY`q6@$l z-eQ=8td@&H%M;9C)8A^Q#Re1>t{^N+rQvxIpqxdI~qZ%)Y zL^Z>N6}~Bj7Bi}*GdePsyN`t@qC@j*%r$no_n2idlush#y<6!BNXlSvPqQnrI@L$0 z3Y~LzA2Fwz|JtZ&9iq4524!FFUFX~ZGgC0gXY*RuYaw3UuYK?M9S=^>!_6#piaWoS z!eszMKc6Z#j$o!CU!0R=pjlE9{u!-ROS?n|V1%;(R@i1${?qjnQMNcBKfjrI!Gt`q zOmlKXYOskr+Rr?v9G$?yZo1T`aOM)mYPkuIb4(-Egh-IMIr<{Dx9$iC!~v2iB4&FM8v&)BV`m%K-#f?~#-c$0R24vQvAK6UP0)1|%?)#Ja8WMk z5p}Q?gO?E5d^Prq-p0h+)#uBcU3xM;0BWG1VkMw=j`szG*uY2ji``2(tP^6wzSH13 zE@)wnis&@r5cyy04dRj_am{rIPJ>*XMTkep7F-J|X& zUREmxmXwhaWO>1JL-0QORoXi!U&&NhP}czxCP!M}QS=$`T_VC|jB<^#`?YBY&ray* z$`CHsCu#1V)OyTfHo~$*!@l5~o5@*5&dSiEdV{)-$o;y|oe|u2d$igdMmuOHN7ZX8 z(WaLYNBXyCCUnW;%`(ikjZ^D0kA(X9diHrmwClxU$~SFncQvULrtK=hio)3t;*Wxm z@Gwgcopsx+TZ0Q^zKRDSqIHE>**4r)XQ>T4V#_=D2p4MG;*#xlo+AYHs3+AWnmyhB zHl&i^j)>;Mk|~2&n@)L88?`+Ow(nW2xzh2p%+_>oIT-B0;2dz*;?XWuR*2&L@^c@z zg+`(DbnNy_{r%^p&aV*3Q zql2n*0|jG@4WL~~{Fyp27Jj2^{mG>(Ar0^RE)ZBDN7skQAFR=RU(b4w!}(#F=9i&L z?#qt(QdhG-6yE+%X_BDau&YrLFnirympE74#^=k~GAhr&(CNl%MoN^qfqFm7Q-GI- z)1yuGOjrJdsI}3DF(7a=A_k`!#Ttll?4Q9VGKRnN^Ng{a)Y~HSl5jNY#)O+!jG=w@^S-bzoF(E+ApcV0wW=jesbI zxX_q%cwkh=-_A{2Su9m({B`)&KsQ(<7FOGK3d7Lw>vqNQ&DbX=y}l#Q3$7S`mE_>p--iRTo+$So-zNQ{pnaobSHJ;av~ld>>yU zHi#0;xYN^sHy(=>A@W>#TKlinLjPTG0lis5gS!r#xmggh2_VriWUI35;Z82)k%Qis zF6+V?#3P0s*6zwg_R?IE?JWjY&gQS@L zX>!H`?yfvk!xfimYU5$nd)_-}^9h_AYMH5d+0lF#(DFXk+}bO0nWK+{kkTFyR^e2L zGT~BPrOEv-2Y>X6&VDReR%=KP}$3BK@Lh{t~c-UFL&sQ(?$}`9aZ_x z;c+w~l@KV{#G%};@wF_oTv4BOi#ii4ILE}O`y=}jI$h#~VrNr;%^?jMa0ClruYS1i zTD=N_s|nse^-cb$?^l}EmvI)F0Z8=MMUe%XaH$tl4bf~OxT?XhP$o2iay4!v*y*N^ zndAygJ7IUc0)y_?Kgbl6=LgbmAD>V{a)Oj{%d`VMINST$(Rlu-5+7Kg1LGoBq84t> z6lqU#SO3~NP~Lw{eG#!G7DF6_Wg-71Z+4oWoR-dMz3pfNf+ULrlam!S@p*j#>&y5Q9k)TrCeGh3G4H#`aS8zRg1j(Uhz*IyufrGlT z8Sy)vf9o#!9-Ib&e4822!U?*Vy!DF@Ws*rC-!p@e=^zirTz&%o4ME6;TrUoAr04`* z4MVSlR@_qy5N)mKV*ckM9L?*?VykA(u?TrO>pMG#Yk`kU)jHk}k=nbc4mcu|SPl_2U4*5ZGsKdLa(2>JIqy_50LltCI3GG_H3@Z@pv@J~GnR|= z-7JsL2Hyn1D65`e4r3C@x=CFATD-6~U)8wG=r&LJ!zej1Ibf`7H((`%#0&8ZQ-jIz z4|NUU^wcnT(dn{m0@-kTV~m1CZvZK$10cCwJ3+`I4^afyPy#3E^ zPOaQk20HQ)5U0GaM5I{?)g9sHAP062=INHzV@kdwC}&GE@b(_6Bia)l&4@Mwk^%JS16!nqQ|))0oP>Q zz|9_EY4M13b(a^TcG8iUJJy#37IoyxjWtviRvOY-CkD_Q9{nJeVWwBwc^jE*G{$u& z?WP%+_`wi;=gwxEZi5%zE&eN*PPeb2%o1C-6v1n)!}>~hnZZ6 z>4glGAUj}WZXr&k*uJN-b7xZ-zl95A{bS$hc&Wvomy(la4x)Kan7nKSV-^%lczI2l zz-OgkZ$(xaLm7+>m`w^tDj!t`XCd4p3g}dRm<)VCgXA=kDbfx>tQSz?e!^hnG!e>^>?1|A!C_I;S3w6SDd=}Czo=)$hCN{I z)K)^j^qLvNJ$;|eI)g0KLKTm&>`SP6xMzCrl^DeaOZlx_5JJT8qR{#P^9 zCHKOqz0VwUW2M}F$2jK;t=0zzOZ9=p?aXPzdh?RIp5<$l$G*`4htcOph~rl*bD}k9 zomn9l2m5yJN)wHHDqN1fNw&4@7B=l4OT58NJ2QG&l^esTc0Ybs$tI_xw$#2epbgZKAcNSssAKkIHXPU( zNSP1u$M@G{Z6-IpfuK?G{q)USC&4Im&SN~59j<~ai(*TZgxH{6!Pwzd`witNBW*9moYfD^* z=ULDy*r~v_BWV8x-T6$J&7l!Ex_*(W+?4C`5`$;Wpv1Uq{56-d zS;QaJ1M=dWP)78&(+stYCN$MIRh^B=w4l?=O;%%V8_r!EKIX%4HBDGOs_02xH^Io0 zymgVbe;7l5i;^a~dhSeS;D8igHUfBf*E@aO7AUh&V1$(90e>l-p=34thE{fABR#aZ zLJ?cWrciBbNMPu){wyyE_#e3I=8pbl0OeJ$br!d5#5?(u0z?BpRZK|K@oP*fOnwS;87t?Vol{9D$;#)u zqU1(}(yy#$t+yC3bpZNs#AKsY-_oT+(`HM$Pgz@VZ?s@BB#~+=k$b7(7$9mr)D{@2kxX*)y0O`nVGI&G0^6u}0 zlmoU!c=n?11d#c_petP2J`Z;eJid0oCAeJtyi{g@17TQa84g4cCj@|t{*`eK9d?sn z5zhQR=u4i3rQO?J=3wHkAj|%iYYad%2wqSVa`ZC|=lucoy20vSg@NGxYtM$OS`;sA zbeS@wscHmRTu*;?&|P|*W=iML{$cWvlx0T0vSoGdBeLA6{#AG+yxM&vy@YqkT7SFV znMDPgh#%nWJjuoyl-zZN?Nspp^N@i?cpdM%ezDC(=XbG5dE-}80Z z`r`TMXLDoWa`XQGbK1oVD{;K;i1)Z?(s7BYej_fSD)_3vpS)&9G-VmFD1h-^i_t{TlltfnvFsy-HnA}-`G6)t*YJ~P@H8);k?OLBmV|ZZ{bIZ zna$HG=5C+P$I&~Y*wHA7^=8$=zER162%|LcwS3*aU{5{md5TT)naI4t+DIX^f*nSvM4@h)L5f|w;0KZzdJ28c;Kj>lA!>18le zY0g5|h zp8<|Q$S-Bxr(cCafL#j8>Hn$sDz2zhW8vEGh=sc=#)*ugo)YWhDO^5ZV(C4c^{Agm z0=Mgm(a!bJSQhO6_ZO}9sS&f_aYE2`D|bPmmdgG91)dvR(D2sH-HHVxTsMvwu}KhdXH56~&t3mB1%twJeX zLJ28Wq}uf;T-w2+r54N$$m-A@Ch2-vc|v&^5t%uW z8s}V;*L;!L0z<03I?O{#W3k55o{zAG$_J=ft&$S4!#$WDKu$$k?3s-Z`9HiD!3Bf2 z;2a=pK(z0_@P59s%e7mVErsCw2QS-ngowD4wMkp9NC)XHLmXt!Hr}sY&j$(L23tWTAuSdG(6}L3{Kdv1@SurLcFx5xXSv0yg1{Ta z|1^KAM4G)|Q<@QNZwJU70Yvj0%)28jON5N&B)n*3SyijUp4bre_30 z6Y&YeduYqk&7b!25;j<5yZNK=qFX0cbeo6?_l)r8mwdG@>Z_BD_TktYYELX;AiEfa zE`2p{D3J24)C+j2z4r7!{1->8siqj1SJ^1ZuT=0hrKoOK*?IJak;g@(!QIRkTl~R}OJ*4?WmeTz)Hg|s-rgAkW zN9q1fb+{Pd8RYseTDw*$5bMg>gJFHh#M61DqgdKo5Q}R@*uM!@!DTAEssDe*UvvA* zUy_<*1&V=dd?{dciB+a{;44L=vT#g*ym@e`Vwe4sg<0FB5=J~QWsYzBOB3dI5f0@N zSFwIngEp8u^5R)p6u~etKc|$8Y#R1ntfOq=(8h|dn`g?X2DCA`KFCJJRWtYkH>>3x zf0N&k6j;ZYhd)|c1+DYfi^1CDC?lBC-th}*3&`KI@9wK(b<<_iiDzlL_x7#sYf7sG zrwt$DHtiSOr2fREqnL9Wdf-_X5EX+Ra-T09=SYii5af#=2r0LN2KdmK!8|rfn$cP@ zJb}QI_LJ>}J1FC&s|EDMqx?)PpDeka=B*~@$l@9(h$Q>5DVO^i%}3Gy)J0}Xl@B|p zNmjZ{AX$XOO3Fq`mv#7~Ieo|XgDw4a`b&Zk>bysy#Y)_)mIg(OF*bF&^u{u1cxNlr z94+@V=LuY93zO71nf@Q;Q!AiZAhzi776wbv)t78#3;Xl^y8_)9{dpy^oE6ff;g;TR z{Cpdr%VuNcENV}WI^+zAwLG#(ve}+_gtYVoI{-!V99u6+S}J~Ez6KaO*lEZ! z-l{wl#aC1DO~GBE?VTvLZvZ*&xQ7D-Y)?Jei%(D2X1i2T7aaZZt47*o6mh1z!qpgZ zV42;WZF^)XE?*5#rb}Bg7~mVd`);WT-0DFqsBDgmQ6YIzEJ{;5#cK) z)tkOT!7=X&AD{Ou_a~(u_-D(z)}TqnQqe%LJVgN~yc}ZK8~&ORxAUWt z#tR7_M5f#~&?hv2C^=D^EN-AT%fR+-0NgbuqKgBkQ0qIO99Efe$DrUiKU|=Bjc&n$ zCz|FOM^3u}J>`!m7 zKV4jyCz6TViq;F-cL~<~xKw2~=D$a1BF@iVP8!QFBYK8T2?-v2cjq4A}nmt*QyD$z7Jl2VO&N$0%pb8 z4=ewt0URBOYmlrlEhMhz+CDq~e-esnI znN{~6qm%@CIk0-uz;1iJyk(Mm$~;7@sd~HrqnmU17b-(V`V^pBa>!qpH6f@=;k5W{ z3_OqmpTRxZNE+-e-a&U%D?;FVFhzhsG3`vw<;Uc)&*AR&VbUh!tBihMbF=xVb$5uA zJKvT`GRgg+u5e)xyfX5qIZ<-UBHj)*xCiN~XoZ65hE zOl(2jSys4}oV64}Z+bHWh|e1ceF{npqMxtIAGlMAAV;_S_QotRK|@6RUiY`XBTW3n zhoXbO%gL33KZ+A?`ocAly)S_}$N65ZtdU0D*>3>3k5}C8<1|7(py&;W@KG_#GwM|Q z!ry!9m%9xyZVbTF&^Q71N1NHu8A_Gqo_jXUeZ4=I-=|h*J{-6A0*=b&XW}P+m{Krm z(SSYZ;|=0#(pjCPWkD|ROxno^Q`#hOf}m4vbh9|<5L@vhKm#MtV7iy`9Fcx?e_Hc4 z<8Z;l$2{``$q8emrEKbG%66+jYYQg$?zZBAay zdTNr9jsWk-RC1(Tn~+c4qHFk?jTGA)?0J>1#7YYa4;67gM&=Gow~ zaKtPbDUizPJ$Mpp&0NtzbrRN^npgA=6XUgaS|{>;X+OA1GS@Cpe&u zH3Sc3Zh&gpY%wD0MR9{MYLKj%s&@2Pd^8Fq(%! zCr9pCB##R9wnY!3+A|>T%L1X;N9&e79F;(^YZKqt zV}UTLmH^}R$y>(`J^=YYa>nkzPn#!Gr{E2OF86#`g;?BVU<3_brUWUi>wp+7qT#e6 zQm?HlskWZ*ROoUOwU}X51AjIHiRjW4tih4}v`pcVuQvdu9Q_(S^yC6(jv=pMQ2#dv zrfi6o#dutK17uD#QTr@fY*GR$cTbWTXC4h|iYTU__2r)VyarvAB*Qv50Cya1cSmjt zpk(yeUGPG+7Ligp-WGaZYZ-P$7;J3?@72M^B0bw2w+Q^{3;{^hYkgdR2(N#Egw)28 z*6&SQe(d-5EHLN*h+18B`RaAjcpcpiC2f-9b+0!;7L`DB3&@AyoiDw=F}NUBVop@F zfr^su|IHS0g90^uO6H(Ic@cfENMB+GTSgwWJtSPh+dCJW*ZMhX*uJoc@H)-CPL1I# zWsS&Cz@xUyk|qFYzk>jGztaT}9wbVos3y=yjd ziWzj+1InLeq#jiS=^8}R3yP9C^y;!&|y*f)`iq^v2wu00R4cd{(3b|kgc$O7M9*%wE0cG*FF`N zh*(`N`v$pJ<#fho{a+KzUpQ9x`h%Mj$KrLqxu(GiD7o%n$z$0goGRSP+2z##eF|m@ z{RCly1T345|J)TcC+;JXV#6}u=lF(t|9*q0e@w1=kpO}MRBR~+8hF;A@prLhuI;ao zh3$ml_sMD1*8D>MEGY4=mded9}o-9E%Tng$l zCge<5wFZH|Q^||KEurj{_{U_Iow&oo^#EEzr+W$uN?CjkF?W?pMgrW2hA8Rh69`Jq zl;tac;*db!*QLCH$nZsqZ;;}pY`W-Icx!PHA0X8|!e-@avZ588BLQHtYKoI132(u# z8ep1HL)^@1Av!~MPb-HL6LojACa>K&l1c`;1o8h$gsog03t*dp?hjYndpOrFe0ZNi z3RW@D{;C|014XSt9E*0MhJ{OR=1Y`H`D#Dh{A1eh`t1&? zT=&CfrHm_I`wfZ_`iv?kV)sKE@?T=G6l2M9eRl|;G^BarCuK={P4~P*^R;ZF}VQR}vj%Xo>XlwXV!g|e7OBXxR2q)%e8HAM!P4-BA z|3ug#upRnP=yD~vl;o5qB|}uI(M+m+j?M8Be{9XK{tFBr`b!k}C*WW2b!#T=Y!D2ktb89h zVvNgAFS^5!0|!hHyPJc9PxVqkeY2*T;RuOHa)XWlSnGK-dxaOj!wuPhoxl8Y)|MGs zO>_hRe%tybdLf#!vIbXHvsd@E!Hj0X$hKs~OM_j;0z8^ICBVfQD8CvobA@;!FPd}s z-d4Kd58qwlW5TF)MXntdN+a|)ZvQ3F2ru_dPP5YKGC%Zl55q+GShJ9c6TWNw4Yi@X zDaQ&&Uq`QFD~bCPi$_5nZq^tZcbU(Sp}ZZWwuYrVvI~o3_5WSSPWL4c^a@C|5MEX` z!vAk$Ebr={{(G^81V^IW2Wk30o&lkW$C$x=C*gk~xq(}Pf=Ok31ohAu)Bx|TqBl;v zJtuy7zw`U+m43>m`vi;T5x-!Pub4;dtWVopbNlO?>=NIwOZHWvCHpEn<`G{okK0*s z{q$P?`Vb`k`V{{9F!O|lDAlQA(rRZgEwW*NOB%Y#+bE-SbNuo0PP}e9w1j)uCI(X( zcAgBi;W|W@?*!~~q=`Y0^_o8`TUsw{2bdDmpOji_;{X*NMY^(uzlEBvBBHnmA*&6b z@%9QZ0%+wl``2BIME8~g0xN}lO?Vk(^^1sV0jnDA<^jt*N}-~ve(PA}=FNW&QFZ*7 zcn6hd+L!)e;MarF-Nb%pXf!=l@jV%2wXzXgR`N~i!Tnh>PjLL%&41?+dFprjXJ#SB zk^LJ^%bDOq?gEv;6bC+(x=$0hrR#DZ;IEy|+t0ok!v4)`XCg47k=reCRP}+p}psUcMaabu5>Q@L#)VL^rPp*HYaMEv@uH>w!i++ zn;(r@B3(x3B{XUMqm8PZ^E82YJB$g+ZNJS6xQJmzTn!!#%QY;*b++eH5^t?3ok#QC zsd1Sc`L(zH6oUk91pzQ7H>7v}f2$=iPyZ%JKOFhBxBe7^1Z@QYFeW#ocmIE@B{5I` zCP+UV`L(wfp2${v4TQIxooZ?DK%^0vdb(?}IkuA&*i?CEFILuoQvVIS>hb)$G@+-h zjY|0HHIc$}knuz9UHA_}o>2dM^~eVaoC&Y)OP$}?1lqD*s!3s&vnrL(Y%u?PqG5Hh zcTG5;9zO-Wd@q?g&o&}i5K)j7l|C>=Kpuj4XaotsmAe?)5Ee54Qr;@*=9T0lS!24- zEb(idvsO^~UM~130l0Eq^ZCTpomNl3>$#$h3`9ijR*)me<)k+k({INs&jO+BV#(DZ zq6Xw@dI}GwY|atx%R~6Qw|@s-uy7>kHkx6((Evqn!sp`KLa1!4FvY#{Hu?-=e*X$Z z5%f|SDP(C@;NDBt@Q5Ha;spcFuZB}Uoc7C0Fdm%h(8-gh7i)DQbl|oElpb~|(b0j? z-gGUoblvK+30G5@x_+o(H|(-Q1Hd`Z(#Ec4M>MPg0aU7rS9I8{9=^oA@A}lKDNdDF zuc_WtTA*f0N8ERKjY`&6rRCX3VsNZwH*lG9`{b1ts8q z5r3Pvzz3n9ccD*UZbxI%^;vB|l$ZW+Wg{@G%cczRtw-fk0#Jd?L*-sbUD&~Smpw`g zR`vcg`^bd{$7>s9Ve!lImwon^#dblk1)Na{$X@?{)Wyt#sUc0B2@;(De+kH5|9{lQ z%z~*QO`Qo6od16b$X#PsOrey!1ebJa7Ra9oVz*VXRFLA3V`Caj- z*j0;?@DaDPw>GLe&gOBKNjNbj@j_)ZuWU@VdufUZ+D0NJJ1IFDz}eFA0gp6?bCn|I z$#04lAfR`tt|e{9`q31{%I9dU3=(e1uqEl{EyWgFj?5LYFDri5Yf6F0 zm4wIn?mAD3_Aa|`#n*%PWs;K+JnnLIil$!6&*^nQ_Eq~_n|P=kv$WC_5)ZqPm_di|8n>EPm_di|8n>C zoRXD9KN_fYYukkMcTeJJIFz-|VN(<%q6e^!_y&!_ZyBhAtCNx7t|EW)n@;!gXXZC8 z989Ra(A!R>!B6j^R@mAsP!uXEBpIOgp4XXLO}SBUul)=k)i9}-YRI3g>>Z_0hzRp9 z4GY!X*6u*HOq=$M=bGZNRSYZUM?-%vJ3EF}csV#-^S(;@d9*>K&tRnoM{JF(VWIJx zxvm|+f-hRrTRD-J?8Mz-?Xcbdf8b@uV>v}5#sm%yl_&8vjofim2hHk~c%C4_c)d-( zHBfp^#_;N_Oa^mCg;X4$ut`%cr?66#b1)43@h%=6I0wWajq=)KO+Ql{Dr7Pk+GMlv zUGv*oZOp;$DT9Z(D*HH>qm(RqU-?7`l&jB~HKo25LEk)cGT?_|6niog>iICuFGPC0 znwA9j;*5-?*i2>MG@GY%n3Pp_LT<4!<`La&3bt*Z`fmL6cMiqgu04k+ESSakX9gGm zQm;ZqO4TGYEDQvKo)1yK~)M? z0EbM;5JxL6Wa1F|bLs;CM!jPIs7aAB?0tuJ#S{q#w>2>Y#Lm_PSCI65q< z+dN5m4yTsSVfLLZiMpLsgQ4S^yqUsz9H(VX7^35otGg=Oy0#;kFy4YIZ9}@t(V-hFj_b}v0m%h_9%8FR}P>yor20?5C7SyahRO| diff --git a/build/icon.ico b/build/icon.ico deleted file mode 100644 index 72c391ebcc280e8c34ec175fabb4337e34804b3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123545 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 bqOm^PqC+~3h1FmPI^vm>($fM-eXsuqO4ic& diff --git a/build/icon.png b/build/icon.png deleted file mode 100644 index cf9e8b2c87b5c18ac0b26913af6fd3ed00ec3bfb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35949 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

(|V7O%OOlsc*vU+P^72X!U7K_eX*CG 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 E`T9pxN5i1O>p>VAy6%lIREYyb! z>^<`OFz&(YRS>bntJ8l9zCtiQyTlU>I?qpB2us0f=80k7!H;iyghuwy@GzAwnDbog z%8%yA9VP9^h5Goe?@$?C*AAqn&0yyIQGTX4{F)Yuf7hrnC@&9ts~6`A9jXU2lnG6} zyP)+Vf99KLnH^hUGLLUBHGkTae-!Hh`;D8hn|dL;N)7Qnqw7}-5-;KjRf#fR+WyJf z^?^fnP)g3KP-mQjkb*MsnuSdgj=|PgV~y^>LbzPtt>-P4;6G?J4X)EJ7c|CDKsP70}($Bs@~Ks zx7ar*3$cBG!Dv#Fo0=UU87z=f60M(fE(Q)yu9VUkF~;MY{wr9E?(q14u2t6J^Pq4x z)zIw-+_NlbUZC2;Zpdt}c0xso$)wz0AA>gV*$2)g;b)Iug5n(k*4#fy%X19}$p{hO zEM$-xh}r1IlO2%3$EQ)vo*Ei1Iq`x&C?^b=J+CUt(Lry{0tHrVsz zB&nr0?$d8BG#EBM#5))>XQQ_IYmXAO#n&td24?AY%hT~wIK2H`tkH6_UZloPAt?%gWZ6pBg2Y7nA} zK^o50)cF<9envdr(n})yc>9~f*8p7jrEgOlpQUE4j3XxzB&wNiRwrQgkc4gx9YZ$? zu^)z?H(8nJlr)Cf*F#h`8h|PebR0{ ziH;9{j~)i#?S3D`85-{US{)s5SOW)5b&n<1TeMW=1og*9WFNt6)rx9iHTUVekV#I2 z)vw|VRkmalBvP!&AMIYo@!_?#o`Hge}#}) zHIFE&KrKjKyI8s2l13x?;R>(3R>>ox z(tB}G6B*!!1PBN!_XAaZaWP!Nkc+QX*8vO;j*VEXdh!-Vwc>MA~jpz`TDm z>IqX9;j-+K#`FL9>RGKMs6kC%)l2f;-MKi)gx4m1UHh(_@&fEtJ(&Nu7jk*!Z&!Q0 zRxUgPm`tH5Jun{`4@uVVkH`tOZV#S+Uy6(={d?7GInI&>;dddaskoih6h$)`>aPaS zK$Z)}dHXWqg!&foJqxjU@`U_OP~`&#$hh@#NkA#qfXV;wW9-lX1Ay8{HaPM~UK@yv1fZCRKjCUU+% zKpM|?w2KGL9gOC`*K^EjO`CdNMw^cXI)*SrJSs-e{98ZD7vw&|7)Wpyzdeqd!tb^5 zr}L?VIu1O7i2vNI(AIj9>lg%5+5Zg%11hC9^-J2`D61{@6}0KI7G6HD9BpQDlAjv- zzh^~&pOuUn?%40`xjJ%ttpM@y;bu)0_~JT~8aWG5z4L#cifdA9iKb4-?loLPNU!-_X9mHQi|08ExXs3maqW9znPXkhtDE!O)Fc1mX6naiBBg zH#_#f@S*q=+Euk5IqhiFQC_$~4E}HIWU$V6Bs13KV>K^g6bt<)?$bfW-^l7-@oK4y zI`PsBqyL*Dd>1~bZ)BBOV!SlzkG99qrXQMk`Bn0?nZ5+xKhXa-O-;sdO?CR;iSY*a zTYjlR!^()}b)_WFK4al~{$~~7|FyKBXOBLAJy&^QodYq+<|9THv;6x$sbUk-@aB%R zc{QZEjtB`CLkkt2_WnDT@d#ucrq^JaMIeM(CtG<386WGyl2R$`kNq9&^S>)8fnlrA z>6yL!qtKw3ba7jRDGLK)$3j!@si8g+B^f!fma_1_DYiw>#1ds{J^PbYVew~#8=CS6 z)kg+LL-V{lxM_j#-#T2zBJ=vY_6O9`dp6Q@fn8u?1f6~e@cTLfJw^R@PtgaDd3wo? zzQkT}8bYRtp>IFs#K%&4+y9&2Jwn*wVuIRC&rXmGyvdLNUrw^8X9xfCu)vAZ#&s<P!V3G}APN*|ddZgePfFX!6)BM*8u$m~1V^F6OaGfz zB(ejJ2MoJ2Zn{-s#$5^Wnw!@2NGCVL&HUR(-uX18fA^3LLW;|q7rc!yt-9#=a-0Y0 zk4E`PpA{z0(T;}qzn!$F2g6eO92By#*>n1x9inalqZ85ic|r>j*p!(j`q%kL(siW?up%lR?F);ahu-x&$~#$rexKOcsI30zf)Ew zK;}at^EH^9N8>|Oh}6&5w@EktHwjgkIT^|gQ8P!Ax5ncl7>zzvl>w2(Et9vBq*gCy z@V?YW@pt)W!ZegH61mJV5OK2fqP}FJLL{*9@(m1WeJxSKIGXb2=zgL8z5VM@q`Xar z{KiZ7L<1*1vY=&D1Z#a*$+>;rBn$Lueqj|bl=Z>O_5n0xwgH8G0l$6kUr)Lae zuoWL=qxLYNLYx^NWT;`r{63E7V=-yDp~5G;z2B)Qbar9)^$Rir^11~TH<7p&p*NTU1J#mq;*@3936aPhbuawZ2~zv>s^fT%B^`%7~>@U8Kye`*1k z>VNK$Q~{A1%TCfWPEJ_yL$_^qe}xxDLu?$CN1&xeBAm@U9HiN~O<7I$4NaSD*5Qx<2Ul;dH~?+}e^4UgogXN#py?ZJ z-u0#2e6=^Rs*t+u8so|cG9Ah&RByCzu4OI5T0!rtzux8-_n%Molt5%gW%PgP4y=73 z;C6`FxUPdnSsDeYPHvg`4%;S9W0V{oXGaO~{LjH!!AJ8YH;K@%*6d$ir2T$r0DUb= z)60SgnJSdkip#-z%8<601~L6F+|3ihm6=&V?r$hl^pNfS(N;rv1}%h2oa;e`r;>vz zo7TIE2U58R$(CRrJmdc!CyS6zF3%02Mv>nx#rFI;@Al*GQq(UYFoa3d&!76JjBGk= zeC=vR?{bM{)jHWSv{gTK5~_tEvA_OX7M1xA;(zMoJE7_$bHx4*O;Sa3T=_M4e2Hwu z%CIxbqVI0lQ@xI?ybfrQ;^jI<`%-O0PY=V%@I2+t>q!`Tt+CMMk z@d@CG9G~x*{m*ZH!~g|;_}y3kwp3FL`1^FwidOrdzj++cbOYsIu%b9?q4$G;e{xdF Kl11VsAO0U5dJ04U diff --git a/out/main/index.js b/out/main/index.js index 1f30c17..297fbdb 100644 --- a/out/main/index.js +++ b/out/main/index.js @@ -4,79 +4,59 @@ const path = require("path"); const utils = require("@electron-toolkit/utils"); const icon = path.join(__dirname, "../../resources/icon.png"); let mediumSpeed = { - parking: { - frontLeft: 0, - frontLeftMiddle: 0, - frontRightMiddle: 0, - frontRight: 0, - rearLeft: 0, - rearLeftMiddle: 0, - rearRightMiddle: 0, - rearRight: 0, - active: false - }, - time: { - hour: 0, - minute: 0, - second: 0 - }, - temperature: { - interior: "--", - exterior: "--", - coolant: "--" - }, - brightness: { - brightness: 0, - adjustedBrightness: 0, - offset: 20, - auto: true - }, - vehicle: { - speed: 0, - fuel: 0, - alternator: 0, - gear: 0, - voltage: 0, - charging_current: 0 - } + frontLeft: 0, + frontLeftMiddle: 0, + frontRightMiddle: 0, + frontRight: 0, + rearLeft: 0, + rearLeftMiddle: 0, + rearRightMiddle: 0, + rearRight: 0, + active: false, + hour: 0, + minute: 0, + second: 0, + interior: "--", + exterior: "--", + coolant: "--", + brightness: 0, + adjustedBrightness: 0, + offset: 20, + auto: true, + speed: 0, + fuel: 0, + alternator: 0, + gear: 0, + voltage: 0, + charging_current: 0 }; exports.mediumSpeed = mediumSpeed; let mediumSpeedPrev = { - parking: { - frontLeft: 0, - frontLeftMiddle: 0, - frontRightMiddle: 0, - frontRight: 0, - rearLeft: 0, - rearLeftMiddle: 0, - rearRightMiddle: 0, - rearRight: 0, - active: false - }, - time: { - hour: 0, - minute: 0, - second: 0 - }, - temperature: { - interior: "--", - exterior: "--", - coolant: "--" - }, - brightness: { - brightness: 0, - adjustedBrightness: 0, - offset: 20, - auto: true - }, - vehicle: { - speed: 0, - fuel: 0, - alternator: 0, - gear: 0, - voltage: 0, - charging_current: 0 - } + frontLeft: 0, + frontLeftMiddle: 0, + frontRightMiddle: 0, + frontRight: 0, + rearLeft: 0, + rearLeftMiddle: 0, + rearRightMiddle: 0, + rearRight: 0, + active: false, + hour: 0, + minute: 0, + second: 0, + interior: "--", + exterior: "--", + coolant: "--", + brightness: 0, + adjustedBrightness: 0, + offset: 20, + auto: true, + speed: 0, + fuel: 0, + alternator: 0, + gear: 0, + voltage: 0, + charging_current: 0 }; exports.mediumSpeedPrev = mediumSpeedPrev; let entertainmentBus = { @@ -115,8 +95,8 @@ exports.entertainmentBusPrev = entertainmentBusPrev; let vehicleInfo = { setupInfoLine: "Welcome - First Time Setup Wizard", firstTimeSetup: false, - vinDecode: true, - setupStep: 32, + vinDecode: false, + setupStep: 0, CCFID: "-", As_Built: "", VIN: "-", @@ -137,7 +117,7 @@ let vehicleInfo = { exports.vehicleInfo = vehicleInfo; let vehicleInfoPrev = { setupInfoLine: "Welcome - First Time Setup Wizard", - firstTimeSetup: true, + firstTimeSetup: false, vinDecode: false, setupStep: 0, CCFID: "-", @@ -159,21 +139,21 @@ let vehicleInfoPrev = { }; exports.vehicleInfoPrev = vehicleInfoPrev; function ms488(msg) { - mediumSpeed.parking.active = msg.data.readUint8(1) & 128; - if (mediumSpeed.parking.active) { + mediumSpeed.active = msg.data.readUint8(1) & 128; + if (mediumSpeed.active) { let tempData = msg.data.readUint32BE(1); tempData = tempData << 12 >>> 12; const mask = 31; - mediumSpeed.parking.frontLeft = tempData & mask; - mediumSpeed.parking.frontRight = tempData >>> 15 & mask; - mediumSpeed.parking.frontLeftMiddle = tempData >>> 5 & mask; - mediumSpeed.parking.frontRightMiddle = tempData >>> 10 & mask; + mediumSpeed.frontLeft = tempData & mask; + mediumSpeed.frontRight = tempData >>> 15 & mask; + mediumSpeed.frontLeftMiddle = tempData >>> 5 & mask; + mediumSpeed.frontRightMiddle = tempData >>> 10 & mask; tempData = msg.data.readUint32BE(4); tempData = tempData << 12 >>> 12; - mediumSpeed.parking.rearLeft = tempData & mask; - mediumSpeed.parking.rearRight = tempData >>> 10 & mask; - mediumSpeed.parking.rearLeftMiddle = tempData >>> 5 & mask; - mediumSpeed.parking.rearRightMiddle = tempData >>> 15 & mask; + mediumSpeed.rearLeft = tempData & mask; + mediumSpeed.rearRight = tempData >>> 10 & mask; + mediumSpeed.rearLeftMiddle = tempData >>> 5 & mask; + mediumSpeed.rearRightMiddle = tempData >>> 15 & mask; } } module.exports = ms488; @@ -41871,13 +41851,355 @@ let Vehicle_Manifest = { ] }; exports.Vehicle_Manifest = Vehicle_Manifest; +var arrBuilder = [ + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-" +]; +var CCF = ""; +var CCFString = ""; +var is_modelid = false; +var is_model = false; +var is_ccfid = false; +var setup = false; +vehicleInfo.VIN = "-"; +vehicleInfo.Model_id = "-"; +vehicleInfo.brand = "-"; +vehicleInfo.model = "-"; +vehicleInfo.modelName = "-"; +vehicleInfo.market = "-"; +vehicleInfo.bodyStyle = "-"; +vehicleInfo.trim = "-"; +vehicleInfo.emission = "-"; +vehicleInfo.modelYear = "-"; +vehicleInfo.plant = "-"; +vehicleInfo.driver = "-"; +vehicleInfo.transmission = "-"; +vehicleInfo.engine = "-"; function ms1025(msg, window) { + if (!setup) { + if (arrBuilder.includes("-")) { + vehicleInfo.setupStep = vehicleInfo.setupStep + 1; + msg.id; + const arr = [...msg.data]; + var arrData = [arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7]]; + for (var i = 0; i < arrData.length; i++) { + arrData[i] = arrData[i].toString(16); + if (arrData[i].length < 2) { + arrData[i] = "0" + arrData[i]; + } + } + vehicleInfo.setupInfoLine = "Parsing VIN data: " + vehicleInfo.setupStep + "/28 blocks received"; + arrBuilder[parseInt(arr[0]) - 1] = arrData; + } else { + if (vehicleInfo.firstTimeSetup && !vehicleInfo.vinDecode) { + vehicleInfo.setupInfoLine = "Calculating VIN..."; + console.log("All CCF data received"); + CCF = arrBuilder.join(""); + CCF = CCF.replaceAll(",", ""); + CCFString = hex2a(CCF); + vehicleInfo.VIN = CCFString.substring(3, 20); + console.log("This vehicles VIN: " + vehicleInfo.VIN); + if (vehicleInfo.VIN.length === 17) { + console.log("VIN is valid"); + vehicleInfo.setupInfoLine = "Decoding VIN: Fetching Model ID"; + decodeModelID(vehicleInfo.VIN); + if (is_modelid) { + console.log("Model ID: " + vehicleInfo.Model_id); + vehicleInfo.setupInfoLine = "Decoding VIN: Fetching Model"; + decodeModel(vehicleInfo.VIN); + if (is_model) { + vehicleInfo.setupInfoLine = "Decoding VIN: Fetching CCF ID and As Built"; + decodeCCFID(); + if (is_ccfid) { + vehicleInfo.setupInfoLine = "Decoding CCF: Well... On day I we will decode the CCF"; + console.log("It would appear that all the vehicle info has been decoded!"); + vehicleInfo.vinDecode = true; + } + } + } + } + if (!vehicleInfo.vinDecode) { + vehicleInfo.setupInfoLine = "Oops! Something went wrong! We will try again!"; + arrBuilder = [ + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-" + ]; + CCF = ""; + CCFString = ""; + vehicleInfo.firstTimeSetup = true; + vehicleInfo.vinDecode = false; + vehicleInfo.CCFID = "-"; + vehicleInfo.As_Built = "-"; + vehicleInfo.VIN = "-"; + vehicleInfo.Model_id = "-"; + vehicleInfo.Brand = "-"; + vehicleInfo.Model = "-"; + vehicleInfo.ModelName = "-"; + vehicleInfo.Market = "-"; + vehicleInfo.BodyStyle = "-"; + vehicleInfo.Trim = "-"; + vehicleInfo.Emission = "-"; + vehicleInfo.ModelYear = "-"; + vehicleInfo.Plant = "-"; + vehicleInfo.Driver = "-"; + vehicleInfo.Transmission = "-"; + vehicleInfo.Engine = "-"; + } + } else if (!vehicleInfo.firstTimeSetup && !vehicleInfo.vinDecode) { + CCF = arrBuilder.join(""); + CCF = CCF.replaceAll(",", ""); + CCFString = hex2a(CCF); + let VIN = CCFString.substring(3, 20); + if (VIN === vehicleInfo.VIN) { + vehicleInfo.vinDecode = true; + setup = true; + } else { + vehicleInfo.firstTimeSetup = true; + vehicleInfo.vinDecode = false; + vehicleInfo.VIN = VIN; + vehicleInfo.CCFID = "-"; + vehicleInfo.As_Built = "-"; + vehicleInfo.Model_id = "-"; + vehicleInfo.Brand = "-"; + vehicleInfo.Model = "-"; + vehicleInfo.ModelName = "-"; + vehicleInfo.Market = "-"; + vehicleInfo.BodyStyle = "-"; + vehicleInfo.Trim = "-"; + vehicleInfo.Emission = "-"; + vehicleInfo.ModelYear = "-"; + vehicleInfo.Plant = "-"; + vehicleInfo.Driver = "-"; + vehicleInfo.Transmission = "-"; + vehicleInfo.Engine = "-"; + } + } else if (vehicleInfo.vinDecode) { + setup = true; + setTimeout(() => { + window.webContents.send("fadeOut", "now"); + setTimeout(() => { + vehicleInfo.firstTimeSetup = false; + }, 2e3); + }, 2e3); + } + } + } +} +function decodeModelID(VIN) { + var charpos = "1,3"; + var opt = ""; + var charval = ""; + var val_test = ""; + is_modelid = false; + for (var i = 0; i < VINDecode["Models"].length; i++) { + console.log("Running Model: " + i); + console.log("Number of Tests to run: " + VINDecode["Models"][i]["Test"].length); + if (VINDecode["Models"][i]["Test"].length) { + for (var x = 0; x < VINDecode["Models"][i]["Test"].length + 1; x++) { + charpos = VINDecode.Models[i].Test[x].CharPos; + opt = VINDecode.Models[i].Test[x].Operator; + charval = VINDecode.Models[i].Test[x].CharValue; + if (charpos.includes(",")) { + val_test = VIN.substring(parseInt(charpos.charAt(0)) - 1, parseInt(charpos.charAt(2))); + console.log("val_test: " + val_test); + } else { + val_test = VIN.charAt(parseInt(charpos - 1)); + console.log("val_test: " + val_test); + } + if (opt === "EQUAL") { + if (val_test === charval) { + is_modelid = true; + console.log( + "SOMETHING MATCHED! " + val_test + " matched with " + VINDecode.Models[i].DecodeModel + ); + } else { + is_modelid = false; + } + } else if (opt === "NOT_EQUAL") { + if (val_test != charval) { + is_modelid = true; + } else { + is_modelid = false; + } + } + if (is_modelid === false) { + break; + } + } + } else { + charpos = VINDecode.Models[i].Test.CharPos; + opt = VINDecode.Models[i].Test.Operator; + charval = VINDecode.Models[i].Test.CharValue; + if (charpos.includes(",")) { + val_test = VIN.substring(parseInt(charpos.charAt(0)) - 1, parseInt(charpos.charAt(2))); + console.log("val_test: " + val_test); + } else { + val_test = VIN.charAt(parseInt(charpos - 1)); + console.log("val_test: " + val_test); + } + if (opt === "EQUAL") { + if (val_test == charval) { + is_modelid = true; + console.log( + "SOMETHING MATCHED! " + val_test + " matched with " + VINDecode.Models[i].DecodeModel + ); + } else { + is_modelid = false; + } + } else if (opt === "NOT_EQUAL") { + if (val_test != charval) { + is_modelid = true; + } else { + is_modelid = false; + } + } + } + if (is_modelid) { + vehicleInfo.Model_id = VINDecode.Models[i].DecodeModel; + console.log("decodeModelID Passed: " + vehicleInfo.Model_id); + break; + } + } + if (!is_modelid) { + console.error("All tests have failed!\nIs this a JLR Vehicle?\nVIN: " + vehicleInfo.VIN); + vehicleInfo.setupInfoLine = "Are you sure this is a JLR Vehicle?"; + } +} +function decodeModel(VIN) { + var charpos = "1,3"; + var val_test = ""; + var name = ""; + is_model = false; + const result = VINDecode.Decodes.find((Decode) => Decode.id == vehicleInfo.Model_id); + console.log(result); + for (var i = 0; i < result.Attribute.length; i++) { + console.log("Running Attribute: " + i); + if (!result.Attribute[i].Char) { + name = result.Attribute[i].Name; + vehicleInfo[name] = result.Attribute[i].Decode; + } else { + charpos = result.Attribute[i].Char; + if (charpos.includes(",")) { + val_test = VIN.substring(parseInt(charpos.charAt(0) - 1), parseInt(charpos.charAt(2))); + } else { + val_test = VIN.charAt(parseInt(charpos - 1)); + } + name = result.Attribute[i].Name; + for (var x = 0; x < result.Attribute[i].Value.length; x++) { + if (val_test == result.Attribute[i].Value[x].Value) { + vehicleInfo[name] = result.Attribute[i].Value[x].Decode; + break; + } + } + } + } + if (vehicleInfo.VIN != "-" && vehicleInfo.Model_id != "-" && vehicleInfo.Brand != "-" && vehicleInfo.Model != "-" && vehicleInfo.ModelName != "-" && vehicleInfo.Market != "-" && vehicleInfo.BodyStyle != "-" & vehicleInfo.Trim != "-" && vehicleInfo.ModelYear != "-" && vehicleInfo.Plant != "-" && vehicleInfo.Driver != "-" && vehicleInfo.Transmission != "-" && vehicleInfo.Engine != "-") { + console.log("decodeModel Passed: " + vehicleInfo.Model); + is_model = true; + } else { + is_model = false; + } +} +function decodeCCFID() { + is_ccfid = false; + var yeartest = ""; + var vinMin = ""; + var vinMax = ""; + var vinTest = vehicleInfo.VIN.substring(11, 17); + for (var x = 0; x < Vehicle_Manifest.vehicle_range.length; x++) { + if (Vehicle_Manifest.vehicle_range[x].brand === vehicleInfo.Brand.toLowerCase().replace(" ", "")) { + for (var y = 0; y < Vehicle_Manifest.vehicle_range[x].vehicle.length; y++) { + if (Vehicle_Manifest.vehicle_range[x].vehicle[y].model.id == vehicleInfo.Model) { + for (var z = 0; z < Vehicle_Manifest.vehicle_range[x].vehicle[y].variant.length; z++) { + yeartest = Vehicle_Manifest.vehicle_range[x].vehicle[y].variant[z].model_year.my_gui; + yeartest = yeartest.split(" - "); + if (vehicleInfo.ModelYear === yeartest[0] || vehicleInfo.ModelYear >= yeartest[0] && vehicleInfo.ModelYear <= yeartest[1]) { + vinMin = Vehicle_Manifest.vehicle_range[x].vehicle[y].variant[z].vin.min; + vinMax = Vehicle_Manifest.vehicle_range[x].vehicle[y].variant[z].vin.max; + if (vinTest >= vinMin && vinTest <= vinMax) { + vehicleInfo.CCFID = Vehicle_Manifest.vehicle_range[x].vehicle[y].variant[z].file_manifest.id; + vehicleInfo.As_Built = Vehicle_Manifest.vehicle_range[x].vehicle[y].as_built; + is_ccfid = true; + break; + } + } + } + } + if (is_ccfid) { + break; + } + } + } + if (is_ccfid) { + break; + } + } +} +function hex2a(str1) { + var hex = str1.toString(); + var str = ""; + for (var n = 0; n < hex.length; n += 2) { + str += String.fromCharCode(parseInt(hex.substr(n, 2), 16)); + } + return str; } module.exports = ms1025; function ms1168(msg) { const arr = [...msg.data]; var temp = (arr[5] + arr[6]) / 100 * 0.62137119; - mediumSpeed.vehicle.speed = temp; + mediumSpeed.speed = temp; } module.exports = ms1168; function ms1234(msg) { @@ -41889,9 +42211,9 @@ function ms1234(msg) { var hour = arr[5]; var minute = arr[6]; var second = arr[7]; - mediumSpeed.time.hour = hour < 10 ? "0" + arr[5] : arr[5]; - mediumSpeed.time.minute = minute < 10 ? "0" + arr[6] : arr[6]; - mediumSpeed.time.second = second < 10 ? "0" + arr[7] : arr[7]; + mediumSpeed.hour = hour < 10 ? "0" + arr[5] : arr[5]; + mediumSpeed.minute = minute < 10 ? "0" + arr[6] : arr[6]; + mediumSpeed.second = second < 10 ? "0" + arr[7] : arr[7]; } module.exports = ms1234; function ms1236(msg) { @@ -41908,14 +42230,14 @@ function ms1236(msg) { temp = temp.join(""); temp = parseInt(temp, 16) / 5; temp = temp.toFixed(1); - mediumSpeed.vehicle.fuel = temp; + mediumSpeed.fuel = temp; } module.exports = ms1236; function ms1249(msg) { const arr = [...msg.data]; var temp = arr[1] / 2 - 57; temp = temp.toFixed(1); - mediumSpeed.temperature.interior = temp; + mediumSpeed.interior = temp; } module.exports = ms1249; function ms1251(msg) { @@ -41933,9 +42255,9 @@ function ms1251(msg) { temp = parseInt(temp, 16) / 4; temp = Math.ceil(temp * 2) / 2; temp = temp.toFixed(1); - mediumSpeed.temperature.exterior = temp; + mediumSpeed.exterior = temp; temp = parseInt(arr[0], 16) - 60; - mediumSpeed.temperature.coolant = temp; + mediumSpeed.coolant = temp; } module.exports = ms1251; const IDs$1 = [488, 1025, 1168, 1234, 1236, 1249, 1251]; @@ -41943,9 +42265,9 @@ function parseMediumSpeed(msg, window) { if (IDs$1.includes(msg.id)) { if (msg.id === 488) { new ms488(msg); - } else if (msg.id === 1025) - ; - else if (msg.id === 1168) { + } else if (msg.id === 1025) { + new ms1025(msg, window); + } else if (msg.id === 1168) { new ms1168(msg); } else if (msg.id === 1234) { new ms1234(msg); @@ -42101,14 +42423,7 @@ const can = require("socketcan"); const fs = require("fs"); let msCanDump = ""; let hsCanDump = ""; -let changedMedium = { - // Best not to change this - parking: {}, - time: {}, - temperature: {}, - brightness: {}, - vehicle: {} -}; +let changedMedium = {}; let changedEntertainmentBus = {}; let changedVehicleInfo = {}; const server = function(window) { @@ -42155,7 +42470,7 @@ const server = function(window) { canDataMS = ""; canDataMSval = ""; } - parseMediumSpeed(msg); + parseMediumSpeed(msg, window); }); can1.addListener("onMessage", function(msg) { if (canRecordingHS) { @@ -42175,14 +42490,12 @@ const server = function(window) { can0.start(); can1.start(); ipcMain.on("actionBrightness", (event, msg) => { - mediumSpeed.brightness.offset = msg.value; - mediumSpeed.brightness.auto = msg.auto; - if (!mediumSpeed.brightness.auto) { - mediumSpeed.brightness.adjustedLight = Math.round(msg.value * (255 / 32.5)); - exec( - "echo " + mediumSpeed.brightness.adjustedLight + " > /sys/class/backlight/10-0045/brightness" - ); - mediumSpeedPrev.brightness.adjustedLight = mediumSpeed.brightness.adjustedLight; + mediumSpeed.offset = msg.value; + mediumSpeed.auto = msg.auto; + if (!mediumSpeed.auto) { + mediumSpeed.adjustedLight = Math.round(msg.value * (255 / 32.5)); + exec("echo " + mediumSpeed.adjustedLight + " > /sys/class/backlight/10-0045/brightness"); + mediumSpeedPrev.adjustedLight = mediumSpeed.adjustedLight; } }); ipcMain.on("canRecorder", (event, msg) => { @@ -42238,29 +42551,19 @@ const server = function(window) { }); setInterval(() => { let send = false; - if (mediumSpeed.brightness.adjustedLight !== mediumSpeedPrev.brightness.adjustedLight) { - exec( - "echo " + mediumSpeed.brightness.adjustedLight + " > /sys/class/backlight/10-0045/brightness" - ); + if (mediumSpeed.adjustedLight !== mediumSpeedPrev.adjustedLight) { + exec("echo " + mediumSpeed.adjustedLight + " > /sys/class/backlight/10-0045/brightness"); } for (const key in mediumSpeed) { - for (const [info, value] of Object.entries(mediumSpeed[key])) { - if (value !== mediumSpeedPrev[key][info]) { - send = true; - changedMedium[`${key}`][`${info}`] = value; - mediumSpeedPrev[`${key}`][`${info}`] = value; - } + if (mediumSpeed[key] !== mediumSpeedPrev[key]) { + send = true; + changedMedium[`${key}`] = mediumSpeed[key]; + mediumSpeedPrev[`${key}`] = mediumSpeed[key]; } } if (send) { window.webContents.send("mediumSpeed", changedMedium); - changedMedium = { - parking: {}, - time: {}, - temperature: {}, - brightness: {}, - vehicle: {} - }; + changedMedium = {}; } }, 100); setInterval(() => { @@ -42333,7 +42636,7 @@ function createWindow() { if (utils.is.dev) { mainWindow.webContents.openDevTools({ mode: "detach" }); } - console.log("Hello?"); + mainWindow.webContents.openDevTools({ mode: "detach" }); mainWindow.once("ready-to-show", () => { server(mainWindow); mainWindow.loadFile(path.join(__dirname, "../renderer/splashScreen.html")); diff --git a/out/renderer/assets/index-222068a4.js b/out/renderer/assets/index-222068a4.js deleted file mode 100644 index 517c396..0000000 --- a/out/renderer/assets/index-222068a4.js +++ /dev/null @@ -1,51828 +0,0 @@ -function _mergeNamespaces(n2, m2) { - for (var i2 = 0; i2 < m2.length; i2++) { - const e15 = m2[i2]; - if (typeof e15 !== "string" && !Array.isArray(e15)) { - for (const k2 in e15) { - if (k2 !== "default" && !(k2 in n2)) { - const d2 = Object.getOwnPropertyDescriptor(e15, k2); - if (d2) { - Object.defineProperty(n2, k2, d2.get ? d2 : { - enumerable: true, - get: () => e15[k2] - }); - } - } - } - } - } - return Object.freeze(Object.defineProperty(n2, Symbol.toStringTag, { value: "Module" })); -} -var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {}; -function getDefaultExportFromCjs(x2) { - return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, "default") ? x2["default"] : x2; -} -var jsxRuntime = { exports: {} }; -var reactJsxRuntime_production_min = {}; -var react$1 = { exports: {} }; -var react_production_min = {}; -/** - * @license React - * react.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -var l$4 = Symbol.for("react.element"), n$5 = Symbol.for("react.portal"), p$6 = Symbol.for("react.fragment"), q$6 = Symbol.for("react.strict_mode"), r$5 = Symbol.for("react.profiler"), t$4 = Symbol.for("react.provider"), u$3 = Symbol.for("react.context"), v$4 = Symbol.for("react.forward_ref"), w$3 = Symbol.for("react.suspense"), x$3 = Symbol.for("react.memo"), y$3 = Symbol.for("react.lazy"), z$3 = Symbol.iterator; -function A$3(a2) { - if (null === a2 || "object" !== typeof a2) - return null; - a2 = z$3 && a2[z$3] || a2["@@iterator"]; - return "function" === typeof a2 ? a2 : null; -} -var B$2 = { isMounted: function() { - return false; -}, enqueueForceUpdate: function() { -}, enqueueReplaceState: function() { -}, enqueueSetState: function() { -} }, C$1 = Object.assign, D$2 = {}; -function E$2(a2, b2, e15) { - this.props = a2; - this.context = b2; - this.refs = D$2; - this.updater = e15 || B$2; -} -E$2.prototype.isReactComponent = {}; -E$2.prototype.setState = function(a2, b2) { - if ("object" !== typeof a2 && "function" !== typeof a2 && null != a2) - throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables."); - this.updater.enqueueSetState(this, a2, b2, "setState"); -}; -E$2.prototype.forceUpdate = function(a2) { - this.updater.enqueueForceUpdate(this, a2, "forceUpdate"); -}; -function F() { -} -F.prototype = E$2.prototype; -function G$2(a2, b2, e15) { - this.props = a2; - this.context = b2; - this.refs = D$2; - this.updater = e15 || B$2; -} -var H$2 = G$2.prototype = new F(); -H$2.constructor = G$2; -C$1(H$2, E$2.prototype); -H$2.isPureReactComponent = true; -var I$2 = Array.isArray, J$1 = Object.prototype.hasOwnProperty, K$1 = { current: null }, L$2 = { key: true, ref: true, __self: true, __source: true }; -function M$2(a2, b2, e15) { - var d2, c2 = {}, k2 = null, h2 = null; - if (null != b2) - for (d2 in void 0 !== b2.ref && (h2 = b2.ref), void 0 !== b2.key && (k2 = "" + b2.key), b2) - J$1.call(b2, d2) && !L$2.hasOwnProperty(d2) && (c2[d2] = b2[d2]); - var g2 = arguments.length - 2; - if (1 === g2) - c2.children = e15; - else if (1 < g2) { - for (var f2 = Array(g2), m2 = 0; m2 < g2; m2++) - f2[m2] = arguments[m2 + 2]; - c2.children = f2; - } - if (a2 && a2.defaultProps) - for (d2 in g2 = a2.defaultProps, g2) - void 0 === c2[d2] && (c2[d2] = g2[d2]); - return { $$typeof: l$4, type: a2, key: k2, ref: h2, props: c2, _owner: K$1.current }; -} -function N$2(a2, b2) { - return { $$typeof: l$4, type: a2.type, key: b2, ref: a2.ref, props: a2.props, _owner: a2._owner }; -} -function O$2(a2) { - return "object" === typeof a2 && null !== a2 && a2.$$typeof === l$4; -} -function escape(a2) { - var b2 = { "=": "=0", ":": "=2" }; - return "$" + a2.replace(/[=:]/g, function(a3) { - return b2[a3]; - }); -} -var P$3 = /\/+/g; -function Q$2(a2, b2) { - return "object" === typeof a2 && null !== a2 && null != a2.key ? escape("" + a2.key) : b2.toString(36); -} -function R$2(a2, b2, e15, d2, c2) { - var k2 = typeof a2; - if ("undefined" === k2 || "boolean" === k2) - a2 = null; - var h2 = false; - if (null === a2) - h2 = true; - else - switch (k2) { - case "string": - case "number": - h2 = true; - break; - case "object": - switch (a2.$$typeof) { - case l$4: - case n$5: - h2 = true; - } - } - if (h2) - return h2 = a2, c2 = c2(h2), a2 = "" === d2 ? "." + Q$2(h2, 0) : d2, I$2(c2) ? (e15 = "", null != a2 && (e15 = a2.replace(P$3, "$&/") + "/"), R$2(c2, b2, e15, "", function(a3) { - return a3; - })) : null != c2 && (O$2(c2) && (c2 = N$2(c2, e15 + (!c2.key || h2 && h2.key === c2.key ? "" : ("" + c2.key).replace(P$3, "$&/") + "/") + a2)), b2.push(c2)), 1; - h2 = 0; - d2 = "" === d2 ? "." : d2 + ":"; - if (I$2(a2)) - for (var g2 = 0; g2 < a2.length; g2++) { - k2 = a2[g2]; - var f2 = d2 + Q$2(k2, g2); - h2 += R$2(k2, b2, e15, f2, c2); - } - else if (f2 = A$3(a2), "function" === typeof f2) - for (a2 = f2.call(a2), g2 = 0; !(k2 = a2.next()).done; ) - k2 = k2.value, f2 = d2 + Q$2(k2, g2++), h2 += R$2(k2, b2, e15, f2, c2); - else if ("object" === k2) - throw b2 = String(a2), Error("Objects are not valid as a React child (found: " + ("[object Object]" === b2 ? "object with keys {" + Object.keys(a2).join(", ") + "}" : b2) + "). If you meant to render a collection of children, use an array instead."); - return h2; -} -function S$2(a2, b2, e15) { - if (null == a2) - return a2; - var d2 = [], c2 = 0; - R$2(a2, d2, "", "", function(a3) { - return b2.call(e15, a3, c2++); - }); - return d2; -} -function T$1(a2) { - if (-1 === a2._status) { - var b2 = a2._result; - b2 = b2(); - b2.then(function(b3) { - if (0 === a2._status || -1 === a2._status) - a2._status = 1, a2._result = b3; - }, function(b3) { - if (0 === a2._status || -1 === a2._status) - a2._status = 2, a2._result = b3; - }); - -1 === a2._status && (a2._status = 0, a2._result = b2); - } - if (1 === a2._status) - return a2._result.default; - throw a2._result; -} -var U$2 = { current: null }, V$1 = { transition: null }, W$2 = { ReactCurrentDispatcher: U$2, ReactCurrentBatchConfig: V$1, ReactCurrentOwner: K$1 }; -react_production_min.Children = { map: S$2, forEach: function(a2, b2, e15) { - S$2(a2, function() { - b2.apply(this, arguments); - }, e15); -}, count: function(a2) { - var b2 = 0; - S$2(a2, function() { - b2++; - }); - return b2; -}, toArray: function(a2) { - return S$2(a2, function(a3) { - return a3; - }) || []; -}, only: function(a2) { - if (!O$2(a2)) - throw Error("React.Children.only expected to receive a single React element child."); - return a2; -} }; -react_production_min.Component = E$2; -react_production_min.Fragment = p$6; -react_production_min.Profiler = r$5; -react_production_min.PureComponent = G$2; -react_production_min.StrictMode = q$6; -react_production_min.Suspense = w$3; -react_production_min.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = W$2; -react_production_min.cloneElement = function(a2, b2, e15) { - if (null === a2 || void 0 === a2) - throw Error("React.cloneElement(...): The argument must be a React element, but you passed " + a2 + "."); - var d2 = C$1({}, a2.props), c2 = a2.key, k2 = a2.ref, h2 = a2._owner; - if (null != b2) { - void 0 !== b2.ref && (k2 = b2.ref, h2 = K$1.current); - void 0 !== b2.key && (c2 = "" + b2.key); - if (a2.type && a2.type.defaultProps) - var g2 = a2.type.defaultProps; - for (f2 in b2) - J$1.call(b2, f2) && !L$2.hasOwnProperty(f2) && (d2[f2] = void 0 === b2[f2] && void 0 !== g2 ? g2[f2] : b2[f2]); - } - var f2 = arguments.length - 2; - if (1 === f2) - d2.children = e15; - else if (1 < f2) { - g2 = Array(f2); - for (var m2 = 0; m2 < f2; m2++) - g2[m2] = arguments[m2 + 2]; - d2.children = g2; - } - return { $$typeof: l$4, type: a2.type, key: c2, ref: k2, props: d2, _owner: h2 }; -}; -react_production_min.createContext = function(a2) { - a2 = { $$typeof: u$3, _currentValue: a2, _currentValue2: a2, _threadCount: 0, Provider: null, Consumer: null, _defaultValue: null, _globalName: null }; - a2.Provider = { $$typeof: t$4, _context: a2 }; - return a2.Consumer = a2; -}; -react_production_min.createElement = M$2; -react_production_min.createFactory = function(a2) { - var b2 = M$2.bind(null, a2); - b2.type = a2; - return b2; -}; -react_production_min.createRef = function() { - return { current: null }; -}; -react_production_min.forwardRef = function(a2) { - return { $$typeof: v$4, render: a2 }; -}; -react_production_min.isValidElement = O$2; -react_production_min.lazy = function(a2) { - return { $$typeof: y$3, _payload: { _status: -1, _result: a2 }, _init: T$1 }; -}; -react_production_min.memo = function(a2, b2) { - return { $$typeof: x$3, type: a2, compare: void 0 === b2 ? null : b2 }; -}; -react_production_min.startTransition = function(a2) { - var b2 = V$1.transition; - V$1.transition = {}; - try { - a2(); - } finally { - V$1.transition = b2; - } -}; -react_production_min.unstable_act = function() { - throw Error("act(...) is not supported in production builds of React."); -}; -react_production_min.useCallback = function(a2, b2) { - return U$2.current.useCallback(a2, b2); -}; -react_production_min.useContext = function(a2) { - return U$2.current.useContext(a2); -}; -react_production_min.useDebugValue = function() { -}; -react_production_min.useDeferredValue = function(a2) { - return U$2.current.useDeferredValue(a2); -}; -react_production_min.useEffect = function(a2, b2) { - return U$2.current.useEffect(a2, b2); -}; -react_production_min.useId = function() { - return U$2.current.useId(); -}; -react_production_min.useImperativeHandle = function(a2, b2, e15) { - return U$2.current.useImperativeHandle(a2, b2, e15); -}; -react_production_min.useInsertionEffect = function(a2, b2) { - return U$2.current.useInsertionEffect(a2, b2); -}; -react_production_min.useLayoutEffect = function(a2, b2) { - return U$2.current.useLayoutEffect(a2, b2); -}; -react_production_min.useMemo = function(a2, b2) { - return U$2.current.useMemo(a2, b2); -}; -react_production_min.useReducer = function(a2, b2, e15) { - return U$2.current.useReducer(a2, b2, e15); -}; -react_production_min.useRef = function(a2) { - return U$2.current.useRef(a2); -}; -react_production_min.useState = function(a2) { - return U$2.current.useState(a2); -}; -react_production_min.useSyncExternalStore = function(a2, b2, e15) { - return U$2.current.useSyncExternalStore(a2, b2, e15); -}; -react_production_min.useTransition = function() { - return U$2.current.useTransition(); -}; -react_production_min.version = "18.2.0"; -{ - react$1.exports = react_production_min; -} -var reactExports = react$1.exports; -const React = /* @__PURE__ */ getDefaultExportFromCjs(reactExports); -const React$1 = /* @__PURE__ */ _mergeNamespaces({ - __proto__: null, - default: React -}, [reactExports]); -/** - * @license React - * react-jsx-runtime.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -var f$2 = reactExports, k$4 = Symbol.for("react.element"), l$3 = Symbol.for("react.fragment"), m$3 = Object.prototype.hasOwnProperty, n$4 = f$2.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, p$5 = { key: true, ref: true, __self: true, __source: true }; -function q$5(c2, a2, g2) { - var b2, d2 = {}, e15 = null, h2 = null; - void 0 !== g2 && (e15 = "" + g2); - void 0 !== a2.key && (e15 = "" + a2.key); - void 0 !== a2.ref && (h2 = a2.ref); - for (b2 in a2) - m$3.call(a2, b2) && !p$5.hasOwnProperty(b2) && (d2[b2] = a2[b2]); - if (c2 && c2.defaultProps) - for (b2 in a2 = c2.defaultProps, a2) - void 0 === d2[b2] && (d2[b2] = a2[b2]); - return { $$typeof: k$4, type: c2, key: e15, ref: h2, props: d2, _owner: n$4.current }; -} -reactJsxRuntime_production_min.Fragment = l$3; -reactJsxRuntime_production_min.jsx = q$5; -reactJsxRuntime_production_min.jsxs = q$5; -{ - jsxRuntime.exports = reactJsxRuntime_production_min; -} -var jsxRuntimeExports = jsxRuntime.exports; -var reactDom = { exports: {} }; -var reactDom_production_min = {}; -var scheduler = { exports: {} }; -var scheduler_production_min = {}; -/** - * @license React - * scheduler.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -(function(exports2) { - function f2(a2, b2) { - var c2 = a2.length; - a2.push(b2); - a: - for (; 0 < c2; ) { - var d2 = c2 - 1 >>> 1, e15 = a2[d2]; - if (0 < g2(e15, b2)) - a2[d2] = b2, a2[c2] = e15, c2 = d2; - else - break a; - } - } - function h2(a2) { - return 0 === a2.length ? null : a2[0]; - } - function k2(a2) { - if (0 === a2.length) - return null; - var b2 = a2[0], c2 = a2.pop(); - if (c2 !== b2) { - a2[0] = c2; - a: - for (var d2 = 0, e15 = a2.length, w2 = e15 >>> 1; d2 < w2; ) { - var m2 = 2 * (d2 + 1) - 1, C2 = a2[m2], n2 = m2 + 1, x2 = a2[n2]; - if (0 > g2(C2, c2)) - n2 < e15 && 0 > g2(x2, C2) ? (a2[d2] = x2, a2[n2] = c2, d2 = n2) : (a2[d2] = C2, a2[m2] = c2, d2 = m2); - else if (n2 < e15 && 0 > g2(x2, c2)) - a2[d2] = x2, a2[n2] = c2, d2 = n2; - else - break a; - } - } - return b2; - } - function g2(a2, b2) { - var c2 = a2.sortIndex - b2.sortIndex; - return 0 !== c2 ? c2 : a2.id - b2.id; - } - if ("object" === typeof performance && "function" === typeof performance.now) { - var l2 = performance; - exports2.unstable_now = function() { - return l2.now(); - }; - } else { - var p2 = Date, q2 = p2.now(); - exports2.unstable_now = function() { - return p2.now() - q2; - }; - } - var r2 = [], t2 = [], u2 = 1, v2 = null, y2 = 3, z2 = false, A2 = false, B2 = false, D2 = "function" === typeof setTimeout ? setTimeout : null, E2 = "function" === typeof clearTimeout ? clearTimeout : null, F2 = "undefined" !== typeof setImmediate ? setImmediate : null; - "undefined" !== typeof navigator && void 0 !== navigator.scheduling && void 0 !== navigator.scheduling.isInputPending && navigator.scheduling.isInputPending.bind(navigator.scheduling); - function G2(a2) { - for (var b2 = h2(t2); null !== b2; ) { - if (null === b2.callback) - k2(t2); - else if (b2.startTime <= a2) - k2(t2), b2.sortIndex = b2.expirationTime, f2(r2, b2); - else - break; - b2 = h2(t2); - } - } - function H2(a2) { - B2 = false; - G2(a2); - if (!A2) - if (null !== h2(r2)) - A2 = true, I2(J2); - else { - var b2 = h2(t2); - null !== b2 && K2(H2, b2.startTime - a2); - } - } - function J2(a2, b2) { - A2 = false; - B2 && (B2 = false, E2(L2), L2 = -1); - z2 = true; - var c2 = y2; - try { - G2(b2); - for (v2 = h2(r2); null !== v2 && (!(v2.expirationTime > b2) || a2 && !M2()); ) { - var d2 = v2.callback; - if ("function" === typeof d2) { - v2.callback = null; - y2 = v2.priorityLevel; - var e15 = d2(v2.expirationTime <= b2); - b2 = exports2.unstable_now(); - "function" === typeof e15 ? v2.callback = e15 : v2 === h2(r2) && k2(r2); - G2(b2); - } else - k2(r2); - v2 = h2(r2); - } - if (null !== v2) - var w2 = true; - else { - var m2 = h2(t2); - null !== m2 && K2(H2, m2.startTime - b2); - w2 = false; - } - return w2; - } finally { - v2 = null, y2 = c2, z2 = false; - } - } - var N2 = false, O2 = null, L2 = -1, P2 = 5, Q2 = -1; - function M2() { - return exports2.unstable_now() - Q2 < P2 ? false : true; - } - function R2() { - if (null !== O2) { - var a2 = exports2.unstable_now(); - Q2 = a2; - var b2 = true; - try { - b2 = O2(true, a2); - } finally { - b2 ? S2() : (N2 = false, O2 = null); - } - } else - N2 = false; - } - var S2; - if ("function" === typeof F2) - S2 = function() { - F2(R2); - }; - else if ("undefined" !== typeof MessageChannel) { - var T2 = new MessageChannel(), U2 = T2.port2; - T2.port1.onmessage = R2; - S2 = function() { - U2.postMessage(null); - }; - } else - S2 = function() { - D2(R2, 0); - }; - function I2(a2) { - O2 = a2; - N2 || (N2 = true, S2()); - } - function K2(a2, b2) { - L2 = D2(function() { - a2(exports2.unstable_now()); - }, b2); - } - exports2.unstable_IdlePriority = 5; - exports2.unstable_ImmediatePriority = 1; - exports2.unstable_LowPriority = 4; - exports2.unstable_NormalPriority = 3; - exports2.unstable_Profiling = null; - exports2.unstable_UserBlockingPriority = 2; - exports2.unstable_cancelCallback = function(a2) { - a2.callback = null; - }; - exports2.unstable_continueExecution = function() { - A2 || z2 || (A2 = true, I2(J2)); - }; - exports2.unstable_forceFrameRate = function(a2) { - 0 > a2 || 125 < a2 ? console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported") : P2 = 0 < a2 ? Math.floor(1e3 / a2) : 5; - }; - exports2.unstable_getCurrentPriorityLevel = function() { - return y2; - }; - exports2.unstable_getFirstCallbackNode = function() { - return h2(r2); - }; - exports2.unstable_next = function(a2) { - switch (y2) { - case 1: - case 2: - case 3: - var b2 = 3; - break; - default: - b2 = y2; - } - var c2 = y2; - y2 = b2; - try { - return a2(); - } finally { - y2 = c2; - } - }; - exports2.unstable_pauseExecution = function() { - }; - exports2.unstable_requestPaint = function() { - }; - exports2.unstable_runWithPriority = function(a2, b2) { - switch (a2) { - case 1: - case 2: - case 3: - case 4: - case 5: - break; - default: - a2 = 3; - } - var c2 = y2; - y2 = a2; - try { - return b2(); - } finally { - y2 = c2; - } - }; - exports2.unstable_scheduleCallback = function(a2, b2, c2) { - var d2 = exports2.unstable_now(); - "object" === typeof c2 && null !== c2 ? (c2 = c2.delay, c2 = "number" === typeof c2 && 0 < c2 ? d2 + c2 : d2) : c2 = d2; - switch (a2) { - case 1: - var e15 = -1; - break; - case 2: - e15 = 250; - break; - case 5: - e15 = 1073741823; - break; - case 4: - e15 = 1e4; - break; - default: - e15 = 5e3; - } - e15 = c2 + e15; - a2 = { id: u2++, callback: b2, priorityLevel: a2, startTime: c2, expirationTime: e15, sortIndex: -1 }; - c2 > d2 ? (a2.sortIndex = c2, f2(t2, a2), null === h2(r2) && a2 === h2(t2) && (B2 ? (E2(L2), L2 = -1) : B2 = true, K2(H2, c2 - d2))) : (a2.sortIndex = e15, f2(r2, a2), A2 || z2 || (A2 = true, I2(J2))); - return a2; - }; - exports2.unstable_shouldYield = M2; - exports2.unstable_wrapCallback = function(a2) { - var b2 = y2; - return function() { - var c2 = y2; - y2 = b2; - try { - return a2.apply(this, arguments); - } finally { - y2 = c2; - } - }; - }; -})(scheduler_production_min); -{ - scheduler.exports = scheduler_production_min; -} -var schedulerExports = scheduler.exports; -/** - * @license React - * react-dom.production.min.js - * - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ -var aa$1 = reactExports, ca$1 = schedulerExports; -function p$4(a2) { - for (var b2 = "https://reactjs.org/docs/error-decoder.html?invariant=" + a2, c2 = 1; c2 < arguments.length; c2++) - b2 += "&args[]=" + encodeURIComponent(arguments[c2]); - return "Minified React error #" + a2 + "; visit " + b2 + " for the full message or use the non-minified dev environment for full errors and additional helpful warnings."; -} -var da$1 = /* @__PURE__ */ new Set(), ea$1 = {}; -function fa$1(a2, b2) { - ha$1(a2, b2); - ha$1(a2 + "Capture", b2); -} -function ha$1(a2, b2) { - ea$1[a2] = b2; - for (a2 = 0; a2 < b2.length; a2++) - da$1.add(b2[a2]); -} -var ia$1 = !("undefined" === typeof window || "undefined" === typeof window.document || "undefined" === typeof window.document.createElement), ja$1 = Object.prototype.hasOwnProperty, ka$2 = /^[:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][:A-Z_a-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$/, la$1 = {}, ma$1 = {}; -function oa$1(a2) { - if (ja$1.call(ma$1, a2)) - return true; - if (ja$1.call(la$1, a2)) - return false; - if (ka$2.test(a2)) - return ma$1[a2] = true; - la$1[a2] = true; - return false; -} -function pa$1(a2, b2, c2, d2) { - if (null !== c2 && 0 === c2.type) - return false; - switch (typeof b2) { - case "function": - case "symbol": - return true; - case "boolean": - if (d2) - return false; - if (null !== c2) - return !c2.acceptsBooleans; - a2 = a2.toLowerCase().slice(0, 5); - return "data-" !== a2 && "aria-" !== a2; - default: - return false; - } -} -function qa$1(a2, b2, c2, d2) { - if (null === b2 || "undefined" === typeof b2 || pa$1(a2, b2, c2, d2)) - return true; - if (d2) - return false; - if (null !== c2) - switch (c2.type) { - case 3: - return !b2; - case 4: - return false === b2; - case 5: - return isNaN(b2); - case 6: - return isNaN(b2) || 1 > b2; - } - return false; -} -function v$3(a2, b2, c2, d2, e15, f2, g2) { - this.acceptsBooleans = 2 === b2 || 3 === b2 || 4 === b2; - this.attributeName = d2; - this.attributeNamespace = e15; - this.mustUseProperty = c2; - this.propertyName = a2; - this.type = b2; - this.sanitizeURL = f2; - this.removeEmptyString = g2; -} -var z$2 = {}; -"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(a2) { - z$2[a2] = new v$3(a2, 0, false, a2, null, false, false); -}); -[["acceptCharset", "accept-charset"], ["className", "class"], ["htmlFor", "for"], ["httpEquiv", "http-equiv"]].forEach(function(a2) { - var b2 = a2[0]; - z$2[b2] = new v$3(b2, 1, false, a2[1], null, false, false); -}); -["contentEditable", "draggable", "spellCheck", "value"].forEach(function(a2) { - z$2[a2] = new v$3(a2, 2, false, a2.toLowerCase(), null, false, false); -}); -["autoReverse", "externalResourcesRequired", "focusable", "preserveAlpha"].forEach(function(a2) { - z$2[a2] = new v$3(a2, 2, false, a2, null, false, false); -}); -"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope".split(" ").forEach(function(a2) { - z$2[a2] = new v$3(a2, 3, false, a2.toLowerCase(), null, false, false); -}); -["checked", "multiple", "muted", "selected"].forEach(function(a2) { - z$2[a2] = new v$3(a2, 3, true, a2, null, false, false); -}); -["capture", "download"].forEach(function(a2) { - z$2[a2] = new v$3(a2, 4, false, a2, null, false, false); -}); -["cols", "rows", "size", "span"].forEach(function(a2) { - z$2[a2] = new v$3(a2, 6, false, a2, null, false, false); -}); -["rowSpan", "start"].forEach(function(a2) { - z$2[a2] = new v$3(a2, 5, false, a2.toLowerCase(), null, false, false); -}); -var ra$1 = /[\-:]([a-z])/g; -function sa$1(a2) { - return a2[1].toUpperCase(); -} -"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height".split(" ").forEach(function(a2) { - var b2 = a2.replace( - ra$1, - sa$1 - ); - z$2[b2] = new v$3(b2, 1, false, a2, null, false, false); -}); -"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(a2) { - var b2 = a2.replace(ra$1, sa$1); - z$2[b2] = new v$3(b2, 1, false, a2, "http://www.w3.org/1999/xlink", false, false); -}); -["xml:base", "xml:lang", "xml:space"].forEach(function(a2) { - var b2 = a2.replace(ra$1, sa$1); - z$2[b2] = new v$3(b2, 1, false, a2, "http://www.w3.org/XML/1998/namespace", false, false); -}); -["tabIndex", "crossOrigin"].forEach(function(a2) { - z$2[a2] = new v$3(a2, 1, false, a2.toLowerCase(), null, false, false); -}); -z$2.xlinkHref = new v$3("xlinkHref", 1, false, "xlink:href", "http://www.w3.org/1999/xlink", true, false); -["src", "href", "action", "formAction"].forEach(function(a2) { - z$2[a2] = new v$3(a2, 1, false, a2.toLowerCase(), null, true, true); -}); -function ta$1(a2, b2, c2, d2) { - var e15 = z$2.hasOwnProperty(b2) ? z$2[b2] : null; - if (null !== e15 ? 0 !== e15.type : d2 || !(2 < b2.length) || "o" !== b2[0] && "O" !== b2[0] || "n" !== b2[1] && "N" !== b2[1]) - qa$1(b2, c2, e15, d2) && (c2 = null), d2 || null === e15 ? oa$1(b2) && (null === c2 ? a2.removeAttribute(b2) : a2.setAttribute(b2, "" + c2)) : e15.mustUseProperty ? a2[e15.propertyName] = null === c2 ? 3 === e15.type ? false : "" : c2 : (b2 = e15.attributeName, d2 = e15.attributeNamespace, null === c2 ? a2.removeAttribute(b2) : (e15 = e15.type, c2 = 3 === e15 || 4 === e15 && true === c2 ? "" : "" + c2, d2 ? a2.setAttributeNS(d2, b2, c2) : a2.setAttribute(b2, c2))); -} -var ua$1 = aa$1.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED, va$1 = Symbol.for("react.element"), wa$1 = Symbol.for("react.portal"), ya$1 = Symbol.for("react.fragment"), za$1 = Symbol.for("react.strict_mode"), Aa$1 = Symbol.for("react.profiler"), Ba$1 = Symbol.for("react.provider"), Ca$1 = Symbol.for("react.context"), Da$1 = Symbol.for("react.forward_ref"), Ea$1 = Symbol.for("react.suspense"), Fa$1 = Symbol.for("react.suspense_list"), Ga$1 = Symbol.for("react.memo"), Ha$1 = Symbol.for("react.lazy"); -var Ia$1 = Symbol.for("react.offscreen"); -var Ja$1 = Symbol.iterator; -function Ka$1(a2) { - if (null === a2 || "object" !== typeof a2) - return null; - a2 = Ja$1 && a2[Ja$1] || a2["@@iterator"]; - return "function" === typeof a2 ? a2 : null; -} -var A$2 = Object.assign, La$1; -function Ma$1(a2) { - if (void 0 === La$1) - try { - throw Error(); - } catch (c2) { - var b2 = c2.stack.trim().match(/\n( *(at )?)/); - La$1 = b2 && b2[1] || ""; - } - return "\n" + La$1 + a2; -} -var Na$1 = false; -function Oa$1(a2, b2) { - if (!a2 || Na$1) - return ""; - Na$1 = true; - var c2 = Error.prepareStackTrace; - Error.prepareStackTrace = void 0; - try { - if (b2) - if (b2 = function() { - throw Error(); - }, Object.defineProperty(b2.prototype, "props", { set: function() { - throw Error(); - } }), "object" === typeof Reflect && Reflect.construct) { - try { - Reflect.construct(b2, []); - } catch (l2) { - var d2 = l2; - } - Reflect.construct(a2, [], b2); - } else { - try { - b2.call(); - } catch (l2) { - d2 = l2; - } - a2.call(b2.prototype); - } - else { - try { - throw Error(); - } catch (l2) { - d2 = l2; - } - a2(); - } - } catch (l2) { - if (l2 && d2 && "string" === typeof l2.stack) { - for (var e15 = l2.stack.split("\n"), f2 = d2.stack.split("\n"), g2 = e15.length - 1, h2 = f2.length - 1; 1 <= g2 && 0 <= h2 && e15[g2] !== f2[h2]; ) - h2--; - for (; 1 <= g2 && 0 <= h2; g2--, h2--) - if (e15[g2] !== f2[h2]) { - if (1 !== g2 || 1 !== h2) { - do - if (g2--, h2--, 0 > h2 || e15[g2] !== f2[h2]) { - var k2 = "\n" + e15[g2].replace(" at new ", " at "); - a2.displayName && k2.includes("") && (k2 = k2.replace("", a2.displayName)); - return k2; - } - while (1 <= g2 && 0 <= h2); - } - break; - } - } - } finally { - Na$1 = false, Error.prepareStackTrace = c2; - } - return (a2 = a2 ? a2.displayName || a2.name : "") ? Ma$1(a2) : ""; -} -function Pa$1(a2) { - switch (a2.tag) { - case 5: - return Ma$1(a2.type); - case 16: - return Ma$1("Lazy"); - case 13: - return Ma$1("Suspense"); - case 19: - return Ma$1("SuspenseList"); - case 0: - case 2: - case 15: - return a2 = Oa$1(a2.type, false), a2; - case 11: - return a2 = Oa$1(a2.type.render, false), a2; - case 1: - return a2 = Oa$1(a2.type, true), a2; - default: - return ""; - } -} -function Qa$1(a2) { - if (null == a2) - return null; - if ("function" === typeof a2) - return a2.displayName || a2.name || null; - if ("string" === typeof a2) - return a2; - switch (a2) { - case ya$1: - return "Fragment"; - case wa$1: - return "Portal"; - case Aa$1: - return "Profiler"; - case za$1: - return "StrictMode"; - case Ea$1: - return "Suspense"; - case Fa$1: - return "SuspenseList"; - } - if ("object" === typeof a2) - switch (a2.$$typeof) { - case Ca$1: - return (a2.displayName || "Context") + ".Consumer"; - case Ba$1: - return (a2._context.displayName || "Context") + ".Provider"; - case Da$1: - var b2 = a2.render; - a2 = a2.displayName; - a2 || (a2 = b2.displayName || b2.name || "", a2 = "" !== a2 ? "ForwardRef(" + a2 + ")" : "ForwardRef"); - return a2; - case Ga$1: - return b2 = a2.displayName || null, null !== b2 ? b2 : Qa$1(a2.type) || "Memo"; - case Ha$1: - b2 = a2._payload; - a2 = a2._init; - try { - return Qa$1(a2(b2)); - } catch (c2) { - } - } - return null; -} -function Ra$1(a2) { - var b2 = a2.type; - switch (a2.tag) { - case 24: - return "Cache"; - case 9: - return (b2.displayName || "Context") + ".Consumer"; - case 10: - return (b2._context.displayName || "Context") + ".Provider"; - case 18: - return "DehydratedFragment"; - case 11: - return a2 = b2.render, a2 = a2.displayName || a2.name || "", b2.displayName || ("" !== a2 ? "ForwardRef(" + a2 + ")" : "ForwardRef"); - case 7: - return "Fragment"; - case 5: - return b2; - case 4: - return "Portal"; - case 3: - return "Root"; - case 6: - return "Text"; - case 16: - return Qa$1(b2); - case 8: - return b2 === za$1 ? "StrictMode" : "Mode"; - case 22: - return "Offscreen"; - case 12: - return "Profiler"; - case 21: - return "Scope"; - case 13: - return "Suspense"; - case 19: - return "SuspenseList"; - case 25: - return "TracingMarker"; - case 1: - case 0: - case 17: - case 2: - case 14: - case 15: - if ("function" === typeof b2) - return b2.displayName || b2.name || null; - if ("string" === typeof b2) - return b2; - } - return null; -} -function Sa$1(a2) { - switch (typeof a2) { - case "boolean": - case "number": - case "string": - case "undefined": - return a2; - case "object": - return a2; - default: - return ""; - } -} -function Ta$1(a2) { - var b2 = a2.type; - return (a2 = a2.nodeName) && "input" === a2.toLowerCase() && ("checkbox" === b2 || "radio" === b2); -} -function Ua$1(a2) { - var b2 = Ta$1(a2) ? "checked" : "value", c2 = Object.getOwnPropertyDescriptor(a2.constructor.prototype, b2), d2 = "" + a2[b2]; - if (!a2.hasOwnProperty(b2) && "undefined" !== typeof c2 && "function" === typeof c2.get && "function" === typeof c2.set) { - var e15 = c2.get, f2 = c2.set; - Object.defineProperty(a2, b2, { configurable: true, get: function() { - return e15.call(this); - }, set: function(a3) { - d2 = "" + a3; - f2.call(this, a3); - } }); - Object.defineProperty(a2, b2, { enumerable: c2.enumerable }); - return { getValue: function() { - return d2; - }, setValue: function(a3) { - d2 = "" + a3; - }, stopTracking: function() { - a2._valueTracker = null; - delete a2[b2]; - } }; - } -} -function Va$1(a2) { - a2._valueTracker || (a2._valueTracker = Ua$1(a2)); -} -function Wa$1(a2) { - if (!a2) - return false; - var b2 = a2._valueTracker; - if (!b2) - return true; - var c2 = b2.getValue(); - var d2 = ""; - a2 && (d2 = Ta$1(a2) ? a2.checked ? "true" : "false" : a2.value); - a2 = d2; - return a2 !== c2 ? (b2.setValue(a2), true) : false; -} -function Xa$1(a2) { - a2 = a2 || ("undefined" !== typeof document ? document : void 0); - if ("undefined" === typeof a2) - return null; - try { - return a2.activeElement || a2.body; - } catch (b2) { - return a2.body; - } -} -function Ya$1(a2, b2) { - var c2 = b2.checked; - return A$2({}, b2, { defaultChecked: void 0, defaultValue: void 0, value: void 0, checked: null != c2 ? c2 : a2._wrapperState.initialChecked }); -} -function Za$1(a2, b2) { - var c2 = null == b2.defaultValue ? "" : b2.defaultValue, d2 = null != b2.checked ? b2.checked : b2.defaultChecked; - c2 = Sa$1(null != b2.value ? b2.value : c2); - a2._wrapperState = { initialChecked: d2, initialValue: c2, controlled: "checkbox" === b2.type || "radio" === b2.type ? null != b2.checked : null != b2.value }; -} -function ab(a2, b2) { - b2 = b2.checked; - null != b2 && ta$1(a2, "checked", b2, false); -} -function bb(a2, b2) { - ab(a2, b2); - var c2 = Sa$1(b2.value), d2 = b2.type; - if (null != c2) - if ("number" === d2) { - if (0 === c2 && "" === a2.value || a2.value != c2) - a2.value = "" + c2; - } else - a2.value !== "" + c2 && (a2.value = "" + c2); - else if ("submit" === d2 || "reset" === d2) { - a2.removeAttribute("value"); - return; - } - b2.hasOwnProperty("value") ? cb(a2, b2.type, c2) : b2.hasOwnProperty("defaultValue") && cb(a2, b2.type, Sa$1(b2.defaultValue)); - null == b2.checked && null != b2.defaultChecked && (a2.defaultChecked = !!b2.defaultChecked); -} -function db(a2, b2, c2) { - if (b2.hasOwnProperty("value") || b2.hasOwnProperty("defaultValue")) { - var d2 = b2.type; - if (!("submit" !== d2 && "reset" !== d2 || void 0 !== b2.value && null !== b2.value)) - return; - b2 = "" + a2._wrapperState.initialValue; - c2 || b2 === a2.value || (a2.value = b2); - a2.defaultValue = b2; - } - c2 = a2.name; - "" !== c2 && (a2.name = ""); - a2.defaultChecked = !!a2._wrapperState.initialChecked; - "" !== c2 && (a2.name = c2); -} -function cb(a2, b2, c2) { - if ("number" !== b2 || Xa$1(a2.ownerDocument) !== a2) - null == c2 ? a2.defaultValue = "" + a2._wrapperState.initialValue : a2.defaultValue !== "" + c2 && (a2.defaultValue = "" + c2); -} -var eb = Array.isArray; -function fb(a2, b2, c2, d2) { - a2 = a2.options; - if (b2) { - b2 = {}; - for (var e15 = 0; e15 < c2.length; e15++) - b2["$" + c2[e15]] = true; - for (c2 = 0; c2 < a2.length; c2++) - e15 = b2.hasOwnProperty("$" + a2[c2].value), a2[c2].selected !== e15 && (a2[c2].selected = e15), e15 && d2 && (a2[c2].defaultSelected = true); - } else { - c2 = "" + Sa$1(c2); - b2 = null; - for (e15 = 0; e15 < a2.length; e15++) { - if (a2[e15].value === c2) { - a2[e15].selected = true; - d2 && (a2[e15].defaultSelected = true); - return; - } - null !== b2 || a2[e15].disabled || (b2 = a2[e15]); - } - null !== b2 && (b2.selected = true); - } -} -function gb(a2, b2) { - if (null != b2.dangerouslySetInnerHTML) - throw Error(p$4(91)); - return A$2({}, b2, { value: void 0, defaultValue: void 0, children: "" + a2._wrapperState.initialValue }); -} -function hb(a2, b2) { - var c2 = b2.value; - if (null == c2) { - c2 = b2.children; - b2 = b2.defaultValue; - if (null != c2) { - if (null != b2) - throw Error(p$4(92)); - if (eb(c2)) { - if (1 < c2.length) - throw Error(p$4(93)); - c2 = c2[0]; - } - b2 = c2; - } - null == b2 && (b2 = ""); - c2 = b2; - } - a2._wrapperState = { initialValue: Sa$1(c2) }; -} -function ib(a2, b2) { - var c2 = Sa$1(b2.value), d2 = Sa$1(b2.defaultValue); - null != c2 && (c2 = "" + c2, c2 !== a2.value && (a2.value = c2), null == b2.defaultValue && a2.defaultValue !== c2 && (a2.defaultValue = c2)); - null != d2 && (a2.defaultValue = "" + d2); -} -function jb(a2) { - var b2 = a2.textContent; - b2 === a2._wrapperState.initialValue && "" !== b2 && null !== b2 && (a2.value = b2); -} -function kb(a2) { - switch (a2) { - case "svg": - return "http://www.w3.org/2000/svg"; - case "math": - return "http://www.w3.org/1998/Math/MathML"; - default: - return "http://www.w3.org/1999/xhtml"; - } -} -function lb(a2, b2) { - return null == a2 || "http://www.w3.org/1999/xhtml" === a2 ? kb(b2) : "http://www.w3.org/2000/svg" === a2 && "foreignObject" === b2 ? "http://www.w3.org/1999/xhtml" : a2; -} -var mb, nb = function(a2) { - return "undefined" !== typeof MSApp && MSApp.execUnsafeLocalFunction ? function(b2, c2, d2, e15) { - MSApp.execUnsafeLocalFunction(function() { - return a2(b2, c2, d2, e15); - }); - } : a2; -}(function(a2, b2) { - if ("http://www.w3.org/2000/svg" !== a2.namespaceURI || "innerHTML" in a2) - a2.innerHTML = b2; - else { - mb = mb || document.createElement("div"); - mb.innerHTML = "" + b2.valueOf().toString() + ""; - for (b2 = mb.firstChild; a2.firstChild; ) - a2.removeChild(a2.firstChild); - for (; b2.firstChild; ) - a2.appendChild(b2.firstChild); - } -}); -function ob(a2, b2) { - if (b2) { - var c2 = a2.firstChild; - if (c2 && c2 === a2.lastChild && 3 === c2.nodeType) { - c2.nodeValue = b2; - return; - } - } - a2.textContent = b2; -} -var pb = { - animationIterationCount: true, - aspectRatio: true, - borderImageOutset: true, - borderImageSlice: true, - borderImageWidth: true, - boxFlex: true, - boxFlexGroup: true, - boxOrdinalGroup: true, - columnCount: true, - columns: true, - flex: true, - flexGrow: true, - flexPositive: true, - flexShrink: true, - flexNegative: true, - flexOrder: true, - gridArea: true, - gridRow: true, - gridRowEnd: true, - gridRowSpan: true, - gridRowStart: true, - gridColumn: true, - gridColumnEnd: true, - gridColumnSpan: true, - gridColumnStart: true, - fontWeight: true, - lineClamp: true, - lineHeight: true, - opacity: true, - order: true, - orphans: true, - tabSize: true, - widows: true, - zIndex: true, - zoom: true, - fillOpacity: true, - floodOpacity: true, - stopOpacity: true, - strokeDasharray: true, - strokeDashoffset: true, - strokeMiterlimit: true, - strokeOpacity: true, - strokeWidth: true -}, qb = ["Webkit", "ms", "Moz", "O"]; -Object.keys(pb).forEach(function(a2) { - qb.forEach(function(b2) { - b2 = b2 + a2.charAt(0).toUpperCase() + a2.substring(1); - pb[b2] = pb[a2]; - }); -}); -function rb(a2, b2, c2) { - return null == b2 || "boolean" === typeof b2 || "" === b2 ? "" : c2 || "number" !== typeof b2 || 0 === b2 || pb.hasOwnProperty(a2) && pb[a2] ? ("" + b2).trim() : b2 + "px"; -} -function sb(a2, b2) { - a2 = a2.style; - for (var c2 in b2) - if (b2.hasOwnProperty(c2)) { - var d2 = 0 === c2.indexOf("--"), e15 = rb(c2, b2[c2], d2); - "float" === c2 && (c2 = "cssFloat"); - d2 ? a2.setProperty(c2, e15) : a2[c2] = e15; - } -} -var tb = A$2({ menuitem: true }, { area: true, base: true, br: true, col: true, embed: true, hr: true, img: true, input: true, keygen: true, link: true, meta: true, param: true, source: true, track: true, wbr: true }); -function ub(a2, b2) { - if (b2) { - if (tb[a2] && (null != b2.children || null != b2.dangerouslySetInnerHTML)) - throw Error(p$4(137, a2)); - if (null != b2.dangerouslySetInnerHTML) { - if (null != b2.children) - throw Error(p$4(60)); - if ("object" !== typeof b2.dangerouslySetInnerHTML || !("__html" in b2.dangerouslySetInnerHTML)) - throw Error(p$4(61)); - } - if (null != b2.style && "object" !== typeof b2.style) - throw Error(p$4(62)); - } -} -function vb(a2, b2) { - if (-1 === a2.indexOf("-")) - return "string" === typeof b2.is; - switch (a2) { - case "annotation-xml": - case "color-profile": - case "font-face": - case "font-face-src": - case "font-face-uri": - case "font-face-format": - case "font-face-name": - case "missing-glyph": - return false; - default: - return true; - } -} -var wb = null; -function xb(a2) { - a2 = a2.target || a2.srcElement || window; - a2.correspondingUseElement && (a2 = a2.correspondingUseElement); - return 3 === a2.nodeType ? a2.parentNode : a2; -} -var yb = null, zb = null, Ab = null; -function Bb(a2) { - if (a2 = Cb(a2)) { - if ("function" !== typeof yb) - throw Error(p$4(280)); - var b2 = a2.stateNode; - b2 && (b2 = Db(b2), yb(a2.stateNode, a2.type, b2)); - } -} -function Eb(a2) { - zb ? Ab ? Ab.push(a2) : Ab = [a2] : zb = a2; -} -function Fb() { - if (zb) { - var a2 = zb, b2 = Ab; - Ab = zb = null; - Bb(a2); - if (b2) - for (a2 = 0; a2 < b2.length; a2++) - Bb(b2[a2]); - } -} -function Gb(a2, b2) { - return a2(b2); -} -function Hb() { -} -var Ib = false; -function Jb(a2, b2, c2) { - if (Ib) - return a2(b2, c2); - Ib = true; - try { - return Gb(a2, b2, c2); - } finally { - if (Ib = false, null !== zb || null !== Ab) - Hb(), Fb(); - } -} -function Kb(a2, b2) { - var c2 = a2.stateNode; - if (null === c2) - return null; - var d2 = Db(c2); - if (null === d2) - return null; - c2 = d2[b2]; - a: - switch (b2) { - case "onClick": - case "onClickCapture": - case "onDoubleClick": - case "onDoubleClickCapture": - case "onMouseDown": - case "onMouseDownCapture": - case "onMouseMove": - case "onMouseMoveCapture": - case "onMouseUp": - case "onMouseUpCapture": - case "onMouseEnter": - (d2 = !d2.disabled) || (a2 = a2.type, d2 = !("button" === a2 || "input" === a2 || "select" === a2 || "textarea" === a2)); - a2 = !d2; - break a; - default: - a2 = false; - } - if (a2) - return null; - if (c2 && "function" !== typeof c2) - throw Error(p$4(231, b2, typeof c2)); - return c2; -} -var Lb = false; -if (ia$1) - try { - var Mb = {}; - Object.defineProperty(Mb, "passive", { get: function() { - Lb = true; - } }); - window.addEventListener("test", Mb, Mb); - window.removeEventListener("test", Mb, Mb); - } catch (a2) { - Lb = false; - } -function Nb(a2, b2, c2, d2, e15, f2, g2, h2, k2) { - var l2 = Array.prototype.slice.call(arguments, 3); - try { - b2.apply(c2, l2); - } catch (m2) { - this.onError(m2); - } -} -var Ob = false, Pb = null, Qb = false, Rb = null, Sb = { onError: function(a2) { - Ob = true; - Pb = a2; -} }; -function Tb(a2, b2, c2, d2, e15, f2, g2, h2, k2) { - Ob = false; - Pb = null; - Nb.apply(Sb, arguments); -} -function Ub(a2, b2, c2, d2, e15, f2, g2, h2, k2) { - Tb.apply(this, arguments); - if (Ob) { - if (Ob) { - var l2 = Pb; - Ob = false; - Pb = null; - } else - throw Error(p$4(198)); - Qb || (Qb = true, Rb = l2); - } -} -function Vb(a2) { - var b2 = a2, c2 = a2; - if (a2.alternate) - for (; b2.return; ) - b2 = b2.return; - else { - a2 = b2; - do - b2 = a2, 0 !== (b2.flags & 4098) && (c2 = b2.return), a2 = b2.return; - while (a2); - } - return 3 === b2.tag ? c2 : null; -} -function Wb(a2) { - if (13 === a2.tag) { - var b2 = a2.memoizedState; - null === b2 && (a2 = a2.alternate, null !== a2 && (b2 = a2.memoizedState)); - if (null !== b2) - return b2.dehydrated; - } - return null; -} -function Xb(a2) { - if (Vb(a2) !== a2) - throw Error(p$4(188)); -} -function Yb(a2) { - var b2 = a2.alternate; - if (!b2) { - b2 = Vb(a2); - if (null === b2) - throw Error(p$4(188)); - return b2 !== a2 ? null : a2; - } - for (var c2 = a2, d2 = b2; ; ) { - var e15 = c2.return; - if (null === e15) - break; - var f2 = e15.alternate; - if (null === f2) { - d2 = e15.return; - if (null !== d2) { - c2 = d2; - continue; - } - break; - } - if (e15.child === f2.child) { - for (f2 = e15.child; f2; ) { - if (f2 === c2) - return Xb(e15), a2; - if (f2 === d2) - return Xb(e15), b2; - f2 = f2.sibling; - } - throw Error(p$4(188)); - } - if (c2.return !== d2.return) - c2 = e15, d2 = f2; - else { - for (var g2 = false, h2 = e15.child; h2; ) { - if (h2 === c2) { - g2 = true; - c2 = e15; - d2 = f2; - break; - } - if (h2 === d2) { - g2 = true; - d2 = e15; - c2 = f2; - break; - } - h2 = h2.sibling; - } - if (!g2) { - for (h2 = f2.child; h2; ) { - if (h2 === c2) { - g2 = true; - c2 = f2; - d2 = e15; - break; - } - if (h2 === d2) { - g2 = true; - d2 = f2; - c2 = e15; - break; - } - h2 = h2.sibling; - } - if (!g2) - throw Error(p$4(189)); - } - } - if (c2.alternate !== d2) - throw Error(p$4(190)); - } - if (3 !== c2.tag) - throw Error(p$4(188)); - return c2.stateNode.current === c2 ? a2 : b2; -} -function Zb(a2) { - a2 = Yb(a2); - return null !== a2 ? $b(a2) : null; -} -function $b(a2) { - if (5 === a2.tag || 6 === a2.tag) - return a2; - for (a2 = a2.child; null !== a2; ) { - var b2 = $b(a2); - if (null !== b2) - return b2; - a2 = a2.sibling; - } - return null; -} -var ac = ca$1.unstable_scheduleCallback, bc = ca$1.unstable_cancelCallback, cc = ca$1.unstable_shouldYield, dc = ca$1.unstable_requestPaint, B$1 = ca$1.unstable_now, ec = ca$1.unstable_getCurrentPriorityLevel, fc = ca$1.unstable_ImmediatePriority, gc = ca$1.unstable_UserBlockingPriority, hc = ca$1.unstable_NormalPriority, ic = ca$1.unstable_LowPriority, jc = ca$1.unstable_IdlePriority, kc = null, lc = null; -function mc(a2) { - if (lc && "function" === typeof lc.onCommitFiberRoot) - try { - lc.onCommitFiberRoot(kc, a2, void 0, 128 === (a2.current.flags & 128)); - } catch (b2) { - } -} -var oc = Math.clz32 ? Math.clz32 : nc, pc = Math.log, qc = Math.LN2; -function nc(a2) { - a2 >>>= 0; - return 0 === a2 ? 32 : 31 - (pc(a2) / qc | 0) | 0; -} -var rc = 64, sc = 4194304; -function tc(a2) { - switch (a2 & -a2) { - case 1: - return 1; - case 2: - return 2; - case 4: - return 4; - case 8: - return 8; - case 16: - return 16; - case 32: - return 32; - case 64: - case 128: - case 256: - case 512: - case 1024: - case 2048: - case 4096: - case 8192: - case 16384: - case 32768: - case 65536: - case 131072: - case 262144: - case 524288: - case 1048576: - case 2097152: - return a2 & 4194240; - case 4194304: - case 8388608: - case 16777216: - case 33554432: - case 67108864: - return a2 & 130023424; - case 134217728: - return 134217728; - case 268435456: - return 268435456; - case 536870912: - return 536870912; - case 1073741824: - return 1073741824; - default: - return a2; - } -} -function uc(a2, b2) { - var c2 = a2.pendingLanes; - if (0 === c2) - return 0; - var d2 = 0, e15 = a2.suspendedLanes, f2 = a2.pingedLanes, g2 = c2 & 268435455; - if (0 !== g2) { - var h2 = g2 & ~e15; - 0 !== h2 ? d2 = tc(h2) : (f2 &= g2, 0 !== f2 && (d2 = tc(f2))); - } else - g2 = c2 & ~e15, 0 !== g2 ? d2 = tc(g2) : 0 !== f2 && (d2 = tc(f2)); - if (0 === d2) - return 0; - if (0 !== b2 && b2 !== d2 && 0 === (b2 & e15) && (e15 = d2 & -d2, f2 = b2 & -b2, e15 >= f2 || 16 === e15 && 0 !== (f2 & 4194240))) - return b2; - 0 !== (d2 & 4) && (d2 |= c2 & 16); - b2 = a2.entangledLanes; - if (0 !== b2) - for (a2 = a2.entanglements, b2 &= d2; 0 < b2; ) - c2 = 31 - oc(b2), e15 = 1 << c2, d2 |= a2[c2], b2 &= ~e15; - return d2; -} -function vc(a2, b2) { - switch (a2) { - case 1: - case 2: - case 4: - return b2 + 250; - case 8: - case 16: - case 32: - case 64: - case 128: - case 256: - case 512: - case 1024: - case 2048: - case 4096: - case 8192: - case 16384: - case 32768: - case 65536: - case 131072: - case 262144: - case 524288: - case 1048576: - case 2097152: - return b2 + 5e3; - case 4194304: - case 8388608: - case 16777216: - case 33554432: - case 67108864: - return -1; - case 134217728: - case 268435456: - case 536870912: - case 1073741824: - return -1; - default: - return -1; - } -} -function wc(a2, b2) { - for (var c2 = a2.suspendedLanes, d2 = a2.pingedLanes, e15 = a2.expirationTimes, f2 = a2.pendingLanes; 0 < f2; ) { - var g2 = 31 - oc(f2), h2 = 1 << g2, k2 = e15[g2]; - if (-1 === k2) { - if (0 === (h2 & c2) || 0 !== (h2 & d2)) - e15[g2] = vc(h2, b2); - } else - k2 <= b2 && (a2.expiredLanes |= h2); - f2 &= ~h2; - } -} -function xc(a2) { - a2 = a2.pendingLanes & -1073741825; - return 0 !== a2 ? a2 : a2 & 1073741824 ? 1073741824 : 0; -} -function yc() { - var a2 = rc; - rc <<= 1; - 0 === (rc & 4194240) && (rc = 64); - return a2; -} -function zc(a2) { - for (var b2 = [], c2 = 0; 31 > c2; c2++) - b2.push(a2); - return b2; -} -function Ac(a2, b2, c2) { - a2.pendingLanes |= b2; - 536870912 !== b2 && (a2.suspendedLanes = 0, a2.pingedLanes = 0); - a2 = a2.eventTimes; - b2 = 31 - oc(b2); - a2[b2] = c2; -} -function Bc(a2, b2) { - var c2 = a2.pendingLanes & ~b2; - a2.pendingLanes = b2; - a2.suspendedLanes = 0; - a2.pingedLanes = 0; - a2.expiredLanes &= b2; - a2.mutableReadLanes &= b2; - a2.entangledLanes &= b2; - b2 = a2.entanglements; - var d2 = a2.eventTimes; - for (a2 = a2.expirationTimes; 0 < c2; ) { - var e15 = 31 - oc(c2), f2 = 1 << e15; - b2[e15] = 0; - d2[e15] = -1; - a2[e15] = -1; - c2 &= ~f2; - } -} -function Cc(a2, b2) { - var c2 = a2.entangledLanes |= b2; - for (a2 = a2.entanglements; c2; ) { - var d2 = 31 - oc(c2), e15 = 1 << d2; - e15 & b2 | a2[d2] & b2 && (a2[d2] |= b2); - c2 &= ~e15; - } -} -var C = 0; -function Dc(a2) { - a2 &= -a2; - return 1 < a2 ? 4 < a2 ? 0 !== (a2 & 268435455) ? 16 : 536870912 : 4 : 1; -} -var Ec, Fc, Gc, Hc, Ic, Jc = false, Kc = [], Lc = null, Mc = null, Nc = null, Oc = /* @__PURE__ */ new Map(), Pc = /* @__PURE__ */ new Map(), Qc = [], Rc = "mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit".split(" "); -function Sc(a2, b2) { - switch (a2) { - case "focusin": - case "focusout": - Lc = null; - break; - case "dragenter": - case "dragleave": - Mc = null; - break; - case "mouseover": - case "mouseout": - Nc = null; - break; - case "pointerover": - case "pointerout": - Oc.delete(b2.pointerId); - break; - case "gotpointercapture": - case "lostpointercapture": - Pc.delete(b2.pointerId); - } -} -function Tc(a2, b2, c2, d2, e15, f2) { - if (null === a2 || a2.nativeEvent !== f2) - return a2 = { blockedOn: b2, domEventName: c2, eventSystemFlags: d2, nativeEvent: f2, targetContainers: [e15] }, null !== b2 && (b2 = Cb(b2), null !== b2 && Fc(b2)), a2; - a2.eventSystemFlags |= d2; - b2 = a2.targetContainers; - null !== e15 && -1 === b2.indexOf(e15) && b2.push(e15); - return a2; -} -function Uc(a2, b2, c2, d2, e15) { - switch (b2) { - case "focusin": - return Lc = Tc(Lc, a2, b2, c2, d2, e15), true; - case "dragenter": - return Mc = Tc(Mc, a2, b2, c2, d2, e15), true; - case "mouseover": - return Nc = Tc(Nc, a2, b2, c2, d2, e15), true; - case "pointerover": - var f2 = e15.pointerId; - Oc.set(f2, Tc(Oc.get(f2) || null, a2, b2, c2, d2, e15)); - return true; - case "gotpointercapture": - return f2 = e15.pointerId, Pc.set(f2, Tc(Pc.get(f2) || null, a2, b2, c2, d2, e15)), true; - } - return false; -} -function Vc(a2) { - var b2 = Wc(a2.target); - if (null !== b2) { - var c2 = Vb(b2); - if (null !== c2) { - if (b2 = c2.tag, 13 === b2) { - if (b2 = Wb(c2), null !== b2) { - a2.blockedOn = b2; - Ic(a2.priority, function() { - Gc(c2); - }); - return; - } - } else if (3 === b2 && c2.stateNode.current.memoizedState.isDehydrated) { - a2.blockedOn = 3 === c2.tag ? c2.stateNode.containerInfo : null; - return; - } - } - } - a2.blockedOn = null; -} -function Xc(a2) { - if (null !== a2.blockedOn) - return false; - for (var b2 = a2.targetContainers; 0 < b2.length; ) { - var c2 = Yc(a2.domEventName, a2.eventSystemFlags, b2[0], a2.nativeEvent); - if (null === c2) { - c2 = a2.nativeEvent; - var d2 = new c2.constructor(c2.type, c2); - wb = d2; - c2.target.dispatchEvent(d2); - wb = null; - } else - return b2 = Cb(c2), null !== b2 && Fc(b2), a2.blockedOn = c2, false; - b2.shift(); - } - return true; -} -function Zc(a2, b2, c2) { - Xc(a2) && c2.delete(b2); -} -function $c() { - Jc = false; - null !== Lc && Xc(Lc) && (Lc = null); - null !== Mc && Xc(Mc) && (Mc = null); - null !== Nc && Xc(Nc) && (Nc = null); - Oc.forEach(Zc); - Pc.forEach(Zc); -} -function ad(a2, b2) { - a2.blockedOn === b2 && (a2.blockedOn = null, Jc || (Jc = true, ca$1.unstable_scheduleCallback(ca$1.unstable_NormalPriority, $c))); -} -function bd(a2) { - function b2(b3) { - return ad(b3, a2); - } - if (0 < Kc.length) { - ad(Kc[0], a2); - for (var c2 = 1; c2 < Kc.length; c2++) { - var d2 = Kc[c2]; - d2.blockedOn === a2 && (d2.blockedOn = null); - } - } - null !== Lc && ad(Lc, a2); - null !== Mc && ad(Mc, a2); - null !== Nc && ad(Nc, a2); - Oc.forEach(b2); - Pc.forEach(b2); - for (c2 = 0; c2 < Qc.length; c2++) - d2 = Qc[c2], d2.blockedOn === a2 && (d2.blockedOn = null); - for (; 0 < Qc.length && (c2 = Qc[0], null === c2.blockedOn); ) - Vc(c2), null === c2.blockedOn && Qc.shift(); -} -var cd = ua$1.ReactCurrentBatchConfig, dd = true; -function ed(a2, b2, c2, d2) { - var e15 = C, f2 = cd.transition; - cd.transition = null; - try { - C = 1, fd(a2, b2, c2, d2); - } finally { - C = e15, cd.transition = f2; - } -} -function gd(a2, b2, c2, d2) { - var e15 = C, f2 = cd.transition; - cd.transition = null; - try { - C = 4, fd(a2, b2, c2, d2); - } finally { - C = e15, cd.transition = f2; - } -} -function fd(a2, b2, c2, d2) { - if (dd) { - var e15 = Yc(a2, b2, c2, d2); - if (null === e15) - hd(a2, b2, d2, id, c2), Sc(a2, d2); - else if (Uc(e15, a2, b2, c2, d2)) - d2.stopPropagation(); - else if (Sc(a2, d2), b2 & 4 && -1 < Rc.indexOf(a2)) { - for (; null !== e15; ) { - var f2 = Cb(e15); - null !== f2 && Ec(f2); - f2 = Yc(a2, b2, c2, d2); - null === f2 && hd(a2, b2, d2, id, c2); - if (f2 === e15) - break; - e15 = f2; - } - null !== e15 && d2.stopPropagation(); - } else - hd(a2, b2, d2, null, c2); - } -} -var id = null; -function Yc(a2, b2, c2, d2) { - id = null; - a2 = xb(d2); - a2 = Wc(a2); - if (null !== a2) - if (b2 = Vb(a2), null === b2) - a2 = null; - else if (c2 = b2.tag, 13 === c2) { - a2 = Wb(b2); - if (null !== a2) - return a2; - a2 = null; - } else if (3 === c2) { - if (b2.stateNode.current.memoizedState.isDehydrated) - return 3 === b2.tag ? b2.stateNode.containerInfo : null; - a2 = null; - } else - b2 !== a2 && (a2 = null); - id = a2; - return null; -} -function jd(a2) { - switch (a2) { - case "cancel": - case "click": - case "close": - case "contextmenu": - case "copy": - case "cut": - case "auxclick": - case "dblclick": - case "dragend": - case "dragstart": - case "drop": - case "focusin": - case "focusout": - case "input": - case "invalid": - case "keydown": - case "keypress": - case "keyup": - case "mousedown": - case "mouseup": - case "paste": - case "pause": - case "play": - case "pointercancel": - case "pointerdown": - case "pointerup": - case "ratechange": - case "reset": - case "resize": - case "seeked": - case "submit": - case "touchcancel": - case "touchend": - case "touchstart": - case "volumechange": - case "change": - case "selectionchange": - case "textInput": - case "compositionstart": - case "compositionend": - case "compositionupdate": - case "beforeblur": - case "afterblur": - case "beforeinput": - case "blur": - case "fullscreenchange": - case "focus": - case "hashchange": - case "popstate": - case "select": - case "selectstart": - return 1; - case "drag": - case "dragenter": - case "dragexit": - case "dragleave": - case "dragover": - case "mousemove": - case "mouseout": - case "mouseover": - case "pointermove": - case "pointerout": - case "pointerover": - case "scroll": - case "toggle": - case "touchmove": - case "wheel": - case "mouseenter": - case "mouseleave": - case "pointerenter": - case "pointerleave": - return 4; - case "message": - switch (ec()) { - case fc: - return 1; - case gc: - return 4; - case hc: - case ic: - return 16; - case jc: - return 536870912; - default: - return 16; - } - default: - return 16; - } -} -var kd = null, ld = null, md = null; -function nd() { - if (md) - return md; - var a2, b2 = ld, c2 = b2.length, d2, e15 = "value" in kd ? kd.value : kd.textContent, f2 = e15.length; - for (a2 = 0; a2 < c2 && b2[a2] === e15[a2]; a2++) - ; - var g2 = c2 - a2; - for (d2 = 1; d2 <= g2 && b2[c2 - d2] === e15[f2 - d2]; d2++) - ; - return md = e15.slice(a2, 1 < d2 ? 1 - d2 : void 0); -} -function od(a2) { - var b2 = a2.keyCode; - "charCode" in a2 ? (a2 = a2.charCode, 0 === a2 && 13 === b2 && (a2 = 13)) : a2 = b2; - 10 === a2 && (a2 = 13); - return 32 <= a2 || 13 === a2 ? a2 : 0; -} -function pd() { - return true; -} -function qd() { - return false; -} -function rd(a2) { - function b2(b3, d2, e15, f2, g2) { - this._reactName = b3; - this._targetInst = e15; - this.type = d2; - this.nativeEvent = f2; - this.target = g2; - this.currentTarget = null; - for (var c2 in a2) - a2.hasOwnProperty(c2) && (b3 = a2[c2], this[c2] = b3 ? b3(f2) : f2[c2]); - this.isDefaultPrevented = (null != f2.defaultPrevented ? f2.defaultPrevented : false === f2.returnValue) ? pd : qd; - this.isPropagationStopped = qd; - return this; - } - A$2(b2.prototype, { preventDefault: function() { - this.defaultPrevented = true; - var a3 = this.nativeEvent; - a3 && (a3.preventDefault ? a3.preventDefault() : "unknown" !== typeof a3.returnValue && (a3.returnValue = false), this.isDefaultPrevented = pd); - }, stopPropagation: function() { - var a3 = this.nativeEvent; - a3 && (a3.stopPropagation ? a3.stopPropagation() : "unknown" !== typeof a3.cancelBubble && (a3.cancelBubble = true), this.isPropagationStopped = pd); - }, persist: function() { - }, isPersistent: pd }); - return b2; -} -var sd = { eventPhase: 0, bubbles: 0, cancelable: 0, timeStamp: function(a2) { - return a2.timeStamp || Date.now(); -}, defaultPrevented: 0, isTrusted: 0 }, td = rd(sd), ud = A$2({}, sd, { view: 0, detail: 0 }), vd = rd(ud), wd, xd, yd, Ad = A$2({}, ud, { screenX: 0, screenY: 0, clientX: 0, clientY: 0, pageX: 0, pageY: 0, ctrlKey: 0, shiftKey: 0, altKey: 0, metaKey: 0, getModifierState: zd, button: 0, buttons: 0, relatedTarget: function(a2) { - return void 0 === a2.relatedTarget ? a2.fromElement === a2.srcElement ? a2.toElement : a2.fromElement : a2.relatedTarget; -}, movementX: function(a2) { - if ("movementX" in a2) - return a2.movementX; - a2 !== yd && (yd && "mousemove" === a2.type ? (wd = a2.screenX - yd.screenX, xd = a2.screenY - yd.screenY) : xd = wd = 0, yd = a2); - return wd; -}, movementY: function(a2) { - return "movementY" in a2 ? a2.movementY : xd; -} }), Bd = rd(Ad), Cd = A$2({}, Ad, { dataTransfer: 0 }), Dd = rd(Cd), Ed = A$2({}, ud, { relatedTarget: 0 }), Fd = rd(Ed), Gd = A$2({}, sd, { animationName: 0, elapsedTime: 0, pseudoElement: 0 }), Hd = rd(Gd), Id = A$2({}, sd, { clipboardData: function(a2) { - return "clipboardData" in a2 ? a2.clipboardData : window.clipboardData; -} }), Jd = rd(Id), Kd = A$2({}, sd, { data: 0 }), Ld = rd(Kd), Md = { - Esc: "Escape", - Spacebar: " ", - Left: "ArrowLeft", - Up: "ArrowUp", - Right: "ArrowRight", - Down: "ArrowDown", - Del: "Delete", - Win: "OS", - Menu: "ContextMenu", - Apps: "ContextMenu", - Scroll: "ScrollLock", - MozPrintableKey: "Unidentified" -}, Nd = { - 8: "Backspace", - 9: "Tab", - 12: "Clear", - 13: "Enter", - 16: "Shift", - 17: "Control", - 18: "Alt", - 19: "Pause", - 20: "CapsLock", - 27: "Escape", - 32: " ", - 33: "PageUp", - 34: "PageDown", - 35: "End", - 36: "Home", - 37: "ArrowLeft", - 38: "ArrowUp", - 39: "ArrowRight", - 40: "ArrowDown", - 45: "Insert", - 46: "Delete", - 112: "F1", - 113: "F2", - 114: "F3", - 115: "F4", - 116: "F5", - 117: "F6", - 118: "F7", - 119: "F8", - 120: "F9", - 121: "F10", - 122: "F11", - 123: "F12", - 144: "NumLock", - 145: "ScrollLock", - 224: "Meta" -}, Od = { Alt: "altKey", Control: "ctrlKey", Meta: "metaKey", Shift: "shiftKey" }; -function Pd(a2) { - var b2 = this.nativeEvent; - return b2.getModifierState ? b2.getModifierState(a2) : (a2 = Od[a2]) ? !!b2[a2] : false; -} -function zd() { - return Pd; -} -var Qd = A$2({}, ud, { key: function(a2) { - if (a2.key) { - var b2 = Md[a2.key] || a2.key; - if ("Unidentified" !== b2) - return b2; - } - return "keypress" === a2.type ? (a2 = od(a2), 13 === a2 ? "Enter" : String.fromCharCode(a2)) : "keydown" === a2.type || "keyup" === a2.type ? Nd[a2.keyCode] || "Unidentified" : ""; -}, code: 0, location: 0, ctrlKey: 0, shiftKey: 0, altKey: 0, metaKey: 0, repeat: 0, locale: 0, getModifierState: zd, charCode: function(a2) { - return "keypress" === a2.type ? od(a2) : 0; -}, keyCode: function(a2) { - return "keydown" === a2.type || "keyup" === a2.type ? a2.keyCode : 0; -}, which: function(a2) { - return "keypress" === a2.type ? od(a2) : "keydown" === a2.type || "keyup" === a2.type ? a2.keyCode : 0; -} }), Rd = rd(Qd), Sd = A$2({}, Ad, { pointerId: 0, width: 0, height: 0, pressure: 0, tangentialPressure: 0, tiltX: 0, tiltY: 0, twist: 0, pointerType: 0, isPrimary: 0 }), Td = rd(Sd), Ud = A$2({}, ud, { touches: 0, targetTouches: 0, changedTouches: 0, altKey: 0, metaKey: 0, ctrlKey: 0, shiftKey: 0, getModifierState: zd }), Vd = rd(Ud), Wd = A$2({}, sd, { propertyName: 0, elapsedTime: 0, pseudoElement: 0 }), Xd = rd(Wd), Yd = A$2({}, Ad, { - deltaX: function(a2) { - return "deltaX" in a2 ? a2.deltaX : "wheelDeltaX" in a2 ? -a2.wheelDeltaX : 0; - }, - deltaY: function(a2) { - return "deltaY" in a2 ? a2.deltaY : "wheelDeltaY" in a2 ? -a2.wheelDeltaY : "wheelDelta" in a2 ? -a2.wheelDelta : 0; - }, - deltaZ: 0, - deltaMode: 0 -}), Zd = rd(Yd), $d = [9, 13, 27, 32], ae$1 = ia$1 && "CompositionEvent" in window, be$1 = null; -ia$1 && "documentMode" in document && (be$1 = document.documentMode); -var ce$1 = ia$1 && "TextEvent" in window && !be$1, de$1 = ia$1 && (!ae$1 || be$1 && 8 < be$1 && 11 >= be$1), ee = String.fromCharCode(32), fe$1 = false; -function ge$1(a2, b2) { - switch (a2) { - case "keyup": - return -1 !== $d.indexOf(b2.keyCode); - case "keydown": - return 229 !== b2.keyCode; - case "keypress": - case "mousedown": - case "focusout": - return true; - default: - return false; - } -} -function he$1(a2) { - a2 = a2.detail; - return "object" === typeof a2 && "data" in a2 ? a2.data : null; -} -var ie = false; -function je$1(a2, b2) { - switch (a2) { - case "compositionend": - return he$1(b2); - case "keypress": - if (32 !== b2.which) - return null; - fe$1 = true; - return ee; - case "textInput": - return a2 = b2.data, a2 === ee && fe$1 ? null : a2; - default: - return null; - } -} -function ke$1(a2, b2) { - if (ie) - return "compositionend" === a2 || !ae$1 && ge$1(a2, b2) ? (a2 = nd(), md = ld = kd = null, ie = false, a2) : null; - switch (a2) { - case "paste": - return null; - case "keypress": - if (!(b2.ctrlKey || b2.altKey || b2.metaKey) || b2.ctrlKey && b2.altKey) { - if (b2.char && 1 < b2.char.length) - return b2.char; - if (b2.which) - return String.fromCharCode(b2.which); - } - return null; - case "compositionend": - return de$1 && "ko" !== b2.locale ? null : b2.data; - default: - return null; - } -} -var le$1 = { color: true, date: true, datetime: true, "datetime-local": true, email: true, month: true, number: true, password: true, range: true, search: true, tel: true, text: true, time: true, url: true, week: true }; -function me$1(a2) { - var b2 = a2 && a2.nodeName && a2.nodeName.toLowerCase(); - return "input" === b2 ? !!le$1[a2.type] : "textarea" === b2 ? true : false; -} -function ne(a2, b2, c2, d2) { - Eb(d2); - b2 = oe(b2, "onChange"); - 0 < b2.length && (c2 = new td("onChange", "change", null, c2, d2), a2.push({ event: c2, listeners: b2 })); -} -var pe$1 = null, qe$1 = null; -function re$1(a2) { - se(a2, 0); -} -function te(a2) { - var b2 = ue(a2); - if (Wa$1(b2)) - return a2; -} -function ve(a2, b2) { - if ("change" === a2) - return b2; -} -var we = false; -if (ia$1) { - var xe$1; - if (ia$1) { - var ye$1 = "oninput" in document; - if (!ye$1) { - var ze$1 = document.createElement("div"); - ze$1.setAttribute("oninput", "return;"); - ye$1 = "function" === typeof ze$1.oninput; - } - xe$1 = ye$1; - } else - xe$1 = false; - we = xe$1 && (!document.documentMode || 9 < document.documentMode); -} -function Ae$1() { - pe$1 && (pe$1.detachEvent("onpropertychange", Be$1), qe$1 = pe$1 = null); -} -function Be$1(a2) { - if ("value" === a2.propertyName && te(qe$1)) { - var b2 = []; - ne(b2, qe$1, a2, xb(a2)); - Jb(re$1, b2); - } -} -function Ce(a2, b2, c2) { - "focusin" === a2 ? (Ae$1(), pe$1 = b2, qe$1 = c2, pe$1.attachEvent("onpropertychange", Be$1)) : "focusout" === a2 && Ae$1(); -} -function De(a2) { - if ("selectionchange" === a2 || "keyup" === a2 || "keydown" === a2) - return te(qe$1); -} -function Ee$1(a2, b2) { - if ("click" === a2) - return te(b2); -} -function Fe(a2, b2) { - if ("input" === a2 || "change" === a2) - return te(b2); -} -function Ge(a2, b2) { - return a2 === b2 && (0 !== a2 || 1 / a2 === 1 / b2) || a2 !== a2 && b2 !== b2; -} -var He$1 = "function" === typeof Object.is ? Object.is : Ge; -function Ie(a2, b2) { - if (He$1(a2, b2)) - return true; - if ("object" !== typeof a2 || null === a2 || "object" !== typeof b2 || null === b2) - return false; - var c2 = Object.keys(a2), d2 = Object.keys(b2); - if (c2.length !== d2.length) - return false; - for (d2 = 0; d2 < c2.length; d2++) { - var e15 = c2[d2]; - if (!ja$1.call(b2, e15) || !He$1(a2[e15], b2[e15])) - return false; - } - return true; -} -function Je$1(a2) { - for (; a2 && a2.firstChild; ) - a2 = a2.firstChild; - return a2; -} -function Ke$1(a2, b2) { - var c2 = Je$1(a2); - a2 = 0; - for (var d2; c2; ) { - if (3 === c2.nodeType) { - d2 = a2 + c2.textContent.length; - if (a2 <= b2 && d2 >= b2) - return { node: c2, offset: b2 - a2 }; - a2 = d2; - } - a: { - for (; c2; ) { - if (c2.nextSibling) { - c2 = c2.nextSibling; - break a; - } - c2 = c2.parentNode; - } - c2 = void 0; - } - c2 = Je$1(c2); - } -} -function Le$1(a2, b2) { - return a2 && b2 ? a2 === b2 ? true : a2 && 3 === a2.nodeType ? false : b2 && 3 === b2.nodeType ? Le$1(a2, b2.parentNode) : "contains" in a2 ? a2.contains(b2) : a2.compareDocumentPosition ? !!(a2.compareDocumentPosition(b2) & 16) : false : false; -} -function Me$1() { - for (var a2 = window, b2 = Xa$1(); b2 instanceof a2.HTMLIFrameElement; ) { - try { - var c2 = "string" === typeof b2.contentWindow.location.href; - } catch (d2) { - c2 = false; - } - if (c2) - a2 = b2.contentWindow; - else - break; - b2 = Xa$1(a2.document); - } - return b2; -} -function Ne$1(a2) { - var b2 = a2 && a2.nodeName && a2.nodeName.toLowerCase(); - return b2 && ("input" === b2 && ("text" === a2.type || "search" === a2.type || "tel" === a2.type || "url" === a2.type || "password" === a2.type) || "textarea" === b2 || "true" === a2.contentEditable); -} -function Oe(a2) { - var b2 = Me$1(), c2 = a2.focusedElem, d2 = a2.selectionRange; - if (b2 !== c2 && c2 && c2.ownerDocument && Le$1(c2.ownerDocument.documentElement, c2)) { - if (null !== d2 && Ne$1(c2)) { - if (b2 = d2.start, a2 = d2.end, void 0 === a2 && (a2 = b2), "selectionStart" in c2) - c2.selectionStart = b2, c2.selectionEnd = Math.min(a2, c2.value.length); - else if (a2 = (b2 = c2.ownerDocument || document) && b2.defaultView || window, a2.getSelection) { - a2 = a2.getSelection(); - var e15 = c2.textContent.length, f2 = Math.min(d2.start, e15); - d2 = void 0 === d2.end ? f2 : Math.min(d2.end, e15); - !a2.extend && f2 > d2 && (e15 = d2, d2 = f2, f2 = e15); - e15 = Ke$1(c2, f2); - var g2 = Ke$1( - c2, - d2 - ); - e15 && g2 && (1 !== a2.rangeCount || a2.anchorNode !== e15.node || a2.anchorOffset !== e15.offset || a2.focusNode !== g2.node || a2.focusOffset !== g2.offset) && (b2 = b2.createRange(), b2.setStart(e15.node, e15.offset), a2.removeAllRanges(), f2 > d2 ? (a2.addRange(b2), a2.extend(g2.node, g2.offset)) : (b2.setEnd(g2.node, g2.offset), a2.addRange(b2))); - } - } - b2 = []; - for (a2 = c2; a2 = a2.parentNode; ) - 1 === a2.nodeType && b2.push({ element: a2, left: a2.scrollLeft, top: a2.scrollTop }); - "function" === typeof c2.focus && c2.focus(); - for (c2 = 0; c2 < b2.length; c2++) - a2 = b2[c2], a2.element.scrollLeft = a2.left, a2.element.scrollTop = a2.top; - } -} -var Pe = ia$1 && "documentMode" in document && 11 >= document.documentMode, Qe = null, Re = null, Se$1 = null, Te$1 = false; -function Ue$1(a2, b2, c2) { - var d2 = c2.window === c2 ? c2.document : 9 === c2.nodeType ? c2 : c2.ownerDocument; - Te$1 || null == Qe || Qe !== Xa$1(d2) || (d2 = Qe, "selectionStart" in d2 && Ne$1(d2) ? d2 = { start: d2.selectionStart, end: d2.selectionEnd } : (d2 = (d2.ownerDocument && d2.ownerDocument.defaultView || window).getSelection(), d2 = { anchorNode: d2.anchorNode, anchorOffset: d2.anchorOffset, focusNode: d2.focusNode, focusOffset: d2.focusOffset }), Se$1 && Ie(Se$1, d2) || (Se$1 = d2, d2 = oe(Re, "onSelect"), 0 < d2.length && (b2 = new td("onSelect", "select", null, b2, c2), a2.push({ event: b2, listeners: d2 }), b2.target = Qe))); -} -function Ve(a2, b2) { - var c2 = {}; - c2[a2.toLowerCase()] = b2.toLowerCase(); - c2["Webkit" + a2] = "webkit" + b2; - c2["Moz" + a2] = "moz" + b2; - return c2; -} -var We$1 = { animationend: Ve("Animation", "AnimationEnd"), animationiteration: Ve("Animation", "AnimationIteration"), animationstart: Ve("Animation", "AnimationStart"), transitionend: Ve("Transition", "TransitionEnd") }, Xe = {}, Ye$1 = {}; -ia$1 && (Ye$1 = document.createElement("div").style, "AnimationEvent" in window || (delete We$1.animationend.animation, delete We$1.animationiteration.animation, delete We$1.animationstart.animation), "TransitionEvent" in window || delete We$1.transitionend.transition); -function Ze$1(a2) { - if (Xe[a2]) - return Xe[a2]; - if (!We$1[a2]) - return a2; - var b2 = We$1[a2], c2; - for (c2 in b2) - if (b2.hasOwnProperty(c2) && c2 in Ye$1) - return Xe[a2] = b2[c2]; - return a2; -} -var $e$1 = Ze$1("animationend"), af = Ze$1("animationiteration"), bf = Ze$1("animationstart"), cf = Ze$1("transitionend"), df = /* @__PURE__ */ new Map(), ef = "abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" "); -function ff(a2, b2) { - df.set(a2, b2); - fa$1(b2, [a2]); -} -for (var gf = 0; gf < ef.length; gf++) { - var hf = ef[gf], jf = hf.toLowerCase(), kf = hf[0].toUpperCase() + hf.slice(1); - ff(jf, "on" + kf); -} -ff($e$1, "onAnimationEnd"); -ff(af, "onAnimationIteration"); -ff(bf, "onAnimationStart"); -ff("dblclick", "onDoubleClick"); -ff("focusin", "onFocus"); -ff("focusout", "onBlur"); -ff(cf, "onTransitionEnd"); -ha$1("onMouseEnter", ["mouseout", "mouseover"]); -ha$1("onMouseLeave", ["mouseout", "mouseover"]); -ha$1("onPointerEnter", ["pointerout", "pointerover"]); -ha$1("onPointerLeave", ["pointerout", "pointerover"]); -fa$1("onChange", "change click focusin focusout input keydown keyup selectionchange".split(" ")); -fa$1("onSelect", "focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" ")); -fa$1("onBeforeInput", ["compositionend", "keypress", "textInput", "paste"]); -fa$1("onCompositionEnd", "compositionend focusout keydown keypress keyup mousedown".split(" ")); -fa$1("onCompositionStart", "compositionstart focusout keydown keypress keyup mousedown".split(" ")); -fa$1("onCompositionUpdate", "compositionupdate focusout keydown keypress keyup mousedown".split(" ")); -var lf = "abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "), mf = new Set("cancel close invalid load scroll toggle".split(" ").concat(lf)); -function nf(a2, b2, c2) { - var d2 = a2.type || "unknown-event"; - a2.currentTarget = c2; - Ub(d2, b2, void 0, a2); - a2.currentTarget = null; -} -function se(a2, b2) { - b2 = 0 !== (b2 & 4); - for (var c2 = 0; c2 < a2.length; c2++) { - var d2 = a2[c2], e15 = d2.event; - d2 = d2.listeners; - a: { - var f2 = void 0; - if (b2) - for (var g2 = d2.length - 1; 0 <= g2; g2--) { - var h2 = d2[g2], k2 = h2.instance, l2 = h2.currentTarget; - h2 = h2.listener; - if (k2 !== f2 && e15.isPropagationStopped()) - break a; - nf(e15, h2, l2); - f2 = k2; - } - else - for (g2 = 0; g2 < d2.length; g2++) { - h2 = d2[g2]; - k2 = h2.instance; - l2 = h2.currentTarget; - h2 = h2.listener; - if (k2 !== f2 && e15.isPropagationStopped()) - break a; - nf(e15, h2, l2); - f2 = k2; - } - } - } - if (Qb) - throw a2 = Rb, Qb = false, Rb = null, a2; -} -function D$1(a2, b2) { - var c2 = b2[of]; - void 0 === c2 && (c2 = b2[of] = /* @__PURE__ */ new Set()); - var d2 = a2 + "__bubble"; - c2.has(d2) || (pf(b2, a2, 2, false), c2.add(d2)); -} -function qf(a2, b2, c2) { - var d2 = 0; - b2 && (d2 |= 4); - pf(c2, a2, d2, b2); -} -var rf = "_reactListening" + Math.random().toString(36).slice(2); -function sf(a2) { - if (!a2[rf]) { - a2[rf] = true; - da$1.forEach(function(b3) { - "selectionchange" !== b3 && (mf.has(b3) || qf(b3, false, a2), qf(b3, true, a2)); - }); - var b2 = 9 === a2.nodeType ? a2 : a2.ownerDocument; - null === b2 || b2[rf] || (b2[rf] = true, qf("selectionchange", false, b2)); - } -} -function pf(a2, b2, c2, d2) { - switch (jd(b2)) { - case 1: - var e15 = ed; - break; - case 4: - e15 = gd; - break; - default: - e15 = fd; - } - c2 = e15.bind(null, b2, c2, a2); - e15 = void 0; - !Lb || "touchstart" !== b2 && "touchmove" !== b2 && "wheel" !== b2 || (e15 = true); - d2 ? void 0 !== e15 ? a2.addEventListener(b2, c2, { capture: true, passive: e15 }) : a2.addEventListener(b2, c2, true) : void 0 !== e15 ? a2.addEventListener(b2, c2, { passive: e15 }) : a2.addEventListener(b2, c2, false); -} -function hd(a2, b2, c2, d2, e15) { - var f2 = d2; - if (0 === (b2 & 1) && 0 === (b2 & 2) && null !== d2) - a: - for (; ; ) { - if (null === d2) - return; - var g2 = d2.tag; - if (3 === g2 || 4 === g2) { - var h2 = d2.stateNode.containerInfo; - if (h2 === e15 || 8 === h2.nodeType && h2.parentNode === e15) - break; - if (4 === g2) - for (g2 = d2.return; null !== g2; ) { - var k2 = g2.tag; - if (3 === k2 || 4 === k2) { - if (k2 = g2.stateNode.containerInfo, k2 === e15 || 8 === k2.nodeType && k2.parentNode === e15) - return; - } - g2 = g2.return; - } - for (; null !== h2; ) { - g2 = Wc(h2); - if (null === g2) - return; - k2 = g2.tag; - if (5 === k2 || 6 === k2) { - d2 = f2 = g2; - continue a; - } - h2 = h2.parentNode; - } - } - d2 = d2.return; - } - Jb(function() { - var d3 = f2, e16 = xb(c2), g3 = []; - a: { - var h3 = df.get(a2); - if (void 0 !== h3) { - var k3 = td, n2 = a2; - switch (a2) { - case "keypress": - if (0 === od(c2)) - break a; - case "keydown": - case "keyup": - k3 = Rd; - break; - case "focusin": - n2 = "focus"; - k3 = Fd; - break; - case "focusout": - n2 = "blur"; - k3 = Fd; - break; - case "beforeblur": - case "afterblur": - k3 = Fd; - break; - case "click": - if (2 === c2.button) - break a; - case "auxclick": - case "dblclick": - case "mousedown": - case "mousemove": - case "mouseup": - case "mouseout": - case "mouseover": - case "contextmenu": - k3 = Bd; - break; - case "drag": - case "dragend": - case "dragenter": - case "dragexit": - case "dragleave": - case "dragover": - case "dragstart": - case "drop": - k3 = Dd; - break; - case "touchcancel": - case "touchend": - case "touchmove": - case "touchstart": - k3 = Vd; - break; - case $e$1: - case af: - case bf: - k3 = Hd; - break; - case cf: - k3 = Xd; - break; - case "scroll": - k3 = vd; - break; - case "wheel": - k3 = Zd; - break; - case "copy": - case "cut": - case "paste": - k3 = Jd; - break; - case "gotpointercapture": - case "lostpointercapture": - case "pointercancel": - case "pointerdown": - case "pointermove": - case "pointerout": - case "pointerover": - case "pointerup": - k3 = Td; - } - var t2 = 0 !== (b2 & 4), J2 = !t2 && "scroll" === a2, x2 = t2 ? null !== h3 ? h3 + "Capture" : null : h3; - t2 = []; - for (var w2 = d3, u2; null !== w2; ) { - u2 = w2; - var F2 = u2.stateNode; - 5 === u2.tag && null !== F2 && (u2 = F2, null !== x2 && (F2 = Kb(w2, x2), null != F2 && t2.push(tf(w2, F2, u2)))); - if (J2) - break; - w2 = w2.return; - } - 0 < t2.length && (h3 = new k3(h3, n2, null, c2, e16), g3.push({ event: h3, listeners: t2 })); - } - } - if (0 === (b2 & 7)) { - a: { - h3 = "mouseover" === a2 || "pointerover" === a2; - k3 = "mouseout" === a2 || "pointerout" === a2; - if (h3 && c2 !== wb && (n2 = c2.relatedTarget || c2.fromElement) && (Wc(n2) || n2[uf])) - break a; - if (k3 || h3) { - h3 = e16.window === e16 ? e16 : (h3 = e16.ownerDocument) ? h3.defaultView || h3.parentWindow : window; - if (k3) { - if (n2 = c2.relatedTarget || c2.toElement, k3 = d3, n2 = n2 ? Wc(n2) : null, null !== n2 && (J2 = Vb(n2), n2 !== J2 || 5 !== n2.tag && 6 !== n2.tag)) - n2 = null; - } else - k3 = null, n2 = d3; - if (k3 !== n2) { - t2 = Bd; - F2 = "onMouseLeave"; - x2 = "onMouseEnter"; - w2 = "mouse"; - if ("pointerout" === a2 || "pointerover" === a2) - t2 = Td, F2 = "onPointerLeave", x2 = "onPointerEnter", w2 = "pointer"; - J2 = null == k3 ? h3 : ue(k3); - u2 = null == n2 ? h3 : ue(n2); - h3 = new t2(F2, w2 + "leave", k3, c2, e16); - h3.target = J2; - h3.relatedTarget = u2; - F2 = null; - Wc(e16) === d3 && (t2 = new t2(x2, w2 + "enter", n2, c2, e16), t2.target = u2, t2.relatedTarget = J2, F2 = t2); - J2 = F2; - if (k3 && n2) - b: { - t2 = k3; - x2 = n2; - w2 = 0; - for (u2 = t2; u2; u2 = vf(u2)) - w2++; - u2 = 0; - for (F2 = x2; F2; F2 = vf(F2)) - u2++; - for (; 0 < w2 - u2; ) - t2 = vf(t2), w2--; - for (; 0 < u2 - w2; ) - x2 = vf(x2), u2--; - for (; w2--; ) { - if (t2 === x2 || null !== x2 && t2 === x2.alternate) - break b; - t2 = vf(t2); - x2 = vf(x2); - } - t2 = null; - } - else - t2 = null; - null !== k3 && wf(g3, h3, k3, t2, false); - null !== n2 && null !== J2 && wf(g3, J2, n2, t2, true); - } - } - } - a: { - h3 = d3 ? ue(d3) : window; - k3 = h3.nodeName && h3.nodeName.toLowerCase(); - if ("select" === k3 || "input" === k3 && "file" === h3.type) - var na2 = ve; - else if (me$1(h3)) - if (we) - na2 = Fe; - else { - na2 = De; - var xa2 = Ce; - } - else - (k3 = h3.nodeName) && "input" === k3.toLowerCase() && ("checkbox" === h3.type || "radio" === h3.type) && (na2 = Ee$1); - if (na2 && (na2 = na2(a2, d3))) { - ne(g3, na2, c2, e16); - break a; - } - xa2 && xa2(a2, h3, d3); - "focusout" === a2 && (xa2 = h3._wrapperState) && xa2.controlled && "number" === h3.type && cb(h3, "number", h3.value); - } - xa2 = d3 ? ue(d3) : window; - switch (a2) { - case "focusin": - if (me$1(xa2) || "true" === xa2.contentEditable) - Qe = xa2, Re = d3, Se$1 = null; - break; - case "focusout": - Se$1 = Re = Qe = null; - break; - case "mousedown": - Te$1 = true; - break; - case "contextmenu": - case "mouseup": - case "dragend": - Te$1 = false; - Ue$1(g3, c2, e16); - break; - case "selectionchange": - if (Pe) - break; - case "keydown": - case "keyup": - Ue$1(g3, c2, e16); - } - var $a2; - if (ae$1) - b: { - switch (a2) { - case "compositionstart": - var ba2 = "onCompositionStart"; - break b; - case "compositionend": - ba2 = "onCompositionEnd"; - break b; - case "compositionupdate": - ba2 = "onCompositionUpdate"; - break b; - } - ba2 = void 0; - } - else - ie ? ge$1(a2, c2) && (ba2 = "onCompositionEnd") : "keydown" === a2 && 229 === c2.keyCode && (ba2 = "onCompositionStart"); - ba2 && (de$1 && "ko" !== c2.locale && (ie || "onCompositionStart" !== ba2 ? "onCompositionEnd" === ba2 && ie && ($a2 = nd()) : (kd = e16, ld = "value" in kd ? kd.value : kd.textContent, ie = true)), xa2 = oe(d3, ba2), 0 < xa2.length && (ba2 = new Ld(ba2, a2, null, c2, e16), g3.push({ event: ba2, listeners: xa2 }), $a2 ? ba2.data = $a2 : ($a2 = he$1(c2), null !== $a2 && (ba2.data = $a2)))); - if ($a2 = ce$1 ? je$1(a2, c2) : ke$1(a2, c2)) - d3 = oe(d3, "onBeforeInput"), 0 < d3.length && (e16 = new Ld("onBeforeInput", "beforeinput", null, c2, e16), g3.push({ event: e16, listeners: d3 }), e16.data = $a2); - } - se(g3, b2); - }); -} -function tf(a2, b2, c2) { - return { instance: a2, listener: b2, currentTarget: c2 }; -} -function oe(a2, b2) { - for (var c2 = b2 + "Capture", d2 = []; null !== a2; ) { - var e15 = a2, f2 = e15.stateNode; - 5 === e15.tag && null !== f2 && (e15 = f2, f2 = Kb(a2, c2), null != f2 && d2.unshift(tf(a2, f2, e15)), f2 = Kb(a2, b2), null != f2 && d2.push(tf(a2, f2, e15))); - a2 = a2.return; - } - return d2; -} -function vf(a2) { - if (null === a2) - return null; - do - a2 = a2.return; - while (a2 && 5 !== a2.tag); - return a2 ? a2 : null; -} -function wf(a2, b2, c2, d2, e15) { - for (var f2 = b2._reactName, g2 = []; null !== c2 && c2 !== d2; ) { - var h2 = c2, k2 = h2.alternate, l2 = h2.stateNode; - if (null !== k2 && k2 === d2) - break; - 5 === h2.tag && null !== l2 && (h2 = l2, e15 ? (k2 = Kb(c2, f2), null != k2 && g2.unshift(tf(c2, k2, h2))) : e15 || (k2 = Kb(c2, f2), null != k2 && g2.push(tf(c2, k2, h2)))); - c2 = c2.return; - } - 0 !== g2.length && a2.push({ event: b2, listeners: g2 }); -} -var xf = /\r\n?/g, yf = /\u0000|\uFFFD/g; -function zf(a2) { - return ("string" === typeof a2 ? a2 : "" + a2).replace(xf, "\n").replace(yf, ""); -} -function Af(a2, b2, c2) { - b2 = zf(b2); - if (zf(a2) !== b2 && c2) - throw Error(p$4(425)); -} -function Bf() { -} -var Cf = null, Df = null; -function Ef(a2, b2) { - return "textarea" === a2 || "noscript" === a2 || "string" === typeof b2.children || "number" === typeof b2.children || "object" === typeof b2.dangerouslySetInnerHTML && null !== b2.dangerouslySetInnerHTML && null != b2.dangerouslySetInnerHTML.__html; -} -var Ff = "function" === typeof setTimeout ? setTimeout : void 0, Gf = "function" === typeof clearTimeout ? clearTimeout : void 0, Hf = "function" === typeof Promise ? Promise : void 0, Jf = "function" === typeof queueMicrotask ? queueMicrotask : "undefined" !== typeof Hf ? function(a2) { - return Hf.resolve(null).then(a2).catch(If); -} : Ff; -function If(a2) { - setTimeout(function() { - throw a2; - }); -} -function Kf(a2, b2) { - var c2 = b2, d2 = 0; - do { - var e15 = c2.nextSibling; - a2.removeChild(c2); - if (e15 && 8 === e15.nodeType) - if (c2 = e15.data, "/$" === c2) { - if (0 === d2) { - a2.removeChild(e15); - bd(b2); - return; - } - d2--; - } else - "$" !== c2 && "$?" !== c2 && "$!" !== c2 || d2++; - c2 = e15; - } while (c2); - bd(b2); -} -function Lf(a2) { - for (; null != a2; a2 = a2.nextSibling) { - var b2 = a2.nodeType; - if (1 === b2 || 3 === b2) - break; - if (8 === b2) { - b2 = a2.data; - if ("$" === b2 || "$!" === b2 || "$?" === b2) - break; - if ("/$" === b2) - return null; - } - } - return a2; -} -function Mf(a2) { - a2 = a2.previousSibling; - for (var b2 = 0; a2; ) { - if (8 === a2.nodeType) { - var c2 = a2.data; - if ("$" === c2 || "$!" === c2 || "$?" === c2) { - if (0 === b2) - return a2; - b2--; - } else - "/$" === c2 && b2++; - } - a2 = a2.previousSibling; - } - return null; -} -var Nf = Math.random().toString(36).slice(2), Of = "__reactFiber$" + Nf, Pf = "__reactProps$" + Nf, uf = "__reactContainer$" + Nf, of = "__reactEvents$" + Nf, Qf = "__reactListeners$" + Nf, Rf = "__reactHandles$" + Nf; -function Wc(a2) { - var b2 = a2[Of]; - if (b2) - return b2; - for (var c2 = a2.parentNode; c2; ) { - if (b2 = c2[uf] || c2[Of]) { - c2 = b2.alternate; - if (null !== b2.child || null !== c2 && null !== c2.child) - for (a2 = Mf(a2); null !== a2; ) { - if (c2 = a2[Of]) - return c2; - a2 = Mf(a2); - } - return b2; - } - a2 = c2; - c2 = a2.parentNode; - } - return null; -} -function Cb(a2) { - a2 = a2[Of] || a2[uf]; - return !a2 || 5 !== a2.tag && 6 !== a2.tag && 13 !== a2.tag && 3 !== a2.tag ? null : a2; -} -function ue(a2) { - if (5 === a2.tag || 6 === a2.tag) - return a2.stateNode; - throw Error(p$4(33)); -} -function Db(a2) { - return a2[Pf] || null; -} -var Sf = [], Tf = -1; -function Uf(a2) { - return { current: a2 }; -} -function E$1(a2) { - 0 > Tf || (a2.current = Sf[Tf], Sf[Tf] = null, Tf--); -} -function G$1(a2, b2) { - Tf++; - Sf[Tf] = a2.current; - a2.current = b2; -} -var Vf = {}, H$1 = Uf(Vf), Wf = Uf(false), Xf = Vf; -function Yf(a2, b2) { - var c2 = a2.type.contextTypes; - if (!c2) - return Vf; - var d2 = a2.stateNode; - if (d2 && d2.__reactInternalMemoizedUnmaskedChildContext === b2) - return d2.__reactInternalMemoizedMaskedChildContext; - var e15 = {}, f2; - for (f2 in c2) - e15[f2] = b2[f2]; - d2 && (a2 = a2.stateNode, a2.__reactInternalMemoizedUnmaskedChildContext = b2, a2.__reactInternalMemoizedMaskedChildContext = e15); - return e15; -} -function Zf(a2) { - a2 = a2.childContextTypes; - return null !== a2 && void 0 !== a2; -} -function $f() { - E$1(Wf); - E$1(H$1); -} -function ag(a2, b2, c2) { - if (H$1.current !== Vf) - throw Error(p$4(168)); - G$1(H$1, b2); - G$1(Wf, c2); -} -function bg(a2, b2, c2) { - var d2 = a2.stateNode; - b2 = b2.childContextTypes; - if ("function" !== typeof d2.getChildContext) - return c2; - d2 = d2.getChildContext(); - for (var e15 in d2) - if (!(e15 in b2)) - throw Error(p$4(108, Ra$1(a2) || "Unknown", e15)); - return A$2({}, c2, d2); -} -function cg(a2) { - a2 = (a2 = a2.stateNode) && a2.__reactInternalMemoizedMergedChildContext || Vf; - Xf = H$1.current; - G$1(H$1, a2); - G$1(Wf, Wf.current); - return true; -} -function dg(a2, b2, c2) { - var d2 = a2.stateNode; - if (!d2) - throw Error(p$4(169)); - c2 ? (a2 = bg(a2, b2, Xf), d2.__reactInternalMemoizedMergedChildContext = a2, E$1(Wf), E$1(H$1), G$1(H$1, a2)) : E$1(Wf); - G$1(Wf, c2); -} -var eg = null, fg = false, gg = false; -function hg(a2) { - null === eg ? eg = [a2] : eg.push(a2); -} -function ig(a2) { - fg = true; - hg(a2); -} -function jg() { - if (!gg && null !== eg) { - gg = true; - var a2 = 0, b2 = C; - try { - var c2 = eg; - for (C = 1; a2 < c2.length; a2++) { - var d2 = c2[a2]; - do - d2 = d2(true); - while (null !== d2); - } - eg = null; - fg = false; - } catch (e15) { - throw null !== eg && (eg = eg.slice(a2 + 1)), ac(fc, jg), e15; - } finally { - C = b2, gg = false; - } - } - return null; -} -var kg = [], lg = 0, mg = null, ng = 0, og = [], pg = 0, qg = null, rg = 1, sg = ""; -function tg(a2, b2) { - kg[lg++] = ng; - kg[lg++] = mg; - mg = a2; - ng = b2; -} -function ug(a2, b2, c2) { - og[pg++] = rg; - og[pg++] = sg; - og[pg++] = qg; - qg = a2; - var d2 = rg; - a2 = sg; - var e15 = 32 - oc(d2) - 1; - d2 &= ~(1 << e15); - c2 += 1; - var f2 = 32 - oc(b2) + e15; - if (30 < f2) { - var g2 = e15 - e15 % 5; - f2 = (d2 & (1 << g2) - 1).toString(32); - d2 >>= g2; - e15 -= g2; - rg = 1 << 32 - oc(b2) + e15 | c2 << e15 | d2; - sg = f2 + a2; - } else - rg = 1 << f2 | c2 << e15 | d2, sg = a2; -} -function vg(a2) { - null !== a2.return && (tg(a2, 1), ug(a2, 1, 0)); -} -function wg(a2) { - for (; a2 === mg; ) - mg = kg[--lg], kg[lg] = null, ng = kg[--lg], kg[lg] = null; - for (; a2 === qg; ) - qg = og[--pg], og[pg] = null, sg = og[--pg], og[pg] = null, rg = og[--pg], og[pg] = null; -} -var xg = null, yg = null, I$1 = false, zg = null; -function Ag(a2, b2) { - var c2 = Bg(5, null, null, 0); - c2.elementType = "DELETED"; - c2.stateNode = b2; - c2.return = a2; - b2 = a2.deletions; - null === b2 ? (a2.deletions = [c2], a2.flags |= 16) : b2.push(c2); -} -function Cg(a2, b2) { - switch (a2.tag) { - case 5: - var c2 = a2.type; - b2 = 1 !== b2.nodeType || c2.toLowerCase() !== b2.nodeName.toLowerCase() ? null : b2; - return null !== b2 ? (a2.stateNode = b2, xg = a2, yg = Lf(b2.firstChild), true) : false; - case 6: - return b2 = "" === a2.pendingProps || 3 !== b2.nodeType ? null : b2, null !== b2 ? (a2.stateNode = b2, xg = a2, yg = null, true) : false; - case 13: - return b2 = 8 !== b2.nodeType ? null : b2, null !== b2 ? (c2 = null !== qg ? { id: rg, overflow: sg } : null, a2.memoizedState = { dehydrated: b2, treeContext: c2, retryLane: 1073741824 }, c2 = Bg(18, null, null, 0), c2.stateNode = b2, c2.return = a2, a2.child = c2, xg = a2, yg = null, true) : false; - default: - return false; - } -} -function Dg(a2) { - return 0 !== (a2.mode & 1) && 0 === (a2.flags & 128); -} -function Eg(a2) { - if (I$1) { - var b2 = yg; - if (b2) { - var c2 = b2; - if (!Cg(a2, b2)) { - if (Dg(a2)) - throw Error(p$4(418)); - b2 = Lf(c2.nextSibling); - var d2 = xg; - b2 && Cg(a2, b2) ? Ag(d2, c2) : (a2.flags = a2.flags & -4097 | 2, I$1 = false, xg = a2); - } - } else { - if (Dg(a2)) - throw Error(p$4(418)); - a2.flags = a2.flags & -4097 | 2; - I$1 = false; - xg = a2; - } - } -} -function Fg(a2) { - for (a2 = a2.return; null !== a2 && 5 !== a2.tag && 3 !== a2.tag && 13 !== a2.tag; ) - a2 = a2.return; - xg = a2; -} -function Gg(a2) { - if (a2 !== xg) - return false; - if (!I$1) - return Fg(a2), I$1 = true, false; - var b2; - (b2 = 3 !== a2.tag) && !(b2 = 5 !== a2.tag) && (b2 = a2.type, b2 = "head" !== b2 && "body" !== b2 && !Ef(a2.type, a2.memoizedProps)); - if (b2 && (b2 = yg)) { - if (Dg(a2)) - throw Hg(), Error(p$4(418)); - for (; b2; ) - Ag(a2, b2), b2 = Lf(b2.nextSibling); - } - Fg(a2); - if (13 === a2.tag) { - a2 = a2.memoizedState; - a2 = null !== a2 ? a2.dehydrated : null; - if (!a2) - throw Error(p$4(317)); - a: { - a2 = a2.nextSibling; - for (b2 = 0; a2; ) { - if (8 === a2.nodeType) { - var c2 = a2.data; - if ("/$" === c2) { - if (0 === b2) { - yg = Lf(a2.nextSibling); - break a; - } - b2--; - } else - "$" !== c2 && "$!" !== c2 && "$?" !== c2 || b2++; - } - a2 = a2.nextSibling; - } - yg = null; - } - } else - yg = xg ? Lf(a2.stateNode.nextSibling) : null; - return true; -} -function Hg() { - for (var a2 = yg; a2; ) - a2 = Lf(a2.nextSibling); -} -function Ig() { - yg = xg = null; - I$1 = false; -} -function Jg(a2) { - null === zg ? zg = [a2] : zg.push(a2); -} -var Kg = ua$1.ReactCurrentBatchConfig; -function Lg(a2, b2) { - if (a2 && a2.defaultProps) { - b2 = A$2({}, b2); - a2 = a2.defaultProps; - for (var c2 in a2) - void 0 === b2[c2] && (b2[c2] = a2[c2]); - return b2; - } - return b2; -} -var Mg = Uf(null), Ng = null, Og = null, Pg = null; -function Qg() { - Pg = Og = Ng = null; -} -function Rg(a2) { - var b2 = Mg.current; - E$1(Mg); - a2._currentValue = b2; -} -function Sg(a2, b2, c2) { - for (; null !== a2; ) { - var d2 = a2.alternate; - (a2.childLanes & b2) !== b2 ? (a2.childLanes |= b2, null !== d2 && (d2.childLanes |= b2)) : null !== d2 && (d2.childLanes & b2) !== b2 && (d2.childLanes |= b2); - if (a2 === c2) - break; - a2 = a2.return; - } -} -function Tg(a2, b2) { - Ng = a2; - Pg = Og = null; - a2 = a2.dependencies; - null !== a2 && null !== a2.firstContext && (0 !== (a2.lanes & b2) && (Ug = true), a2.firstContext = null); -} -function Vg(a2) { - var b2 = a2._currentValue; - if (Pg !== a2) - if (a2 = { context: a2, memoizedValue: b2, next: null }, null === Og) { - if (null === Ng) - throw Error(p$4(308)); - Og = a2; - Ng.dependencies = { lanes: 0, firstContext: a2 }; - } else - Og = Og.next = a2; - return b2; -} -var Wg = null; -function Xg(a2) { - null === Wg ? Wg = [a2] : Wg.push(a2); -} -function Yg(a2, b2, c2, d2) { - var e15 = b2.interleaved; - null === e15 ? (c2.next = c2, Xg(b2)) : (c2.next = e15.next, e15.next = c2); - b2.interleaved = c2; - return Zg(a2, d2); -} -function Zg(a2, b2) { - a2.lanes |= b2; - var c2 = a2.alternate; - null !== c2 && (c2.lanes |= b2); - c2 = a2; - for (a2 = a2.return; null !== a2; ) - a2.childLanes |= b2, c2 = a2.alternate, null !== c2 && (c2.childLanes |= b2), c2 = a2, a2 = a2.return; - return 3 === c2.tag ? c2.stateNode : null; -} -var $g = false; -function ah(a2) { - a2.updateQueue = { baseState: a2.memoizedState, firstBaseUpdate: null, lastBaseUpdate: null, shared: { pending: null, interleaved: null, lanes: 0 }, effects: null }; -} -function bh(a2, b2) { - a2 = a2.updateQueue; - b2.updateQueue === a2 && (b2.updateQueue = { baseState: a2.baseState, firstBaseUpdate: a2.firstBaseUpdate, lastBaseUpdate: a2.lastBaseUpdate, shared: a2.shared, effects: a2.effects }); -} -function ch(a2, b2) { - return { eventTime: a2, lane: b2, tag: 0, payload: null, callback: null, next: null }; -} -function dh(a2, b2, c2) { - var d2 = a2.updateQueue; - if (null === d2) - return null; - d2 = d2.shared; - if (0 !== (K & 2)) { - var e15 = d2.pending; - null === e15 ? b2.next = b2 : (b2.next = e15.next, e15.next = b2); - d2.pending = b2; - return Zg(a2, c2); - } - e15 = d2.interleaved; - null === e15 ? (b2.next = b2, Xg(d2)) : (b2.next = e15.next, e15.next = b2); - d2.interleaved = b2; - return Zg(a2, c2); -} -function eh(a2, b2, c2) { - b2 = b2.updateQueue; - if (null !== b2 && (b2 = b2.shared, 0 !== (c2 & 4194240))) { - var d2 = b2.lanes; - d2 &= a2.pendingLanes; - c2 |= d2; - b2.lanes = c2; - Cc(a2, c2); - } -} -function fh(a2, b2) { - var c2 = a2.updateQueue, d2 = a2.alternate; - if (null !== d2 && (d2 = d2.updateQueue, c2 === d2)) { - var e15 = null, f2 = null; - c2 = c2.firstBaseUpdate; - if (null !== c2) { - do { - var g2 = { eventTime: c2.eventTime, lane: c2.lane, tag: c2.tag, payload: c2.payload, callback: c2.callback, next: null }; - null === f2 ? e15 = f2 = g2 : f2 = f2.next = g2; - c2 = c2.next; - } while (null !== c2); - null === f2 ? e15 = f2 = b2 : f2 = f2.next = b2; - } else - e15 = f2 = b2; - c2 = { baseState: d2.baseState, firstBaseUpdate: e15, lastBaseUpdate: f2, shared: d2.shared, effects: d2.effects }; - a2.updateQueue = c2; - return; - } - a2 = c2.lastBaseUpdate; - null === a2 ? c2.firstBaseUpdate = b2 : a2.next = b2; - c2.lastBaseUpdate = b2; -} -function gh(a2, b2, c2, d2) { - var e15 = a2.updateQueue; - $g = false; - var f2 = e15.firstBaseUpdate, g2 = e15.lastBaseUpdate, h2 = e15.shared.pending; - if (null !== h2) { - e15.shared.pending = null; - var k2 = h2, l2 = k2.next; - k2.next = null; - null === g2 ? f2 = l2 : g2.next = l2; - g2 = k2; - var m2 = a2.alternate; - null !== m2 && (m2 = m2.updateQueue, h2 = m2.lastBaseUpdate, h2 !== g2 && (null === h2 ? m2.firstBaseUpdate = l2 : h2.next = l2, m2.lastBaseUpdate = k2)); - } - if (null !== f2) { - var q2 = e15.baseState; - g2 = 0; - m2 = l2 = k2 = null; - h2 = f2; - do { - var r2 = h2.lane, y2 = h2.eventTime; - if ((d2 & r2) === r2) { - null !== m2 && (m2 = m2.next = { - eventTime: y2, - lane: 0, - tag: h2.tag, - payload: h2.payload, - callback: h2.callback, - next: null - }); - a: { - var n2 = a2, t2 = h2; - r2 = b2; - y2 = c2; - switch (t2.tag) { - case 1: - n2 = t2.payload; - if ("function" === typeof n2) { - q2 = n2.call(y2, q2, r2); - break a; - } - q2 = n2; - break a; - case 3: - n2.flags = n2.flags & -65537 | 128; - case 0: - n2 = t2.payload; - r2 = "function" === typeof n2 ? n2.call(y2, q2, r2) : n2; - if (null === r2 || void 0 === r2) - break a; - q2 = A$2({}, q2, r2); - break a; - case 2: - $g = true; - } - } - null !== h2.callback && 0 !== h2.lane && (a2.flags |= 64, r2 = e15.effects, null === r2 ? e15.effects = [h2] : r2.push(h2)); - } else - y2 = { eventTime: y2, lane: r2, tag: h2.tag, payload: h2.payload, callback: h2.callback, next: null }, null === m2 ? (l2 = m2 = y2, k2 = q2) : m2 = m2.next = y2, g2 |= r2; - h2 = h2.next; - if (null === h2) - if (h2 = e15.shared.pending, null === h2) - break; - else - r2 = h2, h2 = r2.next, r2.next = null, e15.lastBaseUpdate = r2, e15.shared.pending = null; - } while (1); - null === m2 && (k2 = q2); - e15.baseState = k2; - e15.firstBaseUpdate = l2; - e15.lastBaseUpdate = m2; - b2 = e15.shared.interleaved; - if (null !== b2) { - e15 = b2; - do - g2 |= e15.lane, e15 = e15.next; - while (e15 !== b2); - } else - null === f2 && (e15.shared.lanes = 0); - hh |= g2; - a2.lanes = g2; - a2.memoizedState = q2; - } -} -function ih(a2, b2, c2) { - a2 = b2.effects; - b2.effects = null; - if (null !== a2) - for (b2 = 0; b2 < a2.length; b2++) { - var d2 = a2[b2], e15 = d2.callback; - if (null !== e15) { - d2.callback = null; - d2 = c2; - if ("function" !== typeof e15) - throw Error(p$4(191, e15)); - e15.call(d2); - } - } -} -var jh = new aa$1.Component().refs; -function kh(a2, b2, c2, d2) { - b2 = a2.memoizedState; - c2 = c2(d2, b2); - c2 = null === c2 || void 0 === c2 ? b2 : A$2({}, b2, c2); - a2.memoizedState = c2; - 0 === a2.lanes && (a2.updateQueue.baseState = c2); -} -var nh = { isMounted: function(a2) { - return (a2 = a2._reactInternals) ? Vb(a2) === a2 : false; -}, enqueueSetState: function(a2, b2, c2) { - a2 = a2._reactInternals; - var d2 = L$1(), e15 = lh(a2), f2 = ch(d2, e15); - f2.payload = b2; - void 0 !== c2 && null !== c2 && (f2.callback = c2); - b2 = dh(a2, f2, e15); - null !== b2 && (mh(b2, a2, e15, d2), eh(b2, a2, e15)); -}, enqueueReplaceState: function(a2, b2, c2) { - a2 = a2._reactInternals; - var d2 = L$1(), e15 = lh(a2), f2 = ch(d2, e15); - f2.tag = 1; - f2.payload = b2; - void 0 !== c2 && null !== c2 && (f2.callback = c2); - b2 = dh(a2, f2, e15); - null !== b2 && (mh(b2, a2, e15, d2), eh(b2, a2, e15)); -}, enqueueForceUpdate: function(a2, b2) { - a2 = a2._reactInternals; - var c2 = L$1(), d2 = lh(a2), e15 = ch(c2, d2); - e15.tag = 2; - void 0 !== b2 && null !== b2 && (e15.callback = b2); - b2 = dh(a2, e15, d2); - null !== b2 && (mh(b2, a2, d2, c2), eh(b2, a2, d2)); -} }; -function oh(a2, b2, c2, d2, e15, f2, g2) { - a2 = a2.stateNode; - return "function" === typeof a2.shouldComponentUpdate ? a2.shouldComponentUpdate(d2, f2, g2) : b2.prototype && b2.prototype.isPureReactComponent ? !Ie(c2, d2) || !Ie(e15, f2) : true; -} -function ph(a2, b2, c2) { - var d2 = false, e15 = Vf; - var f2 = b2.contextType; - "object" === typeof f2 && null !== f2 ? f2 = Vg(f2) : (e15 = Zf(b2) ? Xf : H$1.current, d2 = b2.contextTypes, f2 = (d2 = null !== d2 && void 0 !== d2) ? Yf(a2, e15) : Vf); - b2 = new b2(c2, f2); - a2.memoizedState = null !== b2.state && void 0 !== b2.state ? b2.state : null; - b2.updater = nh; - a2.stateNode = b2; - b2._reactInternals = a2; - d2 && (a2 = a2.stateNode, a2.__reactInternalMemoizedUnmaskedChildContext = e15, a2.__reactInternalMemoizedMaskedChildContext = f2); - return b2; -} -function qh(a2, b2, c2, d2) { - a2 = b2.state; - "function" === typeof b2.componentWillReceiveProps && b2.componentWillReceiveProps(c2, d2); - "function" === typeof b2.UNSAFE_componentWillReceiveProps && b2.UNSAFE_componentWillReceiveProps(c2, d2); - b2.state !== a2 && nh.enqueueReplaceState(b2, b2.state, null); -} -function rh(a2, b2, c2, d2) { - var e15 = a2.stateNode; - e15.props = c2; - e15.state = a2.memoizedState; - e15.refs = jh; - ah(a2); - var f2 = b2.contextType; - "object" === typeof f2 && null !== f2 ? e15.context = Vg(f2) : (f2 = Zf(b2) ? Xf : H$1.current, e15.context = Yf(a2, f2)); - e15.state = a2.memoizedState; - f2 = b2.getDerivedStateFromProps; - "function" === typeof f2 && (kh(a2, b2, f2, c2), e15.state = a2.memoizedState); - "function" === typeof b2.getDerivedStateFromProps || "function" === typeof e15.getSnapshotBeforeUpdate || "function" !== typeof e15.UNSAFE_componentWillMount && "function" !== typeof e15.componentWillMount || (b2 = e15.state, "function" === typeof e15.componentWillMount && e15.componentWillMount(), "function" === typeof e15.UNSAFE_componentWillMount && e15.UNSAFE_componentWillMount(), b2 !== e15.state && nh.enqueueReplaceState(e15, e15.state, null), gh(a2, c2, e15, d2), e15.state = a2.memoizedState); - "function" === typeof e15.componentDidMount && (a2.flags |= 4194308); -} -function sh(a2, b2, c2) { - a2 = c2.ref; - if (null !== a2 && "function" !== typeof a2 && "object" !== typeof a2) { - if (c2._owner) { - c2 = c2._owner; - if (c2) { - if (1 !== c2.tag) - throw Error(p$4(309)); - var d2 = c2.stateNode; - } - if (!d2) - throw Error(p$4(147, a2)); - var e15 = d2, f2 = "" + a2; - if (null !== b2 && null !== b2.ref && "function" === typeof b2.ref && b2.ref._stringRef === f2) - return b2.ref; - b2 = function(a3) { - var b3 = e15.refs; - b3 === jh && (b3 = e15.refs = {}); - null === a3 ? delete b3[f2] : b3[f2] = a3; - }; - b2._stringRef = f2; - return b2; - } - if ("string" !== typeof a2) - throw Error(p$4(284)); - if (!c2._owner) - throw Error(p$4(290, a2)); - } - return a2; -} -function th(a2, b2) { - a2 = Object.prototype.toString.call(b2); - throw Error(p$4(31, "[object Object]" === a2 ? "object with keys {" + Object.keys(b2).join(", ") + "}" : a2)); -} -function uh(a2) { - var b2 = a2._init; - return b2(a2._payload); -} -function vh(a2) { - function b2(b3, c3) { - if (a2) { - var d3 = b3.deletions; - null === d3 ? (b3.deletions = [c3], b3.flags |= 16) : d3.push(c3); - } - } - function c2(c3, d3) { - if (!a2) - return null; - for (; null !== d3; ) - b2(c3, d3), d3 = d3.sibling; - return null; - } - function d2(a3, b3) { - for (a3 = /* @__PURE__ */ new Map(); null !== b3; ) - null !== b3.key ? a3.set(b3.key, b3) : a3.set(b3.index, b3), b3 = b3.sibling; - return a3; - } - function e15(a3, b3) { - a3 = wh(a3, b3); - a3.index = 0; - a3.sibling = null; - return a3; - } - function f2(b3, c3, d3) { - b3.index = d3; - if (!a2) - return b3.flags |= 1048576, c3; - d3 = b3.alternate; - if (null !== d3) - return d3 = d3.index, d3 < c3 ? (b3.flags |= 2, c3) : d3; - b3.flags |= 2; - return c3; - } - function g2(b3) { - a2 && null === b3.alternate && (b3.flags |= 2); - return b3; - } - function h2(a3, b3, c3, d3) { - if (null === b3 || 6 !== b3.tag) - return b3 = xh(c3, a3.mode, d3), b3.return = a3, b3; - b3 = e15(b3, c3); - b3.return = a3; - return b3; - } - function k2(a3, b3, c3, d3) { - var f3 = c3.type; - if (f3 === ya$1) - return m2(a3, b3, c3.props.children, d3, c3.key); - if (null !== b3 && (b3.elementType === f3 || "object" === typeof f3 && null !== f3 && f3.$$typeof === Ha$1 && uh(f3) === b3.type)) - return d3 = e15(b3, c3.props), d3.ref = sh(a3, b3, c3), d3.return = a3, d3; - d3 = yh(c3.type, c3.key, c3.props, null, a3.mode, d3); - d3.ref = sh(a3, b3, c3); - d3.return = a3; - return d3; - } - function l2(a3, b3, c3, d3) { - if (null === b3 || 4 !== b3.tag || b3.stateNode.containerInfo !== c3.containerInfo || b3.stateNode.implementation !== c3.implementation) - return b3 = zh(c3, a3.mode, d3), b3.return = a3, b3; - b3 = e15(b3, c3.children || []); - b3.return = a3; - return b3; - } - function m2(a3, b3, c3, d3, f3) { - if (null === b3 || 7 !== b3.tag) - return b3 = Ah(c3, a3.mode, d3, f3), b3.return = a3, b3; - b3 = e15(b3, c3); - b3.return = a3; - return b3; - } - function q2(a3, b3, c3) { - if ("string" === typeof b3 && "" !== b3 || "number" === typeof b3) - return b3 = xh("" + b3, a3.mode, c3), b3.return = a3, b3; - if ("object" === typeof b3 && null !== b3) { - switch (b3.$$typeof) { - case va$1: - return c3 = yh(b3.type, b3.key, b3.props, null, a3.mode, c3), c3.ref = sh(a3, null, b3), c3.return = a3, c3; - case wa$1: - return b3 = zh(b3, a3.mode, c3), b3.return = a3, b3; - case Ha$1: - var d3 = b3._init; - return q2(a3, d3(b3._payload), c3); - } - if (eb(b3) || Ka$1(b3)) - return b3 = Ah(b3, a3.mode, c3, null), b3.return = a3, b3; - th(a3, b3); - } - return null; - } - function r2(a3, b3, c3, d3) { - var e16 = null !== b3 ? b3.key : null; - if ("string" === typeof c3 && "" !== c3 || "number" === typeof c3) - return null !== e16 ? null : h2(a3, b3, "" + c3, d3); - if ("object" === typeof c3 && null !== c3) { - switch (c3.$$typeof) { - case va$1: - return c3.key === e16 ? k2(a3, b3, c3, d3) : null; - case wa$1: - return c3.key === e16 ? l2(a3, b3, c3, d3) : null; - case Ha$1: - return e16 = c3._init, r2( - a3, - b3, - e16(c3._payload), - d3 - ); - } - if (eb(c3) || Ka$1(c3)) - return null !== e16 ? null : m2(a3, b3, c3, d3, null); - th(a3, c3); - } - return null; - } - function y2(a3, b3, c3, d3, e16) { - if ("string" === typeof d3 && "" !== d3 || "number" === typeof d3) - return a3 = a3.get(c3) || null, h2(b3, a3, "" + d3, e16); - if ("object" === typeof d3 && null !== d3) { - switch (d3.$$typeof) { - case va$1: - return a3 = a3.get(null === d3.key ? c3 : d3.key) || null, k2(b3, a3, d3, e16); - case wa$1: - return a3 = a3.get(null === d3.key ? c3 : d3.key) || null, l2(b3, a3, d3, e16); - case Ha$1: - var f3 = d3._init; - return y2(a3, b3, c3, f3(d3._payload), e16); - } - if (eb(d3) || Ka$1(d3)) - return a3 = a3.get(c3) || null, m2(b3, a3, d3, e16, null); - th(b3, d3); - } - return null; - } - function n2(e16, g3, h3, k3) { - for (var l3 = null, m3 = null, u2 = g3, w2 = g3 = 0, x2 = null; null !== u2 && w2 < h3.length; w2++) { - u2.index > w2 ? (x2 = u2, u2 = null) : x2 = u2.sibling; - var n3 = r2(e16, u2, h3[w2], k3); - if (null === n3) { - null === u2 && (u2 = x2); - break; - } - a2 && u2 && null === n3.alternate && b2(e16, u2); - g3 = f2(n3, g3, w2); - null === m3 ? l3 = n3 : m3.sibling = n3; - m3 = n3; - u2 = x2; - } - if (w2 === h3.length) - return c2(e16, u2), I$1 && tg(e16, w2), l3; - if (null === u2) { - for (; w2 < h3.length; w2++) - u2 = q2(e16, h3[w2], k3), null !== u2 && (g3 = f2(u2, g3, w2), null === m3 ? l3 = u2 : m3.sibling = u2, m3 = u2); - I$1 && tg(e16, w2); - return l3; - } - for (u2 = d2(e16, u2); w2 < h3.length; w2++) - x2 = y2(u2, e16, w2, h3[w2], k3), null !== x2 && (a2 && null !== x2.alternate && u2.delete(null === x2.key ? w2 : x2.key), g3 = f2(x2, g3, w2), null === m3 ? l3 = x2 : m3.sibling = x2, m3 = x2); - a2 && u2.forEach(function(a3) { - return b2(e16, a3); - }); - I$1 && tg(e16, w2); - return l3; - } - function t2(e16, g3, h3, k3) { - var l3 = Ka$1(h3); - if ("function" !== typeof l3) - throw Error(p$4(150)); - h3 = l3.call(h3); - if (null == h3) - throw Error(p$4(151)); - for (var u2 = l3 = null, m3 = g3, w2 = g3 = 0, x2 = null, n3 = h3.next(); null !== m3 && !n3.done; w2++, n3 = h3.next()) { - m3.index > w2 ? (x2 = m3, m3 = null) : x2 = m3.sibling; - var t3 = r2(e16, m3, n3.value, k3); - if (null === t3) { - null === m3 && (m3 = x2); - break; - } - a2 && m3 && null === t3.alternate && b2(e16, m3); - g3 = f2(t3, g3, w2); - null === u2 ? l3 = t3 : u2.sibling = t3; - u2 = t3; - m3 = x2; - } - if (n3.done) - return c2( - e16, - m3 - ), I$1 && tg(e16, w2), l3; - if (null === m3) { - for (; !n3.done; w2++, n3 = h3.next()) - n3 = q2(e16, n3.value, k3), null !== n3 && (g3 = f2(n3, g3, w2), null === u2 ? l3 = n3 : u2.sibling = n3, u2 = n3); - I$1 && tg(e16, w2); - return l3; - } - for (m3 = d2(e16, m3); !n3.done; w2++, n3 = h3.next()) - n3 = y2(m3, e16, w2, n3.value, k3), null !== n3 && (a2 && null !== n3.alternate && m3.delete(null === n3.key ? w2 : n3.key), g3 = f2(n3, g3, w2), null === u2 ? l3 = n3 : u2.sibling = n3, u2 = n3); - a2 && m3.forEach(function(a3) { - return b2(e16, a3); - }); - I$1 && tg(e16, w2); - return l3; - } - function J2(a3, d3, f3, h3) { - "object" === typeof f3 && null !== f3 && f3.type === ya$1 && null === f3.key && (f3 = f3.props.children); - if ("object" === typeof f3 && null !== f3) { - switch (f3.$$typeof) { - case va$1: - a: { - for (var k3 = f3.key, l3 = d3; null !== l3; ) { - if (l3.key === k3) { - k3 = f3.type; - if (k3 === ya$1) { - if (7 === l3.tag) { - c2(a3, l3.sibling); - d3 = e15(l3, f3.props.children); - d3.return = a3; - a3 = d3; - break a; - } - } else if (l3.elementType === k3 || "object" === typeof k3 && null !== k3 && k3.$$typeof === Ha$1 && uh(k3) === l3.type) { - c2(a3, l3.sibling); - d3 = e15(l3, f3.props); - d3.ref = sh(a3, l3, f3); - d3.return = a3; - a3 = d3; - break a; - } - c2(a3, l3); - break; - } else - b2(a3, l3); - l3 = l3.sibling; - } - f3.type === ya$1 ? (d3 = Ah(f3.props.children, a3.mode, h3, f3.key), d3.return = a3, a3 = d3) : (h3 = yh(f3.type, f3.key, f3.props, null, a3.mode, h3), h3.ref = sh(a3, d3, f3), h3.return = a3, a3 = h3); - } - return g2(a3); - case wa$1: - a: { - for (l3 = f3.key; null !== d3; ) { - if (d3.key === l3) - if (4 === d3.tag && d3.stateNode.containerInfo === f3.containerInfo && d3.stateNode.implementation === f3.implementation) { - c2(a3, d3.sibling); - d3 = e15(d3, f3.children || []); - d3.return = a3; - a3 = d3; - break a; - } else { - c2(a3, d3); - break; - } - else - b2(a3, d3); - d3 = d3.sibling; - } - d3 = zh(f3, a3.mode, h3); - d3.return = a3; - a3 = d3; - } - return g2(a3); - case Ha$1: - return l3 = f3._init, J2(a3, d3, l3(f3._payload), h3); - } - if (eb(f3)) - return n2(a3, d3, f3, h3); - if (Ka$1(f3)) - return t2(a3, d3, f3, h3); - th(a3, f3); - } - return "string" === typeof f3 && "" !== f3 || "number" === typeof f3 ? (f3 = "" + f3, null !== d3 && 6 === d3.tag ? (c2(a3, d3.sibling), d3 = e15(d3, f3), d3.return = a3, a3 = d3) : (c2(a3, d3), d3 = xh(f3, a3.mode, h3), d3.return = a3, a3 = d3), g2(a3)) : c2(a3, d3); - } - return J2; -} -var Bh = vh(true), Ch = vh(false), Dh = {}, Eh = Uf(Dh), Fh = Uf(Dh), Gh = Uf(Dh); -function Hh(a2) { - if (a2 === Dh) - throw Error(p$4(174)); - return a2; -} -function Ih(a2, b2) { - G$1(Gh, b2); - G$1(Fh, a2); - G$1(Eh, Dh); - a2 = b2.nodeType; - switch (a2) { - case 9: - case 11: - b2 = (b2 = b2.documentElement) ? b2.namespaceURI : lb(null, ""); - break; - default: - a2 = 8 === a2 ? b2.parentNode : b2, b2 = a2.namespaceURI || null, a2 = a2.tagName, b2 = lb(b2, a2); - } - E$1(Eh); - G$1(Eh, b2); -} -function Jh() { - E$1(Eh); - E$1(Fh); - E$1(Gh); -} -function Kh(a2) { - Hh(Gh.current); - var b2 = Hh(Eh.current); - var c2 = lb(b2, a2.type); - b2 !== c2 && (G$1(Fh, a2), G$1(Eh, c2)); -} -function Lh(a2) { - Fh.current === a2 && (E$1(Eh), E$1(Fh)); -} -var M$1 = Uf(0); -function Mh(a2) { - for (var b2 = a2; null !== b2; ) { - if (13 === b2.tag) { - var c2 = b2.memoizedState; - if (null !== c2 && (c2 = c2.dehydrated, null === c2 || "$?" === c2.data || "$!" === c2.data)) - return b2; - } else if (19 === b2.tag && void 0 !== b2.memoizedProps.revealOrder) { - if (0 !== (b2.flags & 128)) - return b2; - } else if (null !== b2.child) { - b2.child.return = b2; - b2 = b2.child; - continue; - } - if (b2 === a2) - break; - for (; null === b2.sibling; ) { - if (null === b2.return || b2.return === a2) - return null; - b2 = b2.return; - } - b2.sibling.return = b2.return; - b2 = b2.sibling; - } - return null; -} -var Nh = []; -function Oh() { - for (var a2 = 0; a2 < Nh.length; a2++) - Nh[a2]._workInProgressVersionPrimary = null; - Nh.length = 0; -} -var Ph = ua$1.ReactCurrentDispatcher, Qh = ua$1.ReactCurrentBatchConfig, Rh = 0, N$1 = null, O$1 = null, P$2 = null, Sh = false, Th = false, Uh = 0, Vh = 0; -function Q$1() { - throw Error(p$4(321)); -} -function Wh(a2, b2) { - if (null === b2) - return false; - for (var c2 = 0; c2 < b2.length && c2 < a2.length; c2++) - if (!He$1(a2[c2], b2[c2])) - return false; - return true; -} -function Xh(a2, b2, c2, d2, e15, f2) { - Rh = f2; - N$1 = b2; - b2.memoizedState = null; - b2.updateQueue = null; - b2.lanes = 0; - Ph.current = null === a2 || null === a2.memoizedState ? Yh : Zh; - a2 = c2(d2, e15); - if (Th) { - f2 = 0; - do { - Th = false; - Uh = 0; - if (25 <= f2) - throw Error(p$4(301)); - f2 += 1; - P$2 = O$1 = null; - b2.updateQueue = null; - Ph.current = $h; - a2 = c2(d2, e15); - } while (Th); - } - Ph.current = ai$1; - b2 = null !== O$1 && null !== O$1.next; - Rh = 0; - P$2 = O$1 = N$1 = null; - Sh = false; - if (b2) - throw Error(p$4(300)); - return a2; -} -function bi$1() { - var a2 = 0 !== Uh; - Uh = 0; - return a2; -} -function ci$1() { - var a2 = { memoizedState: null, baseState: null, baseQueue: null, queue: null, next: null }; - null === P$2 ? N$1.memoizedState = P$2 = a2 : P$2 = P$2.next = a2; - return P$2; -} -function di$1() { - if (null === O$1) { - var a2 = N$1.alternate; - a2 = null !== a2 ? a2.memoizedState : null; - } else - a2 = O$1.next; - var b2 = null === P$2 ? N$1.memoizedState : P$2.next; - if (null !== b2) - P$2 = b2, O$1 = a2; - else { - if (null === a2) - throw Error(p$4(310)); - O$1 = a2; - a2 = { memoizedState: O$1.memoizedState, baseState: O$1.baseState, baseQueue: O$1.baseQueue, queue: O$1.queue, next: null }; - null === P$2 ? N$1.memoizedState = P$2 = a2 : P$2 = P$2.next = a2; - } - return P$2; -} -function ei$1(a2, b2) { - return "function" === typeof b2 ? b2(a2) : b2; -} -function fi$1(a2) { - var b2 = di$1(), c2 = b2.queue; - if (null === c2) - throw Error(p$4(311)); - c2.lastRenderedReducer = a2; - var d2 = O$1, e15 = d2.baseQueue, f2 = c2.pending; - if (null !== f2) { - if (null !== e15) { - var g2 = e15.next; - e15.next = f2.next; - f2.next = g2; - } - d2.baseQueue = e15 = f2; - c2.pending = null; - } - if (null !== e15) { - f2 = e15.next; - d2 = d2.baseState; - var h2 = g2 = null, k2 = null, l2 = f2; - do { - var m2 = l2.lane; - if ((Rh & m2) === m2) - null !== k2 && (k2 = k2.next = { lane: 0, action: l2.action, hasEagerState: l2.hasEagerState, eagerState: l2.eagerState, next: null }), d2 = l2.hasEagerState ? l2.eagerState : a2(d2, l2.action); - else { - var q2 = { - lane: m2, - action: l2.action, - hasEagerState: l2.hasEagerState, - eagerState: l2.eagerState, - next: null - }; - null === k2 ? (h2 = k2 = q2, g2 = d2) : k2 = k2.next = q2; - N$1.lanes |= m2; - hh |= m2; - } - l2 = l2.next; - } while (null !== l2 && l2 !== f2); - null === k2 ? g2 = d2 : k2.next = h2; - He$1(d2, b2.memoizedState) || (Ug = true); - b2.memoizedState = d2; - b2.baseState = g2; - b2.baseQueue = k2; - c2.lastRenderedState = d2; - } - a2 = c2.interleaved; - if (null !== a2) { - e15 = a2; - do - f2 = e15.lane, N$1.lanes |= f2, hh |= f2, e15 = e15.next; - while (e15 !== a2); - } else - null === e15 && (c2.lanes = 0); - return [b2.memoizedState, c2.dispatch]; -} -function gi$1(a2) { - var b2 = di$1(), c2 = b2.queue; - if (null === c2) - throw Error(p$4(311)); - c2.lastRenderedReducer = a2; - var d2 = c2.dispatch, e15 = c2.pending, f2 = b2.memoizedState; - if (null !== e15) { - c2.pending = null; - var g2 = e15 = e15.next; - do - f2 = a2(f2, g2.action), g2 = g2.next; - while (g2 !== e15); - He$1(f2, b2.memoizedState) || (Ug = true); - b2.memoizedState = f2; - null === b2.baseQueue && (b2.baseState = f2); - c2.lastRenderedState = f2; - } - return [f2, d2]; -} -function hi$1() { -} -function ii$1(a2, b2) { - var c2 = N$1, d2 = di$1(), e15 = b2(), f2 = !He$1(d2.memoizedState, e15); - f2 && (d2.memoizedState = e15, Ug = true); - d2 = d2.queue; - ji$1(ki$1.bind(null, c2, d2, a2), [a2]); - if (d2.getSnapshot !== b2 || f2 || null !== P$2 && P$2.memoizedState.tag & 1) { - c2.flags |= 2048; - li$1(9, mi$1.bind(null, c2, d2, e15, b2), void 0, null); - if (null === R$1) - throw Error(p$4(349)); - 0 !== (Rh & 30) || ni$1(c2, b2, e15); - } - return e15; -} -function ni$1(a2, b2, c2) { - a2.flags |= 16384; - a2 = { getSnapshot: b2, value: c2 }; - b2 = N$1.updateQueue; - null === b2 ? (b2 = { lastEffect: null, stores: null }, N$1.updateQueue = b2, b2.stores = [a2]) : (c2 = b2.stores, null === c2 ? b2.stores = [a2] : c2.push(a2)); -} -function mi$1(a2, b2, c2, d2) { - b2.value = c2; - b2.getSnapshot = d2; - oi$1(b2) && pi$3(a2); -} -function ki$1(a2, b2, c2) { - return c2(function() { - oi$1(b2) && pi$3(a2); - }); -} -function oi$1(a2) { - var b2 = a2.getSnapshot; - a2 = a2.value; - try { - var c2 = b2(); - return !He$1(a2, c2); - } catch (d2) { - return true; - } -} -function pi$3(a2) { - var b2 = Zg(a2, 1); - null !== b2 && mh(b2, a2, 1, -1); -} -function qi$1(a2) { - var b2 = ci$1(); - "function" === typeof a2 && (a2 = a2()); - b2.memoizedState = b2.baseState = a2; - a2 = { pending: null, interleaved: null, lanes: 0, dispatch: null, lastRenderedReducer: ei$1, lastRenderedState: a2 }; - b2.queue = a2; - a2 = a2.dispatch = ri$1.bind(null, N$1, a2); - return [b2.memoizedState, a2]; -} -function li$1(a2, b2, c2, d2) { - a2 = { tag: a2, create: b2, destroy: c2, deps: d2, next: null }; - b2 = N$1.updateQueue; - null === b2 ? (b2 = { lastEffect: null, stores: null }, N$1.updateQueue = b2, b2.lastEffect = a2.next = a2) : (c2 = b2.lastEffect, null === c2 ? b2.lastEffect = a2.next = a2 : (d2 = c2.next, c2.next = a2, a2.next = d2, b2.lastEffect = a2)); - return a2; -} -function si$1() { - return di$1().memoizedState; -} -function ti$1(a2, b2, c2, d2) { - var e15 = ci$1(); - N$1.flags |= a2; - e15.memoizedState = li$1(1 | b2, c2, void 0, void 0 === d2 ? null : d2); -} -function ui$1(a2, b2, c2, d2) { - var e15 = di$1(); - d2 = void 0 === d2 ? null : d2; - var f2 = void 0; - if (null !== O$1) { - var g2 = O$1.memoizedState; - f2 = g2.destroy; - if (null !== d2 && Wh(d2, g2.deps)) { - e15.memoizedState = li$1(b2, c2, f2, d2); - return; - } - } - N$1.flags |= a2; - e15.memoizedState = li$1(1 | b2, c2, f2, d2); -} -function vi$1(a2, b2) { - return ti$1(8390656, 8, a2, b2); -} -function ji$1(a2, b2) { - return ui$1(2048, 8, a2, b2); -} -function wi$1(a2, b2) { - return ui$1(4, 2, a2, b2); -} -function xi$1(a2, b2) { - return ui$1(4, 4, a2, b2); -} -function yi$1(a2, b2) { - if ("function" === typeof b2) - return a2 = a2(), b2(a2), function() { - b2(null); - }; - if (null !== b2 && void 0 !== b2) - return a2 = a2(), b2.current = a2, function() { - b2.current = null; - }; -} -function zi$1(a2, b2, c2) { - c2 = null !== c2 && void 0 !== c2 ? c2.concat([a2]) : null; - return ui$1(4, 4, yi$1.bind(null, b2, a2), c2); -} -function Ai$1() { -} -function Bi$1(a2, b2) { - var c2 = di$1(); - b2 = void 0 === b2 ? null : b2; - var d2 = c2.memoizedState; - if (null !== d2 && null !== b2 && Wh(b2, d2[1])) - return d2[0]; - c2.memoizedState = [a2, b2]; - return a2; -} -function Ci$1(a2, b2) { - var c2 = di$1(); - b2 = void 0 === b2 ? null : b2; - var d2 = c2.memoizedState; - if (null !== d2 && null !== b2 && Wh(b2, d2[1])) - return d2[0]; - a2 = a2(); - c2.memoizedState = [a2, b2]; - return a2; -} -function Di$1(a2, b2, c2) { - if (0 === (Rh & 21)) - return a2.baseState && (a2.baseState = false, Ug = true), a2.memoizedState = c2; - He$1(c2, b2) || (c2 = yc(), N$1.lanes |= c2, hh |= c2, a2.baseState = true); - return b2; -} -function Ei$1(a2, b2) { - var c2 = C; - C = 0 !== c2 && 4 > c2 ? c2 : 4; - a2(true); - var d2 = Qh.transition; - Qh.transition = {}; - try { - a2(false), b2(); - } finally { - C = c2, Qh.transition = d2; - } -} -function Fi$1() { - return di$1().memoizedState; -} -function Gi$1(a2, b2, c2) { - var d2 = lh(a2); - c2 = { lane: d2, action: c2, hasEagerState: false, eagerState: null, next: null }; - if (Hi$1(a2)) - Ii$1(b2, c2); - else if (c2 = Yg(a2, b2, c2, d2), null !== c2) { - var e15 = L$1(); - mh(c2, a2, d2, e15); - Ji$1(c2, b2, d2); - } -} -function ri$1(a2, b2, c2) { - var d2 = lh(a2), e15 = { lane: d2, action: c2, hasEagerState: false, eagerState: null, next: null }; - if (Hi$1(a2)) - Ii$1(b2, e15); - else { - var f2 = a2.alternate; - if (0 === a2.lanes && (null === f2 || 0 === f2.lanes) && (f2 = b2.lastRenderedReducer, null !== f2)) - try { - var g2 = b2.lastRenderedState, h2 = f2(g2, c2); - e15.hasEagerState = true; - e15.eagerState = h2; - if (He$1(h2, g2)) { - var k2 = b2.interleaved; - null === k2 ? (e15.next = e15, Xg(b2)) : (e15.next = k2.next, k2.next = e15); - b2.interleaved = e15; - return; - } - } catch (l2) { - } finally { - } - c2 = Yg(a2, b2, e15, d2); - null !== c2 && (e15 = L$1(), mh(c2, a2, d2, e15), Ji$1(c2, b2, d2)); - } -} -function Hi$1(a2) { - var b2 = a2.alternate; - return a2 === N$1 || null !== b2 && b2 === N$1; -} -function Ii$1(a2, b2) { - Th = Sh = true; - var c2 = a2.pending; - null === c2 ? b2.next = b2 : (b2.next = c2.next, c2.next = b2); - a2.pending = b2; -} -function Ji$1(a2, b2, c2) { - if (0 !== (c2 & 4194240)) { - var d2 = b2.lanes; - d2 &= a2.pendingLanes; - c2 |= d2; - b2.lanes = c2; - Cc(a2, c2); - } -} -var ai$1 = { readContext: Vg, useCallback: Q$1, useContext: Q$1, useEffect: Q$1, useImperativeHandle: Q$1, useInsertionEffect: Q$1, useLayoutEffect: Q$1, useMemo: Q$1, useReducer: Q$1, useRef: Q$1, useState: Q$1, useDebugValue: Q$1, useDeferredValue: Q$1, useTransition: Q$1, useMutableSource: Q$1, useSyncExternalStore: Q$1, useId: Q$1, unstable_isNewReconciler: false }, Yh = { readContext: Vg, useCallback: function(a2, b2) { - ci$1().memoizedState = [a2, void 0 === b2 ? null : b2]; - return a2; -}, useContext: Vg, useEffect: vi$1, useImperativeHandle: function(a2, b2, c2) { - c2 = null !== c2 && void 0 !== c2 ? c2.concat([a2]) : null; - return ti$1( - 4194308, - 4, - yi$1.bind(null, b2, a2), - c2 - ); -}, useLayoutEffect: function(a2, b2) { - return ti$1(4194308, 4, a2, b2); -}, useInsertionEffect: function(a2, b2) { - return ti$1(4, 2, a2, b2); -}, useMemo: function(a2, b2) { - var c2 = ci$1(); - b2 = void 0 === b2 ? null : b2; - a2 = a2(); - c2.memoizedState = [a2, b2]; - return a2; -}, useReducer: function(a2, b2, c2) { - var d2 = ci$1(); - b2 = void 0 !== c2 ? c2(b2) : b2; - d2.memoizedState = d2.baseState = b2; - a2 = { pending: null, interleaved: null, lanes: 0, dispatch: null, lastRenderedReducer: a2, lastRenderedState: b2 }; - d2.queue = a2; - a2 = a2.dispatch = Gi$1.bind(null, N$1, a2); - return [d2.memoizedState, a2]; -}, useRef: function(a2) { - var b2 = ci$1(); - a2 = { current: a2 }; - return b2.memoizedState = a2; -}, useState: qi$1, useDebugValue: Ai$1, useDeferredValue: function(a2) { - return ci$1().memoizedState = a2; -}, useTransition: function() { - var a2 = qi$1(false), b2 = a2[0]; - a2 = Ei$1.bind(null, a2[1]); - ci$1().memoizedState = a2; - return [b2, a2]; -}, useMutableSource: function() { -}, useSyncExternalStore: function(a2, b2, c2) { - var d2 = N$1, e15 = ci$1(); - if (I$1) { - if (void 0 === c2) - throw Error(p$4(407)); - c2 = c2(); - } else { - c2 = b2(); - if (null === R$1) - throw Error(p$4(349)); - 0 !== (Rh & 30) || ni$1(d2, b2, c2); - } - e15.memoizedState = c2; - var f2 = { value: c2, getSnapshot: b2 }; - e15.queue = f2; - vi$1(ki$1.bind( - null, - d2, - f2, - a2 - ), [a2]); - d2.flags |= 2048; - li$1(9, mi$1.bind(null, d2, f2, c2, b2), void 0, null); - return c2; -}, useId: function() { - var a2 = ci$1(), b2 = R$1.identifierPrefix; - if (I$1) { - var c2 = sg; - var d2 = rg; - c2 = (d2 & ~(1 << 32 - oc(d2) - 1)).toString(32) + c2; - b2 = ":" + b2 + "R" + c2; - c2 = Uh++; - 0 < c2 && (b2 += "H" + c2.toString(32)); - b2 += ":"; - } else - c2 = Vh++, b2 = ":" + b2 + "r" + c2.toString(32) + ":"; - return a2.memoizedState = b2; -}, unstable_isNewReconciler: false }, Zh = { - readContext: Vg, - useCallback: Bi$1, - useContext: Vg, - useEffect: ji$1, - useImperativeHandle: zi$1, - useInsertionEffect: wi$1, - useLayoutEffect: xi$1, - useMemo: Ci$1, - useReducer: fi$1, - useRef: si$1, - useState: function() { - return fi$1(ei$1); - }, - useDebugValue: Ai$1, - useDeferredValue: function(a2) { - var b2 = di$1(); - return Di$1(b2, O$1.memoizedState, a2); - }, - useTransition: function() { - var a2 = fi$1(ei$1)[0], b2 = di$1().memoizedState; - return [a2, b2]; - }, - useMutableSource: hi$1, - useSyncExternalStore: ii$1, - useId: Fi$1, - unstable_isNewReconciler: false -}, $h = { readContext: Vg, useCallback: Bi$1, useContext: Vg, useEffect: ji$1, useImperativeHandle: zi$1, useInsertionEffect: wi$1, useLayoutEffect: xi$1, useMemo: Ci$1, useReducer: gi$1, useRef: si$1, useState: function() { - return gi$1(ei$1); -}, useDebugValue: Ai$1, useDeferredValue: function(a2) { - var b2 = di$1(); - return null === O$1 ? b2.memoizedState = a2 : Di$1(b2, O$1.memoizedState, a2); -}, useTransition: function() { - var a2 = gi$1(ei$1)[0], b2 = di$1().memoizedState; - return [a2, b2]; -}, useMutableSource: hi$1, useSyncExternalStore: ii$1, useId: Fi$1, unstable_isNewReconciler: false }; -function Ki$1(a2, b2) { - try { - var c2 = "", d2 = b2; - do - c2 += Pa$1(d2), d2 = d2.return; - while (d2); - var e15 = c2; - } catch (f2) { - e15 = "\nError generating stack: " + f2.message + "\n" + f2.stack; - } - return { value: a2, source: b2, stack: e15, digest: null }; -} -function Li$1(a2, b2, c2) { - return { value: a2, source: null, stack: null != c2 ? c2 : null, digest: null != b2 ? b2 : null }; -} -function Mi$1(a2, b2) { - try { - console.error(b2.value); - } catch (c2) { - setTimeout(function() { - throw c2; - }); - } -} -var Ni$1 = "function" === typeof WeakMap ? WeakMap : Map; -function Oi$1(a2, b2, c2) { - c2 = ch(-1, c2); - c2.tag = 3; - c2.payload = { element: null }; - var d2 = b2.value; - c2.callback = function() { - Pi$1 || (Pi$1 = true, Qi$1 = d2); - Mi$1(a2, b2); - }; - return c2; -} -function Ri$1(a2, b2, c2) { - c2 = ch(-1, c2); - c2.tag = 3; - var d2 = a2.type.getDerivedStateFromError; - if ("function" === typeof d2) { - var e15 = b2.value; - c2.payload = function() { - return d2(e15); - }; - c2.callback = function() { - Mi$1(a2, b2); - }; - } - var f2 = a2.stateNode; - null !== f2 && "function" === typeof f2.componentDidCatch && (c2.callback = function() { - Mi$1(a2, b2); - "function" !== typeof d2 && (null === Si$1 ? Si$1 = /* @__PURE__ */ new Set([this]) : Si$1.add(this)); - var c3 = b2.stack; - this.componentDidCatch(b2.value, { componentStack: null !== c3 ? c3 : "" }); - }); - return c2; -} -function Ti$1(a2, b2, c2) { - var d2 = a2.pingCache; - if (null === d2) { - d2 = a2.pingCache = new Ni$1(); - var e15 = /* @__PURE__ */ new Set(); - d2.set(b2, e15); - } else - e15 = d2.get(b2), void 0 === e15 && (e15 = /* @__PURE__ */ new Set(), d2.set(b2, e15)); - e15.has(c2) || (e15.add(c2), a2 = Ui$1.bind(null, a2, b2, c2), b2.then(a2, a2)); -} -function Vi$1(a2) { - do { - var b2; - if (b2 = 13 === a2.tag) - b2 = a2.memoizedState, b2 = null !== b2 ? null !== b2.dehydrated ? true : false : true; - if (b2) - return a2; - a2 = a2.return; - } while (null !== a2); - return null; -} -function Wi$1(a2, b2, c2, d2, e15) { - if (0 === (a2.mode & 1)) - return a2 === b2 ? a2.flags |= 65536 : (a2.flags |= 128, c2.flags |= 131072, c2.flags &= -52805, 1 === c2.tag && (null === c2.alternate ? c2.tag = 17 : (b2 = ch(-1, 1), b2.tag = 2, dh(c2, b2, 1))), c2.lanes |= 1), a2; - a2.flags |= 65536; - a2.lanes = e15; - return a2; -} -var Xi$1 = ua$1.ReactCurrentOwner, Ug = false; -function Yi$1(a2, b2, c2, d2) { - b2.child = null === a2 ? Ch(b2, null, c2, d2) : Bh(b2, a2.child, c2, d2); -} -function Zi$1(a2, b2, c2, d2, e15) { - c2 = c2.render; - var f2 = b2.ref; - Tg(b2, e15); - d2 = Xh(a2, b2, c2, d2, f2, e15); - c2 = bi$1(); - if (null !== a2 && !Ug) - return b2.updateQueue = a2.updateQueue, b2.flags &= -2053, a2.lanes &= ~e15, $i$1(a2, b2, e15); - I$1 && c2 && vg(b2); - b2.flags |= 1; - Yi$1(a2, b2, d2, e15); - return b2.child; -} -function aj(a2, b2, c2, d2, e15) { - if (null === a2) { - var f2 = c2.type; - if ("function" === typeof f2 && !bj(f2) && void 0 === f2.defaultProps && null === c2.compare && void 0 === c2.defaultProps) - return b2.tag = 15, b2.type = f2, cj(a2, b2, f2, d2, e15); - a2 = yh(c2.type, null, d2, b2, b2.mode, e15); - a2.ref = b2.ref; - a2.return = b2; - return b2.child = a2; - } - f2 = a2.child; - if (0 === (a2.lanes & e15)) { - var g2 = f2.memoizedProps; - c2 = c2.compare; - c2 = null !== c2 ? c2 : Ie; - if (c2(g2, d2) && a2.ref === b2.ref) - return $i$1(a2, b2, e15); - } - b2.flags |= 1; - a2 = wh(f2, d2); - a2.ref = b2.ref; - a2.return = b2; - return b2.child = a2; -} -function cj(a2, b2, c2, d2, e15) { - if (null !== a2) { - var f2 = a2.memoizedProps; - if (Ie(f2, d2) && a2.ref === b2.ref) - if (Ug = false, b2.pendingProps = d2 = f2, 0 !== (a2.lanes & e15)) - 0 !== (a2.flags & 131072) && (Ug = true); - else - return b2.lanes = a2.lanes, $i$1(a2, b2, e15); - } - return dj(a2, b2, c2, d2, e15); -} -function ej(a2, b2, c2) { - var d2 = b2.pendingProps, e15 = d2.children, f2 = null !== a2 ? a2.memoizedState : null; - if ("hidden" === d2.mode) - if (0 === (b2.mode & 1)) - b2.memoizedState = { baseLanes: 0, cachePool: null, transitions: null }, G$1(fj, gj), gj |= c2; - else { - if (0 === (c2 & 1073741824)) - return a2 = null !== f2 ? f2.baseLanes | c2 : c2, b2.lanes = b2.childLanes = 1073741824, b2.memoizedState = { baseLanes: a2, cachePool: null, transitions: null }, b2.updateQueue = null, G$1(fj, gj), gj |= a2, null; - b2.memoizedState = { baseLanes: 0, cachePool: null, transitions: null }; - d2 = null !== f2 ? f2.baseLanes : c2; - G$1(fj, gj); - gj |= d2; - } - else - null !== f2 ? (d2 = f2.baseLanes | c2, b2.memoizedState = null) : d2 = c2, G$1(fj, gj), gj |= d2; - Yi$1(a2, b2, e15, c2); - return b2.child; -} -function hj(a2, b2) { - var c2 = b2.ref; - if (null === a2 && null !== c2 || null !== a2 && a2.ref !== c2) - b2.flags |= 512, b2.flags |= 2097152; -} -function dj(a2, b2, c2, d2, e15) { - var f2 = Zf(c2) ? Xf : H$1.current; - f2 = Yf(b2, f2); - Tg(b2, e15); - c2 = Xh(a2, b2, c2, d2, f2, e15); - d2 = bi$1(); - if (null !== a2 && !Ug) - return b2.updateQueue = a2.updateQueue, b2.flags &= -2053, a2.lanes &= ~e15, $i$1(a2, b2, e15); - I$1 && d2 && vg(b2); - b2.flags |= 1; - Yi$1(a2, b2, c2, e15); - return b2.child; -} -function ij(a2, b2, c2, d2, e15) { - if (Zf(c2)) { - var f2 = true; - cg(b2); - } else - f2 = false; - Tg(b2, e15); - if (null === b2.stateNode) - jj(a2, b2), ph(b2, c2, d2), rh(b2, c2, d2, e15), d2 = true; - else if (null === a2) { - var g2 = b2.stateNode, h2 = b2.memoizedProps; - g2.props = h2; - var k2 = g2.context, l2 = c2.contextType; - "object" === typeof l2 && null !== l2 ? l2 = Vg(l2) : (l2 = Zf(c2) ? Xf : H$1.current, l2 = Yf(b2, l2)); - var m2 = c2.getDerivedStateFromProps, q2 = "function" === typeof m2 || "function" === typeof g2.getSnapshotBeforeUpdate; - q2 || "function" !== typeof g2.UNSAFE_componentWillReceiveProps && "function" !== typeof g2.componentWillReceiveProps || (h2 !== d2 || k2 !== l2) && qh(b2, g2, d2, l2); - $g = false; - var r2 = b2.memoizedState; - g2.state = r2; - gh(b2, d2, g2, e15); - k2 = b2.memoizedState; - h2 !== d2 || r2 !== k2 || Wf.current || $g ? ("function" === typeof m2 && (kh(b2, c2, m2, d2), k2 = b2.memoizedState), (h2 = $g || oh(b2, c2, h2, d2, r2, k2, l2)) ? (q2 || "function" !== typeof g2.UNSAFE_componentWillMount && "function" !== typeof g2.componentWillMount || ("function" === typeof g2.componentWillMount && g2.componentWillMount(), "function" === typeof g2.UNSAFE_componentWillMount && g2.UNSAFE_componentWillMount()), "function" === typeof g2.componentDidMount && (b2.flags |= 4194308)) : ("function" === typeof g2.componentDidMount && (b2.flags |= 4194308), b2.memoizedProps = d2, b2.memoizedState = k2), g2.props = d2, g2.state = k2, g2.context = l2, d2 = h2) : ("function" === typeof g2.componentDidMount && (b2.flags |= 4194308), d2 = false); - } else { - g2 = b2.stateNode; - bh(a2, b2); - h2 = b2.memoizedProps; - l2 = b2.type === b2.elementType ? h2 : Lg(b2.type, h2); - g2.props = l2; - q2 = b2.pendingProps; - r2 = g2.context; - k2 = c2.contextType; - "object" === typeof k2 && null !== k2 ? k2 = Vg(k2) : (k2 = Zf(c2) ? Xf : H$1.current, k2 = Yf(b2, k2)); - var y2 = c2.getDerivedStateFromProps; - (m2 = "function" === typeof y2 || "function" === typeof g2.getSnapshotBeforeUpdate) || "function" !== typeof g2.UNSAFE_componentWillReceiveProps && "function" !== typeof g2.componentWillReceiveProps || (h2 !== q2 || r2 !== k2) && qh(b2, g2, d2, k2); - $g = false; - r2 = b2.memoizedState; - g2.state = r2; - gh(b2, d2, g2, e15); - var n2 = b2.memoizedState; - h2 !== q2 || r2 !== n2 || Wf.current || $g ? ("function" === typeof y2 && (kh(b2, c2, y2, d2), n2 = b2.memoizedState), (l2 = $g || oh(b2, c2, l2, d2, r2, n2, k2) || false) ? (m2 || "function" !== typeof g2.UNSAFE_componentWillUpdate && "function" !== typeof g2.componentWillUpdate || ("function" === typeof g2.componentWillUpdate && g2.componentWillUpdate(d2, n2, k2), "function" === typeof g2.UNSAFE_componentWillUpdate && g2.UNSAFE_componentWillUpdate(d2, n2, k2)), "function" === typeof g2.componentDidUpdate && (b2.flags |= 4), "function" === typeof g2.getSnapshotBeforeUpdate && (b2.flags |= 1024)) : ("function" !== typeof g2.componentDidUpdate || h2 === a2.memoizedProps && r2 === a2.memoizedState || (b2.flags |= 4), "function" !== typeof g2.getSnapshotBeforeUpdate || h2 === a2.memoizedProps && r2 === a2.memoizedState || (b2.flags |= 1024), b2.memoizedProps = d2, b2.memoizedState = n2), g2.props = d2, g2.state = n2, g2.context = k2, d2 = l2) : ("function" !== typeof g2.componentDidUpdate || h2 === a2.memoizedProps && r2 === a2.memoizedState || (b2.flags |= 4), "function" !== typeof g2.getSnapshotBeforeUpdate || h2 === a2.memoizedProps && r2 === a2.memoizedState || (b2.flags |= 1024), d2 = false); - } - return kj(a2, b2, c2, d2, f2, e15); -} -function kj(a2, b2, c2, d2, e15, f2) { - hj(a2, b2); - var g2 = 0 !== (b2.flags & 128); - if (!d2 && !g2) - return e15 && dg(b2, c2, false), $i$1(a2, b2, f2); - d2 = b2.stateNode; - Xi$1.current = b2; - var h2 = g2 && "function" !== typeof c2.getDerivedStateFromError ? null : d2.render(); - b2.flags |= 1; - null !== a2 && g2 ? (b2.child = Bh(b2, a2.child, null, f2), b2.child = Bh(b2, null, h2, f2)) : Yi$1(a2, b2, h2, f2); - b2.memoizedState = d2.state; - e15 && dg(b2, c2, true); - return b2.child; -} -function lj(a2) { - var b2 = a2.stateNode; - b2.pendingContext ? ag(a2, b2.pendingContext, b2.pendingContext !== b2.context) : b2.context && ag(a2, b2.context, false); - Ih(a2, b2.containerInfo); -} -function mj(a2, b2, c2, d2, e15) { - Ig(); - Jg(e15); - b2.flags |= 256; - Yi$1(a2, b2, c2, d2); - return b2.child; -} -var nj = { dehydrated: null, treeContext: null, retryLane: 0 }; -function oj(a2) { - return { baseLanes: a2, cachePool: null, transitions: null }; -} -function pj(a2, b2, c2) { - var d2 = b2.pendingProps, e15 = M$1.current, f2 = false, g2 = 0 !== (b2.flags & 128), h2; - (h2 = g2) || (h2 = null !== a2 && null === a2.memoizedState ? false : 0 !== (e15 & 2)); - if (h2) - f2 = true, b2.flags &= -129; - else if (null === a2 || null !== a2.memoizedState) - e15 |= 1; - G$1(M$1, e15 & 1); - if (null === a2) { - Eg(b2); - a2 = b2.memoizedState; - if (null !== a2 && (a2 = a2.dehydrated, null !== a2)) - return 0 === (b2.mode & 1) ? b2.lanes = 1 : "$!" === a2.data ? b2.lanes = 8 : b2.lanes = 1073741824, null; - g2 = d2.children; - a2 = d2.fallback; - return f2 ? (d2 = b2.mode, f2 = b2.child, g2 = { mode: "hidden", children: g2 }, 0 === (d2 & 1) && null !== f2 ? (f2.childLanes = 0, f2.pendingProps = g2) : f2 = qj(g2, d2, 0, null), a2 = Ah(a2, d2, c2, null), f2.return = b2, a2.return = b2, f2.sibling = a2, b2.child = f2, b2.child.memoizedState = oj(c2), b2.memoizedState = nj, a2) : rj(b2, g2); - } - e15 = a2.memoizedState; - if (null !== e15 && (h2 = e15.dehydrated, null !== h2)) - return sj(a2, b2, g2, d2, h2, e15, c2); - if (f2) { - f2 = d2.fallback; - g2 = b2.mode; - e15 = a2.child; - h2 = e15.sibling; - var k2 = { mode: "hidden", children: d2.children }; - 0 === (g2 & 1) && b2.child !== e15 ? (d2 = b2.child, d2.childLanes = 0, d2.pendingProps = k2, b2.deletions = null) : (d2 = wh(e15, k2), d2.subtreeFlags = e15.subtreeFlags & 14680064); - null !== h2 ? f2 = wh(h2, f2) : (f2 = Ah(f2, g2, c2, null), f2.flags |= 2); - f2.return = b2; - d2.return = b2; - d2.sibling = f2; - b2.child = d2; - d2 = f2; - f2 = b2.child; - g2 = a2.child.memoizedState; - g2 = null === g2 ? oj(c2) : { baseLanes: g2.baseLanes | c2, cachePool: null, transitions: g2.transitions }; - f2.memoizedState = g2; - f2.childLanes = a2.childLanes & ~c2; - b2.memoizedState = nj; - return d2; - } - f2 = a2.child; - a2 = f2.sibling; - d2 = wh(f2, { mode: "visible", children: d2.children }); - 0 === (b2.mode & 1) && (d2.lanes = c2); - d2.return = b2; - d2.sibling = null; - null !== a2 && (c2 = b2.deletions, null === c2 ? (b2.deletions = [a2], b2.flags |= 16) : c2.push(a2)); - b2.child = d2; - b2.memoizedState = null; - return d2; -} -function rj(a2, b2) { - b2 = qj({ mode: "visible", children: b2 }, a2.mode, 0, null); - b2.return = a2; - return a2.child = b2; -} -function tj(a2, b2, c2, d2) { - null !== d2 && Jg(d2); - Bh(b2, a2.child, null, c2); - a2 = rj(b2, b2.pendingProps.children); - a2.flags |= 2; - b2.memoizedState = null; - return a2; -} -function sj(a2, b2, c2, d2, e15, f2, g2) { - if (c2) { - if (b2.flags & 256) - return b2.flags &= -257, d2 = Li$1(Error(p$4(422))), tj(a2, b2, g2, d2); - if (null !== b2.memoizedState) - return b2.child = a2.child, b2.flags |= 128, null; - f2 = d2.fallback; - e15 = b2.mode; - d2 = qj({ mode: "visible", children: d2.children }, e15, 0, null); - f2 = Ah(f2, e15, g2, null); - f2.flags |= 2; - d2.return = b2; - f2.return = b2; - d2.sibling = f2; - b2.child = d2; - 0 !== (b2.mode & 1) && Bh(b2, a2.child, null, g2); - b2.child.memoizedState = oj(g2); - b2.memoizedState = nj; - return f2; - } - if (0 === (b2.mode & 1)) - return tj(a2, b2, g2, null); - if ("$!" === e15.data) { - d2 = e15.nextSibling && e15.nextSibling.dataset; - if (d2) - var h2 = d2.dgst; - d2 = h2; - f2 = Error(p$4(419)); - d2 = Li$1(f2, d2, void 0); - return tj(a2, b2, g2, d2); - } - h2 = 0 !== (g2 & a2.childLanes); - if (Ug || h2) { - d2 = R$1; - if (null !== d2) { - switch (g2 & -g2) { - case 4: - e15 = 2; - break; - case 16: - e15 = 8; - break; - case 64: - case 128: - case 256: - case 512: - case 1024: - case 2048: - case 4096: - case 8192: - case 16384: - case 32768: - case 65536: - case 131072: - case 262144: - case 524288: - case 1048576: - case 2097152: - case 4194304: - case 8388608: - case 16777216: - case 33554432: - case 67108864: - e15 = 32; - break; - case 536870912: - e15 = 268435456; - break; - default: - e15 = 0; - } - e15 = 0 !== (e15 & (d2.suspendedLanes | g2)) ? 0 : e15; - 0 !== e15 && e15 !== f2.retryLane && (f2.retryLane = e15, Zg(a2, e15), mh(d2, a2, e15, -1)); - } - uj(); - d2 = Li$1(Error(p$4(421))); - return tj(a2, b2, g2, d2); - } - if ("$?" === e15.data) - return b2.flags |= 128, b2.child = a2.child, b2 = vj.bind(null, a2), e15._reactRetry = b2, null; - a2 = f2.treeContext; - yg = Lf(e15.nextSibling); - xg = b2; - I$1 = true; - zg = null; - null !== a2 && (og[pg++] = rg, og[pg++] = sg, og[pg++] = qg, rg = a2.id, sg = a2.overflow, qg = b2); - b2 = rj(b2, d2.children); - b2.flags |= 4096; - return b2; -} -function wj(a2, b2, c2) { - a2.lanes |= b2; - var d2 = a2.alternate; - null !== d2 && (d2.lanes |= b2); - Sg(a2.return, b2, c2); -} -function xj(a2, b2, c2, d2, e15) { - var f2 = a2.memoizedState; - null === f2 ? a2.memoizedState = { isBackwards: b2, rendering: null, renderingStartTime: 0, last: d2, tail: c2, tailMode: e15 } : (f2.isBackwards = b2, f2.rendering = null, f2.renderingStartTime = 0, f2.last = d2, f2.tail = c2, f2.tailMode = e15); -} -function yj(a2, b2, c2) { - var d2 = b2.pendingProps, e15 = d2.revealOrder, f2 = d2.tail; - Yi$1(a2, b2, d2.children, c2); - d2 = M$1.current; - if (0 !== (d2 & 2)) - d2 = d2 & 1 | 2, b2.flags |= 128; - else { - if (null !== a2 && 0 !== (a2.flags & 128)) - a: - for (a2 = b2.child; null !== a2; ) { - if (13 === a2.tag) - null !== a2.memoizedState && wj(a2, c2, b2); - else if (19 === a2.tag) - wj(a2, c2, b2); - else if (null !== a2.child) { - a2.child.return = a2; - a2 = a2.child; - continue; - } - if (a2 === b2) - break a; - for (; null === a2.sibling; ) { - if (null === a2.return || a2.return === b2) - break a; - a2 = a2.return; - } - a2.sibling.return = a2.return; - a2 = a2.sibling; - } - d2 &= 1; - } - G$1(M$1, d2); - if (0 === (b2.mode & 1)) - b2.memoizedState = null; - else - switch (e15) { - case "forwards": - c2 = b2.child; - for (e15 = null; null !== c2; ) - a2 = c2.alternate, null !== a2 && null === Mh(a2) && (e15 = c2), c2 = c2.sibling; - c2 = e15; - null === c2 ? (e15 = b2.child, b2.child = null) : (e15 = c2.sibling, c2.sibling = null); - xj(b2, false, e15, c2, f2); - break; - case "backwards": - c2 = null; - e15 = b2.child; - for (b2.child = null; null !== e15; ) { - a2 = e15.alternate; - if (null !== a2 && null === Mh(a2)) { - b2.child = e15; - break; - } - a2 = e15.sibling; - e15.sibling = c2; - c2 = e15; - e15 = a2; - } - xj(b2, true, c2, null, f2); - break; - case "together": - xj(b2, false, null, null, void 0); - break; - default: - b2.memoizedState = null; - } - return b2.child; -} -function jj(a2, b2) { - 0 === (b2.mode & 1) && null !== a2 && (a2.alternate = null, b2.alternate = null, b2.flags |= 2); -} -function $i$1(a2, b2, c2) { - null !== a2 && (b2.dependencies = a2.dependencies); - hh |= b2.lanes; - if (0 === (c2 & b2.childLanes)) - return null; - if (null !== a2 && b2.child !== a2.child) - throw Error(p$4(153)); - if (null !== b2.child) { - a2 = b2.child; - c2 = wh(a2, a2.pendingProps); - b2.child = c2; - for (c2.return = b2; null !== a2.sibling; ) - a2 = a2.sibling, c2 = c2.sibling = wh(a2, a2.pendingProps), c2.return = b2; - c2.sibling = null; - } - return b2.child; -} -function zj(a2, b2, c2) { - switch (b2.tag) { - case 3: - lj(b2); - Ig(); - break; - case 5: - Kh(b2); - break; - case 1: - Zf(b2.type) && cg(b2); - break; - case 4: - Ih(b2, b2.stateNode.containerInfo); - break; - case 10: - var d2 = b2.type._context, e15 = b2.memoizedProps.value; - G$1(Mg, d2._currentValue); - d2._currentValue = e15; - break; - case 13: - d2 = b2.memoizedState; - if (null !== d2) { - if (null !== d2.dehydrated) - return G$1(M$1, M$1.current & 1), b2.flags |= 128, null; - if (0 !== (c2 & b2.child.childLanes)) - return pj(a2, b2, c2); - G$1(M$1, M$1.current & 1); - a2 = $i$1(a2, b2, c2); - return null !== a2 ? a2.sibling : null; - } - G$1(M$1, M$1.current & 1); - break; - case 19: - d2 = 0 !== (c2 & b2.childLanes); - if (0 !== (a2.flags & 128)) { - if (d2) - return yj(a2, b2, c2); - b2.flags |= 128; - } - e15 = b2.memoizedState; - null !== e15 && (e15.rendering = null, e15.tail = null, e15.lastEffect = null); - G$1(M$1, M$1.current); - if (d2) - break; - else - return null; - case 22: - case 23: - return b2.lanes = 0, ej(a2, b2, c2); - } - return $i$1(a2, b2, c2); -} -var Aj, Bj, Cj, Dj; -Aj = function(a2, b2) { - for (var c2 = b2.child; null !== c2; ) { - if (5 === c2.tag || 6 === c2.tag) - a2.appendChild(c2.stateNode); - else if (4 !== c2.tag && null !== c2.child) { - c2.child.return = c2; - c2 = c2.child; - continue; - } - if (c2 === b2) - break; - for (; null === c2.sibling; ) { - if (null === c2.return || c2.return === b2) - return; - c2 = c2.return; - } - c2.sibling.return = c2.return; - c2 = c2.sibling; - } -}; -Bj = function() { -}; -Cj = function(a2, b2, c2, d2) { - var e15 = a2.memoizedProps; - if (e15 !== d2) { - a2 = b2.stateNode; - Hh(Eh.current); - var f2 = null; - switch (c2) { - case "input": - e15 = Ya$1(a2, e15); - d2 = Ya$1(a2, d2); - f2 = []; - break; - case "select": - e15 = A$2({}, e15, { value: void 0 }); - d2 = A$2({}, d2, { value: void 0 }); - f2 = []; - break; - case "textarea": - e15 = gb(a2, e15); - d2 = gb(a2, d2); - f2 = []; - break; - default: - "function" !== typeof e15.onClick && "function" === typeof d2.onClick && (a2.onclick = Bf); - } - ub(c2, d2); - var g2; - c2 = null; - for (l2 in e15) - if (!d2.hasOwnProperty(l2) && e15.hasOwnProperty(l2) && null != e15[l2]) - if ("style" === l2) { - var h2 = e15[l2]; - for (g2 in h2) - h2.hasOwnProperty(g2) && (c2 || (c2 = {}), c2[g2] = ""); - } else - "dangerouslySetInnerHTML" !== l2 && "children" !== l2 && "suppressContentEditableWarning" !== l2 && "suppressHydrationWarning" !== l2 && "autoFocus" !== l2 && (ea$1.hasOwnProperty(l2) ? f2 || (f2 = []) : (f2 = f2 || []).push(l2, null)); - for (l2 in d2) { - var k2 = d2[l2]; - h2 = null != e15 ? e15[l2] : void 0; - if (d2.hasOwnProperty(l2) && k2 !== h2 && (null != k2 || null != h2)) - if ("style" === l2) - if (h2) { - for (g2 in h2) - !h2.hasOwnProperty(g2) || k2 && k2.hasOwnProperty(g2) || (c2 || (c2 = {}), c2[g2] = ""); - for (g2 in k2) - k2.hasOwnProperty(g2) && h2[g2] !== k2[g2] && (c2 || (c2 = {}), c2[g2] = k2[g2]); - } else - c2 || (f2 || (f2 = []), f2.push( - l2, - c2 - )), c2 = k2; - else - "dangerouslySetInnerHTML" === l2 ? (k2 = k2 ? k2.__html : void 0, h2 = h2 ? h2.__html : void 0, null != k2 && h2 !== k2 && (f2 = f2 || []).push(l2, k2)) : "children" === l2 ? "string" !== typeof k2 && "number" !== typeof k2 || (f2 = f2 || []).push(l2, "" + k2) : "suppressContentEditableWarning" !== l2 && "suppressHydrationWarning" !== l2 && (ea$1.hasOwnProperty(l2) ? (null != k2 && "onScroll" === l2 && D$1("scroll", a2), f2 || h2 === k2 || (f2 = [])) : (f2 = f2 || []).push(l2, k2)); - } - c2 && (f2 = f2 || []).push("style", c2); - var l2 = f2; - if (b2.updateQueue = l2) - b2.flags |= 4; - } -}; -Dj = function(a2, b2, c2, d2) { - c2 !== d2 && (b2.flags |= 4); -}; -function Ej(a2, b2) { - if (!I$1) - switch (a2.tailMode) { - case "hidden": - b2 = a2.tail; - for (var c2 = null; null !== b2; ) - null !== b2.alternate && (c2 = b2), b2 = b2.sibling; - null === c2 ? a2.tail = null : c2.sibling = null; - break; - case "collapsed": - c2 = a2.tail; - for (var d2 = null; null !== c2; ) - null !== c2.alternate && (d2 = c2), c2 = c2.sibling; - null === d2 ? b2 || null === a2.tail ? a2.tail = null : a2.tail.sibling = null : d2.sibling = null; - } -} -function S$1(a2) { - var b2 = null !== a2.alternate && a2.alternate.child === a2.child, c2 = 0, d2 = 0; - if (b2) - for (var e15 = a2.child; null !== e15; ) - c2 |= e15.lanes | e15.childLanes, d2 |= e15.subtreeFlags & 14680064, d2 |= e15.flags & 14680064, e15.return = a2, e15 = e15.sibling; - else - for (e15 = a2.child; null !== e15; ) - c2 |= e15.lanes | e15.childLanes, d2 |= e15.subtreeFlags, d2 |= e15.flags, e15.return = a2, e15 = e15.sibling; - a2.subtreeFlags |= d2; - a2.childLanes = c2; - return b2; -} -function Fj(a2, b2, c2) { - var d2 = b2.pendingProps; - wg(b2); - switch (b2.tag) { - case 2: - case 16: - case 15: - case 0: - case 11: - case 7: - case 8: - case 12: - case 9: - case 14: - return S$1(b2), null; - case 1: - return Zf(b2.type) && $f(), S$1(b2), null; - case 3: - d2 = b2.stateNode; - Jh(); - E$1(Wf); - E$1(H$1); - Oh(); - d2.pendingContext && (d2.context = d2.pendingContext, d2.pendingContext = null); - if (null === a2 || null === a2.child) - Gg(b2) ? b2.flags |= 4 : null === a2 || a2.memoizedState.isDehydrated && 0 === (b2.flags & 256) || (b2.flags |= 1024, null !== zg && (Gj(zg), zg = null)); - Bj(a2, b2); - S$1(b2); - return null; - case 5: - Lh(b2); - var e15 = Hh(Gh.current); - c2 = b2.type; - if (null !== a2 && null != b2.stateNode) - Cj(a2, b2, c2, d2, e15), a2.ref !== b2.ref && (b2.flags |= 512, b2.flags |= 2097152); - else { - if (!d2) { - if (null === b2.stateNode) - throw Error(p$4(166)); - S$1(b2); - return null; - } - a2 = Hh(Eh.current); - if (Gg(b2)) { - d2 = b2.stateNode; - c2 = b2.type; - var f2 = b2.memoizedProps; - d2[Of] = b2; - d2[Pf] = f2; - a2 = 0 !== (b2.mode & 1); - switch (c2) { - case "dialog": - D$1("cancel", d2); - D$1("close", d2); - break; - case "iframe": - case "object": - case "embed": - D$1("load", d2); - break; - case "video": - case "audio": - for (e15 = 0; e15 < lf.length; e15++) - D$1(lf[e15], d2); - break; - case "source": - D$1("error", d2); - break; - case "img": - case "image": - case "link": - D$1( - "error", - d2 - ); - D$1("load", d2); - break; - case "details": - D$1("toggle", d2); - break; - case "input": - Za$1(d2, f2); - D$1("invalid", d2); - break; - case "select": - d2._wrapperState = { wasMultiple: !!f2.multiple }; - D$1("invalid", d2); - break; - case "textarea": - hb(d2, f2), D$1("invalid", d2); - } - ub(c2, f2); - e15 = null; - for (var g2 in f2) - if (f2.hasOwnProperty(g2)) { - var h2 = f2[g2]; - "children" === g2 ? "string" === typeof h2 ? d2.textContent !== h2 && (true !== f2.suppressHydrationWarning && Af(d2.textContent, h2, a2), e15 = ["children", h2]) : "number" === typeof h2 && d2.textContent !== "" + h2 && (true !== f2.suppressHydrationWarning && Af( - d2.textContent, - h2, - a2 - ), e15 = ["children", "" + h2]) : ea$1.hasOwnProperty(g2) && null != h2 && "onScroll" === g2 && D$1("scroll", d2); - } - switch (c2) { - case "input": - Va$1(d2); - db(d2, f2, true); - break; - case "textarea": - Va$1(d2); - jb(d2); - break; - case "select": - case "option": - break; - default: - "function" === typeof f2.onClick && (d2.onclick = Bf); - } - d2 = e15; - b2.updateQueue = d2; - null !== d2 && (b2.flags |= 4); - } else { - g2 = 9 === e15.nodeType ? e15 : e15.ownerDocument; - "http://www.w3.org/1999/xhtml" === a2 && (a2 = kb(c2)); - "http://www.w3.org/1999/xhtml" === a2 ? "script" === c2 ? (a2 = g2.createElement("div"), a2.innerHTML = " + diff --git a/package-lock.json b/package-lock.json index 5a8b9bf..226e7c9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "flos", - "version": "1.0.0", + "version": "0.0.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "flos", - "version": "1.0.0", + "version": "0.0.1", "hasInstallScript": true, "dependencies": { "@electron-toolkit/preload": "^2.0.0", diff --git a/package.json b/package.json index f01632c..72f65a6 100644 --- a/package.json +++ b/package.json @@ -1,76 +1,76 @@ { - "name": "flos", - "version": "0.0.1", - "description": "An Electron application with React", - "main": "./out/main/index.js", - "author": "N95JPL", - "homepage": "", - "scripts": { - "format": "prettier --write .", - "lint": "eslint . --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix", - "start": "electron-vite preview", - "dev": "electron-vite dev", - "build": "electron-vite build", - "postinstall": "electron-builder install-app-deps", - "build:win": "npm run build && electron-builder --win --config", - "build:mac": "npm run build && electron-builder --mac --config", - "build:linux": "npm run build && electron-builder --linux --config" - }, - "dependencies": { - "@electron-toolkit/preload": "^2.0.0", - "@electron-toolkit/utils": "^2.0.0", - "@emotion/react": "^11.10.5", - "@emotion/styled": "^11.10.5", - "@mui/material": "^5.15.3", - "color-convert": "^2.0.1", - "electron-updater": "^6.1.1", - "fast-xml-parser": "^4.2.4", - "immer": "^9.0.17", - "react": "^18.2.0", - "react-color": "^2.19.3", - "react-d3-speedometer": "^2.1.0-rc.0", - "react-dom": "^18.2.0", - "react-icons": "^4.7.1", - "react-router-dom": "^6.6.1", - "react-transition-group": "^4.4.5", - "recharts": "^2.3.2", - "socketcan": "^4.0.4", - "tw-elements": "^1.0.0-alpha13", - "xml2json": "^0.12.0", - "zustand": "^4.2.0" - }, - "devDependencies": { - "@electron-toolkit/eslint-config": "^1.0.1", - "@electron-toolkit/eslint-config-prettier": "^1.0.1", - "@eove/eslint-config-electron": "^1.8.0", - "@prettier/plugin-xml": "^2.2.0", - "@tailwindcss/aspect-ratio": "^0.4.2", - "@tailwindcss/container-queries": "^0.1.0", - "@tailwindcss/forms": "^0.5.3", - "@tailwindcss/line-clamp": "^0.4.2", - "@tailwindcss/typography": "^0.5.8", - "@testing-library/react": "^13.4.0", - "@testing-library/user-event": "^14.4.3", - "@vitejs/plugin-react": "^4.0.4", - "ajv": "^8.11.2", - "autoprefixer": "^10.4.13", - "electron": "^25.6.0", - "electron-builder": "^24.6.3", - "electron-vite": "^1.0.27", - "eslint": "^8.47.0", - "eslint-auto-fix": "^1.0.4", - "eslint-config-prettier": "^8.6.0", - "eslint-config-standard": "^17.0.0", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.6.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-react": "^7.33.2", - "eslint-plugin-react-hooks": "^4.6.0", - "postcss": "^8.4.20", - "postcss-loader": "^7.0.2", - "prettier": "^3.0.2", - "tailwind-safelist-generator": "^1.0.0", - "tailwindcss": "^3.2.4", - "vite": "^4.4.9" - } + "name": "flos", + "version": "0.0.1", + "description": "An Electron application with React", + "main": "./out/main/index.js", + "author": "N95JPL", + "homepage": "", + "scripts": { + "format": "prettier --write .", + "lint": "eslint . --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix", + "start": "electron-vite preview", + "dev": "electron-vite dev", + "build": "electron-vite build", + "postinstall": "electron-builder install-app-deps", + "build:win": "npm run build && electron-builder --win --config", + "build:mac": "npm run build && electron-builder --mac --config", + "build:linux": "npm run build && electron-builder --linux --config" + }, + "dependencies": { + "@electron-toolkit/preload": "^2.0.0", + "@electron-toolkit/utils": "^2.0.0", + "@emotion/react": "^11.10.5", + "@emotion/styled": "^11.10.5", + "@mui/material": "^5.15.3", + "color-convert": "^2.0.1", + "electron-updater": "^6.1.1", + "fast-xml-parser": "^4.2.4", + "immer": "^9.0.17", + "react": "^18.2.0", + "react-color": "^2.19.3", + "react-d3-speedometer": "^2.1.0-rc.0", + "react-dom": "^18.2.0", + "react-icons": "^4.7.1", + "react-router-dom": "^6.6.1", + "react-transition-group": "^4.4.5", + "recharts": "^2.3.2", + "socketcan": "^4.0.4", + "tw-elements": "^1.0.0-alpha13", + "xml2json": "^0.12.0", + "zustand": "^4.2.0" + }, + "devDependencies": { + "@electron-toolkit/eslint-config": "^1.0.1", + "@electron-toolkit/eslint-config-prettier": "^1.0.1", + "@eove/eslint-config-electron": "^1.8.0", + "@prettier/plugin-xml": "^2.2.0", + "@tailwindcss/aspect-ratio": "^0.4.2", + "@tailwindcss/container-queries": "^0.1.0", + "@tailwindcss/forms": "^0.5.3", + "@tailwindcss/line-clamp": "^0.4.2", + "@tailwindcss/typography": "^0.5.8", + "@testing-library/react": "^13.4.0", + "@testing-library/user-event": "^14.4.3", + "@vitejs/plugin-react": "^4.0.4", + "ajv": "^8.11.2", + "autoprefixer": "^10.4.13", + "electron": "^25.6.0", + "electron-builder": "^24.6.3", + "electron-vite": "^1.0.27", + "eslint": "^8.47.0", + "eslint-auto-fix": "^1.0.4", + "eslint-config-prettier": "^8.6.0", + "eslint-config-standard": "^17.0.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-n": "^15.6.0", + "eslint-plugin-promise": "^6.1.1", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.6.0", + "postcss": "^8.4.20", + "postcss-loader": "^7.0.2", + "prettier": "^3.0.2", + "tailwind-safelist-generator": "^1.0.0", + "tailwindcss": "^3.2.4", + "vite": "^4.4.9" + } } diff --git a/src/main/index.js b/src/main/index.js index 5f33c6f..bf3536c 100644 --- a/src/main/index.js +++ b/src/main/index.js @@ -1,107 +1,108 @@ /* eslint-disable no-unused-vars */ -import { ipcMain, app, shell, BrowserWindow } from 'electron' -import { join } from 'path' -import { electronApp, optimizer, is } from '@electron-toolkit/utils' -import icon from '../../resources/icon.png?asset' -import { server } from './server' -let mainWindow -process.on('uncaughtException', (error) => { - console.log('[ERROR]', error) -}) - +import { ipcMain, app, shell, BrowserWindow } from "electron"; +import { join } from "path"; +import { electronApp, optimizer, is } from "@electron-toolkit/utils"; +import icon from "../../resources/icon.png?asset"; +import { server } from "./server"; +let mainWindow; +process.on("uncaughtException", (error) => { + console.log("[ERROR]", error); +}); +// console.log(app.getPath("userData")); function createWindow() { - // Create the browser window. - mainWindow = new BrowserWindow({ - backgroundColor: '#252525', - frame: false, - movable: false, - width: 800, - maxWidth: 800, - minWidth: 800, - height: 480, - center: true, - transparent: true, - fullscreen: false, - maxHeight: 480, - minHeight: 480, - show: true, - autoHideMenuBar: true, - ...(process.platform === 'linux' ? { icon } : {}), - webPreferences: { - preload: join(__dirname, '../preload/index.js'), - sandbox: false, - nativeWindowOpen: true, - nodeIntegration: false, - enableRemoteModule: true, - contextIsolation: true, - devTools: true, - webSecurity: true - } - }) - mainWindow.on('unresponsive', () => { - console.log('Load time excessive') - }) - if (is.dev) { - mainWindow.webContents.openDevTools({ mode: 'detach' }) - } - console.log('Hello?') - mainWindow.once('ready-to-show', () => { - server(mainWindow) - mainWindow.loadFile(join(__dirname, '../renderer/splashScreen.html')) - mainWindow.show() - setTimeout(() => { - mainWindow.webContents.send('fadeOut', 'now') - setTimeout(() => { - if (is.dev && process.env['ELECTRON_RENDERER_URL']) { - mainWindow.loadURL(process.env['ELECTRON_RENDERER_URL']) - } else { - mainWindow.loadFile(join(__dirname, '../renderer/index.html')) - } - }, 2000) - }, 1000) - }) + // Create the browser window. + mainWindow = new BrowserWindow({ + backgroundColor: "#252525", + frame: false, + movable: false, + width: 800, + maxWidth: 800, + minWidth: 800, + height: 480, + center: true, + transparent: true, + fullscreen: false, + maxHeight: 480, + minHeight: 480, + show: true, + autoHideMenuBar: true, + ...(process.platform === "linux" ? { icon } : {}), + webPreferences: { + preload: join(__dirname, "../preload/index.js"), + sandbox: false, + nativeWindowOpen: true, + nodeIntegration: false, + enableRemoteModule: true, + contextIsolation: true, + devTools: true, + webSecurity: true, + }, + }); + mainWindow.on("unresponsive", () => { + console.log("Load time excessive"); + }); + if (is.dev) { + mainWindow.webContents.openDevTools({ mode: "detach" }); + } + mainWindow.webContents.openDevTools({ mode: "detach" }); + // console.log("Hello?"); + mainWindow.once("ready-to-show", () => { + server(mainWindow); + mainWindow.loadFile(join(__dirname, "../renderer/splashScreen.html")); + mainWindow.show(); + setTimeout(() => { + mainWindow.webContents.send("fadeOut", "now"); + setTimeout(() => { + if (is.dev && process.env["ELECTRON_RENDERER_URL"]) { + mainWindow.loadURL(process.env["ELECTRON_RENDERER_URL"]); + } else { + mainWindow.loadFile(join(__dirname, "../renderer/index.html")); + } + }, 2000); + }, 1000); + }); - mainWindow.webContents.setWindowOpenHandler((details) => { - shell.openExternal(details.url) - return { action: 'deny' } - }) + mainWindow.webContents.setWindowOpenHandler((details) => { + shell.openExternal(details.url); + return { action: "deny" }; + }); } -ipcMain.on('close', (event, msg) => { - app.quit() -}) +ipcMain.on("close", (event, msg) => { + app.quit(); +}); // This method will be called when Electron has finished // initialization and is ready to create browser windows. // Some APIs can only be used after this event occurs. app.whenReady().then(() => { - // Set app user model id for windows - electronApp.setAppUserModelId('com.electron') + // Set app user model id for windows + electronApp.setAppUserModelId("com.electron"); - // Default open or close DevTools by F12 in development - // and ignore CommandOrControl + R in production. - // see https://github.com/alex8088/electron-toolkit/tree/master/packages/utils - app.on('browser-window-created', (_, window) => { - optimizer.watchWindowShortcuts(window) - }) + // Default open or close DevTools by F12 in development + // and ignore CommandOrControl + R in production. + // see https://github.com/alex8088/electron-toolkit/tree/master/packages/utils + app.on("browser-window-created", (_, window) => { + optimizer.watchWindowShortcuts(window); + }); - createWindow() + createWindow(); - app.on('activate', function () { - // On macOS it's common to re-create a window in the app when the - // dock icon is clicked and there are no other windows open. - if (BrowserWindow.getAllWindows().length === 0) createWindow() - }) -}) + app.on("activate", function () { + // On macOS it's common to re-create a window in the app when the + // dock icon is clicked and there are no other windows open. + if (BrowserWindow.getAllWindows().length === 0) createWindow(); + }); +}); // Quit when all windows are closed, except on macOS. There, it's common // for applications and their menu bar to stay active until the user quits // explicitly with Cmd + Q. -app.on('window-all-closed', () => { - if (process.platform !== 'darwin') { - app.quit() - } -}) +app.on("window-all-closed", () => { + if (process.platform !== "darwin") { + app.quit(); + } +}); // In this file you can include the rest of your app"s specific main process // code. You can also put them in separate files and require them here. diff --git a/src/main/resources/MediumSpeedBus/1025.js b/src/main/resources/MediumSpeedBus/1025.js index dbd42cd..093a13b 100644 --- a/src/main/resources/MediumSpeedBus/1025.js +++ b/src/main/resources/MediumSpeedBus/1025.js @@ -1,421 +1,421 @@ /* eslint-disable no-unused-vars */ -import { VINDecode } from '../JSON/VINDecode' -import { Vehicle_Manifest } from '../JSON/Vehicle_Manifest' -import { vehicleInfo } from '../VariableMaps/VehicleInfoVar' +import { VINDecode } from "../JSON/VINDecode"; +import { Vehicle_Manifest } from "../JSON/Vehicle_Manifest"; +import { vehicleInfo } from "../VariableMaps/VehicleInfoVar"; // Mind bogglingly long array of all the possible CCFs // To be honest, this really isn't required, but it was fun to make! :D var arrBuilder = [ - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-' -] + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", +]; //var Builder = [] -var CCF = '' -var CCFString = '' -var is_modelid = false -var is_model = false -var is_ccfid = false -var manifest_id = '' +var CCF = ""; +var CCFString = ""; +var is_modelid = false; +var is_model = false; +var is_ccfid = false; +var manifest_id = ""; -var setup = true +var setup = false; //Important stuff that will need broadcasting -// vehicleInfo.VIN = "-" -// vehicleInfo.Model_id = "-" -// vehicleInfo.brand = "-" -// vehicleInfo.model = "-" -// vehicleInfo.modelName = "-" -// vehicleInfo.market = "-" -// vehicleInfo.bodyStyle = "-" -// vehicleInfo.trim = "-" -// vehicleInfo.emission = "-" -// vehicleInfo.modelYear = "-" -// vehicleInfo.plant = "-" -// vehicleInfo.driver = "-" -// vehicleInfo.transmission = "-" -// vehicleInfo.engine = "-" +vehicleInfo.VIN = "-"; +vehicleInfo.Model_id = "-"; +vehicleInfo.brand = "-"; +vehicleInfo.model = "-"; +vehicleInfo.modelName = "-"; +vehicleInfo.market = "-"; +vehicleInfo.bodyStyle = "-"; +vehicleInfo.trim = "-"; +vehicleInfo.emission = "-"; +vehicleInfo.modelYear = "-"; +vehicleInfo.plant = "-"; +vehicleInfo.driver = "-"; +vehicleInfo.transmission = "-"; +vehicleInfo.engine = "-"; export function ms1025(msg, window) { - if (!setup) { - if (arrBuilder.includes('-')) { - vehicleInfo.setupStep = vehicleInfo.setupStep + 1 - const strId = msg.id - const arr = [...msg.data] - // console.log(msg.data); - var arrData = [arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7]] - for (var i = 0; i < arrData.length; i++) { - arrData[i] = arrData[i].toString(16) - if (arrData[i].length < 2) { - arrData[i] = '0' + arrData[i] - } - } - vehicleInfo.setupInfoLine = - 'Parsing VIN data: ' + vehicleInfo.setupStep + '/28 blocks received' - arrBuilder[parseInt(arr[0]) - 1] = arrData - // console.log((arr[0] - 1) + ": " + (arrBuilder[(arr[0] - 1)])); - } else { - if (vehicleInfo.firstTimeSetup && !vehicleInfo.vinDecode) { - vehicleInfo.setupInfoLine = 'Calculating VIN...' - console.log('All CCF data received') - CCF = arrBuilder.join('') - CCF = CCF.replaceAll(',', '') - CCFString = hex2a(CCF) //Converts the CCF to a string - vehicleInfo.VIN = CCFString.substring(3, 20) //VIN is 17 characters long - console.log('This vehicles VIN: ' + vehicleInfo.VIN) - if (vehicleInfo.VIN.length === 17) { - console.log('VIN is valid') - vehicleInfo.setupInfoLine = 'Decoding VIN: Fetching Model ID' - decodeModelID(vehicleInfo.VIN) //This is where the magic happens - if (is_modelid) { - console.log('Model ID: ' + vehicleInfo.Model_id) - vehicleInfo.setupInfoLine = 'Decoding VIN: Fetching Model' - decodeModel(vehicleInfo.VIN) //This is where the magic happens - if (is_model) { - vehicleInfo.setupInfoLine = 'Decoding VIN: Fetching CCF ID and As Built' - decodeCCFID() //This is where the magic happens - if (is_ccfid) { - vehicleInfo.setupInfoLine = 'Decoding CCF: Well... On day I we will decode the CCF' - console.log('It would appear that all the vehicle info has been decoded!') - vehicleInfo.vinDecode = true - } - } - } - } - if (!vehicleInfo.vinDecode) { - vehicleInfo.setupInfoLine = 'Oops! Something went wrong! We will try again!' - // console.log( - // "Parsing vehicle data has failed - See parsed data below" - // ); - arrBuilder = [ - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-', - '-' - ] - CCF = '' - CCFString = '' - vehicleInfo.firstTimeSetup = true - vehicleInfo.vinDecode = false - vehicleInfo.CCFID = '-' - vehicleInfo.As_Built = '-' - vehicleInfo.VIN = '-' - vehicleInfo.Model_id = '-' - vehicleInfo.Brand = '-' - vehicleInfo.Model = '-' - vehicleInfo.ModelName = '-' - vehicleInfo.Market = '-' - vehicleInfo.BodyStyle = '-' - vehicleInfo.Trim = '-' - vehicleInfo.Emission = '-' - vehicleInfo.ModelYear = '-' - vehicleInfo.Plant = '-' - vehicleInfo.Driver = '-' - vehicleInfo.Transmission = '-' - vehicleInfo.Engine = '-' - } - } else if (!vehicleInfo.firstTimeSetup && !vehicleInfo.vinDecode) { - // console.log("All CCF data received"); - CCF = arrBuilder.join('') - CCF = CCF.replaceAll(',', '') - CCFString = hex2a(CCF) - let VIN = CCFString.substring(3, 20) - if (VIN === vehicleInfo.VIN) { - vehicleInfo.vinDecode = true - setup = true - // console.log("This is the same vehicle as before"); - // console.log("This vehicles VIN: " + vehicleInfo.VIN); - } else { - vehicleInfo.firstTimeSetup = true - vehicleInfo.vinDecode = false - vehicleInfo.VIN = VIN - vehicleInfo.CCFID = '-' - vehicleInfo.As_Built = '-' - vehicleInfo.Model_id = '-' - vehicleInfo.Brand = '-' - vehicleInfo.Model = '-' - vehicleInfo.ModelName = '-' - vehicleInfo.Market = '-' - vehicleInfo.BodyStyle = '-' - vehicleInfo.Trim = '-' - vehicleInfo.Emission = '-' - vehicleInfo.ModelYear = '-' - vehicleInfo.Plant = '-' - vehicleInfo.Driver = '-' - vehicleInfo.Transmission = '-' - vehicleInfo.Engine = '-' - } - } else if (vehicleInfo.vinDecode) { - setup = true - setTimeout(() => { - window.webContents.send('fadeOut', 'now') - setTimeout(() => { - vehicleInfo.firstTimeSetup = false - }, 2000) - }, 2000) - } - } - } + if (!setup) { + if (arrBuilder.includes("-")) { + vehicleInfo.setupStep = vehicleInfo.setupStep + 1; + const strId = msg.id; + const arr = [...msg.data]; + // console.log(msg.data); + var arrData = [arr[1], arr[2], arr[3], arr[4], arr[5], arr[6], arr[7]]; + for (var i = 0; i < arrData.length; i++) { + arrData[i] = arrData[i].toString(16); + if (arrData[i].length < 2) { + arrData[i] = "0" + arrData[i]; + } + } + vehicleInfo.setupInfoLine = + "Parsing VIN data: " + vehicleInfo.setupStep + "/28 blocks received"; + arrBuilder[parseInt(arr[0]) - 1] = arrData; + // console.log((arr[0] - 1) + ": " + (arrBuilder[(arr[0] - 1)])); + } else { + if (vehicleInfo.firstTimeSetup && !vehicleInfo.vinDecode) { + vehicleInfo.setupInfoLine = "Calculating VIN..."; + console.log("All CCF data received"); + CCF = arrBuilder.join(""); + CCF = CCF.replaceAll(",", ""); + CCFString = hex2a(CCF); //Converts the CCF to a string + vehicleInfo.VIN = CCFString.substring(3, 20); //VIN is 17 characters long + console.log("This vehicles VIN: " + vehicleInfo.VIN); + if (vehicleInfo.VIN.length === 17) { + console.log("VIN is valid"); + vehicleInfo.setupInfoLine = "Decoding VIN: Fetching Model ID"; + decodeModelID(vehicleInfo.VIN); //This is where the magic happens + if (is_modelid) { + console.log("Model ID: " + vehicleInfo.Model_id); + vehicleInfo.setupInfoLine = "Decoding VIN: Fetching Model"; + decodeModel(vehicleInfo.VIN); //This is where the magic happens + if (is_model) { + vehicleInfo.setupInfoLine = "Decoding VIN: Fetching CCF ID and As Built"; + decodeCCFID(); //This is where the magic happens + if (is_ccfid) { + vehicleInfo.setupInfoLine = "Decoding CCF: Well... On day I we will decode the CCF"; + console.log("It would appear that all the vehicle info has been decoded!"); + vehicleInfo.vinDecode = true; + } + } + } + } + if (!vehicleInfo.vinDecode) { + vehicleInfo.setupInfoLine = "Oops! Something went wrong! We will try again!"; + // console.log( + // "Parsing vehicle data has failed - See parsed data below" + // ); + arrBuilder = [ + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + "-", + ]; + CCF = ""; + CCFString = ""; + vehicleInfo.firstTimeSetup = true; + vehicleInfo.vinDecode = false; + vehicleInfo.CCFID = "-"; + vehicleInfo.As_Built = "-"; + vehicleInfo.VIN = "-"; + vehicleInfo.Model_id = "-"; + vehicleInfo.Brand = "-"; + vehicleInfo.Model = "-"; + vehicleInfo.ModelName = "-"; + vehicleInfo.Market = "-"; + vehicleInfo.BodyStyle = "-"; + vehicleInfo.Trim = "-"; + vehicleInfo.Emission = "-"; + vehicleInfo.ModelYear = "-"; + vehicleInfo.Plant = "-"; + vehicleInfo.Driver = "-"; + vehicleInfo.Transmission = "-"; + vehicleInfo.Engine = "-"; + } + } else if (!vehicleInfo.firstTimeSetup && !vehicleInfo.vinDecode) { + // console.log("All CCF data received"); + CCF = arrBuilder.join(""); + CCF = CCF.replaceAll(",", ""); + CCFString = hex2a(CCF); + let VIN = CCFString.substring(3, 20); + if (VIN === vehicleInfo.VIN) { + vehicleInfo.vinDecode = true; + setup = true; + // console.log("This is the same vehicle as before"); + // console.log("This vehicles VIN: " + vehicleInfo.VIN); + } else { + vehicleInfo.firstTimeSetup = true; + vehicleInfo.vinDecode = false; + vehicleInfo.VIN = VIN; + vehicleInfo.CCFID = "-"; + vehicleInfo.As_Built = "-"; + vehicleInfo.Model_id = "-"; + vehicleInfo.Brand = "-"; + vehicleInfo.Model = "-"; + vehicleInfo.ModelName = "-"; + vehicleInfo.Market = "-"; + vehicleInfo.BodyStyle = "-"; + vehicleInfo.Trim = "-"; + vehicleInfo.Emission = "-"; + vehicleInfo.ModelYear = "-"; + vehicleInfo.Plant = "-"; + vehicleInfo.Driver = "-"; + vehicleInfo.Transmission = "-"; + vehicleInfo.Engine = "-"; + } + } else if (vehicleInfo.vinDecode) { + setup = true; + setTimeout(() => { + window.webContents.send("fadeOut", "now"); + setTimeout(() => { + vehicleInfo.firstTimeSetup = false; + }, 2000); + }, 2000); + } + } + } } function decodeModelID(VIN) { - var charpos = '1,3' - var opt = '' - var charval = '' - var val_test = '' - is_modelid = false - for (var i = 0; i < VINDecode['Models'].length; i++) { - console.log('Running Model: ' + i) - console.log('Number of Tests to run: ' + VINDecode['Models'][i]['Test'].length) - if (VINDecode['Models'][i]['Test'].length) { - for (var x = 0; x < VINDecode['Models'][i]['Test'].length + 1; x++) { - charpos = VINDecode.Models[i].Test[x].CharPos - opt = VINDecode.Models[i].Test[x].Operator - charval = VINDecode.Models[i].Test[x].CharValue - if (charpos.includes(',')) { - val_test = VIN.substring(parseInt(charpos.charAt(0)) - 1, parseInt(charpos.charAt(2))) - console.log('val_test: ' + val_test) - } else { - val_test = VIN.charAt(parseInt(charpos - 1)) - console.log('val_test: ' + val_test) - } - if (opt === 'EQUAL') { - if (val_test === charval) { - is_modelid = true - console.log( - 'SOMETHING MATCHED! ' + val_test + ' matched with ' + VINDecode.Models[i].DecodeModel - ) - } else { - is_modelid = false - } - } else if (opt === 'NOT_EQUAL') { - if (val_test != charval) { - is_modelid = true - } else { - is_modelid = false - } - } - if (is_modelid === false) { - break - } else { - // console.log('Test ' + x + ' passed') - } - } - } else { - charpos = VINDecode.Models[i].Test.CharPos - opt = VINDecode.Models[i].Test.Operator - charval = VINDecode.Models[i].Test.CharValue - if (charpos.includes(',')) { - val_test = VIN.substring(parseInt(charpos.charAt(0)) - 1, parseInt(charpos.charAt(2))) - console.log('val_test: ' + val_test) - } else { - val_test = VIN.charAt(parseInt(charpos - 1)) - console.log('val_test: ' + val_test) - } - if (opt === 'EQUAL') { - if (val_test == charval) { - is_modelid = true - console.log( - 'SOMETHING MATCHED! ' + val_test + ' matched with ' + VINDecode.Models[i].DecodeModel - ) - } else { - is_modelid = false - } - } else if (opt === 'NOT_EQUAL') { - if (val_test != charval) { - is_modelid = true - } else { - is_modelid = false - } - } - } - if (is_modelid) { - vehicleInfo.Model_id = VINDecode.Models[i].DecodeModel - console.log('decodeModelID Passed: ' + vehicleInfo.Model_id) - break - } - } - if (!is_modelid) { - console.error('All tests have failed!\nIs this a JLR Vehicle?\nVIN: ' + vehicleInfo.VIN) - vehicleInfo.setupInfoLine = 'Are you sure this is a JLR Vehicle?' - } + var charpos = "1,3"; + var opt = ""; + var charval = ""; + var val_test = ""; + is_modelid = false; + for (var i = 0; i < VINDecode["Models"].length; i++) { + console.log("Running Model: " + i); + console.log("Number of Tests to run: " + VINDecode["Models"][i]["Test"].length); + if (VINDecode["Models"][i]["Test"].length) { + for (var x = 0; x < VINDecode["Models"][i]["Test"].length + 1; x++) { + charpos = VINDecode.Models[i].Test[x].CharPos; + opt = VINDecode.Models[i].Test[x].Operator; + charval = VINDecode.Models[i].Test[x].CharValue; + if (charpos.includes(",")) { + val_test = VIN.substring(parseInt(charpos.charAt(0)) - 1, parseInt(charpos.charAt(2))); + console.log("val_test: " + val_test); + } else { + val_test = VIN.charAt(parseInt(charpos - 1)); + console.log("val_test: " + val_test); + } + if (opt === "EQUAL") { + if (val_test === charval) { + is_modelid = true; + console.log( + "SOMETHING MATCHED! " + val_test + " matched with " + VINDecode.Models[i].DecodeModel + ); + } else { + is_modelid = false; + } + } else if (opt === "NOT_EQUAL") { + if (val_test != charval) { + is_modelid = true; + } else { + is_modelid = false; + } + } + if (is_modelid === false) { + break; + } else { + // console.log('Test ' + x + ' passed') + } + } + } else { + charpos = VINDecode.Models[i].Test.CharPos; + opt = VINDecode.Models[i].Test.Operator; + charval = VINDecode.Models[i].Test.CharValue; + if (charpos.includes(",")) { + val_test = VIN.substring(parseInt(charpos.charAt(0)) - 1, parseInt(charpos.charAt(2))); + console.log("val_test: " + val_test); + } else { + val_test = VIN.charAt(parseInt(charpos - 1)); + console.log("val_test: " + val_test); + } + if (opt === "EQUAL") { + if (val_test == charval) { + is_modelid = true; + console.log( + "SOMETHING MATCHED! " + val_test + " matched with " + VINDecode.Models[i].DecodeModel + ); + } else { + is_modelid = false; + } + } else if (opt === "NOT_EQUAL") { + if (val_test != charval) { + is_modelid = true; + } else { + is_modelid = false; + } + } + } + if (is_modelid) { + vehicleInfo.Model_id = VINDecode.Models[i].DecodeModel; + console.log("decodeModelID Passed: " + vehicleInfo.Model_id); + break; + } + } + if (!is_modelid) { + console.error("All tests have failed!\nIs this a JLR Vehicle?\nVIN: " + vehicleInfo.VIN); + vehicleInfo.setupInfoLine = "Are you sure this is a JLR Vehicle?"; + } } function decodeModel(VIN) { - var charpos = '1,3' - var opt = '' - var charval = '' - var val_test = '' - var name = '' - is_model = false - const result = VINDecode.Decodes.find((Decode) => Decode.id == vehicleInfo.Model_id) - console.log(result) - for (var i = 0; i < result.Attribute.length; i++) { - console.log('Running Attribute: ' + i) - if (!result.Attribute[i].Char) { - name = result.Attribute[i].Name - vehicleInfo[name] = result.Attribute[i].Decode - // console.log( - // name + - // ": " + - // VINDecode.Decodes[vehicleInfo.Model_id - 1].Attribute[i].Decode + - // " | " + - // vehicleInfo[name] - // ); - } else { - charpos = result.Attribute[i].Char - if (charpos.includes(',')) { - val_test = VIN.substring(parseInt(charpos.charAt(0) - 1), parseInt(charpos.charAt(2))) - } else { - val_test = VIN.charAt(parseInt(charpos - 1)) - } - name = result.Attribute[i].Name - for (var x = 0; x < result.Attribute[i].Value.length; x++) { - if (val_test == result.Attribute[i].Value[x].Value) { - vehicleInfo[name] = result.Attribute[i].Value[x].Decode - // console.log( - // name + - // ": " + - // VINDecode.Decodes[vehicleInfo.Model_id - 1].Attribute[i].Value[x] - // .Decode + - // " | " + - // vehicleInfo[name] - // ); - break - } - } - } - } - if ( - vehicleInfo.VIN != '-' && - vehicleInfo.Model_id != '-' && - vehicleInfo.Brand != '-' && - vehicleInfo.Model != '-' && - vehicleInfo.ModelName != '-' && - vehicleInfo.Market != '-' && - (vehicleInfo.BodyStyle != '-') & (vehicleInfo.Trim != '-') && - vehicleInfo.ModelYear != '-' && - vehicleInfo.Plant != '-' && - vehicleInfo.Driver != '-' && - vehicleInfo.Transmission != '-' && - vehicleInfo.Engine != '-' - ) { - console.log('decodeModel Passed: ' + vehicleInfo.Model) - is_model = true - } else { - is_model = false - } + var charpos = "1,3"; + var opt = ""; + var charval = ""; + var val_test = ""; + var name = ""; + is_model = false; + const result = VINDecode.Decodes.find((Decode) => Decode.id == vehicleInfo.Model_id); + console.log(result); + for (var i = 0; i < result.Attribute.length; i++) { + console.log("Running Attribute: " + i); + if (!result.Attribute[i].Char) { + name = result.Attribute[i].Name; + vehicleInfo[name] = result.Attribute[i].Decode; + // console.log( + // name + + // ": " + + // VINDecode.Decodes[vehicleInfo.Model_id - 1].Attribute[i].Decode + + // " | " + + // vehicleInfo[name] + // ); + } else { + charpos = result.Attribute[i].Char; + if (charpos.includes(",")) { + val_test = VIN.substring(parseInt(charpos.charAt(0) - 1), parseInt(charpos.charAt(2))); + } else { + val_test = VIN.charAt(parseInt(charpos - 1)); + } + name = result.Attribute[i].Name; + for (var x = 0; x < result.Attribute[i].Value.length; x++) { + if (val_test == result.Attribute[i].Value[x].Value) { + vehicleInfo[name] = result.Attribute[i].Value[x].Decode; + // console.log( + // name + + // ": " + + // VINDecode.Decodes[vehicleInfo.Model_id - 1].Attribute[i].Value[x] + // .Decode + + // " | " + + // vehicleInfo[name] + // ); + break; + } + } + } + } + if ( + vehicleInfo.VIN != "-" && + vehicleInfo.Model_id != "-" && + vehicleInfo.Brand != "-" && + vehicleInfo.Model != "-" && + vehicleInfo.ModelName != "-" && + vehicleInfo.Market != "-" && + (vehicleInfo.BodyStyle != "-") & (vehicleInfo.Trim != "-") && + vehicleInfo.ModelYear != "-" && + vehicleInfo.Plant != "-" && + vehicleInfo.Driver != "-" && + vehicleInfo.Transmission != "-" && + vehicleInfo.Engine != "-" + ) { + console.log("decodeModel Passed: " + vehicleInfo.Model); + is_model = true; + } else { + is_model = false; + } } function decodeCCFID() { - is_ccfid = false - var yeartest = '' - var vinMin = '' - var vinMax = '' - var vinTest = vehicleInfo.VIN.substring(11, 17) - // console.log("Decode CCF ID..."); - for (var x = 0; x < Vehicle_Manifest.vehicle_range.length; x++) { - if ( - Vehicle_Manifest.vehicle_range[x].brand === vehicleInfo.Brand.toLowerCase().replace(' ', '') - ) { - // console.log("CCF: Found Brand"); - for (var y = 0; y < Vehicle_Manifest.vehicle_range[x].vehicle.length; y++) { - if (Vehicle_Manifest.vehicle_range[x].vehicle[y].model.id == vehicleInfo.Model) { - // console.log("CCF: Found Model"); - for (var z = 0; z < Vehicle_Manifest.vehicle_range[x].vehicle[y].variant.length; z++) { - yeartest = Vehicle_Manifest.vehicle_range[x].vehicle[y].variant[z].model_year.my_gui - yeartest = yeartest.split(' - ') - if ( - vehicleInfo.ModelYear === yeartest[0] || - (vehicleInfo.ModelYear >= yeartest[0] && vehicleInfo.ModelYear <= yeartest[1]) - ) { - // console.log("CCF: Found Model Year"); - vinMin = Vehicle_Manifest.vehicle_range[x].vehicle[y].variant[z].vin.min - vinMax = Vehicle_Manifest.vehicle_range[x].vehicle[y].variant[z].vin.max - if (vinTest >= vinMin && vinTest <= vinMax) { - // console.log("CCF: Found VIN"); - vehicleInfo.CCFID = - Vehicle_Manifest.vehicle_range[x].vehicle[y].variant[z].file_manifest.id - vehicleInfo.As_Built = Vehicle_Manifest.vehicle_range[x].vehicle[y].as_built - // console.log( - // "CCFID: " + - // vehicleInfo.CCFID + - // " | As_Built: " + - // vehicleInfo.As_Built - // ); - is_ccfid = true - break - } - } - } - } - if (is_ccfid) { - break - } - } - } - if (is_ccfid) { - break - } - } + is_ccfid = false; + var yeartest = ""; + var vinMin = ""; + var vinMax = ""; + var vinTest = vehicleInfo.VIN.substring(11, 17); + // console.log("Decode CCF ID..."); + for (var x = 0; x < Vehicle_Manifest.vehicle_range.length; x++) { + if ( + Vehicle_Manifest.vehicle_range[x].brand === vehicleInfo.Brand.toLowerCase().replace(" ", "") + ) { + // console.log("CCF: Found Brand"); + for (var y = 0; y < Vehicle_Manifest.vehicle_range[x].vehicle.length; y++) { + if (Vehicle_Manifest.vehicle_range[x].vehicle[y].model.id == vehicleInfo.Model) { + // console.log("CCF: Found Model"); + for (var z = 0; z < Vehicle_Manifest.vehicle_range[x].vehicle[y].variant.length; z++) { + yeartest = Vehicle_Manifest.vehicle_range[x].vehicle[y].variant[z].model_year.my_gui; + yeartest = yeartest.split(" - "); + if ( + vehicleInfo.ModelYear === yeartest[0] || + (vehicleInfo.ModelYear >= yeartest[0] && vehicleInfo.ModelYear <= yeartest[1]) + ) { + // console.log("CCF: Found Model Year"); + vinMin = Vehicle_Manifest.vehicle_range[x].vehicle[y].variant[z].vin.min; + vinMax = Vehicle_Manifest.vehicle_range[x].vehicle[y].variant[z].vin.max; + if (vinTest >= vinMin && vinTest <= vinMax) { + // console.log("CCF: Found VIN"); + vehicleInfo.CCFID = + Vehicle_Manifest.vehicle_range[x].vehicle[y].variant[z].file_manifest.id; + vehicleInfo.As_Built = Vehicle_Manifest.vehicle_range[x].vehicle[y].as_built; + // console.log( + // "CCFID: " + + // vehicleInfo.CCFID + + // " | As_Built: " + + // vehicleInfo.As_Built + // ); + is_ccfid = true; + break; + } + } + } + } + if (is_ccfid) { + break; + } + } + } + if (is_ccfid) { + break; + } + } } function hex2a(str1) { - var hex = str1.toString() - var str = '' - for (var n = 0; n < hex.length; n += 2) { - str += String.fromCharCode(parseInt(hex.substr(n, 2), 16)) - } - return str + var hex = str1.toString(); + var str = ""; + for (var n = 0; n < hex.length; n += 2) { + str += String.fromCharCode(parseInt(hex.substr(n, 2), 16)); + } + return str; } -module.exports = ms1025 +module.exports = ms1025; diff --git a/src/main/resources/MediumSpeedBus/1168.js b/src/main/resources/MediumSpeedBus/1168.js index 9755325..a399466 100644 --- a/src/main/resources/MediumSpeedBus/1168.js +++ b/src/main/resources/MediumSpeedBus/1168.js @@ -1,11 +1,11 @@ -import { mediumSpeed } from '../VariableMaps/MediumSpeedVar' +import { mediumSpeed } from "../VariableMaps/MediumSpeedVar"; export function ms1168(msg) { - const arr = [...msg.data] + const arr = [...msg.data]; - var temp = ((arr[5] + arr[6]) / 100) * 0.62137119 // Join bytes, add the scalar, convert km/h to mph - mediumSpeed.vehicle.speed = temp - // console.log(temp) + var temp = ((arr[5] + arr[6]) / 100) * 0.62137119; // Join bytes, add the scalar, convert km/h to mph + mediumSpeed.speed = temp; + // console.log(temp) } -module.exports = ms1168 +module.exports = ms1168; diff --git a/src/main/resources/MediumSpeedBus/1234.js b/src/main/resources/MediumSpeedBus/1234.js index f5a06d2..3395cba 100644 --- a/src/main/resources/MediumSpeedBus/1234.js +++ b/src/main/resources/MediumSpeedBus/1234.js @@ -1,4 +1,4 @@ -import { mediumSpeed } from '../VariableMaps/MediumSpeedVar' +import { mediumSpeed } from "../VariableMaps/MediumSpeedVar"; // This is pretty much self explanatory, but I'll explain it anyway. // The first 3 lines are just setting up the variables and such. @@ -7,18 +7,18 @@ import { mediumSpeed } from '../VariableMaps/MediumSpeedVar' // The last 3 lines are setting the time in the variable map. export function ms1234(msg) { - const arr = [...msg.data] - arr[5] &= ~64 - arr[5] &= ~128 - arr[6] &= ~128 - arr[7] &= ~128 - var hour = arr[5] - var minute = arr[6] - var second = arr[7] - mediumSpeed.time.hour = hour < 10 ? '0' + arr[5] : arr[5] - mediumSpeed.time.minute = minute < 10 ? '0' + arr[6] : arr[6] - mediumSpeed.time.second = second < 10 ? '0' + arr[7] : arr[7] - // console.log(mediumSpeed.time.hour + ':' + mediumSpeed.time.minute + ':' + mediumSpeed.time.second) + const arr = [...msg.data]; + arr[5] &= ~64; + arr[5] &= ~128; + arr[6] &= ~128; + arr[7] &= ~128; + var hour = arr[5]; + var minute = arr[6]; + var second = arr[7]; + mediumSpeed.hour = hour < 10 ? "0" + arr[5] : arr[5]; + mediumSpeed.minute = minute < 10 ? "0" + arr[6] : arr[6]; + mediumSpeed.second = second < 10 ? "0" + arr[7] : arr[7]; + // console.log(mediumSpeed.time.hour + ':' + mediumSpeed.time.minute + ':' + mediumSpeed.time.second) } -module.exports = ms1234 +module.exports = ms1234; diff --git a/src/main/resources/MediumSpeedBus/1236.js b/src/main/resources/MediumSpeedBus/1236.js index f46873b..4ab91df 100644 --- a/src/main/resources/MediumSpeedBus/1236.js +++ b/src/main/resources/MediumSpeedBus/1236.js @@ -1,26 +1,26 @@ -import { mediumSpeed } from '../VariableMaps/MediumSpeedVar' +import { mediumSpeed } from "../VariableMaps/MediumSpeedVar"; // Some stupid bitshifting to get the fuel level // Only requires 10 out of the 16 bits so turn first 6 off export function ms1236(msg) { - const arr = [...msg.data] - var temp = [] + const arr = [...msg.data]; + var temp = []; - // Parse fuel level - temp[0] = arr[6].toString(16) - // Turning off unrelated bits - temp[0] = temp[0] &= ~(1 << 0) - temp[0] = temp[0] &= ~(1 << 1) - temp[0] = temp[0] &= ~(1 << 2) - temp[0] = temp[0] &= ~(1 << 3) - temp[0] = temp[0] &= ~(1 << 4) - temp[0] = temp[0] &= ~(1 << 5) - temp[1] = arr[7].toString(16) - temp = temp.join('') - temp = parseInt(temp, 16) / 5 - temp = temp.toFixed(1) - mediumSpeed.vehicle.fuel = temp + // Parse fuel level + temp[0] = arr[6].toString(16); + // Turning off unrelated bits + temp[0] = temp[0] &= ~(1 << 0); + temp[0] = temp[0] &= ~(1 << 1); + temp[0] = temp[0] &= ~(1 << 2); + temp[0] = temp[0] &= ~(1 << 3); + temp[0] = temp[0] &= ~(1 << 4); + temp[0] = temp[0] &= ~(1 << 5); + temp[1] = arr[7].toString(16); + temp = temp.join(""); + temp = parseInt(temp, 16) / 5; + temp = temp.toFixed(1); + mediumSpeed.fuel = temp; } -module.exports = ms1236 +module.exports = ms1236; diff --git a/src/main/resources/MediumSpeedBus/1249.js b/src/main/resources/MediumSpeedBus/1249.js index 5988055..f65f927 100644 --- a/src/main/resources/MediumSpeedBus/1249.js +++ b/src/main/resources/MediumSpeedBus/1249.js @@ -1,10 +1,10 @@ -import { mediumSpeed } from '../VariableMaps/MediumSpeedVar' +import { mediumSpeed } from "../VariableMaps/MediumSpeedVar"; export function ms1249(msg) { - const arr = [...msg.data] - var temp = arr[1] / 2 - 57 // This is weird.. but eh it works.. apparently it's a Volvo thing - temp = temp.toFixed(1) // Formatting - mediumSpeed.temperature.interior = temp + const arr = [...msg.data]; + var temp = arr[1] / 2 - 57; // This is weird.. but eh it works.. apparently it's a Volvo thing + temp = temp.toFixed(1); // Formatting + mediumSpeed.interior = temp; } -module.exports = ms1249 +module.exports = ms1249; diff --git a/src/main/resources/MediumSpeedBus/1251.js b/src/main/resources/MediumSpeedBus/1251.js index 23c03b4..5549d4b 100644 --- a/src/main/resources/MediumSpeedBus/1251.js +++ b/src/main/resources/MediumSpeedBus/1251.js @@ -1,29 +1,29 @@ -import { mediumSpeed } from '../VariableMaps/MediumSpeedVar' +import { mediumSpeed } from "../VariableMaps/MediumSpeedVar"; export function ms1251(msg) { - const arr = [...msg.data] + const arr = [...msg.data]; - var temp = [] - // Parse exterior temperature - // Like the Fuel Level, only requires 10 out of the 16 bits - // So turn off the first 6 bits - temp[0] = arr[3].toString(16) //.toString(16) - temp[0] = temp[0] &= ~(1 << 0) - temp[0] = temp[0] &= ~(1 << 1) - temp[0] = temp[0] &= ~(1 << 2) - temp[0] = temp[0] &= ~(1 << 3) - temp[0] = temp[0] &= ~(1 << 4) - temp[0] = temp[0] &= ~(1 << 5) - temp[1] = arr[4].toString(16) - temp = temp.join('') - temp = parseInt(temp, 16) / 4 - temp = Math.ceil(temp * 2) / 2 - temp = temp.toFixed(1) - mediumSpeed.temperature.exterior = temp + var temp = []; + // Parse exterior temperature + // Like the Fuel Level, only requires 10 out of the 16 bits + // So turn off the first 6 bits + temp[0] = arr[3].toString(16); //.toString(16) + temp[0] = temp[0] &= ~(1 << 0); + temp[0] = temp[0] &= ~(1 << 1); + temp[0] = temp[0] &= ~(1 << 2); + temp[0] = temp[0] &= ~(1 << 3); + temp[0] = temp[0] &= ~(1 << 4); + temp[0] = temp[0] &= ~(1 << 5); + temp[1] = arr[4].toString(16); + temp = temp.join(""); + temp = parseInt(temp, 16) / 4; + temp = Math.ceil(temp * 2) / 2; + temp = temp.toFixed(1); + mediumSpeed.exterior = temp; - // Parse coolant temperature - temp = parseInt(arr[0], 16) - 60 - mediumSpeed.temperature.coolant = temp + // Parse coolant temperature + temp = parseInt(arr[0], 16) - 60; + mediumSpeed.coolant = temp; } -module.exports = ms1251 +module.exports = ms1251; diff --git a/src/main/resources/MediumSpeedBus/488.js b/src/main/resources/MediumSpeedBus/488.js index d461528..7b351e4 100644 --- a/src/main/resources/MediumSpeedBus/488.js +++ b/src/main/resources/MediumSpeedBus/488.js @@ -1,25 +1,25 @@ -import { mediumSpeed } from '../VariableMaps/MediumSpeedVar' +import { mediumSpeed } from "../VariableMaps/MediumSpeedVar"; // Need to confirm this actually works export function ms488(msg) { - mediumSpeed.parking.active = msg.data.readUint8(1) & 128 + mediumSpeed.active = msg.data.readUint8(1) & 128; - if (mediumSpeed.parking.active) { - let tempData = msg.data.readUint32BE(1) - tempData = (tempData << 12) >>> 12 - const mask = 31 - mediumSpeed.parking.frontLeft = tempData & mask - mediumSpeed.parking.frontRight = (tempData >>> 15) & mask - mediumSpeed.parking.frontLeftMiddle = (tempData >>> 5) & mask - mediumSpeed.parking.frontRightMiddle = (tempData >>> 10) & mask - tempData = msg.data.readUint32BE(4) - tempData = (tempData << 12) >>> 12 - mediumSpeed.parking.rearLeft = tempData & mask - mediumSpeed.parking.rearRight = (tempData >>> 10) & mask - mediumSpeed.parking.rearLeftMiddle = (tempData >>> 5) & mask - mediumSpeed.parking.rearRightMiddle = (tempData >>> 15) & mask - } + if (mediumSpeed.active) { + let tempData = msg.data.readUint32BE(1); + tempData = (tempData << 12) >>> 12; + const mask = 31; + mediumSpeed.frontLeft = tempData & mask; + mediumSpeed.frontRight = (tempData >>> 15) & mask; + mediumSpeed.frontLeftMiddle = (tempData >>> 5) & mask; + mediumSpeed.frontRightMiddle = (tempData >>> 10) & mask; + tempData = msg.data.readUint32BE(4); + tempData = (tempData << 12) >>> 12; + mediumSpeed.rearLeft = tempData & mask; + mediumSpeed.rearRight = (tempData >>> 10) & mask; + mediumSpeed.rearLeftMiddle = (tempData >>> 5) & mask; + mediumSpeed.rearRightMiddle = (tempData >>> 15) & mask; + } } -module.exports = ms488 +module.exports = ms488; diff --git a/src/main/resources/VariableMaps/MediumSpeedVar.js b/src/main/resources/VariableMaps/MediumSpeedVar.js index 116254f..4a61521 100644 --- a/src/main/resources/VariableMaps/MediumSpeedVar.js +++ b/src/main/resources/VariableMaps/MediumSpeedVar.js @@ -1,78 +1,59 @@ /* eslint-disable prefer-const */ export let mediumSpeed = { - parking: { - frontLeft: 0, - frontLeftMiddle: 0, - frontRightMiddle: 0, - frontRight: 0, - rearLeft: 0, - rearLeftMiddle: 0, - rearRightMiddle: 0, - rearRight: 0, - active: false - }, - time: { - hour: 0, - minute: 0, - second: 0 - }, - temperature: { - interior: '--', - exterior: '--', - coolant: '--' - }, - brightness: { - brightness: 0, - adjustedBrightness: 0, - offset: 20, - auto: true - }, - vehicle: { - speed: 0, - fuel: 0, - alternator: 0, - gear: 0, - voltage: 0, - charging_current: 0 - } -} -exports.mediumSpeed = mediumSpeed + frontLeft: 0, + frontLeftMiddle: 0, + frontRightMiddle: 0, + frontRight: 0, + rearLeft: 0, + rearLeftMiddle: 0, + rearRightMiddle: 0, + rearRight: 0, + active: false, + hour: 0, + minute: 0, + second: 0, + interior: "--", + exterior: "--", + coolant: "--", + brightness: 0, + adjustedBrightness: 0, + offset: 20, + auto: true, + speed: 0, + fuel: 0, + alternator: 0, + gear: 0, + voltage: 0, + charging_current: 0, +}; + +exports.mediumSpeed = mediumSpeed; export let mediumSpeedPrev = { - parking: { - frontLeft: 0, - frontLeftMiddle: 0, - frontRightMiddle: 0, - frontRight: 0, - rearLeft: 0, - rearLeftMiddle: 0, - rearRightMiddle: 0, - rearRight: 0, - active: false - }, - time: { - hour: 0, - minute: 0, - second: 0 - }, - temperature: { - interior: '--', - exterior: '--', - coolant: '--' - }, - brightness: { - brightness: 0, - adjustedBrightness: 0, - offset: 20, - auto: true - }, - vehicle: { - speed: 0, - fuel: 0, - alternator: 0, - gear: 0, - voltage: 0, - charging_current: 0 - } -} -exports.mediumSpeedPrev = mediumSpeedPrev + frontLeft: 0, + frontLeftMiddle: 0, + frontRightMiddle: 0, + frontRight: 0, + rearLeft: 0, + rearLeftMiddle: 0, + rearRightMiddle: 0, + rearRight: 0, + active: false, + hour: 0, + minute: 0, + second: 0, + interior: "--", + exterior: "--", + coolant: "--", + brightness: 0, + adjustedBrightness: 0, + offset: 20, + auto: true, + speed: 0, + fuel: 0, + alternator: 0, + gear: 0, + voltage: 0, + charging_current: 0, +}; +exports.mediumSpeedPrev = mediumSpeedPrev; diff --git a/src/main/resources/VariableMaps/VehicleInfoVar.js b/src/main/resources/VariableMaps/VehicleInfoVar.js index 9c74134..30f3f5b 100644 --- a/src/main/resources/VariableMaps/VehicleInfoVar.js +++ b/src/main/resources/VariableMaps/VehicleInfoVar.js @@ -1,47 +1,47 @@ export let vehicleInfo = { - setupInfoLine: 'Welcome - First Time Setup Wizard', - firstTimeSetup: false, - vinDecode: true, - setupStep: 32, - CCFID: '-', - As_Built: '', - VIN: '-', - Model_id: '-', - Brand: '-', - Model: '-', - ModelName: '-', - Market: '-', - BodyStyle: '-', - Trim: '-', - Emission: '-', - ModelYear: '-', - Plant: '-', - Driver: '-', - Transmission: '-', - Engine: '-' -} -exports.vehicleInfo = vehicleInfo + setupInfoLine: "Welcome - First Time Setup Wizard", + firstTimeSetup: false, + vinDecode: false, + setupStep: 0, + CCFID: "-", + As_Built: "", + VIN: "-", + Model_id: "-", + Brand: "-", + Model: "-", + ModelName: "-", + Market: "-", + BodyStyle: "-", + Trim: "-", + Emission: "-", + ModelYear: "-", + Plant: "-", + Driver: "-", + Transmission: "-", + Engine: "-", +}; +exports.vehicleInfo = vehicleInfo; export let vehicleInfoPrev = { - setupInfoLine: 'Welcome - First Time Setup Wizard', - firstTimeSetup: true, - vinDecode: false, - setupStep: 0, - CCFID: '-', - As_Built: '', - VIN: '', - model_id: '', - Brand: '', - Model: '', - ModelName: '', - Market: '', - BodyStyle: '', - Trim: '', - Emission: '', - ModelYear: '', - Plant: '', - Driver: '', - Transmission: '', - Engine: '' -} -exports.vehicleInfoPrev = vehicleInfoPrev + setupInfoLine: "Welcome - First Time Setup Wizard", + firstTimeSetup: false, + vinDecode: false, + setupStep: 0, + CCFID: "-", + As_Built: "", + VIN: "", + model_id: "", + Brand: "", + Model: "", + ModelName: "", + Market: "", + BodyStyle: "", + Trim: "", + Emission: "", + ModelYear: "", + Plant: "", + Driver: "", + Transmission: "", + Engine: "", +}; +exports.vehicleInfoPrev = vehicleInfoPrev; diff --git a/src/main/server.js b/src/main/server.js index f120e5f..7cfa2e9 100644 --- a/src/main/server.js +++ b/src/main/server.js @@ -1,237 +1,216 @@ -const { exec } = require('child_process') -const { ipcMain } = require('electron') -import { mediumSpeed, mediumSpeedPrev } from './resources/VariableMaps/MediumSpeedVar' +const { exec } = require("child_process"); +const { ipcMain } = require("electron"); +import { mediumSpeed, mediumSpeedPrev } from "./resources/VariableMaps/MediumSpeedVar"; import { - entertainmentBus, - entertainmentBusPrev -} from './resources/VariableMaps/EntertainmentBusVar' -import { vehicleInfo, vehicleInfoPrev } from './resources/VariableMaps/VehicleInfoVar' -const can = require('socketcan') -const fs = require('fs') -import { parseMediumSpeed } from './resources/MediumSpeed' -import { parseEntertainmentBus } from './resources/entertainmentBus' + entertainmentBus, + entertainmentBusPrev, +} from "./resources/VariableMaps/EntertainmentBusVar"; +import { vehicleInfo, vehicleInfoPrev } from "./resources/VariableMaps/VehicleInfoVar"; +const can = require("socketcan"); +const fs = require("fs"); +import { parseMediumSpeed } from "./resources/MediumSpeed"; +import { parseEntertainmentBus } from "./resources/entertainmentBus"; -let msCanDump = '' -let hsCanDump = '' +let msCanDump = ""; +let hsCanDump = ""; -let changedMedium = { - // Best not to change this - parking: {}, - time: {}, - temperature: {}, - brightness: {}, - vehicle: {} -} -let changedEntertainmentBus = {} -let changedVehicleInfo = {} +let changedMedium = {}; +let changedEntertainmentBus = {}; +let changedVehicleInfo = {}; export const server = function (window) { - let canDataMS - let canRecordingMS = false - let canDataMSval = 0 - let canDataMSFile - let canDataHS - let canRecordingHS = false - let canDataHSval = 0 - let canDataHSFile + let canDataMS; + let canRecordingMS = false; + let canDataMSval = 0; + let canDataMSFile; + let canDataHS; + let canRecordingHS = false; + let canDataHSval = 0; + let canDataHSFile; - // eslint-disable-next-line no-unused-vars - // create can can0 - let can0 - let can1 - try { - can0 = can.createRawChannel('can0', true) - console.log('CAN0 Started') - can1 = can.createRawChannel('can1', true) - console.log('CAN1 Started') - } catch { - exec( - // Create virtual can interfaces - 'sudo modprobe vcan && sudo ip link add dev can0 type vcan && sudo ip link add dev can1 type vcan && sudo ip link set up can0 && sudo ip link set up can1 && sudo modprobe can-gw && sudo cangw -A -s can0 -d can1 -e && sudo cangw -A -s can1 -d can0 -e' - ) - can0 = can.createRawChannel('can0', true) - can1 = can.createRawChannel('can1', true) - } - ipcMain.on('vehicleInfo', (event, msg) => { - // console.log("Message about vehicle from UI"); - for (let key in msg) { - if (msg[key] !== '-') { - vehicleInfo[key] = msg[key] - } - } - // console.log(vehicleInfo); - }) - // sudo modprobe vcan && sudo ip link add dev can0 type vcan && sudo ip link add dev can1 type vcan && sudo ip link set up can0 && sudo ip link set up can1 && sudo modprobe can-gw && sudo cangw -A -s can0 -d can1 -e && sudo cangw -A -s can1 -d can0 -e - can0.addListener('onMessage', function (msg) { - // Medium Speed Bus - // console.log("Medium") - if (canRecordingMS) { - canDataMS += Date.now() + ', ,' + msg.id + ',' + msg.data.toString('hex') + '\n' - canDataMSval++ - } + // eslint-disable-next-line no-unused-vars + // create can can0 + let can0; + let can1; + try { + can0 = can.createRawChannel("can0", true); + console.log("CAN0 Started"); + can1 = can.createRawChannel("can1", true); + console.log("CAN1 Started"); + } catch { + exec( + // Create virtual can interfaces + "sudo modprobe vcan && sudo ip link add dev can0 type vcan && sudo ip link add dev can1 type vcan && sudo ip link set up can0 && sudo ip link set up can1 && sudo modprobe can-gw && sudo cangw -A -s can0 -d can1 -e && sudo cangw -A -s can1 -d can0 -e" + ); + can0 = can.createRawChannel("can0", true); + can1 = can.createRawChannel("can1", true); + } + ipcMain.on("vehicleInfo", (event, msg) => { + // console.log("Message about vehicle from UI"); + for (let key in msg) { + if (msg[key] !== "-") { + vehicleInfo[key] = msg[key]; + } + } + // console.log(vehicleInfo); + }); + // sudo modprobe vcan && sudo ip link add dev can0 type vcan && sudo ip link add dev can1 type vcan && sudo ip link set up can0 && sudo ip link set up can1 && sudo modprobe can-gw && sudo cangw -A -s can0 -d can1 -e && sudo cangw -A -s can1 -d can0 -e + can0.addListener("onMessage", function (msg) { + // Medium Speed Bus + // console.log("Medium") + if (canRecordingMS) { + canDataMS += Date.now() + ", ," + msg.id + "," + msg.data.toString("hex") + "\n"; + canDataMSval++; + } - if (canDataMSval === 400) { - // Save every 400 messages - fs.appendFile(`canBusMS-${canDataMSFile}.csv`, canDataMS, function (err) { - if (err) throw err - }) - canDataMS = '' - canDataMSval = '' - } - parseMediumSpeed(msg, window) - }) - can1.addListener('onMessage', function (msg) { - // Ent. Speed Bus - if (canRecordingHS) { - canDataHS += Date.now() + ', ,' + msg.id + ',' + msg.data.toString('hex') + '\n' - canDataHSval++ - } - if (canDataHSval === 400) { - // Save every 400 messages - fs.appendFile(`canBusHS-${canDataHSFile}.csv`, canDataHS, function (err) { - if (err) throw err - }) - canDataHS = '' - canDataHSval = '' - } - parseEntertainmentBus(msg, window) - }) - can0.start() - can1.start() - ipcMain.on('actionBrightness', (event, msg) => { - mediumSpeed.brightness.offset = msg.value - mediumSpeed.brightness.auto = msg.auto - if (!mediumSpeed.brightness.auto) { - mediumSpeed.brightness.adjustedLight = Math.round(msg.value * (255 / 32.5)) - exec( - 'echo ' + - mediumSpeed.brightness.adjustedLight + - ' > /sys/class/backlight/10-0045/brightness' - ) - mediumSpeedPrev.brightness.adjustedLight = mediumSpeed.brightness.adjustedLight - } - }) - // ipcMain.on("actionSettings", (event, msg) => { - // let value; - // let byte; - // value = seetingsIds[msg.type].val; - // byte = seetingsIds[msg.type].byte; - // }); - ipcMain.on('canRecorder', (event, msg) => { - if (msg === 'startMS') { - msCanDump = exec('candump -l can0') - canDataMS = 'Timestamp,Differance,Node ID,Message\n' - canRecordingMS = true - canDataMSFile = new Date().getTime() - fs.writeFile(`canBusMS-${canDataMSFile}.csv`, canDataMS, function (err) { - if (err) throw err - }) - canDataMS = '' - } else if (msg === 'endMS') { - msCanDump.kill('SIGINT') - fs.appendFile(`canBusMS-${canDataMSFile}.csv`, canDataMS, function (err) { - if (err) throw err - }) - canRecordingMS = false - canDataMS = '' - canDataMSval = 0 - canDataMSFile = '' - } - if (msg === 'startHS') { - hsCanDump = exec('candump -l can1') - canDataHS = 'Timestamp,Differance,Node ID,Message\n' - canRecordingHS = true - canDataHSFile = new Date().getTime() - fs.writeFile(`canBusHS-${canDataHSFile}.csv`, canDataHS, function (err) { - if (err) throw err - }) - canDataHS = '' - } else if (msg === 'endHS') { - hsCanDump.kill('SIGINT') - fs.appendFile(`canBusHS-${canDataHSFile}.csv`, canDataHS, function (err) { - if (err) throw err - }) - canRecordingHS = false - canDataHS = '' - canDataHSval = 0 - canDataHSFile = '' - } - }) - ipcMain.on('dataFull', (event, msg) => { - if (msg.includes('mediumSpeed')) { - window.webContents.send('mediumSpeed', mediumSpeed) - } else if (msg.includes('vehicleInfo')) { - window.webContents.send('vehicleInfo', vehicleInfo) - } - }) - // Set up the Medium Speed Interval - setInterval(() => { - let send = false - if (mediumSpeed.brightness.adjustedLight !== mediumSpeedPrev.brightness.adjustedLight) { - exec( - 'echo ' + - mediumSpeed.brightness.adjustedLight + - ' > /sys/class/backlight/10-0045/brightness' - ) - } - for (const key in mediumSpeed) { - for (const [info, value] of Object.entries(mediumSpeed[key])) { - if (value !== mediumSpeedPrev[key][info]) { - send = true - changedMedium[`${key}`][`${info}`] = value - mediumSpeedPrev[`${key}`][`${info}`] = value - } - } - // if ("second" in changedMedium.time) { - // changedMedium.time[`${hour}`] = mediumSpeed.time.hour - // changedMedium.time[`${minute}`] = mediumSpeed.time.minute - // } - } - if (send) { - window.webContents.send('mediumSpeed', changedMedium) - changedMedium = { - parking: {}, - time: {}, - temperature: {}, - brightness: {}, - vehicle: {} - } - } - }, 100) - // Set up the Vehicle Info Interval - setInterval(() => { - let send = false - for (const key in vehicleInfo) { - if (vehicleInfo[key] !== vehicleInfoPrev[key]) { - send = true - changedVehicleInfo[`${key}`] = vehicleInfo[key] - vehicleInfoPrev[`${key}`] = vehicleInfo[key] - } - } - if (send) { - // console.log(changedVehicleInfo); - window.webContents.send('vehicleInfo', changedVehicleInfo) - changedVehicleInfo = {} - } - }, 100) - setInterval(() => { - let send = false - for (const key in entertainmentBus) { - if (entertainmentBus[key] !== entertainmentBusPrev[key]) { - if (key != 'volumeControl') { - // Volume Control is a special case - send = true - changedEntertainmentBus[`${key}`] = entertainmentBus[key] - entertainmentBusPrev[`${key}`] = entertainmentBus[key] - } - } - } - if (send) { - // console.log(changedVehicleInfo); - window.webContents.send('entertainmentBus', changedEntertainmentBus) - changedEntertainmentBus = {} - } - }, 100) -} + if (canDataMSval === 400) { + // Save every 400 messages + fs.appendFile(`canBusMS-${canDataMSFile}.csv`, canDataMS, function (err) { + if (err) throw err; + }); + canDataMS = ""; + canDataMSval = ""; + } + parseMediumSpeed(msg, window); + }); + can1.addListener("onMessage", function (msg) { + // Ent. Speed Bus + if (canRecordingHS) { + canDataHS += Date.now() + ", ," + msg.id + "," + msg.data.toString("hex") + "\n"; + canDataHSval++; + } + if (canDataHSval === 400) { + // Save every 400 messages + fs.appendFile(`canBusHS-${canDataHSFile}.csv`, canDataHS, function (err) { + if (err) throw err; + }); + canDataHS = ""; + canDataHSval = ""; + } + parseEntertainmentBus(msg, window); + }); + can0.start(); + can1.start(); + ipcMain.on("actionBrightness", (event, msg) => { + mediumSpeed.offset = msg.value; + mediumSpeed.auto = msg.auto; + if (!mediumSpeed.auto) { + mediumSpeed.adjustedLight = Math.round(msg.value * (255 / 32.5)); + exec("echo " + mediumSpeed.adjustedLight + " > /sys/class/backlight/10-0045/brightness"); + mediumSpeedPrev.adjustedLight = mediumSpeed.adjustedLight; + } + }); + // ipcMain.on("actionSettings", (event, msg) => { + // let value; + // let byte; + // value = seetingsIds[msg.type].val; + // byte = seetingsIds[msg.type].byte; + // }); + ipcMain.on("canRecorder", (event, msg) => { + if (msg === "startMS") { + msCanDump = exec("candump -l can0"); + canDataMS = "Timestamp,Differance,Node ID,Message\n"; + canRecordingMS = true; + canDataMSFile = new Date().getTime(); + fs.writeFile(`canBusMS-${canDataMSFile}.csv`, canDataMS, function (err) { + if (err) throw err; + }); + canDataMS = ""; + } else if (msg === "endMS") { + msCanDump.kill("SIGINT"); + fs.appendFile(`canBusMS-${canDataMSFile}.csv`, canDataMS, function (err) { + if (err) throw err; + }); + canRecordingMS = false; + canDataMS = ""; + canDataMSval = 0; + canDataMSFile = ""; + } + if (msg === "startHS") { + hsCanDump = exec("candump -l can1"); + canDataHS = "Timestamp,Differance,Node ID,Message\n"; + canRecordingHS = true; + canDataHSFile = new Date().getTime(); + fs.writeFile(`canBusHS-${canDataHSFile}.csv`, canDataHS, function (err) { + if (err) throw err; + }); + canDataHS = ""; + } else if (msg === "endHS") { + hsCanDump.kill("SIGINT"); + fs.appendFile(`canBusHS-${canDataHSFile}.csv`, canDataHS, function (err) { + if (err) throw err; + }); + canRecordingHS = false; + canDataHS = ""; + canDataHSval = 0; + canDataHSFile = ""; + } + }); + ipcMain.on("dataFull", (event, msg) => { + if (msg.includes("mediumSpeed")) { + window.webContents.send("mediumSpeed", mediumSpeed); + } else if (msg.includes("vehicleInfo")) { + window.webContents.send("vehicleInfo", vehicleInfo); + } + }); + // Set up the Medium Speed Interval + setInterval(() => { + let send = false; + if (mediumSpeed.adjustedLight !== mediumSpeedPrev.adjustedLight) { + exec("echo " + mediumSpeed.adjustedLight + " > /sys/class/backlight/10-0045/brightness"); + } + for (const key in mediumSpeed) { + // console.log(mediumSpeed[key]); + if (mediumSpeed[key] !== mediumSpeedPrev[key]) { + send = true; + changedMedium[`${key}`] = mediumSpeed[key]; + mediumSpeedPrev[`${key}`] = mediumSpeed[key]; + } + // if ("second" in changedMedium.time) { + // changedMedium.time[`${hour}`] = mediumSpeed.time.hour + // changedMedium.time[`${minute}`] = mediumSpeed.time.minute + // } + } + if (send) { + // console.log(changedMedium); + window.webContents.send("mediumSpeed", changedMedium); + changedMedium = {}; + } + }, 100); + // Set up the Vehicle Info Interval + setInterval(() => { + let send = false; + for (const key in vehicleInfo) { + if (vehicleInfo[key] !== vehicleInfoPrev[key]) { + send = true; + changedVehicleInfo[`${key}`] = vehicleInfo[key]; + vehicleInfoPrev[`${key}`] = vehicleInfo[key]; + } + } + if (send) { + // console.log(changedVehicleInfo); + window.webContents.send("vehicleInfo", changedVehicleInfo); + changedVehicleInfo = {}; + } + }, 100); + setInterval(() => { + let send = false; + for (const key in entertainmentBus) { + if (entertainmentBus[key] !== entertainmentBusPrev[key]) { + if (key != "volumeControl") { + // Volume Control is a special case + send = true; + changedEntertainmentBus[`${key}`] = entertainmentBus[key]; + entertainmentBusPrev[`${key}`] = entertainmentBus[key]; + } + } + } + if (send) { + // console.log(changedVehicleInfo); + window.webContents.send("entertainmentBus", changedEntertainmentBus); + changedEntertainmentBus = {}; + } + }, 100); +}; -module.exports = server +module.exports = server; diff --git a/src/renderer/src/Modules/Home.jsx b/src/renderer/src/Modules/Home.jsx index c0d7ec1..ce78e5e 100644 --- a/src/renderer/src/Modules/Home.jsx +++ b/src/renderer/src/Modules/Home.jsx @@ -1,208 +1,212 @@ -import './Style.css' -import { temperature, vehicle } from '../Stores/mediumSpeed' -import { entertainmentBus } from '../Stores/entertainmentBus' +import "./Style.css"; +import { mediumSpeed } from "../Stores/mediumSpeed"; +import { entertainmentBus } from "../Stores/entertainmentBus"; // import { FaFire, FaSnowman } from 'react-icons/fa' -import { Link } from 'react-router-dom' -import CarImage from '../Images/Car.png' +import { Link } from "react-router-dom"; +import CarImage from "../Images/Car.png"; +import { vehicleInfo } from "../Stores/vehicleInfo"; export function Home() { - const sourceSel = entertainmentBus((state) => state.sourceSel) - - return ( - <> -

- - ) + const sourceSel = entertainmentBus((state) => state.sourceSel); + const VIN = vehicleInfo((state) => state.VIN); + return ( + <> +
+
+
+ +
+ + {sourceSel == "Radio" ? ( + + ) : sourceSel == "Bluetooth" ? ( + + ) : sourceSel == "Aux" ? ( + + ) : ( + + )} + +
+ {VIN} +
+
+
+ + ); } function Overview() { - const interiorTempVar = temperature((state) => state.interior) - const exteriorTempVar = temperature((state) => state.exterior) - const fuelVar = vehicle((state) => state.fuel) - const speedVar = vehicle((state) => state.speed) - return ( - <> -
-
-
- {/*
*/} -
- Interior - {interiorTempVar}°C -
-
- Exterior - {exteriorTempVar}°C -
- {/*
*/} -
- Car -
-
- Speed - {speedVar} MPH -
-
Placeholder
-
- Fuel - {fuelVar}L -
-
Range - Maybe
-
-
-
- - ) + const interiorTempVar = mediumSpeed((state) => state.interior); + // console.log(interiorTempVar); + const exteriorTempVar = mediumSpeed((state) => state.exterior); + const fuelVar = mediumSpeed((state) => state.fuel); + const speedVar = mediumSpeed((state) => state.speed); + return ( + <> +
+
+
+ {/*
*/} +
+ Interior - {interiorTempVar}°C +
+
+ Exterior - {exteriorTempVar}°C +
+ {/*
*/} +
+ Car +
+
+ Speed - {speedVar} MPH +
+
Placeholder
+
+ Fuel - {fuelVar}L +
+
Range - Maybe
+
+
+
+ + ); } function Radio() { - const fmStation = entertainmentBus((state) => state.fmStation) - const dabStation = entertainmentBus((state) => state.dabStation) - const source = entertainmentBus((state) => state.source) - const text = entertainmentBus((state) => state.text) - // const block = entertainmentBus((state) => state.block) - // const active = entertainmentBus((state) => state.active) + const fmStation = entertainmentBus((state) => state.fmStation); + const dabStation = entertainmentBus((state) => state.dabStation); + const source = entertainmentBus((state) => state.source); + const text = entertainmentBus((state) => state.text); + // const block = entertainmentBus((state) => state.block) + // const active = entertainmentBus((state) => state.active) - const menuItems = [ - { - name: 'FM' - }, - { - name: 'FM-AST' - }, - { - name: 'DAB1' - }, - { - name: 'DAB2' - }, - { - name: 'AM' - }, - { - name: 'AM-AST' - } - ] + const menuItems = [ + { + name: "FM", + }, + { + name: "FM-AST", + }, + { + name: "DAB1", + }, + { + name: "DAB2", + }, + { + name: "AM", + }, + { + name: "AM-AST", + }, + ]; - return ( - <> -
-
- {/* Radio Source */} - {menuItems.map((m, index) => { - let x = source - let y = m.name - return ( -
- {m.name} -
- ) - })} -
-
-
- {/* Radio Station */} -

- {source == 'DAB1' || source == 'DAB2' - ? dabStation - : source == 'FM' || source == 'FM-AST' - ? fmStation - : '??'} -

-
-
- {/* Radio Text */} -

{text}

-
-
-
- - ) + return ( + <> +
+
+ {/* Radio Source */} + {menuItems.map((m, index) => { + let x = source; + let y = m.name; + return ( +
+ {m.name} +
+ ); + })} +
+
+
+ {/* Radio Station */} +

+ {source == "DAB1" || source == "DAB2" + ? dabStation + : source == "FM" || source == "FM-AST" + ? fmStation + : "??"} +

+
+
+ {/* Radio Text */} +

{text}

+
+
+
+ + ); } function Bluetooth() { - return ( - <> -
-
-
- {/* Bluetooth Station */} -

Bluetooth

-
-
- {/* Bluetooth Text */} -

Figure this out

-
-
-
- - ) + return ( + <> +
+
+
+ {/* Bluetooth Station */} +

Bluetooth

+
+
+ {/* Bluetooth Text */} +

Figure this out

+
+
+
+ + ); } function Aux() { - return ( - <> -
-
-
- {/* Aux Station */} -

Aux

-
-
- {/* Aux Text */} -

Guess there ain't much to show here!

-
-
-
- - ) + return ( + <> +
+
+
+ {/* Aux Station */} +

Aux

+
+
+ {/* Aux Text */} +

Guess there ain't much to show here!

+
+
+
+ + ); } function Unknown() { - const sourceSel = entertainmentBus((state) => state.sourceSel) - return ( - <> -
-
-
- {/* Unknown */} -

Beep Boop - We got a problem!

-
-
- {/* Unknown Text */} -

Something hasn't added up here...

-

{sourceSel}

-
-
-
- - ) + const sourceSel = entertainmentBus((state) => state.sourceSel); + return ( + <> +
+
+
+ {/* Unknown */} +

Beep Boop - We got a problem!

+
+
+ {/* Unknown Text */} +

Something hasn't added up here...

+

{sourceSel}

+
+
+
+ + ); } -export default Home +export default Home; diff --git a/src/renderer/src/Modules/Layout.jsx b/src/renderer/src/Modules/Layout.jsx index 0c9fd30..b1a9f8b 100644 --- a/src/renderer/src/Modules/Layout.jsx +++ b/src/renderer/src/Modules/Layout.jsx @@ -1,323 +1,322 @@ -import { FaCar, FaPhoneAlt, FaCog, FaQuestion } from 'react-icons/fa' -import { GiRadioTower } from 'react-icons/gi' +import { FaCar, FaPhoneAlt, FaCog, FaQuestion } from "react-icons/fa"; +import { GiRadioTower } from "react-icons/gi"; -import { Outlet, Link, useLocation } from 'react-router-dom' -import { theme } from '../Stores/theme' -import { time, vehicle } from '../Stores/mediumSpeed' -import { vehicleInfo } from '../Stores/vehicleInfo' -import { entertainmentBus } from '../Stores/entertainmentBus' -import './Style.css' -import Reversing from './Reversing' -import LRLogo from '../Images/LandRoverLogo.png' +import { Outlet, Link, useLocation } from "react-router-dom"; +import { theme } from "../Stores/theme"; +import { mediumSpeed } from "../Stores/mediumSpeed"; +import { vehicleInfo } from "../Stores/vehicleInfo"; +import { entertainmentBus } from "../Stores/entertainmentBus"; +import "./Style.css"; +import Reversing from "./Reversing"; +import LRLogo from "../Images/LandRoverLogo.png"; export function Layout() { - const firstTimeSetup = vehicleInfo((state) => state.firstTimeSetup) - const setFirstTimeSetup = vehicleInfo((state) => state.setFirstTimeSetup) - // const gradient = (primaryColorSet + " " + secondaryColorSet).toString(); + const firstTimeSetup = vehicleInfo((state) => state.firstTimeSetup); + const setFirstTimeSetup = vehicleInfo((state) => state.setFirstTimeSetup); + // const gradient = (primaryColorSet + " " + secondaryColorSet).toString(); - if (firstTimeSetup) { - setFirstTimeSetup(false) - return - } else { - return