From 5b557c725766af2be4d7ca4ebc5484ed7837f556 Mon Sep 17 00:00:00 2001 From: SatinIsle Date: Tue, 17 Sep 2024 14:26:03 +0100 Subject: [PATCH 01/19] A bunch of new clothes Added 6 variants of feminine T-shirts, including midriffs, text and shoulder colours. Added 2 new very short skirts, one with a split exposing one leg. Added 4 recolourable belt accessories. Thin, thick, strap (no buckle) and studded. --- code/datums/underwear/undershirts.dm | 30 ++++++++++++++++++ .../loadout/loadout_accessories.dm | 15 +++++++++ .../loadout/loadout_uniform_vr.dm | 4 ++- .../under/accessories/accessory_vr.dm | 28 ++++++++++++++++ .../clothing/under/miscellaneous_vr.dm | 14 ++++++++ code/modules/economy/vending_machines_vr.dm | 14 ++++++++ icons/inventory/accessory/item.dmi | Bin 103455 -> 104583 bytes icons/inventory/accessory/mob.dmi | Bin 169348 -> 169683 bytes icons/inventory/uniform/item_vr.dmi | Bin 25915 -> 26057 bytes icons/inventory/uniform/mob_vr.dmi | Bin 116607 -> 116143 bytes icons/mob/human.dmi | Bin 66708 -> 68513 bytes 11 files changed, 104 insertions(+), 1 deletion(-) diff --git a/code/datums/underwear/undershirts.dm b/code/datums/underwear/undershirts.dm index 9b7571e1d1..41b0499b3a 100644 --- a/code/datums/underwear/undershirts.dm +++ b/code/datums/underwear/undershirts.dm @@ -252,3 +252,33 @@ name = "Leotard" icon_state = "leotard" has_color = TRUE + +/datum/category_item/underwear/undershirt/tshirt + name = "Feminine T-Shirt" + icon_state = "t-shirt_full" + has_color = TRUE + +/datum/category_item/underwear/undershirt/tshirt_midriff + name = "Feminine T-Shirt (midriff)" + icon_state = "t-shirt_midriff" + has_color = TRUE + +/datum/category_item/underwear/undershirt/tshirt_shoulders + name = "Feminine T-Shirt (black with shoulders)" + icon_state = "t-shirt_full_shoulders" + has_color = TRUE + +/datum/category_item/underwear/undershirt/tshirt_midriff_shoulders + name = "Feminine T-Shirt (midriff, black with shoulders)" + icon_state = "t-shirt_midriff_shoulders" + has_color = TRUE + +/datum/category_item/underwear/undershirt/tshirt_shoulders_text + name = "Feminine T-Shirt (black with shoulders and text)" + icon_state = "t-shirt_full_shoulders_text" + has_color = TRUE + +/datum/category_item/underwear/undershirt/tshirt_midriff_shoulders_text + name = "Feminine T-Shirt (midriff, black with shoulders and text)" + icon_state = "t-shirt_midriff_shoulders_text" + has_color = TRUE diff --git a/code/modules/client/preference_setup/loadout/loadout_accessories.dm b/code/modules/client/preference_setup/loadout/loadout_accessories.dm index 0583ccb4c3..81b6d81044 100644 --- a/code/modules/client/preference_setup/loadout/loadout_accessories.dm +++ b/code/modules/client/preference_setup/loadout/loadout_accessories.dm @@ -554,3 +554,18 @@ Talon pin "Service - Echelons" = /obj/item/clothing/accessory/solgov/department/service/army ) gear_tweaks += new/datum/gear_tweak/path(insignia) + +/datum/gear/accessory/belt_selection + display_name = "belts (selection, colorable)" + path = /obj/item/clothing/accessory/belt + +/datum/gear/accessory/belt_selection/New() + ..() + var/list/wristband_lists = list( + "Thin Belt" = /obj/item/clothing/accessory/belt, + "Thick Belt" = /obj/item/clothing/accessory/belt/thick, + "Strap Belt" = /obj/item/clothing/accessory/belt/strap, + "Studded Belt" = /obj/item/clothing/accessory/belt/studded + ) + gear_tweaks += new/datum/gear_tweak/path(wristband_lists) + gear_tweaks += gear_tweak_free_color_choice diff --git a/code/modules/client/preference_setup/loadout/loadout_uniform_vr.dm b/code/modules/client/preference_setup/loadout/loadout_uniform_vr.dm index d40ea6cf6e..587a6635fb 100644 --- a/code/modules/client/preference_setup/loadout/loadout_uniform_vr.dm +++ b/code/modules/client/preference_setup/loadout/loadout_uniform_vr.dm @@ -185,7 +185,9 @@ Talon jumpsuit "high skirt"=/obj/item/clothing/under/skirt/colorable/high, "swept skirt"=/obj/item/clothing/under/skirt/colorable/swept, "jumper skirt"=/obj/item/clothing/under/skirt/colorable/jumper, - "jumper dress"=/obj/item/clothing/under/skirt/colorable/jumperdress + "jumper dress"=/obj/item/clothing/under/skirt/colorable/jumperdress, + "short skirt"=/obj/item/clothing/under/skirt/colorable/short, + "short skirt (split)"=/obj/item/clothing/under/skirt/colorable/short_split ) gear_tweaks += list(new/datum/gear_tweak/path(skirts), gear_tweak_free_color_choice) diff --git a/code/modules/clothing/under/accessories/accessory_vr.dm b/code/modules/clothing/under/accessories/accessory_vr.dm index d5837ebce4..f03ae21b0a 100644 --- a/code/modules/clothing/under/accessories/accessory_vr.dm +++ b/code/modules/clothing/under/accessories/accessory_vr.dm @@ -1181,3 +1181,31 @@ flags_inv = HIDEHOLSTER to_chat(user, "You adjust your poncho.") update_clothing_icon() + +/obj/item/clothing/accessory/belt + name = "Thin Belt" + desc = "A thin belt for holding your pants up." + icon = 'icons/inventory/accessory/item.dmi' + icon_override = 'icons/inventory/accessory/mob.dmi' + icon_state = "belt_thin" + item_state = "belt_thin" + slot_flags = SLOT_TIE | SLOT_BELT + slot = ACCESSORY_SLOT_DECOR + +/obj/item/clothing/accessory/belt/thick + name = "Thick Belt" + desc = "A thick belt for holding your pants up." + icon_state = "belt_thick" + item_state = "belt_thick" + +/obj/item/clothing/accessory/belt/strap + name = "Strap Belt" + desc = "A belt with no bucklet for holding your pants up." + icon_state = "belt_strap" + item_state = "belt_strap" + +/obj/item/clothing/accessory/belt/studded + name = "Studded Belt" + desc = "A studded belt for holding your pants up and looking cool." + icon_state = "belt_studded" + item_state = "belt_studded" diff --git a/code/modules/clothing/under/miscellaneous_vr.dm b/code/modules/clothing/under/miscellaneous_vr.dm index eb12168713..80f32da015 100644 --- a/code/modules/clothing/under/miscellaneous_vr.dm +++ b/code/modules/clothing/under/miscellaneous_vr.dm @@ -524,6 +524,20 @@ item_state = "skirt_jumperdress" worn_state = "skirt_jumperdress" +/obj/item/clothing/under/skirt/colorable/short + name = "short skirt" + desc = "A far too short pleated skirt." + icon_state = "skirt_short" + item_state = "skirt_short" + worn_state = "skirt_short" + +/obj/item/clothing/under/skirt/colorable/short_split + name = "short skirt (split)" + desc = "A far too short pleated skirt with an open split down one side." + icon_state = "skirt_short_split" + item_state = "skirt_short_split" + worn_state = "skirt_short_split" + // Gwen Beedell's clown outfit /obj/item/clothing/under/stripeddungarees diff --git a/code/modules/economy/vending_machines_vr.dm b/code/modules/economy/vending_machines_vr.dm index 5005e39af9..402f1ed8aa 100644 --- a/code/modules/economy/vending_machines_vr.dm +++ b/code/modules/economy/vending_machines_vr.dm @@ -621,6 +621,10 @@ /obj/item/clothing/accessory/wristbandcollection/trans = 5, /obj/item/clothing/accessory/wristbandcollection/ace = 5, /obj/item/clothing/accessory/wristband_spiked = 5, + /obj/item/clothing/accessory/belt = 5, + /obj/item/clothing/accessory/belt/thick = 5, + /obj/item/clothing/accessory/belt/strap = 5, + /obj/item/clothing/accessory/belt/studded = 5, /obj/item/weapon/storage/wallet = 5, /obj/item/weapon/storage/wallet/poly = 5, /obj/item/weapon/storage/wallet/womens = 5, @@ -762,6 +766,10 @@ /obj/item/clothing/accessory/wristbandcollection/trans = 30, /obj/item/clothing/accessory/wristbandcollection/ace = 30, /obj/item/clothing/accessory/wristband_spiked = 20, + /obj/item/clothing/accessory/belt = 50, + /obj/item/clothing/accessory/belt/thick = 50, + /obj/item/clothing/accessory/belt/strap = 50, + /obj/item/clothing/accessory/belt/studded = 50, /obj/item/weapon/storage/wallet = 50, /obj/item/weapon/storage/wallet/poly = 50, /obj/item/weapon/storage/wallet/womens = 50, @@ -909,6 +917,8 @@ /obj/item/clothing/under/ascetic = 5, /obj/item/clothing/under/dress/white3 = 5, /obj/item/clothing/under/skirt/pleated = 5, + /obj/item/clothing/under/skirt/colorable/short = 5, + /obj/item/clothing/under/skirt/colorable/short_split = 5, /obj/item/clothing/under/dress/darkred = 5, /obj/item/clothing/under/dress/redeveninggown = 5, /obj/item/clothing/under/dress/red_swept_dress = 5, @@ -1093,6 +1103,8 @@ /obj/item/clothing/under/ascetic = 50, /obj/item/clothing/under/dress/white3 = 50, /obj/item/clothing/under/skirt/pleated = 50, + /obj/item/clothing/under/skirt/colorable/short = 50, + /obj/item/clothing/under/skirt/colorable/short_split = 50, /obj/item/clothing/under/dress/darkred = 50, /obj/item/clothing/under/dress/redeveninggown = 50, /obj/item/clothing/under/dress/red_swept_dress = 50, @@ -2125,6 +2137,8 @@ /obj/item/clothing/under/skirt/red = 5, /obj/item/clothing/under/skirt/denim = 5, /obj/item/clothing/under/skirt/pleated = 5, + /obj/item/clothing/under/skirt/colorable/short = 5, + /obj/item/clothing/under/skirt/colorable/short_split = 5, /obj/item/clothing/under/skirt/outfit/plaid_blue = 5, /obj/item/clothing/under/skirt/outfit/plaid_red = 5, /obj/item/clothing/under/skirt/outfit/plaid_purple = 5, diff --git a/icons/inventory/accessory/item.dmi b/icons/inventory/accessory/item.dmi index b2f53037840cec3bc7d69b2dc0434aa6041896b5..2782922a7a17e34ed0e65e78141dbe36743e170d 100644 GIT binary patch delta 21237 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 QL;=ucY+#{Zalt9(Uv6LaumAu6 delta 20100 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 diff --git a/icons/inventory/accessory/mob.dmi b/icons/inventory/accessory/mob.dmi index b2bd32277096588a0e5ab2652217706b2f056558..587ec871283cc49f0247c646d0024adc7e2b92ff 100644 GIT binary patch delta 8522 zcmbVxbyQSuxBmcw2vQ;;DIii3N{4`e5=zei(ji?#HwO>}q!gt)B!&{{MrjZ!sUZd& zLb`i^dr-gc``-Jz|J>hR>#Q^DJhk_Jc6|1p;6j4oVuH6U*!aX{tn*hNTuY!L&s)^J zY0Txs8W=g!R#1zKIFY}t?MgJa^!?oX2wmDA(hvB19Whp+?=#SNyz+g?j32^`k5$c# zkBzbi)L~x8mUMAN%OvUEJG3nsFJ4KH-%1JPO_Z_CTcL1|G<%M|rzfbB0pt80k=$s0Z{sTrEFn6fx}i#&aFNp_`{{ccltOBm8mW3*o zRW?rLm!?vhYNwZTHfs;>dP%~nWl+S2DNStGfaQ=)(L7-e-`!*14ih#fKeD!uCn?X% zEjS3XWqhJ-3=9lH+f5ZqC%U(kNztanQf6h;b#--idN?H}yHAmu=bM(lHkWD19|+p{ zE3R%XKP5oL@o)UU4dr%=^Ut_Nd`z`uj*JiL*EEnPo%|Ge41e?gxL3dhICF zx(LMI@O$@Fc(9Z((!Qz~i)yM)`!sr1R6xihvcQ7SVY*OI$b}^{b zPfzZz@5MUkpPRy;2~O6RG7j?q_Y-b5QS7cHz zZp>HVW|SkH`;9TGOie_8L4LjhqOE+G7NuWWSy7QuRW*v=U}I}bPlUR1Jk#q}P+SZ= ze)=?gD3V%CTzqhBECk&dO)GC?#3&{{@+?qDZ<4q;KOg`2__#wI3e726VNX3p`DjY{ zV??SPQN*{&FVi4a)eA)J9ciPJDo0k9HXY+JzYE2h*D&q0sC`4s>r_YMUCvC0oy+pBs>2s5XDsdzWy1% zvxHFzi5JH}ifHhAl31B{lJj_r?2et!u0&)iq?-+^6o-<2r}IayA1~NeT;6WcD0Ss; z8Iefcqci`HBZgX>oSYFYy#>~JT5XL~eq?7F_UNsBU2ALWA==rYAq_jarkS$St&hOD zg5D=%thTv50g1Wddd9(x#zVuksannBJ=xm;nWTV#!0np^CQIK_YYu08wnwLgRNUz8*otf`L6_Eo|wsW8EYQ?e)4k+ZdV@%1n%EYRVVBM=0R z(|haQ4}o(cX5|vtR9z@EmD}ZOca+VK#zsbP)hT{y9ooWmw}_=Nr~!}vbb z_X8IS`WgT|&&t}`N$~e9O_Lld?6=Lo1_Yc$rmO7i#Vd$th1f}q<_~CSXg-;=;%OtA zAW_W`XsOChsnwW|femUyG;kbQz~*b7>o84w-3xjfA=77yYjP_eB!Wr3O+pG$TNYmU ztYA!fowThgT&!O7^zLY|%Nre>K91Jy1p8#MadQ!drv!{4Xd9V?KYQTf;wm9k9v1~J ze(;oVn9L=159>rL&Y4M++znQ(P7KtEU&DB@D(Br1@`3ln&z0MI19=8b*Ns3{jK&+z zlhrQPY&ncP;H!q~Rq2w;zo7WWuH{$r+5(D%V%3;l&u^*29vjzLN17TuXqkXmb*G3b z)@LFpdv+(P3SOqp3(oQYnHIvMf0)_XNKqk8ekjttKG6530WU?fzO0Vk*R%UGc`@?y zwp5>x?PO*Fplf+glkP&D?xLVKPBhy=tL0kO4V8T{_;SAPMc?XFQ2@CdYs!k-?2vln ztw8PC=U8l^N+KhxEg!SJ`LRo#%du5RW8sLgz^C#fCys_o7Pu+kZ9+?N;-e7zsD|%- z1R{^1UkePc^3cOpo4rz#Dd0i*9U6_q`eKMtU{?&ttmGU9zxwH2;}LP61EUXgo;%w!9)->YR-o6>5dpb;Z>m0Y4Omhf{WDDASdXIK&0-s~ z6gcPPoGlX4C4H0*n_b%LxbC0{!>V4Xw2ZiafecrDA#koV8c?3Uc4Gvt1#@!H3aWhs z!%dMWuJ9dOjOZ|W4B$>JotdG2glF_~Zk3;4mY>0Jr|5_JF)*nH;p}Z~bu3GYl`tET zLWGDg*O#db1hzwOH;UTqyj3;I;@~tr2xP8@hivaTu0MbAjR*?3oE*93Q%If-)sF!} z@ro?Vv|)ZC6lA=P&}QDUzS2ryJC}KCd%I@%>5}h9{JAI~8VfRLC9+=UHXMd9Q0uot z6@#)1JsjR53Mj76NSkQVTWyZP*QwW=>>%351p2yGS7AX;N`ob;4U;($?vK{T&*HQi z*8Trk;lAeoG&}+-x_5XOO}ldJD+&Iw99>jO2n+^Ti+rODH z-FN32#Q0!sV%%l*A-^dmbqY5&)T(aF6_@TU{v5`C)o86aNVJ}7cAk_+le4utEcl&@ zdM(~m;(C4MbB+!aXF_>BwhHmwgO3k9Efy=FHT-WomK&~zi)@mUmQ`R44 zeOh^1ZA}rqG1{!|sroZGynM6GA>SyiQo4JeMO#*J_-Sh{s+U>K` zy=_au43QuWgF=#_*l=!=E*b32M=tHUX^MsV%nsACoaK-F_J{%s^^Z01IhpEu)3w*$ zfI()`t1X|BCowX)i9#bk-sEfC<9UinUR|VtXPK7RZTqs0HG|mB+I#udFmyOvNq1k! zssCc9s!h_)p#+P~UDjZ0L4tKGI)tU0={*NL$!pRva%PtTctG+mej;;;5-m(|6Ka<9 zaljB@YM07?a^da&5_vXB2XNI_AtGp_gwWx(Hk9%db9w?a3@%;$g)t>G1BA%rbMj0o zcM+j;tyrgYdGCS2p`x6JWHtLn*CIvdmtdmhe$_&7wDU*%7um}{IOOxDbz!vz_3lKC zjg3l3@<6>iH*WoVv&l*NRCin0Enx{#c_2DTFhOqC9jILINs#q7jCCCeFdP{4yal=k z+zwOBiN?c2_sHBPYZ9z*4`B-#NYU6;$vhU@CkuauFz0!lp1V&3goRZRFKhh@-8+5!#hwaEx|6}Qw3hmod?guwZi{&P_zdd$ zwZ%E{RXdJscmn;ZmIWQ1JXt+GD-Fjf`1vP3Cj+03S@k;RNK~7%x;3SWbK|29F|Kho zzH7{gqN4A~{b6b)WwpIke7}CE5?gVlUj*_<2?5_d|L$bUEmF9<=z`VE$OJhu9jM~V z2LnKo#Qw02_wwZ&5WtM=x9h?$S+eK{(jo%`vGiJRyPRsRU!HRpF*~(!m2422)lS^F z>CPDX59Ms$bDp;DI zzmw{6!Z7fyGV4UX4z=0oGsrNt&MPNC)4q(*rawiJughnvhekV8kU+e=yt;aOTRTw~ z;_}Uh=S%$;j~MCb+Gb~OLqz;Z{)m3pMgvP9tZ$N%l5U5<{rvoZ1V_E<4o4&6S@6@q z*jQe}w0Jah6~f2I2Z3}Xqrl5S*OD+4X&l^Dt00SfGB`LG7!z|tzrm9X1Y1!RyrE+x z5av)?1_rI^A`?$fYUTjKkXEx3xty}dF2cZ8Az3{s6hr`XQ4A>;pjMe z`44^<-Rq3k0S}YxO)`6Y)U1C>u6kZE3$dRuk=B%CT=oIs5=b*m6 zo(%uW?BS`pmKGj_or_CWgzkv|jo?Y%P^vs)AHXG~q>i4(Z}Il_ew&_7Vk`i;eg(T` zSD|u44x-54-@NH5eX$%vMq*a@6r-WP< zHC=#Z9OmD09-x~1@l!oZ37_|VykIO%xUhYt({~*WurHmiaN~$?0c``%Xw0)OVtFb|u zmz`bO?v5u;fYECnQ~!}y@S9?XE(&Yy`6NZ4@iWY8u4r#P;q*# z|5kw9#AkEz*RAbOF9l^~Wj%t=S;11KCH3(eb8@c4+FLq#&iBO+Z`f{rnOx}I%6BBy zBiOloImYw0`mI0gnT%_#{QUWIj#5pn%aT|f-jFF;B1_|`emLo&dILpUXOPn~AL zJ>7~fozwN<$W^t6%`Z}#O`1I@?@}7@a&SB{F=0|tQX-9fvi<$5j69N&np*lcskDbj zwbK=Btg%t)di4CQ2C%Y`&bsmV84-+0N{Ug^C~IeHeaE~895S~zU$t?`&MV;urbWr1 z#Kgouwa-$`u=DiX=?48rPz83}56I3RGn4i9;i+ghA|7X}%Q2I&T!C`m2+Kf_00ylP z2+>2)pK`p3pKF_2x=E&WQwtc{=BQvWj@0 z($t>_bqr39&BC{DTv|8a(YWiV6Dv%3wc5_PLdFUVe`Pw?=iuWare)NxU%#faHflIN zI6doNO7|H0!kxTF;$Uba5!G(0^s*%|Ffa!`_cA$NO!7SOMB6Bh8*MV?mRrBMP=ziv zeOcwt-8EvFsfK?sJ{bt5CHhwCt$ErxLmVu_G>I6HJ2maGp4J5FE1{^Ryh6i~l{94W z{^6k+9Ip19BIW2j{7JT2?Wlfk)BY51g_QsSBy-PwIK51J3o8P{814LCL(TR^q7(UYk2s-c6TOXnaLk0Jma?@M1j-D>Am z5-n>}fJkV2yr9ZF`GD>Ral=8;%=C1m*Y09wUY`6i4IK34kv0LS`f;^&|D!Qkh%-u< z_qq*gZ-JxMo&9DH`|LRwfd-mhwdqE-x3^bS(1*9jt~W&# zYqi+z_v<-5gp;8d7jnh1bZ+wszrsdqe-wb>Nuj4AUc!8_Jio?RU#rHomFY- zsw#S9h}8fifN|<{mlE8Sfh@+l^#>(;SbJcGUFufACMMHVgV(Nv3yIZ9k{xUWa4qft zv-gJ?`wN4Dv5is)q>V)Nyf1_9-hHT2u?)s!J`KIaQ(cD*>GG@5plW=>*kg+MXdITQ zVUsO<*QwtO?uBVSFN(qmlj?Nr|2sr;^%)~c?Z~^}X0Ln=lu`VV3ud?*K=pjNA^TC_ zNl^6}3kkZ!?ao})7$>lgtZSn(!we`t$6y$V;&L_e=PT;o%^Udk*RC7wl&-9fvc{PY z&z#sJoqELra01NPbSur>_1R^?>OHe@a!$Z36Z4@cJ|8*wv|tqxLsrC$hi2@daz4fm&E-Zh7}> z9rss84%LqB;g8~}PXD;-9W&hjfOAFvFU|ul!QTG|(EDG(BzWe3!;%^pg&}840 zrjSkNdP2GR8$t^6tM?AqDr zB&S-{9-crNm{6o{72yI9Xnd*Gs5`6Y)m1-uju+1hkD~?0H_5UY(w0! z+_%Jan^{1xn$uQK=zVAUAK;qHg9q0P#y3(@c09p#GAwyk{$6yCubTUN;dLgJSff%@ zl935?s&O~mh;@JUW=0{g$>rDZv6Gprk5aCW{siTYh|Y^MEX^TFjFN(6G!1VoVnLMq zfMT=BnD60mH5k5!0H8p1NR#j!t@_7!G-+{aIHZGlnc<%hayLv`{78H|4@l)Iqzr5F z5Prr2N9+a-U7lw@)9^uUnXo#q*|}eLB5A8=J!Lpj(MX4|Ukj4^bq6T~5QUN!fof>b zG_tkD7n?ciU4p%W@BEnDUnm5~ns#YVp3z+50FaW972}zQ(;GM+nN-hgZ5#w;MEFIo zLv947&@+YBp1Crm=x3U1p9blB-8pPj^@Oleghxh;38eB0^fY1NF?;K&+C1;nD<^xq<&MORofcYG-F>J^_K? zq4sb%3I~N1kkgY6O7lH|v@1&Kj>}ODkLTNTM;nLA#v4k(lBSLKZ9~Ix{JgqBd;mgD^;ySSI{0`pQxl@??Kbes$=(o zR3wKql^J)l`yT~lL8)7mu|R!NJMOj90%UF1IAz&It={7B6&@@Uyk&b?sbkcHjFarr z>?8C3M$yz%GYC zcp*cT!4WOVo^g_<@&oiPdsgRr9y$BEMt^*$%g-7I5E0e+EDlXl;pF0a&v3E-5>}<} z0qW@P%&eux9P3pU_h6=xg+f6x*X~EXo-lRkETz5;z9&s-zmoH>2q3j9aPp1QVyyjB z!AX_b)HLKh`FC^ukhj{pv5GKBeP-NW4PkT1@nP1VCX)30)N?S+OWSXxB;Lr!#-_f{iaDM9t= zNo4xNY~ktiyc1!6u>W|fwvh7`n4JpYbUPMvKXei!J7k~qQTgqA!+J=tG0A#?Acm}t z7QZ|gb+puX3)hB@uptH>Op|`upjY6Zi1^Y#oG=~u42)~jD@i+zPNs*7PP{{n-=Th~ zHuFBVhKI^6$9->Xo*JFxv^gJj->u#E1= z3|k3@lIn%__Jf6$LOZT9jmXnyhP#nn+&?1?eCM|(4}BT8TLmEj6D%R`*Lzd!j3}k_ zvqcB1U{XaJFEyE3p6wskjhw8Ru?c{Et(xg{Q1yTt*;n5thsvlKLvwqth134^19Sf6 z)8?uw%H732Sw+QbJcbRSQ&ak2lZrYTET#ihOY?2~pPep7t5l@d+r)04jW!+hyBdtq zTTf1rEKB|(l)`*F@`9f3>vo$6reL%0F+k}wKyFjzUQ3;zvYikE3I2NC4LN$phc*Asz1 zx0Vv)^FXKf{@p(_lI~n$oa$3)awrUtiTBQ<5~Gi(8SzILJe<}^k%A>pY)Gs;HuO?9 zT$UHp%=}$)%rl@`J!+?MnVqlwtGRWRFMuVfRs`&U|D}KTwEic2_;rEfXx_u0|anOGO+i8Kw delta 8185 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 Kz)MuDL;nZ44G1s* diff --git a/icons/inventory/uniform/item_vr.dmi b/icons/inventory/uniform/item_vr.dmi index 6e0d72e90a20245e5fbf615cd82a534e08ffdf31..59176816e674bd4daf190c22233b416c375a2a3d 100644 GIT binary patch delta 6923 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 Kt60-6;{O0N+_tg+ delta 6782 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 cTLgCgDCDM*)egMuK9gmgs5!@}+z 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

KeGq`I6XoP3UVcj zFMcJBIhq%|&;!|j`QnU|oc!UpOswib9Xt+NTA99e&?iDqx1ujGl$Ezn5Tn}fKR@j0 z;mI%T%1CDyH>~w*E|CGoRh7Pa%+yT_(C5(`xtFm%eQ%K6L4xdOuI(|Cy*!ZB%E2fj zS}_O_)#sN5=xty0$KVxc;$wM!3KI(?HK2 zy$Q>Hp(6%~F%!8IBXtft4?uq?GxKs7wQL6jcJU2jWVt$;5FkJG>z|-F&LG6U=`I(2 z(IZ$;@uGIbbOGM6s=5zE2|&Be+9-x-6XFp1@y2ya_xvE=Gs@2KBKhr-X`qeFeA@%_ z_V!kf{rC0MsscNZ1_3q1I%7oh1`kY*Ss`UZmRR#|@OJ!K zxjv_(s$~+?A+$)?6GOZ@+^Q#eE@Hs`-o8GTbaZ_8N9^7`H*2y7aB(1sB9;P^x; zG;rV9Jju0y8VX;l2DNN*Bzu(0G{S)7*`=a#nS^q5uZ8|uH=hh*MgY!x%IxOjt5xO;`hj{lZ)J)!QT16zNSDe>;Xu#j5CQz#wfuJi4vt>Z& z;!7uxYIoXSW5Up2AiomIe7kh>_UY1ZnnXp*E@S@tcy%$wPy6-doZh^74{Wu3ezn{w zsplsP$Bs7`p(0^mxLO0<<=$nw78mFhadayCjMpbrwNPMO-=FyqOu6+f0>Xi|@uM=t zt&e;};FISR2vBx;8_s;fBIoiu2kH>+i7&p zyOd`r;3hi05{lG?`O|t$1)c9b3iAb7ov}3xz;jp8>v*cm;ZWg!*8=S66E1mYDn1$B zBdxj>iH*|A^XiC-Kd)33wDB#(Wf!O5n4R8n`yENjy6YyK8Fwy?cmDeW^OUR&yvsl7 z%3@Qbwu&S0{{W#!7khe{pj?coA{UI;nFw$ z;K2jrwrJA5C)@5}!MzUrA-+gpH&aFDO=q-sAt@$5HDK(oa|T)Fo90}pV0Ul@o>$Fw z^Lt;_sBxuz{>k!sdLp7LYe7SU$HKy7A;kB4P0dP02|5u?+NA!6JZ+AmA4e4>v?pGN zCAM5Q3XO3zq&{M0>$M32HY6{5v~-E{oVLQ~o(WS4zvBZtQ>0D1z| zwb*Z4QoYw&t*HC|h4$`mljR;w>V^2}Rqn6VL7wd4(ZW!81 zVQGbzU3V5CASW;XMGUqMUpb^Z?~5X;JNsrVFU~FwtZatgrak*XJv|$m zPInSLSBCSx`Ple&+Xrc}U;p~Lvb2C$F@Jl^LLVGhSEi}S0UTVzkoFNH!oigdjJADqD{dyI z;%RodsL`~SuPovl`1t8T5v=)Lc)BX%gSiVX2zKev@b$-(SQ(1hDQBS zUsjUHGqG2hWN4}YwmS7!lF9HYWNr}aA@V)p6jGG9!Xg~q_164a_%YDeM--jVrp@oG(@}W!?PmC^!&|>r-$P|Lxsh&* z{ZG3)vUe%8DYoQ~A4kZvdn-+JqrAusLg*HQEx>qvetuq5Svma|^;?F(q&L^W6wZ5; z8_l1wVNqBByS3_(ef#mHuV1{?J+xo6KJ@Xu6h=hcLTm{8x^Ew1Y^qn~quQDW&?NT1 z0fDNJ`JeM`uG2Y@H*)XCQg(YTLW;^OA5h2jI%+vA1}6102S35GWt@zN4aPR`a~LGK zmiRzg6BT7XObM}wn%Qg5nr4Q}Y24NGS6|8T%b-a4b;pRU?bdVYq8lbT70-OSzA$7B zk{8!Ev=J|9eoCaO>gPRw zqUjdbNh*(j78EdWa>h2~MFIj1=d);s!xFmE&5r=mXlcVaw z$VBZ4A~cclDN3BYtk38nPqBzNC1-fbzSN`SQ&z>CrTsM;EKr)}!)=ej7-gv2OaQ&v zF#~{X2+ziz%D0(I_%%jVetOTtE%0=Wl~GjkogSLhP)_9sjLK;p!(ODg?~A3e2X-o(9*IK zgdi8{&s#yZeJRVZXGe;2T6w5(u-zQ(vnAnQB~?XiN z=ew5&GNv_Wm7TWKfdYFdSvHK{ro52XcD)a2o>>rD2^Lz6vDTdmQ{b?li;X$RFnV}8J zlse52O;&vK+l7;VgPCe<)xYRRhow9{FOzS%`)Z>GP;r_l+>^3}3rQVl1ppQqCPP*9 zj~}50mf@_%st519L_ZL(f6XIs_ix!oUEkyd1)l9320Adhl!HWY5YyNfaPcKvNIZTl z4Ng#dx7IL*uvYgF=H=u_=*LF0+Ml$Z%^3F(Io(bQbct66ka286>2c62850K4iXVo) zo6)+B7Gvn|xBli!8$J-x#>XXEshwfQ1Kmd#z5M$@+q)lg?U6PZ;R$H2Y`fpYNH2e- zrEyLDvIM~n#P1i@ejh2dFfrP2lGM^y6&u~l3$^FU^1OW?xBLEnx8QjWjc}m#X;a|M zQa-!5Sd;bi!VvX@G`(wcn|X94Pkil5Is{dTBa7+~zjoX_~5J z?=zDDNl)nz6$Ug)HZ@LuR0tUz)VHJCg7NU(19Y_SgO=6gZ*lKKazly;Jp2G`utwUn6utu`d~Cs!1-VldjNbh2(duzURlc>%_&Ls_3Oye zqMyQ%P%gT;De^%zknplrP?%R=_wlhr@s;uA{GI<_j;t_M$U5|K#p4~49^K9hrqL5$ z5m8!ohh+kK;Z@&@y6Id?guC1Gv#8^o-?>zYg%>%+9gz#Z>HC+BE~!OM@0`%VdF+9G zez2-|x*H}Wf?J@))jOwUxJ4zk^DP<-q%t`@_^OHnRi>gEVTo7x?wI~L^Krb0rN z&#rrUEOuvNjBYOh_0jW!E92p<>+qMBfB#Ohh;pFEo~Nnm9GqK)sLfZ!7|AOZJ+jN< z^t&9bLO6a1KRm$-rz44HUHQk4#1{+?yVLjV-_2on&*e$6vo4+%lDFMXe);Y5jUR;( zD3yL)f$nX6ivCyom$K4TK@V)wV`_C*r`ve;f8{;M!*_TW}Z zO}#$^o~dEb8k_O#NWM)%Hl|Z!Jqr}=d*OqV;)k%Yzs{AMFo$v@F2=z_+Z#@~jLXet zpWEjoq7ACh`dG}4Wb73>L{lF_)7>MXi-Y*qHj|bVy-lG));8yi15cCh z#2XThc7tQS37iEit^I>E)9gWC^V2?7Nn3f5@w%g~rG<8Hnv8zrQ0f`Un`b2NIS3}g z4t$4R7xZ99$JznFrU8$P{W^RE*Pi)>UvqsIkrTIv>D?Zwxgu1-Y`y1t9M{NFYq`Lc zi@?D!M?0ygKSpN0n~}Bt%31KKV1W1PfIbGmQ|kFgao^p*AhUh$Grs)zBd`L$qqEPG z=40cf5~yO#*B}~sfn$Ai`1X_ z83e7zo$GKka?tPMaJlOEXDJ#G4s~3s;Eu%rNP_gb&5#wvg1VPYEJ)QX&&UMF?PbzJ zfrF30iua*_(W?(YZsLfU2V=m&-JN!mDL>L=pv!B zyjjg(xS=g_JcZ2c;`LhzxZhy&ui*i6LhB)8lz+$(7#)sf%W6H$aj|>*ol>f2zis3A zHqk&gYc*V+#^`jy%)LKxK$uPO&KDS6+n$bR-GCdS*{lmUA9ocdc1yx^-ltq{3R63B zd*qT4E8o%)-sK1Z!xa1==>!SjTC6ieO?v@Ycrf8#UT7XDD~>sqC*osS-~Z!@rLvuu zwi{6G?Uu8fqazEc+=->nzC5P5`1MR;IY_Q;wfkPk7q*s&nwf-wnCYF7+qWGNcXSs- zW%uwd@o-=j_rVI`g9JzZuCazE?yckfoY%1p;?Zb8g`P`ZLTWB)3Qm?0KRLwfMn@TW zrHu#iF^_HkwMRv@`tae^${oax1Vis*O1U?tgl5F?v;L&8IfwaC${0fz;VU?d=Vxj{ zRw4%8(=YkLcJWg?hoI{F(qFT2^{wXT(iCKBKEUp5C2ex2g4=m}3+`ZX{*I<lw(3vT2g52#4 zmm<-MrDNES=fYM`dv#(O&vH|N8-c)#q&z8lPg}FFQfS4 z!NubPLw-y9r}`on0hz3sr09V5FMI&%^-!TFylb`nggM$!MIhghoDg+{7^30Ekk{6& zXpV38q!Z3m*+kVseIWnsBNJrOR<+B6=$|k#naoI4QP?+rfe^J9W;={uW1!8tEOqN; zM~vxz2xb)rb^L@uH$meypRPS%>Llx}LQoTRMF=&O^AL@93+)DDYCcG1$Z4VSRXN>F ztXc_$UMUz;382aDiBDH=WYbKeGy6$WgJi~^u;rdkyXO;N_^QbdDB7~==wBNl;WX0$ z5%}E=JVca#A(D*2Uhavic4fF49KP-0x8MVzu&)dTIn>2U+J{?cBfcl62me$!+I+Q^ z)&@NOExN-5^nv3Mn(4}|@@BC3L5yDBdYxKkZ=v6?{)7?quc1+YBoo1AUQF;dczOrb z!X4DM1nvK3*!|7)AJihZ1t&Wgq<}kD$^7P=_z+@p`Ugbzi2=*qW+dKami9^y0vHV# zLWJw|?w%#TvwEi)l5rpxZq$=&f%a@N>7v(KURIAu+~?9MxE|YyKY)gA@kfLKr2>1L zh~Gk(7+bZ!;_$vlB$=CntMcP(x+y?Z?*`>9K zb1@ZUBA%4KJXhsEqI3T=AduX{2anVuK3Q0|)6aHH-7^ivVVC?RQH)~}+9$UP^%QuM zQ4k^=T(pEB`}*}4isB*ByVgr~rA*g0%d}Aw@jvq7>A}2Dwyo{<^-#h{G48U(_4g0t zXR8at5YlJKn%wUD#gxuH+2`HXe8g>nP}FJLd311^^^0n7x5mR!zMen;Lk}$b>&C$i z>Et6eGBk{jRxE5@$l9(!=sdAQ4>aVg^k*j~Jm^U|`hx%;W7@&Px9gM7wbAL4egpf_ zIHxP$cnSe*7xKr0Yy#xA6O~`93gjcHdmB;1Vr{+Wt*rI`&~Vq*P?(oZ0uk6p)Yp$b zs|OM>b(UAnnx-trb3v93oDt`xvThlyY`xo?AAS%)U8aMHAAMqCU_fK*eeLGqW?RCk z?5XpzLgomAJuvBP)`gS8p{wnqWs>xK;1T0%Q?#nSMZvS};A8NQ#&u@mca zLdl)$K*;bDN9SU1*^WkP0+kI(IlKW`P5vxz(7{-7f~s=NpImdpjnqQA2T{0(u1b2z&-tz73H-To2DT9;OZM`r89;I^xm`q6NpCyYBA@bC5jx9kvV9HS)nnv}Q zoE-OU9`S$3cbd0(?=KohtwRPM}mEiGAuMMS=& zrm`V|l@t`z&f}e*`vD8*X8nKu1dZ>6jPE=E1T$5@Dr@!|umrA0>$K+|Fm)Er?ECXa z%^>)X#QaiGXCNsKq@GIZZf+x#=tja%rn@Pvbh>rk&IEW!gh?Xp2>&CF!Y!0MZo++bI!viaW+QvN8L~Z4AcNz>b>u}^ zhC^97&cGx@8Op|%_80R$%f(LbB)Dp|YCFSUh(|?7hn}6edA1sEpWhTE&*H_yf}I8N zYG-4>Z9EJETm%GwG|91dtDLGTjyL%mu?nGB-ckA{=eW7{;` z2n{2e=wjhZ_F>=gooq@Oy{U`!8<6A!A`*}017>>48?YnXud5@)K$}PoUnVP6DxG{Z z&~+50;VB~%s&a5BSKKy#@V0ZQwMw@fBz3^8+)OjMV?%m+o0=$ikz)h3dozt@DH&q3 z;$I1y#qvTO*rsa!z`1!5Y_H!OD4U78Ec=EC7@liHWLJ4`YbmqsA3+?ET3Q2ll@+w7 z$nmZ0+vzAz1e9MuYZEoMps#$l-0YP77uAZm=vhShTpX;Iu>H$wJEbc{Lei62PEoVJ zetozwf_#1*7Z&j$r<+sb9JQg6Rm#8`<^61p)7Rid@J4ZQ&V-QYH z7&8Y>0}BS)Ma3vr1qJ8f&B3*5A!g>j8r}6>6gxAsV2u;qr5Jsjy1KE7{KJ*=-bvJM z8dVDxcwI3S0@}ORvve>oa|d2hczaFv-j40u_kp)h&sv^UCe3p?-_(k6=IRAruYIfB=u4*Cd`~1lt!oLI_soI2`5}~0M5{HV=I*k?yrFCFoB*W4&dW8~|6DAG zXVxOl$~C!eSfh)7{=|xY!bu`5EKEcYUTrl=3oa)10R{CiH?bTva(<^J4iPQB=FIRD z=z1sa`bpk9`c+3!XCTI`=H2lyI&plDz6&0YT8Rm4kqbIbJ&GAzkB@}Ru5m-d*gyR1Dw>w3| zW35y0I>1CHwJ1Os887IXa^c_ogigp~GXCs9CH>;i5flaAMQ^{MF6-;F$f%@v({7DO@v`bsOfMup9+t?0V~Fa3d1ew|Vqr8CSW}8b zMRniFfNL1^uo_yM(;I%>Ptb4qAJ2sFB>!xK{Fa~(+}JQ5^|T?UQ2lFJD|q;l2&eDR zt|M0_I%Hf}9Z<5bvGcEE(Ki+};@u_0 z_e(0Tz?rD2msze7$;l#a_fuLls*y5%SX~B_18LKt0BZ@gb4ias(?nu=O{VmOmS%3ZA6HLvDr=9hAEKYu8105JANGbZ+j4EmJF+xeX0k z8NQYc^F7?Oh2#BqiV6Q4VdL+I2qy16RK%l%jON`QA%ZocXR+QOSim7B6y^IA{Ey9; zwo1R0A{qD%R(F!yT7Fx8Esm5U4RmrAWLgfD)3{*dhb|Mg8WMur+SxK4%)jD*nxDIV zG&kA>b2mS|smNDbmvbh5ESqMMZY)@c=cxD3`62f3S1xBhpNU0S7I`t zVEk6W_lliKVCO$80)a=4#Zfp3{DtJ-@hE=t+doyG$rxMQrQ&6TXN%g}3=7@#+3!}L zZpn+jUZ=shrZXD!gn{W&>(vtYVk&$x#sh>BzI^L6U9+3_;sHnV2rmpD6RRtXB=5aa zW8MDUJ4V_$`%Bl;UyRi_qmmv~3Li?@iQrT54VEot5%-JdAWLcRIEJMII;T5NyIzqn z&xU}O^YwDdBZ~i^v;S>aS`Go3)rUFrpks23#(BVrx$lhu{#OLPPRLH`zTkWwx83(WqfVL;uvY>Sic{zhcEEbT>LAt z0Of*6@yyK3w6Z`RsA?<$vi>@RRCTk?0cuVJl zB;~c&w;~tMo`T9g{6Ar^miYh%xa8_TDEj}OEpOUL=AUQ~i(tAp=jN^@ElF|yiYfTN zW8_ULsg`rfkT5Usef0nSUjXo#h8^RXQH9FQ+Cbo+KLG?Il)Joj=b1x!01#~<>f5FX z1P=03f|prXMECGtUJJh-RX3gc6^$9)^K5Ck>GVT|OUw0UIy!K>-@lww@10V_XR)il z$_nuZ0B6KOgKPBX9oR0OdxpnTU2A;o^0is8tN_|EpnoY>P)@WCSO93)&i~g&sV_fO z%nVf{*=Zp2XJ+RUBUEtedqgZRFTZx@EXc7m^@8#X3r%(Panz6h1?o@Nc$4v7{tr;6 zNIElH1>fioz6G5*o(82;vv>N5p5iR;$7(`RVm3rdPEipXT+}2I=3)eWY7^jb(EW8~Yiqlz8FK%qok2ZXo&Sn3fCcxxyQ1=? zg7p7`x3`Xp>i_qDhmcTGl#mWVq)|EsK}t|Ur5lm%&OrfbK`9Ys2n7Ktk&^E2ZV`~~ zoPn8r-+aE`bAIcbd+%BIkGsxV!_4eG?0EO<@p``A?+tEtZ+u1o20PfID%~E@sN!gL zu1Do)iaXwdWwfolUf88!R@2Z>_A+6DW#s&L?@!r!^kr2FF!HL;-GCxY8sEnO z%zy<0+g>f|=P%qI3qW5tsQA-BW&s<}$l?w^KQ*vqfej0aVAe?t5JDUNsLg#gVDJKp zd09pW+E{)&g>#_oC5XVsFRWF)pFX_?unN>NJ>I3EK^K)2P%>txpao7Ij;e=R9_#N9 z=@~{7Kh1$fP_xz^SuVk{x@5te(9DXQ>!prlu;HpvS?}bF)hVv-x2CS^ZWn=@ep5mz z*-wtySaguLXGwHO_J&j1S@~q^(FfP0u_LDJw9>4y;ojHp)=j4+Cr5Dwp(*+s_SlLP ziBJp79eT$Qie`b%Wp;DF@nb4+NE0v9=El{CwnzgshzOEY51~At3@LD4`~&BawY$rs z1xlDHV9(Vf{MVBn1V$wU01g148@p2f&<{|W){fbOYMy45l~KJc(~k+kR7^Sim>dnh zjTq)B1b7EtOmT#%fk|8;GR2@GYqC?`del%>mQWMKdznee7tFjUXymWPUI3P4vFR;Q zef60VY={jO!Px>Dp}=9V-?c6(7+aYo6_#p&N%&Imb;I$w!Qw!KsPkCzA64qQ4x#wi16NcjX(tP zZxoFQ#|Dz9B6?uSRS|8ifhDlD%~Pp-C?Hq$$+NTUG5&7?m_A!`!q1;;V~~d$bv?8v zfVO~L$X0G#E@2Q49mrb>@={0VV-0z!Ik@Ot*e2hO{v@F#dAU5*yS8z))4~D^KfOpZ zx*!bp*TKjgEo|<80wzd5?IdCkAP3A$G%eguQg`yX`6WZ;b1{ ze4L4j{w%lb?f2Da_rHyF-KI?5xHsDb`!U@6aSd+>#Z+BAWwF1X#p*8SZ#3)@5iPnj zu*BIteW9qpsY95pi>L1(t@1=Tf_TDFY%Xp-eQmJC&`B>WwAE&4*KM4YtK&^kdPe>< zfr3Xs?7(VBQ#_}d7wMZy99W%<`MzriE2%6}V~m!zi<JItrQcRp)$L=bZO z!FaFwP|ETRyh@G_mpzxpja@Ya-ZTn=u$x*ixz$K2!5pRNQUrt*7*K(zl+d`K{bdgk zfh?(+V0o!x_|%DE;i zkA?r~j;kZefKSJ#Ma=~j!69DxpXGm-2$O^`y07QP)hUGTT2c83eK-)g3L7_7@ zO<_NTjzL`-6A=Np3d_>XEwHz1TH7HP!1p zZB(0(%q=uR;}ga-Esf_8;poJVLQtPCfKF=S@^6$<&dUB;#l%=vPT`ffD=pt_qvwkq z93MPYmJ8t52=o?Yp=Q_;)d*CwT7i2eB|$e9kmX_j%9!yTxu3Cm0e1GHVp4>RGXd6? zoV}(_*LNp$c85vD^u=#t-oEwP-;m0#(=6KxQJ6kK5R9=YeyOR@b^3Q6P&D7>GBc^a)4+|X$E>kH7^`$hc`z@ zO_z@Uq;JoZUT?IAjVC5{w*LhoCaq@JhOA7exOEDuVI-3_ddkjJQ&Xb(i9%))9Ab^V z*NKqDb{vG9JYs|e1YxzC7)gH9i_F|NMn$eS*b0+Z{b*x~R+cuX=-4K$5s@1B^5unx zrza~nx4v|HyLpEj+oUWApLq^F6cqn+Dls-e8g90S|GG(X-^(ourz=>TM3u+Szj=-9 zR3q3^V)NMq3q*Knx7(rNf1tvz=j5ZKqh>={it@_JgaGGsaA&FFlVBzfJbo0;Id%N) zOS6Jl^CY$&`W2A?bG>Hn?ZV5Ke`WwHR$5t=q^W}zqfr0kaUiG^3&}}1foPp40B*U* z5qzvr&%?lj24<#~ev3%ueOARDjsWr28W|rgSDy~B*aIqH4;Ao7&&AB_Ap1zN{0JvQ zYW7O9LCM3I@E~5$g%S~HbQTc|d<;y5!3bih26tR&K>6aGD40y8+ z2fVj$nxRpqkhX8s)X|E`0Wi6AM>bySYa04= zbD8`?>t>N3bVx*RDE4HEhuGSdl3)3UN$@0|L(jS8XaOqbqr6;4Xs?Q%Fh`KpX-oD~ ziLQ%*D?b*z0}wQah6V{xlJyw1lf!w5o_$#4HWE=Lp)8o@euHW@lj*4;;u~{1+M#-; z$>PuF3%ns*%WsFzqqH7hKUMMxJ!sZ#=%x4rh+sW@lIrdy>M-v=lph zRbg1~r@Y^M>7L0|FfP&#=p8hC&BN`mZ;-olqdBXmUlDxlPYVnVKWloPvS?cvmRn9O zX)MgpaVnRqMjf}Wl;9Ue{b_~HK2RVBP}uhl^`dT9smRWMj-3iOPKt?klf=xDv{#)XWH1w0XEf)T*h_;qgZxOsbfosz5RM<6jtr0NgVlG^_; z!&x57tLMbjyRVk5wV44+1DG9yLqq(Wils{TRom z5hf`6ka#w|P; z>wqXF=Tibn$!QTaSsY;1a6w}SrehK;ma%4ehvaH4 zSRrM?f4m>IH(3lG*D^j9QaRq(-1L0ZQ9jJv@0xyD_iH1SNlI0nYpI|iO(F`*xX@OP zv%sCI_47a{u!2bzGno6F{RYY{x1X@7+Q|1L30b$jsr=s{U)s`4hWQ_Z6?Hb1F)+A! zS#8WqKa_ay2D$2eNPecP+qmul{NJp!M+(Kdh!MWq7qX|pV`c%e%xsj7$*j+ZPyM7- z)JB}RpX3nxWc;namWvxly7uPv#qI={)EE!tk{t(s`=YGdxP*r)E(9I{Wd)Mb$azeo>Tra@j z`%ibcfkJf4umF_#lMe^#%FUb8-$QyYg(Bc8_%6+%Xq&YQS?~5`&s6o-K)VzaSK?t+ zkN&b<&#;Mn&tjOVa5p*oTXH?-%~eg5EKR6- zyxBT5V9Va6YSiKN_PLg7-Mc6YwRqL8_po<2xGCc!!tjZ&e_CK}kz#=1y=PgS&x~Ak zCnG1khZlgXCa({v>HR#E+@?J-G4kc&DfW;Rx_5j8Oy(VSoR^!MwjX29+D-pH)Syg& z)6ww1K$|*$ChGkjU}s4&bxi|>d~<*dWE4m?z|!N25d;H^FY0Y{d{72!|#LsS+3;J0& zD^e`&$uFIXW3|U{V~x;pqYRJ(IN1HFIVU<80U@D~uyB?gF#o!EbiTu2V3c$Mv&LXH zwzgUm-d5V%d2GaDxvR53X zmXj;DvpjvPUZ0c}8iagfdVCByrw#1~A z%d1g8#`>NwY9fIKl6Tn@ypZX}y0#_SV*gQ#rCAc>@nZ!#_^S4%z42)EBO)6V zj*Sc&HC7IuDyef}4cy7uhDM0c*ck2D*Lw zwvEwR#VFEt*_ z6Pefj+M$&^Q)j`cvS8DjQ8F~}`SVE;!T28tX(q8}aK@7m=IAy-Ny+@$w{3&d(^nf7 zoPU1eFDxvyiEGo;*N-$4Bm$HQq_ghsN9Lfuy-J6;tR&i?gdf9PY{SqhmNhg=;0EiF z*@naf38W!Uy#uN0bAsCT(j>(UN7G-nr@LneAq#`uF><=cd6)5O%G5K)6N7VR&ATtA zCzQ;~ZsNg!h0mF=^mOwRH^h~&L=@h_eSR36KNd)ZQ- zfA@E)^z&aj2X5edNpb#FFal&}w~I*=zitXB-{84<2Wx}#gjq7>4>S_qpLv#j zMejK2Y9_YfsPF94$r8>XqKziXWoPB^8`go&`>|5rYPaj<)|osd3aLkNXcxS-VD{k1 zF*W5O9qDFZ#Z;8*Vlyhy@k+AQo#JoJ8XMW%rAAdQvR`TZGST1PrxYPcE07T=n88CG zd2VPb^MYQDg(4mdkFZ9}=+j9N$*T@C1hBRB)L&Z`Goo9!7{ku?iuW z8>?y_GoR{v1C*cvTqZg2{6zKqWIJJcX6801E=K2C93y`|ubVd-SKR3MQeX9~G#95u>#~N@i@n_HQ9$_k(Ej)|U6g1=*V585du07*%D%Yo4mstPqzBP}iGQJsF&i}K zmyb=mxrVhd?LOIwJIQkwKInt!nOvqyK~(#n{EJ51v#*dFw>k3IzlRBZ=;U=&v)4Tp-oOJE4!;4!+z>aDl%fxbF))p0|b!Jp!>Jcabnn z<0XQcr|*ft{o8#_c;5Q(U15yk$?KWBFkFwpy-;D?MAAEL z8GS)(BmPo~M?o95Kj8DzWvq9}%Hq7;EQE89rS;UY8l3NQY@>PI2~eg;u>#1Q38&g> zRg}R2{_2%1a>r{v#oUNt4Hx#T*si^zf>eAm2p3bQj05Z09y2P(`K`V8Gau29z#l94 z=*qoDl~t@;G410tRZUvs?d=lVv~^+l-76+GHm`Wjz zftf!=ZH$?b@wsXA2mFt3LCYM>jtm!zd??T7UO5onxaBOw;CLJ0NPYss_uer~{I~er7PTyPcO$;MRCw+r;q(ORDa( zBk<$bq4c;Tm(vA{BdDwr!+)D;-UhSlkEC7rs(?lQHTEw`p(5mXdSQB&A{=yH-E!>! z(a+9OtcFqWGS z<4xu*vne~>a8u;*RKhn86 z-ZCmkGwDL!-rl*jvR+_rCPwp4Xig4id5oCjG)K5RE5~(W)+F*beJ>T*-d(x~avrCR z`h5KOaar@u{Sm{}*qQBQJnz}e`j_NyEa7LDW|h>=?|G_?W51#4>5p0{7|R!~Pcpu@ zU{1f*Iq4D-fVprfEL(#$NHD<9{EfUN?b9=h!N^!ZOBW~58v)b2`tifd&s1+LQoTC| zg%IWzn1l|~@hr+Dw5odFfIh6yXV2&A4<^uy#k?i61pQN6TU*Iglord{t+TEd*TGN^ z%VEa1F5~Tyl$chz%!^CYb~-A(MN86iE9Iq6?!G2yC|QT5y1L;}QCGzo$Xb_N6O)n_ z4_11B5OarzM?p)Aa)Qv@SDNWLvs^cV5?!jN4)`rW|Mv3H`pCD!LPZ4yy#92V=$##> zo%zk3o#e|*dGm&#gjP>FFfcHp&Emr1gI_<{X4nY-d4R0hwt>^|JytuiV32xOS0ShB z73$QvNZX0jdy|!ZBGWmXc!#xEX$m5h@2@MJkL|W3-3dx&O6@23Q~SbznMH(u78Csr zI-G&B%~!Nn9k8Zz6;UZiF(1|u=hwVQjJ+w(l7y34x*>%L|lcyOesmm%Li9Ereu zg$+2f+$$?O2C}chocRaDuFt~sC@Ig+Tp?&RJmA#;2g+&Yrc^(z=e1LG2%Pji$ zQ65>O@!#gVNX#l;b9Z{194hxB?H!_FAr8& z@EY?{Kdn4u0ZE@`ASWZUc=6(4VZd2{>=`B~lS(tBDZ`B>Yu`0fBje;8(|C6FvtF(f zLTy6#$WL)QcMuhy38SZ=1geB)3|vCUHUe4&OKkH=BZFnA*m#U%aC?Mr=<#x+uTV#q zF!{XEw<;oBK^_Rawz(fQKCW{FCX@p@-aS=&l1qibU~C*674P4=nX@o97RIjpR>j!Z zxcP_<{018w9E4TQ)cWrOZ+A($CUpYQPx62S4&tw0zg`~1OHGwEH#CF;0u_MqgDo^| zNUsU<_pfQ?lq+M#+T6bi50s5D!S>ReUsk+M++?H2xp~=DIC95#iodc~Qn(JwHF1&VTapG%jNb zZ2(54p`oEy2M2EEAJ-F8QnItN@!HxflpqdOZNyr+MmF_x>^iz~-j4_D;9+7rSeT#Z z2XQYCv$YuDK}LNLr~^{_LWST2V4Gpc=Ef_zVEZLJ!3D(2O?y@-0ZMrd(MaPCBV>bn zQd*4>OvL1D3{UE2w8R;xbtt1l3Gcl<1%T1a^EySqxZ4LCMt9k~*bW!KT|F<*E^^STRI13Zr9U0*&e&nhUqU zQ@{NlGZ-Yz%A?jJJ;finw%rur-YlxhQmUgi!JihUIXGJ9)x_Ss1N}KD_C9@=IxZj* zsO0G>@?D1qD6a2S_XluQI1@lG0K|@OMSl_J?r$nSmBXu0pAZFOcaNqIxFg%e@0^4 zM-hA29hui`{4#qW_c5O;FowPWC(Sy=cO^bYcGKX;mTLL;v6P-H;J1)Px(h3pjbIcs2{aV?&RmU#uc zMNhA#r+0@2_%6c2!rUw^*-!9sflR^8Ma*uF=6wTBeH>?dI6Bb|Vq#%;+TpPO0RG=F zmP=0t?DxJ;XuI4pO+Mr-ox2Os4@4e9v8&n`_*cg$2+p6n3dN}{BjkyC5zLu8uuOMT$R0c)%%d7vW$kiV0Xk~V$;=k7px zq0QV#nQ_jwxHv6xSI@8t;d^uo&EuBSP|4Qd;!nd;u(dgq=rP| zr_Kc1AWP0OM9hW8p7H>+zpNJpEvc^HvkXH+l?D_{aaQ+bd-o915}dQ(M_Lr}_uF(x zh)Hc9-k!9(5O4v{RV(?kFAiw%R(jB_ioo*{W`OsAcNsx|#tB{tPz2xPBHs+G_K55A z-pD~>t7)97t)86kn|XNL0ATz4{A7_1wz9oFD?$g}eF)^n>H~qN69DneoX5+|`A|3l z&u}1!;Vk>p9|#YTXudfW_hxY+;uwnR?I&EslJ9if;|h){5r=d`XZCxEGwxO)FEm`j zQFf>T;)g*CaSNngz|Z6z@;Tz7p1H^LG0|~@mD>70pbRamnb*3l)4niuI1!@@-HKjJ zQtJ>zX@B_V1RG+n2(}P?1fS-Re-NMM;xNTiduehC{n)g_+jPz*Mf?z}%t zV&O`3)At+`a>--U+ADorKve-?{L>1U0AcI>UdGIGVV3Ln-fLp5&*0`d5B~yd>GHhO z!dws)8=cx+(=(6%j<7^l@_G9?=g7i=q)+rLOP%)(rI|X;YL{1)rJ2GxxMO)$--o8c z=ghXZx8IxiMg%AMqU$nW+u`Uyvnbi|4a{dXHrtyXR1oYvPDPgF{gxCvvn+S(s5_0kag`$`2 z2URp76_+&dD!3JEKM_4lohPBI$IIr_az~zvo=X4Lt*P-tGa;1eva0}r<3WQg>JRiq zI(5X4iI)?KzGTzK*aJnA2gWgraO=%C=GLx$Zwh3@?c0R5PQk8^{ z*l2Eqf4;g9U_K7Mrhp5_iP~@n2x-09iP@m5jz)MiB5RU4-4; z*?Hm{xHTzMgwE6?di?ltK91=B;WjSj|3_|XRU82xaBrJiQd>>;d-njddE?{G`rocK z5il?`^xUoC&(e*N@umI;*?g~eVfXuHjMx#hUVt_0`o1dt{O1_P)de&7Bb+3|WB51)_MCk`0~SO?}qu-(RuhRE&&>aEXAgv$J!z-^s^H z;@Dq{TZfz|CBO~KwC}tLy>U%p6FZzdaMyTA)1;5S0cn(#W{fJHk zK)V}6_!O~9t`}#nA`l?1*>XDd0&r+Y9JBKMTZ$|czx@tydQSnU7<2-y_W-VKk^r^I zgZU^8Qy3%|V!<`^%I%(a|9W1albM~(ZoQ8(tB_@hlpUAbO$SK9sFI zG&|e7{SnURVB=nKuquO}|6k##alN+{6OM_FoZqn@dTj-G|UWYB;7dZ&sX4{0jaA#A}C4Fu(JC4i=UR{Psz4>3ABUxFBHUv<$|{y zXaA!`Qe0}0r(;q9RmbU8YdbqiPoGi+VUJxemJmK;+e+se1CW@Q=eM4QEvLs*oYPR; z1?I}nS-&UWASr}NoW{lB&41aUHJe2>E)&Myd050+X87Kq0(sty;u&-@eUJgafR(NEwNJ zLFUxv^y7vH`Wf?*akO)3Refi%#N?$fe>%2i#4+bW`bek$2(lhyHT%Ysy-yj}F*H2f zTqqX&Z$i3T++hh^QlD2ow*wdK)tHWd$%p^RNaKj!kk0~dGXQM?gW+32fx>DuJ1k?z z@(c6>1*OatuI^OV;2d75I6x{#pS{sv_z?t8#7USwQQ|5t?0qx2lYI0qW@k!xWas`K#RQa{oG0dmbj zl?y>qCp&WmXk=Z#E`->!WPaMCkO(<9V7xBYl;NPM&YER2Q&(OqX1oPdAKe>YjNGo= zNijB#f?+aMVUMy|=^}W~w0T8$+4Yx3#~N;=KCD)wYoR6T;zlPQYB9)2oPX8(H=Rjk zf>Bx_`Kh7&4_@H17q>K}l%}Z_T@n_g+ybDq`g-E(#O(v}!rW;))9$LRb&v>~f%LX|4M6U>vN{i{W*ec&+>Zl+cZ?Th?!6Tl5oc z-78Fgv`cUWZoX!_p9(a0b#+sSKME+`AV69@=8h0iGccX+eV(v$cNeR2ew}r_`n~z|bf0Wfh!%Hbc zlc)}7f+>E};dxSfKi^-JW~1QAhiHcJHCnY7{nxq_5hfzZi;L!-ons!HTnCTRJ`)XV z5V7q%aC-CC$h3;YiRAbS;ZNZ6%g2^ws(%%TCbh;%b4WjmXeYh8XxCmCNsT;imM4b z4z4!hzu1W5hskW5eh#GZ_tSY@iJ{JhnBfj!on6Z)C{Pyb=LbUBP$>hW-RCBC!#AMa z=_3N!LxDhf%)(HnG=ggcl9|O+(qf>C!-3q^mb7P3^uDp=GGrTc*23Hk;uA&M{%J3= z*!{R`hfwymd-cf7q4byP^#PRX8q5Vi7|@W85kN}o-n8s^yTXyq^Z${_UU+GEWdoJ? zpt@UXbYiPX^B*W%y}SE+o(D`U0KIs=|AHrFoyAsH8O&wmu~=6;mzKUhaa>1&8x5@q zSQ|h-kTzL5uQh{;o*YPguddPX{|1U5n8yix*x;Re(^np=E7${hFG$P$$zO$PoYOnu z5Z+&uDV2hsgER}YS_$n|uQDB%r~mVL0JrWvf*KoPK=Lv#)zdUEh(e?NfVtjmQJPU- z&xD7EC%qyhCYH=>{h z_$tfaM?fAzqtP$Cu1f}@?*o-+XmBvN%z7ZJrY7yYL=R97h&bmEyMI5pt?|$L=B5HK z^%9MOeClkA!Q!+Pa)7XE+$ABMSZf02|6hpC%LI%R3wp7eYDrze(&0)|gJQ5Pgr&&k z{$R!$ukH6!<%7UY`U-}0Ed}nzF~q(P1GwX=0F>~oQzZrT4(dCGr>!RRL47y>{Kc^q z8iBS0CoGJIcK7|ir$st&<=`GKX(O-s@Z{JB76eBR*0_Cz*@n@<9GJ}Y#pNe4!$w5r=RnSHM}9x=kf zG!s9zs5Xml9SO5Pb7T1Y>r7yec0e@U*!FiWrRDN>8;mNPx~`Z-wT|6WyrRl)Xf|YU z&&33g7P`7rf&6n^PIQ^_Lue^H$z*EJ#@OVauqmf@856S_PRDS+Oq8xavT~VjuQSb z6)4Nhp(<}{%MBb7l+kUWHs1dO8X^F01um;P%>7C#s7Nj}tjv-<_<{~3CkUYh5omjR zF73uzF%LK4fJK3!E%Et@Ik2g7<*}v=m+5_6b=gg@|3fp;jS!f;SL*`7K`+pZA%~@j zIqReZ$|Ap1rgMQl4I~z<(*O(?ZLo-(qvLk%Dq>|6X3n{}z5Q5!z$E&%QEHmV zRw~yYX8emJxn*#q-*Kpl{Ni|w7*I??{K6Ji&R)5Wj%~ot zeurrPs=xCSMVQ!S&h`dz>B4(cr}!6XUIF!9uJe+6sR07Vz~x8Z9;D5_N)RzWNB+`a zAbMlNPOnf01cq`XsAf*X;?+49y=u(M4YZ7n`P6j{`wdzm??P=K{w1A_{CDXL%%ejF zVzfuVHM$_w8Wc?<@X~05Hdg8B-_Y9Bqg83*xuyM1(2vyB)zM9$!&=P2Wq^Ejsi5ti zxrx*MBvdadMKQFBkS57tJ0UTZXMiO3A?@gh_d66%nJ<#AYWgG#{3H{;V+kw znPO95WfP*BYso`siMcEGIjTx*oN~6V;tZg_Y<>ylws`1o>bCBu8DoJ4nt3r0IHNuE z{|cJP0lf`g!zlI5;>#hNmVsU zM^!cQV#S3Pw)fRH*|rG19x-UWY>zEHSEYkJs>e>yp~x2wKOFpt-d&*yQGzqFqMw4F z>r9F-(kqSIi%t1M238YZ8V)>#Gg6}cTq6bzc}u}U7QTf8;Rz060!&%OXg4g{e<4d z-NWSqLYWh+{Auw*HaFqD186hvjV^OAOq}U_hs)}|Ng=N(lYG}ggTmYm>?(xQ{V0hh z*K}!wXcF@!#*4Tg2gXD6fZ-dgX#)Ov^i+WuT`{qNr!8v-7v zTQ1)t&qvXCZV3bs{uoRB#b1GDVX&_F`aLb;z!raPeX~i;l%5c#_qp-8eUhg#@I$U< zr;X76jE&1&<9PJ>%7*B|lq#&TU!bEpi1-xI!jBhRX>O3#)?7f@e2Y2kqi5j96@xxE z+;%Z}CfIVU<}KP7qF^CdkLNhEm>xK@eSi_JX3>9g;2)fL~3OWCRfW2wiQ#h-eP{I7OZwiD(-HC zf>87*EK%Sp-Aae`ar?R_FZGjH3b3g3K)vo=B`n3qLZli4n_s44hnW{D?Q$a#v1BP| z2u~4Dw!oG>#~$Be3Eqzlt`?Q`SqJ$Xna8wmAp=R!;fH@s1`vYptqtKn&+u z;A(j+xhVR#yj?b)?TkUry!Asxz2f~Q4}!Aq3pN=+qJLBzL+@MuqHIn(YFGZ0`=MgL zNr`#u?WhuA{I9}&yOlttXQ9WpnAN$2@*C#s`o%F0%szwn{v#G3hD)2CwLt8Nn7mKI z{28r=OME*CJ1XZvHVg}50t+t+1aolZ#dauu15-0V5g zF-nVB)WYh>7z2I@n;LJ2#3u;8cKFIu?ii}d{FX0{sUca5@m-^vTGh`jrmM$KOtdayj>N(8TONs=VNVQU zJkf)}!>ASB&-07D#J{sA=($trT2`5Gbeun!P%>%<5$dbc_`Rxey07k>^Qdxr%yA?I zX;UJZbV@fw)LFi7{BHjZ>V2B<0*cxom;lU00SXnUtZW$@es;Tty&XS24TGiS{K>~J zAr|~HOUG4l!6$08^Nioop!9C}1S0BWc*I5_+YOh*18379@pOMs!}-j{oE^4lFj#|0 z&^uPd!&Qk^{7N!O;nT18ior%eCbl9|3Dy|NvryO`%44olZJ(DP?{f6w`q<4YcP8?P zf4C3HskG&GtHA>=0y0ZqS_Ex8aHaAYJgKiU99j!_15REjm`jof*^@`-RGekxED4>$#yf0q*R zu4eme561tJ72>yKNvt^wpd;$K13$IqcGd4!7V_bJe|niyXpjcRQyzO z=_y=xOF8$z0%qRSqr^}dCSTZ2cLby5&Cwjsii*;Y~;Az9gR|?k|uw; z@=+4%ch7!VB#6|LrUudH}CaB7wys_(nm2dJUWl#N=!Q4uyMtyMHhJ8Sl#d1 z^Ugo9>Z@Q%#%dJtDk435KIV9HqG!4rA*#2;o~mx)rY%9Jp{{O*K_6ec3stXy@84p{ zv%!F}xh^FGnMN^fh+_TjP-qPl19}VKtF-eiM5Ht-OKO3z1 zl&{j^q2BP_stNsT-w3rcI`FciXyjfeX^zO(zV7wbq+QXA4?V`+Ulpf&Qh(n3-CFf& z_)azOTX%VT4VN5drpvbExpRLQLYI}&_CwP8uX-f{K?RmFpG9eEAm43YIDf%9@V+^O z>l&>z=1s)ANsOoim~~2Y*$`Rk5BEcp)b;#`8AryhJqs_UTZO*4e(t-crKuSV!f1#! zl^7 zPB~)2cb6O*Vm4YmNP~}YZ#}4(KRQa-zWN1AL^pN~x$Vx@`N>B%<&=&x&hYRfX$#HE zDI|?S9Y4&qZ~vC>x`LfE+CP_OM5ChUAdxxq`|iC*aHgJrj^K+Y6~M|>lf(%55PZ}B zEGc1%uP#9L`-0Aa7V(JcsX&bM%kA2VVr(rXIpV-U$?80TTnwi9S7ohk;7(xSIF+g7 zHSWSk2V+Pv+&#Md;tn|#I&+B`c;qfNhmJhp_w!6r3Lpx+S{E)Zy7OBUcO*|An>P^+ ztsYu^f*M3U4QI*G0l&cgm=+ux$0m!)suzkqGL4hH!_I3A3#zudCVTiNTArQ-wx|C% zwWi4x|L^FL74JMVSfNcfDBTr%I`7RBoF{Qz@-j(^n}!X2lVj&0HJL#?F~bw=_cLNj zj%r`=`R}$wBN5LW@bH6Acf4^1d(|lKziea{a6L*YO?2l3LJw%EGOjM$Y+V=%9!YV&>B<3BvTKcr{QV}=QH=ozyajz{w3 z{u<|`-x%BIeJz>{tik3^@&VCEL&L@Kf&h9Elz+~EdF)%_&zUwR2?NF}sotsRb^DyZ z@Y~6A8r{I6c$wDPCn@I@G=>NJmanZeSC4jw?a_JB)E^C?HU{XQ7tSzgj$#^_^`Y86TrA_zZ7AJXXz6!CqWkF@d1*-^#g7H3;{{gjk)TrgE==gJSO z-9VrHlj1Ky*krz_^(&t8zNdFmq)OfPY%Rek?%OkePT~gNLvI%6CR#ptfb+iV%Z_yX z3*ktxIRD&fo&NE0yp_btp_s#DNk&3YzjxCk$hFKMv8JW9YCh^t(yMrqaO0sTaoefR zht3qotjB)|ha9BbFd{SDZNgKxmd-}po(@<9x9eH z>vw)8Jz(!ITK`-q5c#6SPD7Sl`HrH+EGvp7<^U^Se5KBOYX zDJYX5hgfpBS|wvQyWrVVQ|AYMyTiH6 zbBPrxTHD}(dZ>cR-fy`y*;*GTpLah6a`lCzCVvDEtMyC4+V&)meva7)>~5wiTU!S~ zA-e%Pnfj-Ty6C@~&ZsV$d!NczYP@r5|E2|+^&sZOveQjsln%PW>4onyy^Jq1HZZuG zgPVoNlK^6-Sp8lmpHJM+rbt9w(cwhJBX$ETwXq{+R`1DCT*9f&OL(2G*Ck=IzN??} zhk=)S<>SX&-wi9tz$zT?BKr9(NZzbpZi8^Z?|slNP`_2jhX!oc6|nenV(Otg^j<7Y1c8yb7khJ>!wK*i zJZJ0Oww!F8#L_mlwwB8Go$CNPrmZdl`VWL#FAr_aGtmXIsNoDWDe;>*-@G3`UMORP z9p*~clG~aoDjJUn{^P~2-&lpW9Jlygd3icJ-v(VSbLIcdK$L#WGcbjpf6PP@I;j;M z5D?(G4g^vnK&X2!HcTJu_SGtmKe))JALX%qefyet3?C=P^wGcoXBJB{D&^|!^l{gw z>pi;2?1~CfP%umk0GfaausGrUgb4q?^mWS}kfg8W6+jTKdEv61GALmcW1c9VKIr`1qifevVUA?l z&bR9;ztzMW{v(b5gQ{=;1Ec(RH#V5LPjE;WB{-{A?f?DcK0mfx3iT&~*^)4-j*594 zWct|r6N0sN6N}{6Z4|J|X0Uu8pwWILymOID1Vj35effl*hpvoaFp^#GBm*M-Yw&~r zNDv}bMLDqgyW9GlQ8F`S=wogxL6X)kh20mVIeczc!uBL?D8d}RJyc9V9~O)aYdxj& zc0UF3p9KtLyk*Ai+lzIP6rD$-@gPvQM@BhE$dqJ6-SkxiKiYh??QbKJ@A@^=BE97) z^v^4&ZnfN@A2vd<+xuI09aPXnFJ-kXr$^V!9(ta77-ORMladj!l|KxtT}u~VS% zgew}waM>7uSQPJzRzEf<2oSlYDxa{rEj7HZv=QpxsCxW2=k1O2f`<@{mqaQOHg*0| zsNb*gq}u5bjwWfQtIcd|5p<6Z{s<42^b8&XOU0QtZ!w+bSgm!bySSid@`|oUuV$e2 zU;k9O}@;VsPTmFrDaGykvWoMM{OL`5ZSV;deI7d{I!5kG1MKI!}n7yT86*fa!-65hhid*H8WcI=E zyIPUt{AT})l>mbUg}y1}^ZMTzz)W~)=y{j^>tk%C*n8{W zxQNN;A~Uzbv0vy|JPWh=WKDnf6UZ=P$TGg;e?E42Gni1HfZ&!GhN{voJ-7J33kGbZ zy2)PmThiCx7^ieK`L6S;O)3-O$nRrZ6ZVOrkNpKzACtab7`r*L1uY}|M9eSs=8+DD zr{l|orG~-Yb5%Cq@;UqlP?DrXJlptbm4Ln&wJf%M-+d6j!Cxw zbM~?DFf!((3%}jvz~tF-psA~ZNQ$43hfn}rm7TccX@)y%kf4-hc>4zJ_cV0NVHPr1 zK#Eoox;b##9h%ro*FB`s>!b(PcClgkBUt7C!Nwv3+bgTOLUk)OstikBskfdh_5=!r zqAL@=HqCL|dur$SrW_jWWJ^@+;fT=d)1!RUZcL+5;Xh?>tasORy`49-shG6C!v-^1Ph2)UZh`3E-+{d}C-bKxtWXU5vu<2aDZGB3OYT>ByUY~bF06keRcN7Y{UTCmy{GCUa)oRT0`W=w@Ah< z7?BU1c6VF*a)Shkv-!3$^WMV_)H))oA^H`n!gHPbo6>EO*+VWl^ARDbd)nKEVwZ1g z?)UZ4k|@aHH^J&B#jr3uWv^v(0hS`ZJH9iP8HmBDVd@A;u`hgd zJZ6;g4kvQ-5u@FMUg(I3g5jq2cGDNS<-dxAqf7=9929ter&P`s#)i3Gc}RpD9c>k@ zZsPUisa$>gcQ<5vyYu<0I)X!w7q2V0N#_#%tAWv);&N%26|K-Bvn|I0X#n(jH@qtp zo+?J<2GEHGW4IT{IkNVPuXiIWn(55V&9`hL?pJjm#wszkaY!BBg84t{2ayJ#(R%C( z?p^4XJP)FvpfEhC{`UQ9AcS~?-al@&R8NtXF3<=AuQJ7v^8R&>HWoX*EL|ObRG0|W z3a(eYAG(k}L(}I~1Si;^Bv>uFTKeG(3?RTqQ)47a`*92Tv*l%6*gF`P>)A)?w;m^0 zA|wm-MaVk}yPq-2g|KN|Rm<7^JWVW&NFEcfrg48{`5O=RCsEV6PKH{Uu92n2mfc>z z4=+4YhmUBwi8EsRH6Gv+|Jr$^^ z&V+X;A@XBsb+Lr?jiUj2L03H3fWF-5wdgZU`alM`kn-`j9Xo`LCMgBlu~^g7{|$E+ zd*7fvyMHu-+kO%ep)x^^$6USGX2k#7PjPE|^q;%))DamL*Kq@M@CdeGFul{WdG&Qx z*oC?2h)+t21O{LT`n6-HSFc+9no7&iZvu6s;(OWHIT8qdb#&aAsxWTJtXeWW;Q*0d zU%}{wmydhk^RCi?L1qKYD?3FQ)bNVgGz5E@in6M_gPY{%#?dP03d!Q#j`wim{5T!=Oq4BC;0rZ~eOn9}fAy~L!ZPRb zefEWDx+?2F_cL6G^s4Sxlrbd^i|Fd@Qq0K8C*mqpoYY0;kY|6ud+(V#i8s#m zu;qD?At>~_G1Ttc?)!#uva3HyWfJnOX6KWa zdu`D*zMSjG;Swxt&IE4hO}A?2jor!T{{v8XrH-He*aqSo_j9}h0Il&Fo{*e-L~}0- z9Wg%5%5+q5w{yg3Xd-k|Q3ksx^7gKu;-`R8>8(}6D+=8gR1XUVzZbQaKYSz&1?f!g z2Vs;W$$f0?Xy@tZyO5y?Qed5WFxsMT?~n4zSVb?I?GI*I0KIsa?Q ziQC_?n2Np43f4TPskB`qDOrVM8{~NflV*Qm^Wka{|jnXXky<*MB=ssuMX5W%th&szzwn zW?`nPs;bg)9mKd*j8?jvmHK55nns9>5~P9Qj$?acos0$i=3y?VTM(f?#)aIhsA_VM za?Ni_?|D)f+bnhEE3rWvOa55X)%fY}MM_7CM;vU8ahi|Y2xxjXXcsRft>R0nbM=0n zKAiWu#wWhKAK0t_Y8~dxxu3qJ?&`S`CO+jfWZz>bofQ99(IFcaDCp=RH*};Uevczjr-k;x_GtQr(G;uLyXklE2bi!nH zd0MdjLqmCo*ZkwalXW+)zt2NI^Yvb? zD(&W97}H<7lq=6eokFGNdj}NN0)z~VqZd%Z&!vnn8A$kh&LpT=lip5z7;GO&!7-hX z-}!S=4S8-9Xj`~jsva5XH0Tadj)km%FsNE+Y^RK{+?M=3JR4+r2{xx(*Csh@h>`F2#J z|9qT#iRBY2Dhz*ih(@bYZ9ev4@{vB}p@&`9w8W_GOqdkLF8TPa$Dr+vpxI5Oj_SRR zovUd;elqlZuuhHRz+x?Yci{mY6Pm4=41 zVZ`Z|JEx!>LBFOjgPft1m%5?U;e662BO=js=QYpx9dU$!`D+=Z%J{#!VvTNIZTC7#Am}a*>ZUPXn2!XxO9v z{JC2_k9_U#RDHLil6`-ROoJ0z+gf+Q{5jl=Y__h6Xe~wC_NR2eo^n>OkN}(=01Je6 zn#llU0KfuT`uYTbz5@UO0395B?gnfhfEV=j^=TR#S6~4Dq|L0-aT?!We7{kfdwKU? zO+SDeUe>(33!?OUM>{HTFNhV#ua5@gM6k>26-uC~zr{v@aj9 z?Xeq77IZc>&GPEkdK#zs{CNP-7R?y$wx@juu<$3_A1o3c<86Of@w^lE=K{8H>h%V! z6#{%{U2H-Ef*57C=jGk&x2}hvA|@p{*;2BtvLWHn|ER)5_d2`X_-yhJ|@__$hY|LbYxN^H*149?NB}MxgAL!$T%ipuXed)SN zku(J7@=ol(pL;|M&;v>6(@5U&R)+HL@uBh4KVEaWdIt)^Qm|I!1@!FD<5AAe`uMrm z_$++btg=wjp|pnYU)skn*?!ID|7BeFlddTd>*D`$W2&hbcfHcVDlD)nrI@PxKgiI?qa+etk`Ddkw%$dRhm{&nP!G2xv5{eTo}ORi%4<<-&h z_kMY`-g3!8Qv^9RZvGEYA@3Kv>q(QH9%%Zr`IQ%cWz0+J8Q24E?oI$g&|L7zN0k~i z(E;SkG8BLdw*Wp8Ux8}zI5g{Gvv{xOC$%w58F~k>X$%`Zw35=V7aL$yosvFmpecYR z4gA*CM3MH`#p(8HRu&5p@y7;HX#xQS!g6(f`?N1RdUoeX*x)~S1K}{=`^oJdM|MhC1x;wrtquLb z>%n5lApXDM4*v)7j#%6WiD?GFg3n)tS{*LiGyQTP#mM{aH~jQf#-s$o+iJ@Hd>DdD zq>Nh)DM8l`-|sHK@tE#v6M!_L-dGDjOw3hB3%)zt(>pQZ@GA|E>18M`7Mk~4;I~H2 zL96M|kOoAd-;6}?|ExR(5&)=81U4qWa{|5Go%V!_bgtWP`gKMeR%XK`cDnZ-P4U#( zZcUGxnjQ?s=(TY<1BBaz1z*P=X4EtbMY-CO*IRZ2f_+AuoQB)I+Wg0?P(p#1=HVXo z9?I%s6Gf9Xe7YNU+CdZSl__2pnX5E7S-}McnwNKOtK^3jo9Ge%qK56l2sm^ zhr*j%1w$N~SH(~@T(+8?#rWRC&80T8a|c4AwfQ9b^&aWA0JvGZO&AptzXeo3h}N3i zUrR*iEV9k{A&nQcGcev+CoT+v(~bGMJqbe*}T;c4@3dq(%3H>5jxv2+EG z$!I6%?fM@sz2$(|2OtgMW3>Hg$w#UjNJLvArobdHM^&%%IA7Vp;N zENKI>OnX&M#7~t-&*wojT*QS8_-{_T`h1hNh~HNld8Pk%`&{hzNH~>dCzO+ie?iBMud?x zJ=lNx+L)m`!-zKGX92&XcYlqv1@F|ltQ#~veYx)|K^#&Se|=`N=HDvZAqiJ_PVF3T zwO(vRnZDD*B3hVJHw@6xrZIhHP0w)X*nN;S`SPO-L*z4QIbRscKcj*ly`cKq_;zS0 zdDobM$P&}1h2^)(QS%=Yt~R#%%$XCSvwKYB6D?)ewTK-O%))4CIbVq751n(}!^6Ah z#AQF(P&)VhuBoq&qgWLTY{>X{$y_X(OOvG@Y=kPxI}bM<-HzJZCxE5uCy=ELWo(a? zUGKWIf#KmZJ!hVD<#XrnnjQF6i=nUUAZg+|wWNkI^V#sb9##m5k}_`eLUB=sC8g z4*1Akbb}V{O)#7_d%GSJA00fLDS=1lNveFD@#E(uN{n#*_=uZX5?kP?h3~4-C*mL@ zzgdE$63P{v8=k(?Dc4=N)G{4?8Dz`eBqMOe5e&79_XkhCKeS3;={(@N&pfRCop~my z`MkNHh$p(;g(v>`uJY3wk*(O zow{`=(e|Q7Qr?9B=;}Kiw50eUl#Z-0<&n#A(lRtw_32TLnR2K?QJXa1--tzLsvYJ@ zungZ4@9L1wc^hpz9gdm{xMSl^}S-s_{=Pdkjt9#sB8XXhy7!gPQqbD zZ~H!mE05>nYCMt+ld?U&y9=G?-uMU=5o~=VM8JXqy1~=qopk%<&#SRmCt4RQdmlzn zEgx~};?mD{k&Dm9Q9}lU3#d$R$(9NJ)@@@V^9m_s-Ll7SHLfXhy-&8@f;<#3apl~6 z>pvdrR(O{>a1R!~HOv8fam8dbzx8jbg(F;oAQ)=v9(R2C1`0KPAoK5H4j;y;+Y9X> zylG~!vS`*EeZ`2O&R__p`ERpJz_*>FcPNqVWzpSA&c=p!cXPH zPRAdX9z?Hr`!+t~cM_k!hgP!S9XsN|7VoE;tO>6DC7#!e#G+E9eH-@2#IX~>_Z!ED zXJA7!*Ef-11*hK6)lH7|UL6v{2$*yi80?cHlIsU=0>(fi5-IWsJYl7(+ssq=%qRXZ zO$FnDfcx~K*>|V9@tYcPCSq`5UhO5l$vxM-%4A$S_SrWe; zGx+Hh!{N5K6TGD2DH~yHZY{8@1#Bf#dM@+s-#Qsu=NrwPuRfjEo?w7&{U!;MF~y|rc(Jl-aHFZwhfwe}_9$}`uZ240?)DcsFBZE~#gV10RjxSm=Qka8 zB<$6#sBcDRc(2|!eN3Qsy9Pr6Y+KwQt#yuQeT!Dp_*dK!hS~WQWTO?Xyu==3tFM7a z=X$RPnqA34E`#!Zkoyg((>v+aKJOP*mur~7H_KOfR9ZR5uwUNkYOc;p`a#0yd|8oY;UVYsZ@Z)k&W~g{MSoi1O50y|^#MGiy?$`sYHY7UP{DSJ9(j`ksq*@eQ4h~~=Nf^y5C=|%=thk3 zL4;Y^0vIZS#SVno6^dN7gS`h2<;3yU5X%w-7z&cR7hN)jwW7f0YDC|1(7Z`r5taL+ z`8-Kg>PtGu4Mf z8M6Ppb+rz>^k)a%lBVHwUio<{QI0@nNvCk4JS+x9);hbW zxAgn7{9JpCF8tO^i2y~t-|hz{s zAO5|O_s|Df>OWI5`L$G3Z4o9C?o#DnN$=;&!9&C#b?zbXP4FDkfK`Kh`>$AYHMRp&I!Kb&jY?z%S=96UGQ zE_H*KA-1NRN$kcsn&p$r_TM{3%~`)vX_G09vF_o8E_L))XgRIYO;RH~rQ)99y>h~r zzJd&-F|*iY+|Wmz1>d)WmSDc1RB9_+=i)9C%S17uDSdY4=6sYK9b-Mp2CHn#+w-kV!xPwTb44CBfr|>SjU;G2ctM~pPL-&uVLnCF{JV}xX~bLreq_SUs(87!kbXsLQ=|RL=?K`yv@|_ zoz&CeBY4tz+}zXWZL{(3*Zlll@3Z{E;s7q zUaA-{34NRF^D@YzUf5o}Z*7~i`kL6+fNpg)v1nUJA^yD-FO(18u>sevuwDisr8pV+gmS&$ zo>RBd#PL7sG{sPYb_cM&)hbi_9ZPu;FVh>xtM4_=(7&n63L%BqHjk7?6oxX;1*!X~ zd~B%roO-D--Q~`$tz@$h;|Cuy{^?}l6D@Gb&*?o<)|P?)-F@iFIQeUaVhqRfQB&~U zha3HeQt2Ug;(v%Vt{NEXnckc@-GAvp&( zzcIDfeORmYK-07V=WV%(!u8;%^GZm>NAR{S1HW1);|3`#_^TDKNvozIXP>T)d#isI z=YT{`aXtg;p~c|hhcAm%%iH5jU^23LfUr zS#b}hUW;uvT2p4Qp=!lyj(J+{yYekD*rTIzGynxzUuuwP$m+(Y&d5F`KUs9pOj@{kP+QdOWG|nQA{dK94jxL@JG5!kbE0v`AG=?tN4Jv(+0n^qs#k=Zrvoyf-8gtI z)BP$zvPhTs`PCyrzqeyHTHL|cz2`B)(;3ux>Fm_>5@G{Kbx z7EF*G(NAuC`Rw3uBudV3Be5X1TY#|j=vPIVxuBO!M*#SkpWsmDh4 zq=O572krfgU{zqzpe|!|Wx8z5V#IBGO1#IQVbbOUO*=ZVprjqlxDu3@cu!8Shq9@7 z*)IaP$T3%LktX@|g2&Vjo!ymb|`Z-O6q4b-R~h#Hab<=FBkXzWqO_F=YNM#(d^zoHd(eG57|Xq%R-xZo^gi zCLq1n)7AsQd&3JWDda-#OWyJ8{=BrGloGqT&?SO2{%6gsYKx}7sb25WHu}v>=bp@` zNSVHT%kJz<$X6<$t@GNuThq{Z)O+OmkF4DRtC&OwnSWo0XQ1AeWm?*3#;#X#3~LtC z0q8qc#BbkMsKk3q)BW3*F7qYZDRbay@;0rI(iSPp3 zOn6`9yt?%7A=kK>AK7$j-`!=lpCx<^@k*S5wT^Uq*jmmxY1`l(CbH^{ARj|t|! z>s>Bup)nElp|p`z;vL&AvUvU_gN;T9dl<)u5~tmz;S>*Y5Je!OfvcT$CQEeV@E#dy zJCgkRWdG}&|3BD#V97J=So@<(LHzbwcM+EfPFgEs zEror*jVZ=u0VO1>)iAuUJ7*l_5+7Oj^1;zN;P96n>)nUk#1QWy*=c%3TTO6+psK;G z4IK0-i4bhrB^iUtYkP-NyTYI>Vaoft%Y@f)XlRHxWe}v}$fRtgq@+?6b3T9sh`KsS z^>C(9#rhsH^>}@_74<%X;IcGgO)J=QR`efoa2m8)G!)9 z31Yi~zC&fnM;6afNnZSf{quB$u$P#rm#R%)aR+7xGW4*H|FB(m@!c-pyWUEM$D0SY z)N9U?9{zU+g;Q)E=LrIWFLk zCoA4vDJ&SR>-h~oOqJM0P=y;td1#Rk6CB@m|E^Tqu8_1K&I4F5X|Mtbc z+~FxPqrlDf>}(j!J1*`;1N3p~TOlVAqdQ;Zz4lfBH1DgMSr0WNzW!DM z;n&bRJvtS0NF2=c-=lv@AJtG-=yJD&KOBsDfQQ9Y#ZL={uU{|j?U4XY0SgPud#H|Ebk9lU zk3Ld>BTz0mxw&gmmh?J zf&hZ!6J+uzy|Fr7z?+IdTry1s-#K6x~oJ}h{Bg9@_O5i$hOQf}Hl*&jA2MHlO9!yVuK&xD}`{DeW>;1iCEu<+)t zet7=;4K|G@CiNB6C%gR1UW!F$9=1n(=Gf#i>>4!!DK^`in@E~;L}4a zSkUR=hvQ_fmpQ$8<%qL{2Kc!dG~DbQP~V)|+hrJpX(h znNLEwlI(K52N!28U8ve#C!ZvTFFX#{!3KtZyJ=rymcnn@)r0mS3noWu3Ej2nxW1Wg zZ6hUl6EE;XikREO$A-23N6wfAy_`|$l1a0xf(%(8st#8MY13NIWA=RYwBp~1?axe3ffS@F#23vT#H*<1hAK6^eTA= zJXRfHlY}B;p^(n1NpT2jFffX&U?Y?pT0zJ`+m^IL* zJ7?NU3SMHQphUvI?|SA|d&)Wwjk+hTh?EUdgxPsFKfQj}vqkHf08UWl`FM5RU*^K$h@;vOr2idj^>ypXK*i=^TlL%1|`K&NpTp*7!el{m5^+IQo z;sn9=;0+YCzM?5WMPG#3&R4MtUR}z_%~N}Nf9jcS8NsUk$DgejEI;!P3s!eYBet^3 zH@E+0(Cl!jlL5B#rwYHx>og!foeRj#|fj{u~74tddmO6;AA9lae?Mx$bzY5wI+wGjT_mli5N@?us$< z@o8z5W%ylu#PLr`qHTmQmyXWPvaYT_9OpVa6+BeOfSepT1qG|8uL>|lK-xP=)Ft0h zN>ucfhlIx+tJXQ1STu%6Z7LlA~iMjo7>*o z#l{kM`c!9;kIfw8BS;H6n926c_|02~v5n1n7ab5_#+$Yqz;CVdx6E-%%pFW=Y)n@q zc0gaY{@r8FY>2^khMq>l)Go@4+ZT3@iP7_7NC9l@dah!HqhaJuTQ-n4Vh%638yt)yPW61zeAGOzu&u1D!0`BCGx;n#<4gMEjTBXO5%J>| ztP&|qZRf?$Bw$_6cK+Z*Dh3v57c80iHph7UeD^QEHb1G-yz8bX$w3pN_t{R{WQiW1 z+tv#OE*2nTa=zEF&--?aE$fZ%>DJ`ST1S?d+1bU#MWDW}n*~;TF!`R4!o~&YSYeJq`g-qn}L^#)Bcn=LYzd7P5pVsU`$KxVRrUpP`x+ zE`Ih5H3!AS_?=FB+){XeW{7D($siu@ed(m8EbAq6m6P>3Sb|@$h&M=&KD)V(5DyBP zXwyu}p7AB4r9UEFF>q(+J?FC``$|6<8GO+A76!i|pS6s* zVt>k=cI+tn;39ut>p?w4NFWBTb)}h3t=KUsK zXAh;X*iHb9EyCwR7O*uuK2d{P_r6*&V4Bl8N#d|hw(oG1BU6FgpQRV2#4}NK>qZJ- zPg9Q^Ph4k%3+ZLK?=xfN0hIL#BQ>2?tnbaH>JptyUP|N}qsZF15|@uNsSXHT6-Ilv zYkkU(K5#u7Y~$X2_!zl!GvW{Sb8=5UUn!F4e_{5o;jQ0%s}BBzr6nbvDJh&hrlw&n zYbHyKk6#9HMlD#T0{jyK7pb%Tb?-D=Tif7uTzq^Ns+xC;W=@sa7hX;2C14GZk)PDj z5z4q3sE}a80Bwlv;_c=pH-KaxGDOgDW5af4Ye+ZOhqAz+mGv88=azika}4;?u$T^h zFw#x4JyiIIL%lxH@f^|2sr3F>_`kLdmbhgxIG*TjstFEE3oo4VTJ?#X=*}1^ zOjEm^l(fDCk=uFUd`_UmJ(P;Vfn{>u$EPr7q(Q?y-`tZN{2wmBQCPOu&xPlPd?wN& zj{Zo*biMKYLklb8fI!(nV;{`A%pPK&03$BU#q`U(Y6qh?1T_FtytG8HGwcK=PVI(VaF-*bsTIw=|uu5(%N3e@M|+Qkb_OsPIEN&A}r-4DciD zqb^v|T_k=vKn?6=6mWJp#XRp)SK-zWIAq#6Jv16|ASc+o-X|mScTtj`N6jCGuZTrq z^=_ot1ibm!RU^nfW$-~B&pPfEb)%Q{?dy>_uC!*hubr_Nam?>ja)5VqMyvJOMz+M^ zI8%OD&OEigu`6q`#PaJn1-NhEU3hc^Qas0oE4W>-%j42m9K{1Ox23 z+^AXBO`;J*k?PIJP}3RlnOY2@^%{w;3B(P3->rQ&8g7O*EDv+R8~wb0Wy+`zQVVl5J7-3dkw1k)yQMAvVBiSd68^T;7OY#;O;IO@E;@&BYj=q-z?3F6;1j}s zk|8sftr0@sTc_jEzUG3JStrSi9Ba|>z_FJw)O>AoJ1Su!ar}4gnYacrsH*D@7&K+1 zl+VljV?P`T>eA^<%j~L|TTpr~n|k{ClE;>}bYTbc z8Dg?n=iuOgOn+r}5elc`;zeM5CehGlK}PNMQ&X95M$UQ1tcONNlj;ByP9Wl$9I2D=0{h? z%2)uvkiQ|q0%AyjC}B4&7j3OdiISAyoZG4FjL`o+CN1{*Noxm_RY2{V!2CRdPF5=& zad1AgbMT5-l96aldGm8H8v3sGx4}wt1rFzQvwU|cc55@qrD&hDQJHe(U%$N9PD;T# z$I{E^_s6&hdAAFS8!8$~ORry6LweF?o%k04soT);rd}TIKJ`YwsGDb`oJUQF3s=Cm zWQuZl1+0K_;zuXp1@}#Y70C_cVh0`-u>s$h$#A;luNlH8d%E0cAKze68W>z}W&Jbd zR{g&khtN@L*Ph-w?{U=SrOUf_?|!!+T6lQ^*}ajw6d~TT&A#+?b#-wbK!CBlug{K; zkMG+1kh<7loxIB6w~FFjH|q?i0tJ=YFZWwCUL#TK8P`Wl5;@#EFkgcHIkZHAcT+Q( zMN;xLEw&Pxru!HO@Rckfl*35hJDf8v&kIPuxjgJ7c!F<18yAlfW!4zpc={SiiWvE2 zJ>WD#%=SPu0K&n$VX{uQx}Mte;2Fy3e;p?jz9F(eeJbKp;Tw&OTUnBRN9AISx?WG8o!r(>+zIn!L`MyS#ITRj&tBU zo^8E0!1fF8J3|-+gR4LMyPne5)>@ujU0}@x)}bm0T+AmzD22Ks=|dwrJ86aArLv_7 z>6cOe5fv5jI^jIq`xgo(%X{J+_-SHp+2!2x5X|4=mSNs{>hC2mvsyeb5&dcQ;`Y*U zz1z0Qldsz{SSTarR8OEdiscy6W5Neu6t5ab9&`?jTYLl3%Piy;S_pw?ohlwCypLuO#r6nOSwDeGRI z_?arg7s2~W{dz&vA-(a&RE)#D<+x>88fKrWLPQ37n;Yu=Mev;L1ioFPpiI^?h|nY% zO|y;hE7}Yk{LrL^2BwltsHoqTA)70abq>jYGBx|_59#}?nmy|4hvB;Fywx6UdG%tI zmuD~9!|d2KH9aGY)qHB{1T8O7=_$6>d8PIDQuYIwZ5#!Q5@Whk`QlioA+rmgt!dH& z#>ONm;{$(wMS?>^wXM$4@}RG(>@OctU(4=;(qbY`OE(@-N7$HW?$6YLGMQ+6Fws0M zh%6{5h?y5li*j*skpq_P8v^p{L@s>0E{}1xKOYT3z1G1&VzD&!FeL_h?l1^A>R?8a zd-dw;ESkfGw`221SDmx$|4faD zrAvsgBEj1ws&Cd$whJDH@(e{U2IM1GV9a*G{O_pd7R*HuRIPM>Szrs^GE+=T>owOF zO=g_K8Fm28<-+m7&Bpb;JdshfWC#ACIa6YJm;v%?%OK&W1Z9PPfkOCm{&eyM?&Rnh-<`pB(sJfJs?DtKYU0Op! zL$bSfBWr6#fW{>AJppWF~wLq<+R zQ&4}6orOh4c7pnFI!FYFp_2r}i39~#0RqM&g;*D`>{Y=rLQ|t5eM5cSER;mqE zkYo3wN%XMYT>=_=;f?<0t~#T5(}yjeq}-pUocgJ4Vbyt|!msmRgp0CTLghyJ#^>zG zdOXJ0$a&auW|MG`1k_m=3k^Uag`4ojiB&<8cW?C+5=bwC5e6448fsS{gcbQAr5QGb zPcXXmPokky+SR}}1^;$59p5$1WHkn^`_(ND4vrVPx=X71$-IxkgodRqAE~laU@n)V zVg3;2oE3aY_dR>1bJ7Vv0I>4L;%=G#q8x+Vn>Y7C1WZUD*K3~B3E-t~z#snzftXSE z%`JV{?^-8TP@f_Qb-a!PTN}=ZR!b2wUG9o3-sr!Y-adVQY+Nx7z~$cfKOTonS8SM; z^Ju?c-+)Gra->z4TXD%F9wtW z+hg}J_|ti;{oLU{1z-y`@634%-56(he28I=EeC>l)kEzLvt0t)SIHANW+2~08(BAU zb%(e<`MGvf$q^QCsu@PIYQFuABU#v~e30owV|TYT_P4dn5fk2~pty7zAOiId7i~h) zVegqLh6#0478b7DV>)Hbv;(hiEvIO2!>fzv%%4r>%-))?u_+HHF*P8;7!CyCV6C9% zcTc<|^>lRZ@8D-s&&|!j{Cz2f#CR zI9WBb7Z6I-)zKRO*c6}b)FYVYn{yf%5iJ?apXnXzS%!v#2#3tu5Teb{;)g~`JMb2! zn^#7fzlKOrS6#AlaWFPDSKLF#KVF>t{(BeGdQ8@=zvMqO=Ytvar2_k;PEtS5ucg^3aG>QK~?_Iz^t zw&d-IWKRwFPnWtflhVAUGevY#ax!49_4kVA)5r!uGj3o3(<+XLBGX`8h_lAukOSDFQ@e$ zB(@v@vSH}x$g8B^OoWF+!@w{Q92)AfRM{givVCf3VZla2N!hV^>J^oXi;L?N8yhQ2 zXAc?*n_sxT1Hfu(n@OhMY-Hzk%-?~s zhQ%E*mF*vvYr93Gyi@rxrHioE^D0H<{@;tzf_O$PlHE?bZ!Uc3?0tVNbuK)4FXAYl z(vi(>whPeEnWau*rC`p%S@b?nKZGe>ffHX@s>xb`986bEXjvY|eu8?$3IzwKMI^2x zXn$CE>M!vK)C!;TCJlx_Nf4@#+)>Lhe2inHgI>#KDv7lEm8DN~+n+yo5)v>lPJ2~c z6LdqCXSh`)12l?6c_wpCPIyxmSHCo@xep_@5UF!YLWI?{5+_&t+i*4C z09~dItX6YJSz?Um%*9^Z#-#eC)1hJSYY0bDRLM$drrESB zfpEI8bA)x|xET|%oUI_-QqBN-X}i6!F+ni(x8Bm&y(GW66{wMa{dU}L=u?w@69xw5 zV)NG=O8M;uDuv%D)AGUJ|K&S@Ee^v7;(*Mb%VeJ5`tou+mh?%*9Y;5}JnBG@j`&;S zKzcauLPN-+;T^+N^o6;(SrjZKYqGupGjw}fmJG>ron@1|968(leb{S7$9)5WqXI9GP@mEI?iR#8&)~z@GY`$^U#ImhBu2v2nz!a47o%jDKN31g9}Kwu z4AOua#3bKKpkt%2pA@R{v0&=^e@ek=ZAVMrCL#MQQYs%rhBm|3^NzdMs3Kqo2~i;H zSPpKsDA1@eBX4xYkiK|oUG7&R6h#Jgawp?@(sBDbF{~V3Q0)_-fYw*$^}&wA6<)S1 zy#@zUn>I?Ti>fC%$KW=9|HnEK&;M@h|6=Z~g=5dn#% zBqWxQjs0URt_SY6$`9W*1oYJhPwA_xro==YIabU(f3WyL--=GiT1s zHP_7beqS?}=hufjXH<62N4!+P)tpvP^KU)JWYlq$R)0i0hIzie8DeZ5_Yon(&d1Ba zLfj4ZQ9fypiB=)T6~NH|GOnt&)&?*nKts{N+zwrbxz6lV%Lw|4eb-7&0knY%l*}v* zTFkBAqJsqHOhps*AHHvbg@YF6d!&}J01pSKSgGN}!OwiB#G~mpwP(s|RJ=}?caf$J zGLKK$2`pXi88x^;Y!^9ilmFvH`J$5cPG%sjBnJ(cZV>sF;gD?G$R~L5^(NNmD@ngm z&`Q!S1}fo^eT1tt{QY-?jArQZk(^#HgosjKfa*%z>fR$7PNDKZlI5g(+u*D)oIwI` zKaYG7u*UD)=&1wb@T+YinErfy4i=GH!oWC^tvYEC7WU(q_iW)NBP6|vZq@U z8do1XIZy7^w?cneGxc$kiU()aRkurFun!8wUHexd{V3rqd66#7zO#rpRl7yG@v1kyx>s<|3jgC%^Ph|9GiaSQ$9d&kf)B zFrKmgV;wfWRp7R{_0l~+-m;_SeZ4)fO(K6X+g9Huf?X3920N*DvYrsd1)6An+d+rm z#oYlaKm-HSYlIApuUqsyNPBw;j31TxWo$9C^$#p8XhWc;!Dr>h1~#E!FM;4hkc;~d z_?3zz7U83dU&q&F_4M>`GM3jDB!(`n2v)d&wd>t?TM|gfT84+;b|nl**W-%h#Hm!& zp^NqY53k}nO|ZtoVnew?A(8mPzV2ploq4o28Tt@4YlV;9LYCtY8~E%csB>2~1^#!q z5&9bBFb64LYj*dj^GKp!fRuAD?#|3DzVTF#yq|dreqrssE=fY@dWXh&Aw42M(lwHi z5J);iR2bDnqmlm~Ja6zG^KAVO=ZFp4 zva(B3>8L8`ObYg?+{vkIbA)B(e8DG|>%-W|P`8ddxe|t!oTAV9+ zG}i9c;>#o*Cq1a&ZdBL2aIFYoaVqE}onmSnIPvb?yGC1yt6vbYt2`FXe8p$@KD8{d08s47&XsMyT1z zbWeeZXy(EP`pV)9RWUB6HsJ`we5@{D>&g#qk=E2SR*t<06tYjxy=7(apy-cm)Lv=P z`Vn`X#duu|zT!ZXg$igZ&QY+hTX<<{sr8A+T?Fi^WubUad$kt6`&H|3+w-WOz?<%g z=byBg0+|dTIxmkAIFlAX&4W94@0!0oQ}+CR;pM}UPn-^}-Xb1n-?4?^C@xbBB-m~W z+gO2|#*Rj|Al~*6P6;lG-(rW}Q&IEA|vz`)4 z39310#7Fr(i#92&Zl#p!0s}-0`Kvki3;|ZmE6RPj8`BAqm(>LzIHhxrR;Gwn+5FVk zhSRRn2wcb`F}T(wyVEjwSD|J+t%4%bz#zkH+J^Y$!^ev~?5JgfcMqvr;#(X>Un=)? zA-ZZM=>QIQP#|+2MhNYsua$o(12|lSq%Xa6xFBDyhI)Gw#wR4yPB5cDID_WEgi$|} zl*M)o+2|OA1s)|bq=31*s{5E(zMS}38v2^ZIIzskbaZG?TwF2YO?1^J1If^Cehx2> z%EA7}bo~um$JeNImv3z{Mvl#&15qCW#y90B7#Xi&`|0|tvr;ld_dcfoL$tN@+{^($ z@n^O$=AoY=Kgk64VAxx~k$efr`WGiUyKu@N*(t49{dd+$(}<%ZX!RYS#hir=LFkRq zKqB76S!lnjIaDIJqkjk5$&8qMk^?25KOPs((Zj)gZ!+FpjxvkaeMJfz8M%8_DB@U+ zN`JfP>2_o^*VB!A&}b7CTAjRpR@hHB`RKjMKfGe=MMK7ZFr>PjMoB#JyI?<1{`Dp- z2eL)A?@0^t9T}j;>nkcA`&s}?(qD?jyc(D)WFY)8F-1u;bjBWw|12JbsL zH=J0z$$^&*ht7KC3_@I>S@CIzKr&wIE~NCc06{NT(+1!8j)|v4{z$gDFevdakJ(r# zw)A>)pqKRy1IIhJ^Yv_pxvx}BIqLw=2ec{o&~lDmsw5OVgbB9 z?*4^W@%3J%2c1Pfiw{o-V_}MaP@}+LVZk*`{L&=LYPT%@{e|?fi@_;$B zh5LJeFQup{3|%9sc=*n(9wZnx(7OkgYxUao?C&`4CNi6zaQRdk^;V8q-<)xlvZ;wm zUQo9t+?FJOdNF(+L@Rv5`%GnT`dPVDv}UK348Y;&=?Cgf09W@MvD@lwdP29>z`0rI5v?3q}tYLF}#;5u?;!kjKkt6r1&Kg((i9QAy?C!Igr6V0t4Tkq&GN6H!+eW2%5)K4KN zhK+ZL&5I*YQ~wss*VlJKyWz1nB^cN80dHxa-OFEuerkb^e17lq z;n8av!3z_BIDeffBhc`N_GfOFzPaHm93yJza$mytp|4wv$@9hOV6wwC-6vizv-gzy zU-s|y63e$W`n=f-n*XwYmv@;lDX`)BrAO8P^5CkT1)8RrK1DXTKEl}He`f{*)4gbs z>)aHYnwlU4XI4#3+M3*skX)79uwq^KH-ynCJ6}ItdE{L5z8P14#gH|1jiWW*AOwq8 z$5&=U3%(!NuoujG8fhk6=-;D)L_st_y*>4Oe&YoN z)^-Cli5dXR5!&>TDs91OwyY3@?_#TK@XG{K+Zj}P?5q2Yd17D>xG{?$hCSQ^CyMtn z{cXD=n2-lCP3q{(^^I9>m&q#2!#C0q{0}@?TvWWuDM2&oqshM-a%%e4oHiDF1++F` zSbNM*l#6DoBi@t{j~JTftPw&0x^a&``L8d)G#E6f?xXMY!^!-De@K$vPya9NIZ$q7 z-}j9Qz0ly(;{`}n&_gY&T|!r%T{sLxWKHo5f`0vn8qFNNkIZcb@ojNS!-J)&A@Z)@BP$TGBQ?QAbQydq%C%4V>XJGyJs% z0hu&0ah{8vxDDVzQ^U}xg=30A9tz_0KLhDII9E2eAuWu-%RbrSwgj8T*OwE(T4Gc2 zxF#X^h5?8^m#yb~o%~Ypy0kY2D!-~{^=ta_qcb!|L-a-UxsfBd8BtDw)O<_z@Q!NW z3&5$Lvz>W!j%GQeRpe!s1<~MIn9Q*qQjv$Z>ovb|@gUQMkDk`C=C$7LwiHi*^6QLD zjBoqFyl_5xsp8ye_G3!*#F4y^i8PYE5mp-MyN}XbgUzeE{fsVcZ;xhkju+gQhXv~0 zHCRc%yguEmtzRGxJSvQm2a@rhNC73yEQ zE>n}b`30(J!t0cl<$&hb3Pacc@ZCCXsEU~GhJe)L(pkH}c=|@<)*;e(y8WxUzgK61rOtRGj?Eqv!P z|2{XZc8*4HCpTBh!>b?%15^7r9gmh2AeAWd&>N?6R?crYc{~lhtCB?XFlo<;C2CD8sW z*L1LB?IE5?xZ)=^mfO?wI)eMW1hn3TTuYiigbmna2oe zs2_h`q;7=M9vSh!k!)H%!4jyU0Jn*SnOHJvNKfW*&D1!A?&`(zOOiJveb`)vQV)8f znxXOU3K0`}Z<*0yEi9UPPx+6AFV#scU9H8!A3hFQd&UGtT>4sTMZzvgz`F3FC56dU zxYE7tByAttG#niTGP%3hJ{LamHzuXjA#4FW5xDo4gWn|9SwhVZUEZ{+dwCwB_jl(U3jpa9v59 z%A(xM__slVU&M<3#>n~FGwe5iNAD&QnlmJTqOOgLC4^%6#1A9@)>-C-c9)MpJ_@J8 zzqKjH!G}bdK2E}hOAjW-P8AA_NMgk>#j#Mg|DPWon|o~0bbDF}9C%>oxyfZ4?__f2 zE66E zwWL0nt!DS)8_6g1A}dm2SO@&`s;VkJ014&6cg29*vJ^~^-7k;%sT89c$W`g^{y$|d zJQ#@k>{QrirfE(d2+XyHZ#9cYhf@wyIr(mZExrax{Kig^?^?!7!KN=r>L_@DDv;nF zrSIRA$VpYgXjm$B>xRELAw1}!v1C48UJE=6{AX;nGYQgSj9Xsoq55#08o zDqs}Dfj2O~dUhKU$SGUY9QI9i5m-G3(#J<5Brx!?sQj4$n}?M)JXpdfJewMGC49aI z3r8y1IYnue{mvsBSVVTA?eQ0eCNEfEZ#3-}7JsUyWVD?sE8b5?$R*?VyLC1%4q&0I zlNMLJ=3&$tUL0vdtZU1xg;Rd5|D%hs3|3^fwSQOmN*kzOV%U2ZETiMOZ^kztqD5i$xAONeiaS?k8P#AeuvecyFz~K&b&noRCc4dj4Hf ze7$4NwUY&66hPd--rJ*HpB$$Qnv;3>H@& znXYuWfnSPp>zd@0-4u8Se2cS*{yPam79!eji24AWvO;q~xYk?SI z`lC;nVGkQhR`WG^M9!V%cM{f4(^Cxuy zgCXCR&R)xHvKo4|ebqfZcfb1-r2AuKHHx-yekdpUDx*uStMHDq*+I?E8fz&rf9|Ud z9EPa@dqs)Z-){uJ4HIDNVCclhds`w~nSS;t`Wee8j2_)e{x#%y!^X%7 zCpyX<_2kD?-er>Sy1h-UFmm7&7YbZ`Up{>HnRDWcOj=LV<{j1Ak{=wkC9)zGd9Kt) zbE$J~jlb4-`$?lnE?@rHc0)*m6K!vz zxu`G97oU@Kt`td!INJuhsG+YO9QcUWhA6!)99d6Rk*3G?vtB+tvCmm&`h!uPBPSn~ zoAWCvog(T8__GD^%U>kARR=tjP?`iDhW{7A6;HKqL@Ns~f`o}m8 z?aqf+O?_ZP5!3s0v%())0HO~raz8Nif`knIggD$~bRn<^}iC zrJnpiDQpqFc`o^>80?vqgded?f)IQsJodh5h{a(yUq<$KJqKSX7hu6~mQLyT@2f3`g4>wPN;5AZ&a#ImY3ZB=`j9@C z1Sat+HdmJD;{$&@D>+>dQg^efoyMkxxN`NUTxOH}caG^BqthU>yA}gx$Fcu^TE93* z%9VE7OrY;x>E>JJ=Z9q(2*Vne>V$iP8^}L{(6C&vDzM^CUfy)zJO#xZ7$JyY$ztYT zSi+3quQ*QjWJU)3=|^5h9gD|@5y;a@aYAkF?6kI6UdJQmM$%c?rB|zqs?Otf?r_8A z^fLEW3D$XmS=F7T`#(VbW@x1#xB5CRKe6$a$59mMWfoPbBJfwzIp`TNNd z)-_3_w(dTFh!R&KfS+vvu-x80zP~w{3JuA?fG|J>5LgYhb8ztWyKq9&@Guhyiwbzi zr}&#t&S}5p_2A4~)x;$TivTf^0%92axXP;Ts=}=NvYddjBhB1uI)b|osVi_moA;L9+9BwGb#C!9< zV^)fJER_HLSkDB_0@l@1lPzNI6R1=$AAq5niBwXc-Cf9jyJs=$$`Ayl-c#$)xhr8M zkjyaXAQMh{Ok5JZaIS_&nCGuQe!`r^MBJ^(#{H?)Q?I8wW9G;HMI}Gx>Z7AAH3|@S zn=cT*7FG+P))vIvzAJHfnw1UKSonLW7|{s#pB{EO)#TbQ?>|>wP4ll=%juGd$t_XW zzSYaC)OVzv@FBlnI2Z&+5X~y?D2a)WPx7AqgM{a2)50%Dd{0tdsAf)jLJ zc1Y;K)P6(iiGQCo#5scmQPp=R=YC7oKt8M&J|-Qd&O!oF3v9*XCVNP8SoX$De$3NexH4u9(=>d1-Inl6zbf(;B!yeQmqZSM z)lL+o`1~(YAJg!-K@sXkL1CN7L5#90y|PY?0x8u4;skM5eSa0&can>b)GzBwK3Y&Q zDP3(TD$@&;0k!|*M_%jJ7lB8Q9)m*W8D!qP5C5|w*HVrBdhff=$6e*!VU+-0bGN2* zBG;~U*>9YFI(QED-V^`_*}E4P@Z+yS$KSqrBcOq%$O_Q06H9#kKJK(Z7|;3*Z31-* zP5>!+@%Nhf7SSrtC{ynC&sI_B9&F%+rV?d)Wcxdtgg|Roy1SpUJBy2p*O-2UXDI4} z-C&i75Zj)1tFb3$_E`U3jzh|EVCB3{O=TYu(w)u#Es<4KW!#nErioXE6B2Y+FCZDp zd>|*1ejrFSP?$#17IcI|qIL`#Aj%h5$KfT|*PLQ9Wejzb+>9GXA7k>;kWgKF``NJI zH?^-qXw+XO0pztOo4-}?7!TBOCf(UQ(cfd*V+gmLy#=iZ*_C_{x{@V)Mv zM<>j3X;P}L>>B#u)7@M&&zFOKpMsh*y1Z?yJ1pesaN$uc%Almd2KFGWl!sF}Xz*aY za1=qOf1+#%+GJhDPjsl9k3Z!M|4Y(1Uoyk;t#XAwGjett zpKr!$vg1^LnnkU5kBlS)+|x4eZg<_kZ+)W3PEsnbv*}xcHm$?(U)jRNorBznzuQ29 zmUTbGI6{7`Z_$D5wI1u&ZEdL^%YO8=nbf{C=~DIQ^9p#(ODNkG+5SB~4h*G{l}4m( z&@g^qOxzk)BwX3&=4%%4Toy)Dr`pl@K|ScPIxBae+n1~?ec)d9h8Ot=^R)TU>Djvr z^NR}$UmcyY*_V|SYGYr1RX7`)YP45>J&K(pM1}@cq73@}E(G4(P4=-3Mw9(YpZKq? zau--#A+nZ^?YTYC`Aws0Lt0wQ2UZRs%yitT&LQL<`?`$dXpM)$R4+Ax? zsdF3Q*4RN72kd^e*Uc5lb??l9j&-GHDzX!SqK2(WuKtAj9XKrdM1`4lw0_;I3)0;G z9jKEm^YF<}Z=Y>+1De>ECHsvGOLEI0rC%b{kLZ9_r2jzs332n|*JrUS(+d2g!s8XH zAJ|Z!VZoEw;&r4AfVN!l-mz49hhoXFd6*90pj1jXz9Fpj&P?TT&qLypT>E!lWEv*g zrAp_=;rp%JLG8j#QBpSoCy}!k){q7LQNix=zSsG*;8guLekYk`lksM))QM?{@qw=b z-1gZT`$kv(esR8Vx*=?@cZOPz_0r;Nz2^R9ry30)@Mjsmw}CP=jn=7M6U|1UlpJoh zL~k7_kC$~qC_-yCy}%W!;8|lUUiWg=`uoZv*kXsIOH^yc)iPT$Mf6NLz8!VsrCj)S z^sB=bX!S$0YQ-m;YuAJaCnlmJBgtSY>gpsMoSfhAFt8|zHz@Zo zPi&FB#r_2)%cO~ettuX)209}l+%r}7~DtVWSw3M^y$=MP8 zx5CP{B{wzn#Y>)R@O+l-LwDJ9wHI_MvMXS?sn|)Unq6$1f2u&P8V*$l2Sg8zPc;`- zR%qT`9%*Npd}E7Ae&9UfMsBk~LPP4pLxZy;^iJUQ~hP}_j_N=5IcEj&U_%b|me=hn|1GaIRI1)${J~-L$aV({3Tlq81z zwenBSZ``lK=ISezS`$C3H(`h@jhg5t$~}dGkN?iB1=|OxUxD#cyx;?Wfdf)ietKa6 z=CAeWKh2Dz#^Zh!y$%jY$w$8yJ#pgqXM0x>rTNEe#UU)g{G9TYLU|wSj)Bi>0cEF? z7;ixeO3CgA|KtNKjL-mc2Gp=*$)O_sWDx$5#n<3ZT=Wblo4>7@qhs#mI@U{>&#-#U z)_QLpP|1`{odnHt4w+mb4<{6Z;>82MqZ0j%(U&u9Ne!GKLpv+TCkIPedp?WclrOks zpTzrld|ayN@R)aU(Qb8p9xdwplI_MwkdHqo0#z zwP?Yv)N|tWVo`z5jVbYg!wd?_H%eR9_5P=h>4MsY=4cfA7)Q2Je5$(vpht^xCeRmq_`7OU3 zOqB{vbQC=WI?Vvx{+WmVKUJC@Nmu&jV}NRODDi(zHG|RSeBeW3oZ~i2w`A$IRb6qv zC*5_ybLiePvJggQ+$tRLBt(CMHsvPsl|+>O0KZy;Vt^aOvQvI9SW56VJL91^f62AL zN%Z#Eg{${=A^+h$QJDUUSvou}$!Thb&~2GYUF`!qE@XQ6-2L^%-BhIohe6+7{-vU@Q8PHvRh9iPPbf`aAq_A3@>+arU2*9uPg{a_E!p)@i{1qd<`; z&%>v~zt3fB62b66I~EP=0q776JB(|);v9OjSL%OdF*5K-O6CtU%+lX86@A!Ct7ip! zFfqm*YkFV%fAX>($yg{AbHtPrh3*A=GB%Q|t}}c?zg7gjuoU4qU(LHFxkIY(r7xA7 zcd~?EJ?f{y-p|uCGy0`7ZlO;k<{d;PObnqpuP6?h=WHu01X5%9^CGd6 zfPma-lDV~s7x#BLfd|;XR8>I%+$E=R`j9KyBC1&v-uOt9^u6IYM%QRt6f|_@m)Bu?ob#=)tztlM=g>vcY$p)vYn2saJvnaGa!NQ^({3TA#&bw> z?}zJJ*l9*EH~IbML7##AHFVP(w`t75I^q0D%9zFdW9Jl$C9{(f_FJ-Qos{y>8A}&&Ru<$nJcyb;8?b6dHU!+d$@`GDK6ua4$Yv z_P_YHq!&Jx*bUJ@=TWmU2;CLD5l}e%$T>nni{qDZ@pKVR zp3P|NgZeT501d~z{lK}L%InU)$OElchkilepw9_{HqX48%Vm)PNb><)rmTmI@9nQa zyf^ohYYQMr7`U?yk!nF9Y75k5Wu;x65pBDfG^0Z?=|5OnZYx5VNq7 z2j8HpdO~!T+5u4;H2#XcLlEuvF#(b$?Sw%30IdybSOr4fSw^9c+O>Au;!vU8;!K&y zrDhWqushlOTkSwPxR%y4ySH`vHnR1={<{qrJlVj2y60JGwY4Y?a&IvlHxt(2eSq8c zV|=cQMQ(jj-V=C=H5D?-RAl<4(f7FD^UBtFhvAft-!gFl5q}|ij1<9Q61tf@mt4;( zfaq6>tHLn`o*K*I)0CNFyg9}4{WPMLK4Bpg(RQg2GB~CW>JD3gzzsVBWH7&gBX-(^ zn_=0)*B(LWnO8b`Mvp9O_|8D5AeehB(%db9uv5;9*RPjQwntGnO-Ik(Et}f0)GwwF zQrSg%`<~}y<1NHCtg^x8TKHz5SjCf_iPDBI&2GM2R$_I7g*5(on`RP)L&A&72jcs;aTH+11w)FASJK|g)vtk z1W<2gv_i{bCt3Z^vT zy{prpol=m|67}lSR|oO)`xRCvH?=%t;Y|8?h=0qa3gx!Y*>kyLs+6w1)O2UdDZ(u z7#%|ufFnGLw*k=#^kvonil$+so*p*hB+v!j9~z!Jv6dt>IsO*~bA=Z<$7j^+**s+Z zOasCEJ)39>Ao^uMD~d%88}X`Gnfp-F%0{%wMCQ;g1ql#(L_{CiCk8gQ-=wgVw{p}4 z;*S^Q?8E4FE~-Hon?RdbHLJDjJ>tJ=&g@vvhrKXN zckbBF3@j>Ka2d%htv5|vgj2nOQY2h`n>;|ps#;k`s2XV0y;EZatmcvag2SK z#sAv^O*5DW7AW?4O5I%8{%R2$uv4dt@)*9!UQnt?rD?#=3T>$r{xMFMF`;s?#{QAt zR6FZGJRT5tC8s0PSaq706`ZQ%J|gASrM~OJa+x&|CYS%C+wtfCr%kv zxiR*WH$Ho^p6UO9s!`q|*LaBqAO2&)8t#N~1WtQrrU-3qx=#gRnwQ)JPM4g)BCbbx zss?dUj$A|ECSyIaR7hsl=rl7sEWfIL2cmVBfOjwoq?VnpkO{ znc!mAQrK|P%H24ZXmG{ZfCEZz(`gSs$z0$644#kkjK*a47>yUy8e{ei<^M;DEfOpX$2}526d9Y#`(dWC~o6|Y?J_i!I zP1I47rTyw7*cTVu{a*z<7JZz*?7krWth)?s#SX0O2vHeuGdxS^$!@WJQF5hM=<=-R z(vgG9Ehd+XAEdnxcRXgVvwTC?hIzxom7?HNpqqijAtQF>(su-fbjN|Z)RNXXHK9-$!j+m%S*Z@3zw3%~qmuU{i?0M- z;^$bmsdRi_$?fM#jyTyv@^6;k`K+np33lkh5=ya~0CBw5RfJ>$>ZiO#; zM|qq8HT#=l566xuI@3>#a@zueG)|FVHXE^Gw!=eCD?Wv03tjDfs)p+)%$iZNEW!2V zifR(s_|a#(7QCHhZ=!$BEJac{y9BNvJ`b*77zVv-+i5v(|7y-fCZrOGv_W&XrqS3 zT-b~?75UW46=xdn5Dlb0hcd2K&iEAS?JzhKROo-O1dYyy341nJjvqfG8n zL(xC#L|jFSZKJ+kC*T(c|ASwY^qVVh{C$Rd8MJbb6huLf-=JUt9W*g$YZA?=r>7uq z6ih|=ukrSO>$A^L#Qdz0sg$LNpFQ~`Y5N+Ms8BS0W@%fV3C!C=c3n);R$hwUSAx$NQYDZFYMzo zpcC>erz-!=fsW_KbYb0f1gGs^Pfl!wNH0WY3e0%?2a3%N&P?!J5OIPjgwdJp2EL|t z0)PgKe9=Gnifd6jdt+1#~ffO9GoPc+w@dJ!Pc0 zqWJBb2q>ch?t_W*#^GYbt?=@b<0%XWO7kl!gT~3@`q9a5@VJ^FuEx_;<4vW*CDZB( z8rXx%V}6#KC+3Ig>r%?CFZW}2ajn|k`{DHbG*s1gfMdo# zP6@mr3|e56QmO8rJ#JS!Oy|Y-iabuKq#>Zb8nrri)s1uEDV4oDiUI)0;nD>t_kSN9 z?rFoKzAYRIanB=Bka)uU#AC}tn}ve5c#~&E5lX}LOPZziQv!#wM!j~?y05cF*gOIJ5#viE8Na1}|DIENUA5Ay9xTU;TN8NfTgE_z@}MZS`V~$(3RNZ~ z=yxmk<``7M;iiL^&vfferq*|7O?f$_DhQ1MSMskc5iOE#1rUGft5Y<*xSWdoLT4giJ%;g9)Bvdi8PEfmUYPOTTY1rvaE zVi$2z1ZjWT+y776hoDW!q8qljTng3uSaV-HRI2`yF9^1sRfDjjxBObD`88OxVkgKX zw4iBg~Dp&cRIdZ2%a)f1871^9F-zM;s;PhDU%8OeMiqSZdq(Q9?WqN6gw= zS6CxYdyd#Ser}Zh)EwQ&{^#4L7NwkvcPjn{@M>UC4pC-~<+ndpRy6en@Eqt(mjje6 zZIDfB2tikRC|`0LDf(}sm^x4wVIMFGe>1C`Fy-5lSvQ=&qIvAreQaa#PolSi25GAq z{bpn*$)vaa29({$x17*UcWfr^HYoOt0mSdDoPOr?3%AGRy_!=u8>_DSurP2=6He#bXbyPE{LGsx6}>>F>1nP^;N#-?g0Nq0_zRNcHeE@;C{Z zW-z|W_q9bjzF|v@tTFpF?-g>5nIr1au4B9EoL2)=U+9#;48pPI`)eA1oqWZR>XqKi z3a_WpbiCJ|{$f(Sc%~xDCjij0wkz~ZXUy;DZVo?twn@~ZxDD_=379#@LQ9lZec3fA zZ}a*P-8&Ki0DhUq5#K14jCZDB#>L2NgDE{*h#1Z8y!toVmUYN6;ku7moHRBCL+aKd zsq*X663u?bbxGKKQ+r>1d}QdIPZFgs5>c)XU{u59ddfLy_OD_lF^m8TM>ZvjMB1ADq-}UPyMMK8yo-9P0q^B~ zzxz_zy92UMw{XXqEJ1$v?;)m#Bq%X(=)}YvS+9h!B++VYf@E-2z)1y*2|lI!cDkGM zdzdDS-^7--R+~Hca8vn6Js`hl?&lQLsO4%FeK;>o^ne5Z4qM~9<*%G%>Lq{|H;95Ome2b;6eh82)95^n{qSmD&YlGJ zZN48W``caUDP`$Cd;?rj%v~=WU!ieUp_IY$M)6ADhtol`R<*&TusG;Ap75q*32X(l z4ICBgnjka!C(@@I_@}rW?}QIsgB!0J8oWvoO3`;|gK50528B(aA?I}I;jC3mL+?Ve z#x1|`$=xo#P1c4!*}yM7GOcabdAdu?hkSav-3ed)Kqv5~upvSY=eYB@`J?bQ1rREm=EUdiK z217L#d_03;S3(^y+xL!%@9O`0T4-iEa@j^MY%GKB{5uKudvpF}O(`9oecA}(>&#e2 zUoV{s^f1!p0Rfb8bxaMHKcT*D=g*`h`>a4oq2A?0fqpYMLHwf5D55_jkd3b8P3Tcg ztilTaMH^UL3;H^3&c6Mz;+YZ0+3ft?%hF;R=-sXrEl*X225r+R5mTSolt8&nSM?kt*?aHt>Io? z)4bADt_0w7`Tf8M+c-Sbk0J-kl0Z%p4& zRKszk-UGvGS67IU9r4wxjjzFT-8wEhQ=DSJLremx-d zW+r0TRVj=O(TE2=19PqXOERD8GLf?z7KuI?BK>|;AL2&!+XJm2_(Y3$dD2h8$miIEgA72mpZVDr1b0iUIJu6W-ff{iVY{mfMU zV3Ekq#As~u_5x%v8qz^Ar*iD5!BqivVI!q^|5 zUjM=Rb-2{hF*A6L^K>%EBt8@X^&#C6-Otanui!cdKT_P^oIc(9YZH9^`{=mzQTZt_ z&o-*b7BYRGld-Ru0l$`yZpvDoV_CrEMeXnqTAvKkKe=;cndg?O%fFbeTo4!%p?Od@Z{Gn2B!gz zW_ka*zytQ(;Z}kKx1E18v>5@3vKtb0H7e{rxdlz`XY170S7HMBg0e!?!-E5kM9dd;v{$P6wsAI} z>CI^~kCMsFpEXy1@|^wG!C?Zs8vEWz(#d^iI;>3lDFySV1C6=^Z0!477+DnrJug9Y>@m$~a%Jo)t## z*QcZ*2$Reta)0;b`3(cI_6g|bOH@+w3@}Wo~gFUA*@K6-Pn1%h~uG$j|b^_ zE(}*`U=-!XMFBoHACf;Of!(@w;~kemJbicSNAD;|^3Kg}(kJBMS#{`X(gT&FA2%QP zjs2mg8K0|Bm}Btjt1HeI1+ z+JAX4lwg#D?-u#^5>Y~j=g~z8RloDR=P$EGze$0br&Y438vVDGV8%5HDPPvv{=6$Q z+)%}k&OO557Y-$#D|@lITnNC?MRx=Yz8zq?a&qUl82&M(lI^@VNx}KK(|(2145VLf zIJ;Y^h22RT`P9*tst+vtYbRoSNGPD5zC9TO|Vi(luZ=|BHL9>l$&$N9P4 z{PaDCM&4WaSg@{HewfL1+`~m3UP~6mP-j2)A0pmVLp!Rv`tm5^D5JMsbO7n@Zbgs|>5^8YL>i<^x|;zhrIBs{mF^B1x>LHl zyK`pFi@)#tuD$m;=kNW`TrjiNvz~b0wVrj~E6VMxY-ZZHzDT4Rp5M(Jw(B`m>;{Fx z<^05q3ws}bHw;s`>*P>rTNJSMJm#?}ngD3_`*AZ~eY7Ck(z7(53in04bnPiFXQ?kLCtr`N~W`g$?y{A|Wi zvEfno-mR6gcS=qRSxUL&Pfv55mt~vIqOQqaHqX~Ls+>awX}Cr)`Z1fEX0x{Zk(2`D zbyo+guEI{|n{Nd_Q_V8S=}xJf#78sANB=N{_=}hK_xB5GyQmhl*5=M~_IrAEi_SLB z8Anvm?=?Li8YHv=1qjVt$#~tBua&rTsI84HLIdsiBGhPou^#S+KLMw9Vl6aXeS(WT zdw>UV#$_!>!*MaL!Ds$pINY4(&|SoqpYr?n!<3h*w4m+Fn!Lw;!_Ga|jy0}-Q9ARx z3Yn!f)`CiSEee(xI$YdC<`E?IIkn$(zEFTvP{XrD(Ol0YehlWs*R?y;;AJZS9g{sd zu+SkAmHu89LAD&B!wxto?Xp>P6*1wpl*~dK<>I_f#U*Rr;23Ho={jM*2wdCB>sFwe z3|Hzh0&zeaeJ-#47Eh4I5n;fQYn=ZSrQV%{4LY#PbBVAKaw~KGL|I=D@{<269{vd_ zcmZU_BmRuTVO*hylxA|C31fM6dgRM5Lvn*qaibPMB_Q*!1J+4)dE(_75~*HN&@G}E z;cZB-@`M_8-gX4(F3428IHn2cMtb?>K}}uvQy!gDyrKsT4?41RS!E)ybs^0%#}$ZlxSz zdV$$PnoY2^L*ovqq%W?+8!J|>ALZw$AdRUul0X>5lA!MKk#yg`@7`gI|5*5hvh`NG zKpgaln9;5Xc#*Md+sD;Fc>O`%zRddIv_v2UX1jLsJ z8PDFuw1%DTPwXOXk(3;bGhH4Jew_~+AD0)4mpGC&o@K#`UM@a%aOZQ^G5oX=_3gAx zn(`8hT==6WEKE~zX{3QjQPa1_3>$&5B`}PCmmKJi*6wI^*_F2|1}lKMe?JAHoF@{l z-Ixo2t^DT~V3FlMe?B)r9HBX^=3sjh9P$7AA=(m3%w&T`Mv(7We}#$vPCKa6`!nuh zoB#+kpY|D4OyH+Y2_X?jE)qGxj&SSZ+ur6?I$K4Gt%sq_?DHCoA0xYMvyx-dulIzt zEZm2nt$>vZ_(0k>wn08E=cl!$+op7PCci{?q|adB4Z8@pdB&k(%e22Jv?qOcM_RQs zSzA-rvy7(nU6YudQ+80PV38aC@B|bPm5?_DV<^i6{q&JLqtM$s_MwGkSGkp$E1e3y zKeXcI-$UPQ0Vtx$EFGvPdwprn57R2MyAU$W{>J^xwB|IsRX?;~~5e_e@*x9`|1)7~Vy(7d|3j$FYp8Y;r{E*eJZpciYR zMFN^cq5X2f;p=%w9zk(x_8zfbzK5?Z;QLK`P*kQ5WeA64!Apjra0mX^1(-PgY3gCX zUvvzIL(Xl&P!_wq1z>%mbVoz(zKXMbRh$e)UL8Y``jjlvb59nD> z|MGiB{ccC@VlqM1lfY}=_gbBi)?EE%=%@4e3e zMeK+JPyD3FMS?xDv(6t-Q5Mq^i{PSWR@OG+g4^>+V%g!fYjj`!Y5TN*6s2$93B52iMVK02_%<0BzhOj`})nZM`hf~t5%U#(Inpif93 z3_&x&I&28Y;CXd`VL;LFt1K`l{Ve=s5aSu*96r_)KyP(mnX&$mOS#?-U|rEhbQg+4#vE z1v&R;n5`5|LoNbj?$6zrRe?YOc)jmy*VLV3i9_c2QhmMWcK`kL(`wo4#s^#xiZ16? zZTA299#{m@E(l2e&vLo{8=t4`&P=r4w?$@2M3kY)TGS$Wqv^xEgg({h^CT_RXFs)l zP%OE-4AFfhIt+J!z26#ofgQbFb6k88g$v^V{CqXHe3XfJC6xT$eAgbyeOTn>V+{Q$ zcZM_K0|{pBj!=3O_P4KHnesRfd%lz95(`t4U%iy`xhS&^<9^)3nTl@=*I4Vd&daBW zJN(YAd_}86LQVX=?u6FhLT}#=&CQ3`7ZnB1^Bx!a5BYoXiF{r63 z7&~mqpbZ9Y_p%!o*l6)`ySw znJ6?9+(x~D!ec~3*GtBzC;d zqt!PrtLaH)jn4Jq_u%eDnC(ms)1!4^1H7G-=Box2e8bst0}rG1Ie|;SiZvTlek#`u#!0VJ)Ix{O0 z>0J4|Wt@!rMW2#~QppI4)uqaKfdF#V>E>L!J>1Ffd;l3 zu$hh0{MZ?aTpCLJ`OsG$9-uY^kBBk4U{qQva%{LuI|%@k2bijeX^yaeh*=U9pq@8n z_!2uFvygi9p}Uv;O!FhuFwdI}24=w5+(H2ff(2jjp{+@XQ?dMaZOJpuN$B32E7hTD z#UEl!KaI<#!l;?2C*juhh>l;UcK&xo-3rhl;Ef;NhociHl0NTc@XkAsD%t)(&TGH< zv1>!xOKB(trZKb%|MIg74+W#pi{7sGS>0x1)}5{*fd3xqa6>7nqO@oWWipaJH16~1>FL=wV zF{$h9#d;_i&Kr$wLMJ=lJ5kEP{ixP&b%@ObW>L?*619gD8D82pV?Am`Gwi2y}$8>0eg{ytg7 zI5;@2z5Jyd&QK477;kR@()Iuzf^B9x5J_L3ENVGb(?dJa|-T4L-qBae->|O?|}NrAu-pj!k=o=91RH$jTM)=qpsba%iMQLb zAu08gHaqm_ig|=X8VDm^Dp4q<#i!`@_~E;3hnV(wJAmtUawn&#n*o-iylOdvXlTI= zg~S|Bowi(8);?J5QW{mF6u^fk1@7%Zj&`8dw7kQYKk3dq$~(Ld_|{{?V#&*mizm}mcPnx?0ouIAY~MW}cUOjZQ6%L73MV*S36WqlmCD-!$Vko0OvrZ%V0-6XbY1tusw)YLo#tRHn~mpH^^_~;-<<&=~^{O=b@r! z;m6X$nRYv6iAP&GtbRy-P^tA<{J38oXix16t{-l_qhk^_h) zEU@Y}$UXF^XQ@*#l20v%Y*>ug-ZZ58Zq@ymrT%;D6TU<*4pf|*90Q3zS{r!^_Q=T6 zYw%LNBPz_vAtNLX30!+;V2X*|{W}z8tqC-yx~n(({_ypmr40+`-8`Pj!vd=tvDYH6 ze9zy=d}#Vb(!wf!whk=kC61thHlxoRjYBB!qr+v_y9Z*E`+jmI*cTF)VS)-Kr{I3d zPwLlMcsxQA)1gQ&)HeM9QeZ+hC=g$uZAn0>p`_V?f@>W`mQdBU??JbL19aGDb3S*% zeY*#+3H@QT$!@n$k@K{tma8f&5PWYZUifu5O|3HjobMFAot%sRjN7RZl;`-CRs~8+ z8y*$nybtzhb-?3kz2-ck5r{XP3uq2nSot$2Kr8dyVhV0x&+U78^)_Lqt^=cOU>*eO zEK`-LbV!^HgjXJ*IDAkw621G$!#q_$cMcV5z`4-! zXu23tu{-scJ_;RzQUAMC5oxc|Thp`6A)@Gse;H{_P~%lB!` z>@1w(Zp7m5@DilNijX?mA8v_GDp#gaWh6w<4Q2+yPDf`$BvJU;R|={i;54f)gDq@P zL?~6OR%}qvC%kE+sf(HV`y(kk2Ahd_A_+T!CurTEfAi? z0^J%{A_XAl(bn@;hnZ0OK?s00wDA#b(w+b0g|b}1+iTYk;QO8Ve%`_*cJviZOS3ok zZ)KR$7D4O%!-m6Z6iuk^AX1;`tIJ7veJ3Ru)#)U}aQMt0W*aI+zLzftS~`-9{0%F2 z0p(Lke(S%NJ2h6;CFn&2m8`IbEvzzHn6R^lE)?Vk88Q-jUBk>YKP`pJMhwPHG7|aV z`XG(4%E{0P2#^wTUZK!D-sX01{m0RmxLs9*iN@MB4OD-;5g*8j2B@18ksDod4yTO-p$*4%ViA^44WbH|$TNJ*y?F|?Gx4Eh9@5u+RGE1M zy1kNpIERmIyVf#oO^G#<&W1H6LoZW`BEN(+lNk2oqV$4PAHf*Cc&`Of zutVH_zs#mY#uZ@O?X*n>R@F-7CEy&=usAu=xV}q8Q1po=`~(SZq-3vxQ zgrOzKE}f+Y^e1`9#?U546;t&dX{KqoT+~g85|-HOE8v0{s?ull76R8%tq!nvq0fOX zXsr-#dMLTYFI4@(ny(9|d&I^(eiT6p7~9s>ZZiCuWS(}B z#k0T%2UHu(I_WJV%XwU8fvp4qkD-x#*4;msNMuEtS|_uVj?R*8eY8XWqpH6f%Y&43 zO|{}%No!+O#qdfB-FMmWWh)E}Hb~sM>rKpoVJm4~QjbxC?}Kh&*}{eS)-VAK8kzy5 zYKvF6!r$ZL$FW|JIqjsU-yo3fI6XSQ(EjQCz&Oc!U!G2Fwa8?N!geH-rUuVG!(#)@ zRyL#5DuoMS_p|(K-Ot2tv%=_+ z%BDUHs@CS|rg2!9aeqWEfEQ=1pL5jQmm=)Lr%BH4g>|DHeK~aRIt2e5NKX=?4ERFwZf!LpX-l@uLkspmo(f3Qv0b!@Ouhu^Ke(f=q(g z?0pGK&VHU%_QZ2NsT5z;Hs1`D1=Q(?yoV?veD!x{If7NN=Kgw-b3t!NJ@-7=9vvh; zLF|tbyb!r;Cq8Zet_=0!*{2e@x%zNg@SZ?(g8ND)Jv+Jq_4!ns65=jCLAaZ|pF^FS z{6QQZgE$-kB=uwS3tzCO{Uctei3gfgm&D^~y1~0}jbe?Da{O9~p&(&rN6+-Q^Dv9Y zTPFyRZn}q$SxUD2yq73R|GV(_un?YZlK@pkhlB6ue$_mDGyN}n=AQ@9jMHn^PuGt( z+uKnStZz=jb8-e^%bSFMz0lY4AOJ>cJcc#c%u_3)WW<1BnYefRz_xf-70^E9G751Y zV*AF-IRH21y_LX=na-m|=+f(f*2o1z8R*I{&}QnlKhS45LKIF?CNH1u$VBCq_V&q5 z>?MI*FGSDKSJ*g#+_53hf;8Z2fOb&rca}KqB#TOak>fI%9<1!f?rOreC)^xlc4F~vb`M;2CP*3uKl>Q?i97}z2CV;`4L)`CuQ z*lzPVi-jk@ZWGF#kSJcD|7-j=Ve+cqx?!WvCm^x37f{_m9GGSW_c|vmCrcWbT9}M= z{&jc7ZPKD4DKE|Q*)p!7UfKXlN^z>j?BWr5POr_y%{*rZOzjCsyZ>xE=wYhYN_nTZ zR8Ulk5`TL5(D(qQOhJw2YhS~Vf}T{Zx8cL@SNi0t_p(4Wuxx_hhKsEyix(y1F|BmV zAE$OeSKrgX48SO`BqY(41|3MUJ3((=!bu+v4J7;?P4IOUgyuLN^xxQf8#`kKZ5p>e{J-|F#?wx zXOG$dr_bZih%$eqy^^>mj*9eGyaNAiz~ojbc{p1XBh78`joXJWD$iPx2qB^Tn6>{e z7NmZz1?C|LvJ9Z7V2bsbd!eA>umYcDIF|VFa|(Rh?o-K91V??Z@MRYqfB=EAR}I$Q zfUU#$)4KQI&7kAXPw<#@QJjMrA1HW!4df`3B0kuR2X%#=oOso~c$s&-`lbN$FZz%B zQ)@_7)6E9HT|MKnMJGE_yee8H3}U|eF@cjq{?EiW;h=wBB-1!WIP86W1>fwiC^g)1 zfn%1!F~xUJVWfo)?CjSOE@2KSJEic6c&-zd&X}~GjLR(MmD7WOD@a_F#o1C$#Hn=N zZ`jNd{GA_>QDiiFiAZep+tEF3Q!u)*S4^%UfXOPJ(pj_gem37%WGN@Wd}r&Rp2Z2al;u)_84KfnwpIJ>Yej z>#jTAXVdPqI85L{-MyX(rXLtr%uZowT54nWFS@;(pCu`DHE|fWa}JfBVTG+lt!p3 zOv4iu7Ii_BhX4Sk?#h`uFg8!eMh*kOukO$HO+I06os}dfN;(VEOlHKcBS2m{i&lK2 zCQsjF%++%5b&Qu&{9}chb~Ja5dYkVh%QtK+TrJCXikhncBKS$`xd{q$Bi%!KIyXeW zafLQ2#_|de&>29)N}4Tx{}J>7h`eP~n*7gtAthf%$e|6Hb8>P;53hYx=#Q(8_gi`E z)vOrqSNr*=*#~mn|HNcYrN8(@l{50C%Jmk91qJ~x5WgeXzxHmx;WO@(`UM;HWKPYr zH(LL`W@*OVWwj6g1Pvq%`}5$YVM5pre1!!-H!lvxlY~cnT23)@?x*$gxjjB+08WWy z3ynZ2t~N3bmsN&BhAvuGY7qoK?uzZORHxSF$Z7LDKEY@W%nnfSn-65s$v%`Vud(f< zG~etz0S6Cr3gxhCDWh4Vld}_-g6Qa=-!)$Xr93yc%y zOox=9AL}Qd&h1d>3{lCPjGxLj>G;0p;7iCRPG z&@#{rzQnBjw)^zPUj>xR>e{FJniFjBDp?1`Y}ssLcj~nEgfy3_e5~>Cv}`4y@O6~p zQ*YC>JRo5pl0dH}_E~jb0fDS+$`Cs4nYX6PyJI>8Ylgl={N{4|&0=?|R{y@HDY?mf z;A6`%79GxVYWXu1+Klvv?xF?X@i#}UR?!t)SoO?r`d9$Cq4eF&4L=Fu_=cl+Nm11z z@C4kxSD#=#GKim!ZhUN8Q1>dEHPN(XH zric$DB$Tmlb<|=4DOu3V1+r}GcMlsbW{sYHBXL_>yB^6N_wx2JW2-?fslQ=65jdZ3 zkWEWxkvtq!poWG>GM@Wz)Aa-J&5nb1NxibEz4$}|u-l;)V8@!Ao0v}34)Mu-9hsCS zC*fJLsKD|cmOFehzeJwxe2#jo>*ayT&UAtB1Fy9fNZEk%N$pwWDBmw^@g(+SEjXv% zrzij-P_3zd@+2T-{p1p-ek%gUIgKRZz)$UUc;NAjR~;+D??ss4Rg|MO{S`PF^`sPt z$=h&j=?}IkDyQu}^k%2$MW!S)r&!Gl6pJ+E6CfnjbMf1OU8Ok_Qo6}CoT$KB^FojI z_Iq1xy`&Cm3dY_5=|Q$#d-Z=DR12vTO7phPWI%5w!qii3>Hde+_8tJy$pILwZ)TD> zQd7vN5NEyEAXS-nY4G*VqE`{@d_;9)s@bbSH&T5@{$7nCsG^;mUqSy1h4no~8Oy|@ zgVS|_g){Kxcn%c!{gNu>n@ zO`x2tzEkaz`~Bdi)l~osFrLzSiAPSe(Ef6G4eF*rqUXyD0MO#?s3#$@?Jd8QF>yV4 zdRBmp0=<|VV+<3EY9SCic0Ir$RQTa^g4S987`E`yKmYuNw*TA>)NcT&02 z+e{c~fI~$NwfzfLG$ApHkdx0l^J|(_ zUt;-eC=cyl%&&Hq9@>ZU6$i8NQ7=Rbygj-byLj`qc5)Alurf7L+gWOcOz))ioK9HB zYriK^aKXcg2lZ2t1tN&fJ zOPFGJ+;DEYv()=iYrx!84hq(s5TJ5=6~&SIhc*LXM5;x3D+M=J}1a+pJQWc=v zLNN1a9#HY-?2lhPyqJkY%eW(DUL;sv(S`g9ZFBP|mVSO==DAkrwX2xgpyDbJJ?8>$ zD6}GLYa_U<8luw=j-7jGPc{5xpBkUg)qu@o;r50* zo+Gm%{NwR<@DRFctL-_&U=42wni@;UHnj_X!6e!HF%LE%s#s0V7iDx z&LP3i`}k+f1_Y`%4&vu0X>e`^_D@e68&Q4^OhpCoR-B)s_2Ac&da!Nf zlR5>zQtGJE%G=Jhd6y12=XH#ETuyDrsNbidDO+s;5&I&~6_uUhV4u0`2^>+an@lds z?JnhyP_WMt^5?t!%HFA?yV~O5ht0JvH8vJD6i$)p3_=*V$6t)qp|De=j9u!ep90(6 zoPcZH1rD!n(QB_uLW;2?xsgZ_oA-gkuTdQCRv_2*Dx?LYcN6g7$^?bbuvR;Gt`q8GEH* zVRUMk^f>-y^U~m9(z7Ak5n(`7@@a2Mkj83xKJ>txx3O>~zQn^-nB>H3R>g9E>!iZ; zO7?cY&oE@p(WTr{1HLkQ@u}9=ZR=tGdVmm2a2#L!oyMFSxS@D}zV6SIj(ydrgpdCnK-Zol5`jnh@DzCu_|<4N+ag=R_`U3yLn_;N$1K zI!uHLJgLuPV}oV!@XW{Qh!Bb;NW*8RrF6FzG@(VM3N{Aq4#dP!vQSO@&rUZHr3kg* zUvhJ$=(vqB8H(B7_KByKR6kEWdW1Cy#f!whl`~O+cp(b@@3jC;eTr%aZit|3VF=-Vu;Wfpo?I`OZnh&6AR#NL z+nSJK9u?tsC|gZg9Af3;nHQ^NyI z2Fc0oE4629aU-Q&b4m6vg|V6Sv|e_hH)3;EEjZR2&K+n+k(Si2kA@21*%~ru#y00> z8xP>)jv(9^N8&;%6z?eQ%F&&qJj3ApZ0Cu8qBX1}i9b~?qUMbk43LhSR91*Yj^>Hz zNgV}?iVz$wD?$fht%~kaFro1PqX(%ue1G@nDb8I%E)^(b$&0nV!{ScLv7OWrA*6B- z1Jg9_biysj5YC!{d6s&yN-|--J^<3?=n!kBEcJFC^QOwzTEaiW6`&H@kBuky( zM8+bhOz{qE!Wtq--_i-8^A9e!HRwd2Y%I}s+BDTzfVXoC{P?F;3m>)ZxCYF;xUNsR zPj80eKaw;i+7lRQGNfMyR(3Wgl`pgPps!KGR)(=I693c=2fYdl7Lh2_tcA`DDZTNi z3!X>UA%T2_@?XF7H+QH%Z1Xc0@)Y+&|8j)+i?C|3B7sF-R8U@DgDj8w@2^Lt2U4jF zyyZ2xgI!Yjp@tTIk&alBX6eUTXf{n1+0q=r=a-xJmyn9$c>8nKhpKD85|L9ul1MOC z`*p})^wji6H1%jt$9MD5^t{d=lg~#fVC-E_+Sw5LAF(dz!#PThg?&A5$pI^ONW~+M zZTBJwbN7mGgYTFmb~a9nUd`UjgW5*P(TNxDJgJM322PHr?;5Z@Huzim@DQ6^0004x zgu3Q&x^Ds6Q7eUha_aDgCae3yVyNubUc5zPUz!Q_=xCj4 zM`jG<dCTL7qEtRD+R5n&o6~xb>1%CIV?L^5?G~Y_ zugUTe;~&q@t!{;AX{n0aM+ow>?Q()eXo2uP4wTnM?*rOR3u6Fbm;OMyBt#4Pfs2c& z3yVm~@n6%;3HG?XnJ?AWXvW1{m#0&+X$vy7Z+i^x?^po)cbG}+m}(q}AJ*zYZ82Xg z-f7o%Lwv_IcBk*OT@!uvnJ=3G_2`6|Zch%EX70mmLI{@ER;ow8I0Jx?

bk9zLl{U^hP_n7pvVac(RvK}L-Aek^(WOfJ#OyIvPk2vx<{dDwBKOHz=ri1Y8 z0+UuQiCfR}!IHchnh|sJSu1z8wRg0xb<7gg%rO+F^LKZL;JdQNT^V*|;+jjH+xLQB zP#{O#qryImwC|R!e6SZ5MSOfm`EQgVzIbs&ro5iF>cUJ$3}xM_4m0B^s=Sjv^i1oz zKc#7+BYW|POkFtTLqZ*5P>2@qY)2oY`_lX*-*9FdI!;Oe1lHCu%IRtTc-)!-W=vS4 zSY2}72#t#m+ux22ZeboO(5ho^?jrkflllkp6L9u7&&zw7o3QWjF3okLmge3Ysz{HA zt)Q+&8Ml zj&WZU3m~l=@7;;59G{J%;`i@Nt*x%9kYb;&rV$DBbX`9}v5-womKvD4qaskefF3fJ zT)Z5I6d(bc7d}Jlt`z_N^F|FgaH%YuW~F*TV=eh*uqD`J$N>#rV z6ejUP_ESI{_e9)}VZfXp!(DwTdkWz#AdnH7N|%!!j2!$aJIt18NT4!;cHfu5YR&*l zUS81E6+=}kg{TUzWZ{&-Cirp9DHdWoLGPnuiWjp3ZUo)i z@5wEmcB8x>4+74i4mJ$^s6_BS?Ri2a&riiYE*~4UwbJfZ98_7a_sr6j{(&#paQgjs zJVZzyt|f9BDYL!c^sZ#b!o#$4dCMc?1v3?YN3-N6gV~-P%*7d9QHxth$^RUjj26G% z$_qpuF*M0MM#|n$n;nOLq;cV2lYDcf6kv@Pn~SRa8le*fY0ABA5sN5Ix|nt-3%G`8 zt6+qzVpL^%6<5A{JE%pJ;xKJ3GYxqC-xyJc>}MoXT2$+nQ-flEjspqD-+{neX-bp0 zi$QO;JG%BAPv4X8B6I_$BTPg#)`wIUSACU#Lb-rTV4OS&B8@4qiYD4@&)dv!q+N1J zNn%J>8qNK-xO1?&o2CS#upMGfMIZ-ZZsM+p22Q$eWT@_@FZ?+r7AU*P&ZIcadiZd#y$r!Q>%VX ziZwQ|azo@Gt#EICr1{sH_r5cG#8kuM0Eq$N+5>z|<@uwXR{Ge#e&l*+al}IB%By(= zMpDjiMz0NY9Ng9N_8-+#7Ed=^&%f>@^gUmcxDykt-_a89-T0wS^Fjk~YmW9HwxUkr zZz2#^S2_Zy;iCY~Z!WR-Y3+hrrJY<#3`5IIDPr!2&NR^f!r@#WE4p;FYB8basD~wh8G7kZ? zVZzZ7U9)o*fBpbipJ;H5#vCJ*u3FOAA5+1kBm^?55Wog;G3*mO4}Hm?oc>i;3;BCZ zp_S`Y&WJ%6Vd?pV{6Al$#d(VG%Jkl6uGEIE++D+qx2=hEoI~osN!;m687-6bf9CF! zvc)vz6|rkeFgwG(8MLB(OX;Z71794sTM z`f+Ch+k97tYsXmHm!EQ;4!p8;uo9JnU0D$6fbMnf1^lq}W2FKgn;R7HhK(QqGiaYr zP_Qp&084woMPKOAa){mwZ+LTzbbJJL##2y8u@&|L*M#uuHak9(e~E&d-3*uzdd+f^ z+TK6E1N+0X#oy9E(cJzCUSzJ&p^mdS^S=9-=PIezD9mfbGU{~0`Fz`{8IOb`4Dp-0 zcta1b3nLlGbCE+o>$&j&I7Q{Aa8TLxWh8!Y{sCFx1qIaSx7mkYapWWX~YJ&nk@uGq7@|C*Q>Vk@f z0)C11N&Mi9V@C^ z$?_cEvdhjhj(V?80BsZPTq@~ioZ3THqO%1}eCQ}dPkUM3^K*1GBs30(jDV|h+di>Y?ely`5Z|2 zpgV~ULE6N}chNib+pZhi@^h7U@S@HIN^e~3J5Dy6?F8)@7Xa*~hqVSK1aT8T&fDP> zCikbF#mtL#sS-#h8=D(pOOBX>54+JF*BE@E{dqB>xYF1Snx-k#AxC0ize2trOu##A z%T{kF(~Ie!s&Nb4;cuHSUBXlT*-mA}BFCDB(3TvQgQ8zdJS;f&*F{^`Aw!Lz$^S#7 zg9z8+yGvaO1+*xUb7EOye3hk-trS7;`$F^_R_k;x&f(D4AB%2>_b zFsV?T9UWRVG&1m1r^|)`xV)GGQgwnd(^i1)hv>`2@T0rkQ(#`?H?4z8LVfKkeRyDw z(!kMM@1W0bcjGTJ)laU?;?W2g0&y`P2gTVy@0Z@A(SLEc0kJznaM`byU8JRCpOo`C ze<3{eee9*-UoYqlP-C61@^*18JMyM+gPDLYNOs_UOe$ij3`0Bh5y{BhZuY21vH@cT z{I9CF_IIGMiO%oJgG~4`A-Ga%8~l)}+#b8H<2?}xSNKfUm7{7{>GJ+)rWe{ze?~oT zg(69(CoB+N#cL=^Wfx@o>hfpeSn?qvf{tEGZhR|KVJ!FL((ruIMTekAhq_4fCg?Me z+;MT$RCsSTUc~K;^lHwy^LZVB`dRfK+*>Ap*{gWtiyy_OVIAw%FQH$>5 z*yNRyD;K4-QVSEo*4cUd*uX8xR0b~S^h-|rL7TFcn0wQ{+HOfuw`q`k$N@Yj!KP{Q z$Vs01^H0sS`M^nqQo-Y0;d|nt9@Tg}^i8)-zs(bknLALxb$i=#+6ctm?Y`CXB7euvc)1l65932B56U|{;^M$B%Mv^9 z=fM5FWD@?Oz`b9dZr*GYJ94_^!p5<6mV5ol}I+DONOnnbK0_*D|`C6q-`#fMy3dp)y@|83&$ufr84%nu)GxKdpk=+1@J^R%#j~AGCX~z)B1i ziicO_f42P>HFRdY;JCL4XcndgwVUYdhh}Y zd-?LyGqx4F5fG>!S3fvxzs}>~ffjg##`$XS)L6`0ud|8AU`kU{lBrx?lelmc7O@&I z^lU>?=_K2w=f3Pahk5rm8?}jXnAXc^nYdNh%9KY`S9{Y`<`FFyf(aL;&w6Cm0>>h+ znzGcAP0*G$>$&Dfg@6{GriqaX@E@JNi&Y?Lj(C$_@55cz?s2?0Pr3^kTz! z4ts4H@OFta}a254498Ru%zrhZ+!nH*dU(?{IYX|gRb0LVYZiS{1WB){=#q_UBa z6sOgc6pb;V;@?5TG&7BUHF81YKuWCFD#Xl>56w|z)Uj>oCEdQv1dUnHO#{X4aeLzsjGVe`kQ{JDn(SHxD43u&(IojI(<&_T|u z1_m$#O0PzT<~A3+i4I{1Uiv~SaoSgZpDt07!OK>zd`re-V_;GRG!bN1U+@>E#C^gg zIf5*-$=;20#Q8QLBVd_fF62e0VK$7Egm_tK%2!_ogJMC1_Dg+}UhosY2w)`XRtVmpos|F_o~03TG1<`AR*G9bw{Ya zy6iXdmd}?*GKQw}&2D)y^jY<^!Y+}&tv1rB`)5D5?8bBz7sMQEoJBWuRc&NX>s;<^ z;D5{q1(av7E5sz^%gi6b-ZflXE`t>Sprp@#EitSyVWjs!`-Oh?g|OxtKU;@J1ESuT z&_$xcPSAx-cWwYcMQ+tuMNcDYxefWwyJ9FDoQBm?k(5Kj@?t;HVE4o?O>~H4#?*!( zzi*tzw!sytIPI{~Y5vK3_vzTEh0aQ#SeSz`s-RjT>HfY5@S%uYyooj@%;h6AO z*f7JS#qAZU%k>@Vn{3W-K0NBsvw8!&ztYKaJmM3RvO$aDI~%2T>(T*&4t5u-09s;p z>eUCc@DXNJlum{E79j$H7!$Y!Zpys|~{ZAA9NnC1z~}LnCV5uBu;z z%W=xCU$nbb_-v_809c4r`8d5sIMUeSMLWF_5XNsiI?S24;utw7RnxB{Md*9y%|(_A zNYVpF`d1bjw|k4&&*$kTUS9dWFW?IHIa^ak*T6oI>vF;#8CWK=`KvMrO{rCiAVU5S2WT$EI3BQdg*Atg( z*7IMz)aiua;{!KPIl9e5`o6RNAI_~i3X48(eenayGAWO;0sun| z>N_+u05aCdha*2~iD-rDebYxa=--MD+>B;9@odm=ChOda_Yr-M=5sCdRCu%0j^_U; zOk`IyI=8x}NuI{{e*AY)Zu#>S_2T_Lc{<>6{|Ionr-n!R{NriUsm-0^+{!ZwGbeW6o0(1 z2^kJ)kHPOB=NFn&A0EdYG5y8exx0!RTxd9)c24KRmTf;098e}Qbp)JRa`HXn>?V7BIt!c0D!@gmCq z&24-CAJphq*mD7a?7zCkKF6m)-)Bf#j80>zDAxIn0cgh_->V_h_%9LZL85I zb{^FnOx{wk(^P9>%m`D{2w<7lej1C$4# zoGmp(t=ERGhL(3lJ0ft%j!K= z%vV<;Sse)<+1<4ojNtu@MY}GVBj1emUG^snfqMrP6ckjinpF)AM@uwWF)%Uxt|~p_ zXIEM+!9~U!Nxs;i23V1fIQ#OQ(%ZM~T~2u+bE>|l%t)ZTakNs+16Gel{R(Y15Z%Y@ z&QUELROmO|>qVCtF8)n1k>yDK)v)sq+0)3@qOXmh z%11@RB`ZQiXhEtCv<+AI#SXw>ljJ`ZUv{8-S+i(Q%bvqoOao$;4;DQ($^-Tp&*8Ew z5pGfq7wu|!8xnZ7fC$hb+cTJ>jpYO6F%;onn=iFws`}MC5I||q(VO`jeIGb7^Fr!1 zTWJsHj!6DjGEoGso>C?B1J_{fLSMblUh*U`=MeZ?yVmOG`_L2TAft=4qLV`SH(4#ZRgga4{E$~o z&RssTxBQS;kL;K~*$4>nKax%dpS<%Qf5=V~8Fi!!3!h{BN71e9iwrK;4N}8j4&by~ z@fDpT*J!gHj$c;pjwGpy&~u7o)!n{pN&NRN!^y)>_qdTI^f*Cz5mEz{q(HaxDq_q%WD2|b4%dAlAR#T2H6JCx#^==5Dpc}CEHn=|P`tl! zXutezY*;%wJMpQhk6c8la8MWR1#)wN6aW7o*4{EK%C2o29=ZfX=}t-MZUI4236)S% zx{>aZk`5`QMY^QBQ;_cN?#`L{)?D{}z1#Esc>lcH!*&8QbIz<;ajYZu{a9-`Sdf1t zg>>#P{N5zNN=m4B{OQvvG}me4y_)zV{8X(sggOi6Cg~7 zgNuGSmd8@*x}h4ZrpluuFHKwp7E+aw<2GAZcYUTNsQRcWPEA-{73}$b^R-No5;*7K{1W}pv(exT zp4r0CJyv{Xrx1=YBnS2Y`8J(;h6Hif`FwW79e5M?A8v6cydAp`r)2^Kp|;=9gazKp zt=J{uT!eTJ_JA8=sjA-9fsYP7i?mntny;S$B9+5iMUs>77Vw^gqjr)1B@QJ@vN z00mn6sq9}0RGQ*(Beb-Mp`A;cJ?r;U1U>oMk`k{Rd{w-*UGn{x4)}ljt zu;tkZdrzUX?s0F0BhbLEO?o*%mVz%$O+*Hs{I*vzJ8DvdrajCaQWd2EXBl2k z`DCwckH$2|WJvc&qqgw_{N!`TF3Pmd3efh}(OH9$A#3ulfDC|)dDAQ+7g#Q}dNR?s zCvRj-6vdr6s3RAM?1T6H14HPJ?%6L44Gp2~r4Z@D33`wj1PK7x7ec6ny-*!Rsd6^< zJJ-WF14hg`nGCrQmS(YqiQg+Njit2MRQ8-2AtP)aq~M*Bnn~LZG636=EvOmR*H4s} z%a~pBOXZm+>-ecoff#pbQ|6?jLa=_;Tn?3(`~h8lnEvhjj7oFpD1Il9kfT&3O8ffX zg-r{koZ|sgcO{q3;Q4XW7?z>tvG?grhNI+uvGv){2mV`V9(r+~j>SDJ=Nk2UF62t_ zzQ(psnzbDKW~Sb?^I>u8+JE-RYiN^r(()d$c(AGoP5gdG#+uONd8ffId1h^wU-H2p z2+C?z*u|)T=u}tNU{0a=9?;y`f{lLQ83 z&S$E4)O^R8^UESoA~0RprqZZP(=&CU=oP07un`V=rJY<;lPg=cadcNgA+r+MK_BtghJCsW>i~fhV4>mi5Dw(Fj2bj!ZOI%B0~oZr99jpZ9(LPCP}4`S4y@ z!n^$R7mGQ~$714d8k72`edG^DJdO`^PC%()l}E$)!j6sadvE5*WWBY-@I=IXOo6h9 zHc>R`Pv_S!W+lsEj{V%bBj>HCRYo2$goQ-=T8fm2I%=r;d9mOFnjhVi z2iEOQR0r0ilKcZ(=d9KQ&jz1XyVckJa$EeG(wc*LXR-1uSC7vArDt<6asnzNs=jht?{h4_JH?j!O=PzsT#S;Q2wor z3U?9KSX9e^Z@A+x9kH>m@J#n3wz@HTg5-F9OAREiwQ3~9|RpOYua@72{O ziys?QeNBcS(OGEG#W3={c9BayvLBn>lAc+ah8?z zLa~O};FQ7WaG8`yNgrHCIl1sJ)89!FXj7q@5$I!DKV(=Zp7NDIHvh(ZZWVW~o?J6+ zr9XA!3O9(d-t{b)G>NBibYT9qXqA==Knib&tJN6hdJ}iS)Ghvzx#@55NM*yI@_f}( zTv}FEEC{zipI`grb~JN3M*mvx!~+wOz4f!uz2A}_a@(4TvGA(}Lei0**+tqudBT(Y zYfqVv(Ol$2>o~TZ3ZE__C)@eoOWDH7 zgnIE_~y6$F>^fzky$)-n@So1o5cO=R-+2rCfsM#>`Nzd<{uR|J!mBb8U1k zBw7ASq<=$&CYgaU=K%xk{I%&F{6;9#q5cafB?d##DhN^ZCq5$##_>N}FgME6vFsX$ zteN4kjTi-}zT4HZ5pKa{-IsN*09Z)eDJ599Pg(JygTOF)4t`LzYTD)QQ7l`3wS!p) zEnXS!=~}swa&i_ws(bZ%n-20iSr8Yn07q|afZKdAp|J)O;m=>t%G`dvbNJX*0j z&RXn|pFqA$<*6aYny)0f)0>Dq?x`1kRPL!tAVW`MZHDLx2mh2liEo5+a-4;t2?lyk z=8O%>;HubcvNyL({u0S~?DaMVWI7GwzNnb&E8$}sig3YTs-;caM2P-h?whM@0XBQt zFMk5mEg#PoJw1ag_vR~N<+9n`oRe|z-kzT#-M+U34$ybBHVF=#MmhvZ2_l}q3j;@m z6tDl`UG2H~EselpNCfrxq2qUd<|1p$HFr`rg~HM(VSQuNp{qG-QeiR+Wulfg;Asgr zs(#izhYhT_krr$_n+epsVCl0|d*jj-rcYI&)hBL0YF%&e{^21bL1<25SewWlKm<4YM>iGfb^1BHbW)E*y7lmJ56l9Z4_g z$r`>o?SST3d9IGa9Ks@H?v>$XVagW-Yu6V+_Hk>{ifnkeksY_Fk97sIF(;ag<^wr6 zt%YGf4rES`N6sL$Zr9sxJ_F8l;6+X{mrv=XEs_n^C(*ylCZuMZ3@sVMz2JF#GB{X) z7vz<-8xGcXe1wyh4>@5gE{QYQadU|~9|1eLwW859!}#U8tu+|FrFXdkN9t~)R}&jC z-_VZQj5PbUDetB=x2CCUhMA(HSeNRgRtv~b@%sXyWI1jY>gl^opP5B`q%7567R(=u zQ}#xlD8KNpCJqXfsbM>y5pIaH_vk$52GpzDwVJJ9;3G*C!eKAc;kft3zfq52lUsr; zHGI6hjFJpVv#(!Htm?tzBg4ZVv|JLq!6qgqYArTCLF~(KHsDsiz?)Yue6Fad*!wsG zCBHnF&fyv}oLm6g?iTaCK=r4?y?9aq3qs!DsMbG^cQ;qHqhr|2t3JM;0ZDwE=Z}3I zdw#wArcX|ZQmh_^!}~UH;Ye9M;T1D`e>S$m8x`DqiVbXsh|VaY{Grr`s<&-9Zw{c1-A0rvAkT{qIyncVS4z^&(u#6%nQSt zmyHhGI3f;_bco>r|5sA|KbUbyVR^k@4{G+_By+<(iB=hAlM3XriclZ8fk3!?-8Z`~ zpJ2@;Gp-A~{LRfJ&L)2E-Nbz;cPyyh8y#5$Jxnxc?n*32#t1L{`(fFC0mv7iR{$+ z8K7^Gn=hX$BMe><-{R8ke2~6zu1O2W>k2WY0q;6354lxUZL_6Cq9d>da7!_B7U(Rp zjv%mVDCHTR$1W}Fpzo)SAgl>=U!f^jVSkkxZ2JXb+}cmQ+AlxT$@#DS6hCF(mgZt*qn>=%?XR=xMv*Y6d zsNeouZsJz-*60q3_%Kl9^;>c8BylsBShVnTcJ4QnSPr1f;8{TzuF zx+oU&P6MN2hGWV_$GTK7DAdVqEZXJu2<*&sWv>|N0N?HcemH5~RMR4jD1)n6U~~#5 z+s%wj6JiagTRZB?;$oepflVd%%3ViIzL8Z;^SQHyer&pg?`OS)&cfPa|4zXSE5U9q zqmPlkTEi>PTb4IA`YyTlC%RQWTU_>&j-L4FZ%6Uctc>p``U%WzrAR{DstX0Myo~`Q zW9S$xVXd>>U<+Dtx~-_`mfT-REhH0}aAd^yOZqMa?r~tOu>qaJ%Ylap$hp zX~gV1(bX9?gt(!>?oose7otQIniGYbiS!%z9`HFkvDw&jXWsgztPgagAh1jln0}ja z_6Ec^{DM_M%ys}aa<{Y=Fz zP9)7XJWW3i?J;>L{8?RbChL3tgyz(N|KixD%tZcn5=N z5HBMFCAK|sKY>3@RMhSsHaxtN7bkZ#K7B<4t0wJZ=2fJ>qT1$uaNjR}3Y=pv9XP38 z^nIqPDg$z*I?WlknIe|hwo`Z$DTcq|`)itUb2s;{$oTv1FyStSE5{8jFgc4lLNND| zpo+Tq&&RsbsvkPTZFEPxgy9AEBVWT4^aL;$4<)FEb{y8vJ-tksS`5x^pURQeYGz{M ziFMeic`6{s&O~IMly4@W<3h^xe5)=+%`+uqPQK@Gj?3TVba-hEjAq0D3=Cu9~ja8+`h=yn;w~yS8}yR3RbW&Ij?f zy;7b}B~h0Ts_=GdaI$8=*z!p0!u_`lJx}Z1m0Km+R>;Vj+J_0k+tvy`kJQW+DhBdNffv)bmHORwM_+eDH7hqH7M zR4;kh0Qp24#KJXMGIC8!seK{-+c^R~h{Y+kb@95FlZi~=1+T?@%0JZUEA@{|hsPiy z#rq#6Nb0gWBehHa%<^l$P+I!ppR8xDu;R}AQ>`AYscDk#dn{8@ER)nfbZ47hq6p*R zad;9n`acCc=55Rx(wj&N5=z3g;J!P;_-%Odxuu*cESQ0hiF%~PL$9`ZYA>*VLuT^q zG>^e2Ubo>LQhhz#KM$Si4K3QWk_xhQ&Xr%r;;sPI5Z-k^ixILmc zikp%y6BJs#!m%YbQK(hNk?n~Prcc-=y( z?jQ>+l2>T`^-cxKPe;KxOM|?PfY)!1>9Y*G*_)MKpfkRHqvAr0ERE;))?u9?y5?Y4 z3666uM$sq0Gj1=FGlUeB+h;v61tm?}?Q*;@U6vamu0b%EjVFr91z;~%*kF+Tn+H`X z(c}3mFAg;A(n{}QL|^-l=d-=`Cu$Ax{DkAd8Pmw(J@{xl|&@1_19)2{?nnDN53@!v-~XZ&YZJ zvFwALq9xJo$gwC61X-0BK7l7cBB2%;V-^I3QGSds&74G6>>5r=+)rIeqQz~5KBg+Y zhz-#6df@o+f>{O&&Fgle#F*N1$N3!asN~(pa>Wg=K19rga9K2nyr2!%ImP^nAV+(O z;z!qlG7+?^0P%7KRa0V!OdVT&c~Rd3tG;(V=u8;OeM`>;6r_ZK)Mlr2p(DuLS@Pwx zA$P9FfptME@HDf%x0g;46xT933J)N7R51b*l+fjSr|+@|^8-lNXSSbI=sVKUzev)G zLHtAk9?QbQ0@0(>VWc9rnyobV-XJ3*d#j`rc`WQp@ahz)H&df;ux7?e-I!2%i~xlu zH_BHjw_|>a-HYA72DWd!oT?Wh*hXUUYr;ZxVmfD+u#pmkL1m_Pyg9|@`>vRY93g2) z?Be2-Ic@%`Q=_BCdItNnD`Tzpn^VblEczZw*E8oXYOe1CFJkt#@>sehP{dq-uQyPqzRTItQe?rLx z`FZdN2nY&xa(={qm*mB6si;}b7z=SJQr{u=_lwxWL@TeU!XEH{A;478*>;korx$i# z?X0KNecp>%r2Ilg=bb;B8>#j?u9w%rix3Y>_CB>?wOD`@-sZ8~kJtpJ^5}Ve9Z!)o zURCHjxL@cJLTBIWH!W!KMSF%g5?qQcZqE}0JO=Ac6en%%a)|s(%_Jzh`JRy8UA5aI zaT+q!Z*=Y=>o2T9QhC7+SddwyE(YtLMCL;IC_0&JcEamQcC1%T{MUkrB1*DwA~Ide zVg(!Qj>NOPmGE)pR|tf?Y$j~2E2x@?lmHg*}n+WU_Gcp{t~Qz zaykapuGjzfl)Ynyq;E)$N502ixo0zRC^G*&ULCaOfBllv_{Ar}GJU$2+i))WZ~0qX zUiQ*oM5z7pHomf0?{ICI(oReN_q(N@D9s^>P;L1$l=Cg7Qdx*WP`dE`o04$NWA_p7 zg&xqaUn5;@ozHu=U-``bTd0&Ee^b-S>y)Spk;B({LdjeC*?$CTbAD*^9?CdR?9Xsa zHy4@=nIwicaBnv|r1EqG6?iW~GhhDmy>^_#g($HOVb*D!oaSjl^qZBU^9Ya`0XB=& zOv@}j+e%Ls_dFNZ(H<3-c1ESgEh`X3_4|Ri|EEJ?Xw8X8vAB^$zHCNAub(qr(jUpU zOWR+XdA(q!;(M1i3Z&Na_JQEtuH}bCoGh8qXL#dB5h{D^E9rOrH#1h36H~nZqtJ@d z<^-s{x8Rynb^_IZMnp=!-DCFqRXfY&bPhqY_2LOSB#V`dh}m0u_bX1TSc~-}ac6cH z1VTN>kLgYWRTPln`?E6PHRltRR13xG_*E&K40reog4(~aQ-mE%F& z-WLqe@x+=3mN=1GlRibKce?CXBw2b=4Kd`hF{KoAZj71!?lo(| z^k{f!{`F#t|{qb4k}kv#4uL;L@p%75D~4#&Xc6q6xVf9+_}0>Kj=Z>0&{`u zD_L7e(g?T*z&>xYVfj$w+robW++A;675 zXXF;pE{StpUg~rQQ%Q+FIXImUjzr^kX>83QUq>+Y9nI)cke3ou2os~TEw8Omn7Mx>z-CVUzX>+t`<1h z*sw)Y@xX=dkEC8mq?G#@T*bx3noaIizmFEnjr)_@^rhwGPywg>kctX7xWjL9QoXXK zro*DjV5Z!-!22qZQ>V{WXWnJWtH4YOet#A|bvLFgRXlrh>2imU3T++ItF|J02Tmr< zDDrPT^5CYx`huwxh4;cujjws&=!aa9d5yIh$|jO~rO5tpjgFJnlq}a`*SC4u?nWc$S(^72$i9OP5#iK+lTTi8DWpj*Oth5SC~ry7pKmDD zG>7>=QiSTKC?C-DN^e8XYrL1YmVDsQ*XB{%N_pjHJC33!^A1D#qey=S28=&^_>fmr z)Y%0#yM^9e83F^(^7LsSphIEMJDyMNsDG1q{EbabuaaR&JcfW+r$Cmv%g;@d0nEpf z*GayavccG6>a*OYgOp1*Qqc3Urdd+9&7t%t0N)@%!sW9{=M7?xL~@l<+jl1lpTEGz zgp%=@Tzj>+X?+&7o@IOwdS?8+_mYEy0~zF#;DdlWTc14)Z&;=In5N>tcuas4V?F+7lM^V^fJ_NTCqO?M# z-02g4QVvf1DnDo~TNN#QKEpnX@U?vtiCcK8FccP!m;LsrsE-EME6%zDkzCccq~p0Z z!2WmioVAMPB;Z(O_#L#kk0zqm?1qT@>gKuv!1dSC0LZ@H>>n5v(sNEY5OdZ1DBy~| z7j?Ph@_XzgcF3t>c*ocDZ<62m__&Rj@5aVPyBGvo?6Z~XQjYcb$qPtydiqeDAn>JL zCJCBugM-ESOz}8~ad>%okI&NKDR0sxb&!3*U{uHk<6#}4rVi~dHYLCL&ii~7j?eEA zNh8Jiy0E@}b_;T>lgIizh}IM%`M$tE%`|G|NR>W&T0P@Ko%k2+1bliTB22>1gZyy z-*vyN2LcgH#w8Bx8lqNpY88V|=}1gm`Pi-498c|)r0sg7V=~Ldd8gY;-{V=;SZ~{$ z%MyzJHNA}speXHrI}_)F{9M13?eHokERsFTeg_QO-okf84c@{U8y zAuTT-bTnkfe{0R9`CED$+R}1SQC_akPpsAq6=I(I-CdgC!#7*js z>oeQpBL$wseE;sIw1Wc3Sg@ZQkI7%s?F;w)nF@?=%*vO6dPGD-pVoV0+Qn$WK|XS- zssxCc_2mol>ojpPkIQ{O-O?V!yytl`A{>)SlP!7V>EM+-kQ3?+ zrb`em1$x%V*LS%}NZXFymxl}NGJ-7HVV3ElPT2BU1OQ+?qsYV(0Aq=UhSsbB@t(W) zpbM2Q2Ev9>^^)*j*AR4qn%YFy6M+-?Yyr^`T#xMBm>v5Cz5Cp2@F@!QE*OWCE-}kn=@;Q z2k3NyMy95(o{ah`b-4PW2hf7tKBnWAj z(=zWkS?ejYoGQt<6SA5A3Q(@MdANef1Em!MVyhNe;|l{23d$w ze9X+j@rj99zkZ>9|NfnYm9;IF=~X~v-vyYM+2}x^+d%ETmP7>3{RZ7Z2}at*QYhQ64;m4(w4*g$a2#*3r_W+a}-HvcSYBm6_nfEoKoBk?^JciG2tjq1PcQi}k~W8;Y;s2FYBt^_j%NR;td1 zSucVD;U*36!YEc}#~H_|{IvP^d;2+x0xe{QEQ#Oz5u&2IyA~@`v^9Q~=(9hAa8d0_ zq#0;YPZ(qe24T|UG?-GyC~fGg_XgmTvAmsMUFt>XQ}JOpezzc`KAoYx{jtmt?Z@{f zf5Vf-dijT6^{|&8trCsBG$M#wRgm^^`8?zT^)o_fz%CAHa+fzq(QgbWewxcSyS; zk1XB#rMEclyv+%6&Y)_fPV>GspGfn45O8~B3)Mduvc~cxXA0d)_encB%eg#)U*_(? z?`_~`8@J4mur6d!rKe91Y~Oi;iT4|DdS9!}X|;Wz#ijT6cSkMhASuQjy5w{8cwcW% z(ij&PHymE-X>De94D~6QZB2)u$__9;gys*Co|)(6Q<(*qQ^#F?tz-Zb`>9TS98dQ& z@a67xfwNYi2))XML9dpMG?o-8#%+AE1-VSa%fNT&ncZDoT}&RkQmrvfrU&kgHkN%=WDYLGykpoJ31lQh=R-@dK6GzG5C-|-{c zxAkU1e9>zDc6|NIugz_rcNBlb#X0Zw#QEOL3fSkbAt8PPCTAX1njG!?7_pMHOWSv^ zlCz31x=AZ$tl9-?Y?mUzz>A;uGMJg0x2;7<;e~a5QJ{811>WggjjdGfg_f4qNh=Dz zughtwQtlA?$gE2y$@$>a&rIZ=qLmN3_+5hHM!!eSD*O7>8{^WQ=dAXhs^O9^*$txkk{lOHZn5G z$jAUR#)D@cKmK5IP8kA{NL=92yy>{u*^#Cc9P%z#x)ZZg`uB<_vzVAxUw{9eEnhto z7Z*OgtvH{_Uj!WVPFVsC7^WU-j|adGDN9@sf{Z$oze#k8?$X<(x=kN{h`Dfrm(sj0 zKLBx0$NgCq4_uE97nq{f=3r{!N7CV&-WzY|V;HDTt3jE5djM8}rE(H?+tdx?S6EJC zBPA0PlZ*gx7gTh0Ip43n7EZo9G#8;Af{dwrN*E6k$|_tQs#r1#J~ ze!O;7;Q5F)7B-2WS)e_O5yn=#9HVPS+^-g=y$;n~B zG9l82WRCn^C2+))gNlL4TBKD|@(LREgpaS{Rg;FA8XX_sS-8|$rR;Cl;It@?V{Yb+ z!fn)ZSal|_MhN2yyaJH3*w9$8f^?M&&IZxYVBq3Xc3O}IKJ=GKzZY-cy;D_H^{aE( zGJxJ*BuRJ(PL}FLS(enH?@g5|SXk_e6yrnQ<-BgYJecz;1;eQ#a39)1+5sGrdn*+O z!XR4AYf(mv4l!Mehto(H%MR^vN*SlnOvhg3o}2YlTY_6Tjh>pkJWSAVDDP??Rcd7= zzq+n&q=>_2hM|_(oQtp&;40XS(r0ohA41ww!~LxM&G20^_E1Q<>F}VcB-#!@+hJb1 zm+YaW9xTz!Dyo<2KD|(oIKRR)0$$+Qp)z{x(=9ftKRu9p*>q&FMT8`XNzdaMD{v2E zv9Pf{vca%}y;V~S1YsP~2>uUAuXbIu8(zrJqxq z9)?WMv39_ei!znYh}*;a3J+|dRlMz)0JMu=5)WJS`u1ebn}iW_WN`4Z0Y7EHNotwx z+kX^(22dd#Uqr;)be{_wfM`L~Igcow`=Ql;tsLemyvF5dL{-hLxwR$!z1rL7)Pyg; zs&$F!TKzDu!adk#Np$|GGb<>{z;?ZC_Z{6NVfu@(MiU254oPv{0(J$u27Xzh#>gaX z>Ivt`g!Pgo`>+LmW<%@7C4g#~JQms{0-JicE|u9_iA}=~d-2scffn zRX$EisY^3k`?7NXTR$WLAnMTL&}-HM3v%IDVAedwjB`x{E7=kWKnHNC*@?ry++S^d-4LBT*8H=FnUT$R^QKUw-p zM}N{+Xi+7Cz^0~*oy~mJd;6BxEZ74~Wf{rbSGKlCNh~tJm8W(0@Tlti!D}2^+|)!> zY;DcjuQfM2yto+2`YvbseK*(Br(G^BcRIgF=&Gu!RvVU}oIpLO1u@qzPZ!%jBD5VG zDw0GTa-Kp@fMaRpqARu>xA20bPrmGSWLw+CTOJQBvGuNBcqCq@QawtkUZsv>{ z62u6Q1GY9yK$cHqFlk!w=1)oGL)KU^<8)8h_qUcMRgX5n>Vu*hBlPaeqRap86A; zo4J;%CTKUss+iDHxP-?gOVq;RVpku|yX5M^)0u+(RfOo;u>ZN{)p&Z`MOS?;jFHVWekJND2^kMNr?t@RDELgY zSVsitg1*`4WV?`-nK0%E0{A)%^v(_~~26X+e{@&kPSm{}AAZg+_%R4D-+% zP#=sy7o(`eo&XR8AJWb8^n+M27X7*_SP_hc+~EV4zVh?2G|)EIr!w6?_%4F6 zzu#&L)m1$8DdI%##-@Vm8|x*z9B)Kk0SAd!vNV)(1HeB5-hca@VxRZA*ff&?iS#dt zP+d6?T6~C*PB2tfFHcsk?!ZNd6ZyKoo8dzM$TMKw^KWjJj5#of%GDon%de`M(8R){ zkrY2%eKn=+5b@?}N3%W*A0q6|LNoSIp7Y1Cn++=D^M?WGHhc$;4Dn2(c-E0AcwYw% zh`r8*+mJOo|Hgt0pMPMLluEJcpTZNQvl9-_3OkhCOh~gMgUx90~HJZB5v{k_wpYzB&3e6yKpM2`$>=1c+~z!kpcN8hhntOF@Am z#J3K!;bKxNzAE$Q&-TmBWLxrdAu_o3Z7LdOs?d6jOZre^xwfRb1h&4@{pAb0?`P3Ea(+wb~ zGS3_P%nHn=ogA|0E>g&})mdCmGiaf;%svT(+g5ilzx`+*PL1=BUX+X9lk;=_lKyoMMa>b-gV>UPJfD8I4@fK$!!07KQXlr)v>?x6WA5JWZB0RWuT+d8A z@&clF(YlRKg{I2ey(5X?ThO2OXmd-W8vbI2WCer9(>F3Q@>xGG5o5us9vEVIF~=^n zAg<55dwVCvwqCDZiGfFDW+Okthjv)n*R9@f_S8p!1HJUzHi(iG3?2Ul2^jYgYFS$s zb4T58JFZ0t863{n9p6ELKnE-x^^9h}0`oUM%^MXGM*OsWzRp1vEQtZmEDmU?vgG&s z?ijR@S6ofMDsfFTbgJ4Xfu!HwO|-ZGOi~;a^Hol~cDKNR{d%x4Y?yTdbe*;OqKE&x z!$&bnR8&;mJLoi?$4H=#Rm4b}s~wGxVQm;RW|saRyu2hJ`lG*I&KmS-@>b*7pMMf| z*!)Yz&z2$M-e&k52^GTCbRK(fyI0zSf-mk1R(n{4i8*Y(7C&x9sfFF{Jrz0lYk{aT zXhE4lmz3eoXtpfz+Dx_Q%_)yh4AgASRh@x$Nc=2(`|wbnpS&x|JI=jw4|aD%G9+=8 z5{qvP{D|xRmit%Y0If%O+<}3C;H}+fLsC&{h3e)aXgz(`vKPfxVUc4#AWPri+YQYd zikOz&|y21FM@$Tr_$I{2FvD;4gi&JnyNO6?c)4h`^ zi3{eHB()$vGET!8pP5TxdmC8LNLqPK2j)gz1HSwQli=&*iL^&!^CXd9Jf%;Xhg)E8 zm?(ujDH4-zpSfSaso$intfL5mah`#CG|*F<<-ROG-a~9vC}qvPqD1d+YxC z2mi}g1dbN#ZKR*ffb>u4xKIIyziJ*scDBM4A3Q{eN!*xj&YR>Xj^UlZq9nI#F?!6f zY1MKWjc?~p<9_p1JxvY@%io3e@8SN^gYIf1iMf=V%-xGlOnsSmU5hZYw(bJn|H$mD zg?P@0SRui~mZc~Pn_8qo_2MrN={F*$L45E>caIkn6&f=JM6+IP;jg$kjB)r&u7 zTfZ3ZyFS|*QgCr`QS?bnNLUS`u;Dgg9)7mj0)hc!#nr<@8^bi`w+s?+^=hUj+|6p^ zZ#-zW-%W=dsv0Ea4odLBj)Z?dvwjcNSVWOKbWAqPVL4-IA?ei|{+wsMEjirk*{K>C zG(I(DIfGSNTB=}Zm^BjA-7W9v=x9cU^c`STKoohbXZc5f9IxN$G<(*aPVX4~1wKbc ze*VkeRoRUff4`gj7!`P|mV^8P9CqMbBu-?NH_fJy>3vbC7h&O6jWEv?wvBevQ;0rM z%tcNUaWLsyN__r(_bM$U+??}4@{b>#W(uq2_SovcV^gU*d*&}7B!uIzVk$rvK#C*Q zvDW4KwF&8H&!p;4ZI}><8h5|-Nh<)%Ds}UzvtYEa$@i1|lk(R48WPVv#W+{?&*v)Mr7{bY2x_{_Yjzy!KMMAKSqouq4*pOfr`yO zAe+vZMD}~Gbo`d*U=j~XFg}eSbzvj>xn>BLDdZ*Bz2gFbR&~c~1)5)1@Rg3>2#?Qk z2?_06XXXPfY9~FGFs8Y-CtnA>*S^Bj=ae&6RFdsvr6(k%Ja2=7?d4<~FY(E-MxI?h zZ?EMFp|*uu#aw!0M87ra_1R++_Z?5QZv8QW0r`!)A`=1cV=rBvYJmwL)=96Wx-7PV zH9p5ai(XULGr%uiblaj@6DVywRa9To(t-SGF&;t5ALvm1dm_?7w{T0PAB<)Ey=sP_laTL3jp>z!){%}q)e6*8&sm9o-rMYT$2koa zaK%UB9P_?R$BrrDp*}rwyCKt>3hzPVz9xU@Se=!9h47j`U8Le1->hIJaB}|H9UPwQ zX*Th2+tOH#CFAt;7XFgJkdAWV+C4RkC-`jQ`L^^ae^EyooYRU#&xm8p=~fLJ7n)X* zk)hw)(qhns9iNHB=+YREk@>7B&HRt}Lh<~_MPfYJP)#+Ht-Qs=c%_LwA>-T?${+sQ zPk|(Qo{+X>yKB#-ia&QYsK~YC zE0yAJN|FvhH3thIZh+b1g`FT=XFi??Auz4F2_R?rT&KMifoEGUlP-NUsBC7-}oa z7sj)2+wa&vt=s|k7Zgs1!^Jv>mee@ezajcnS&GWD$1eTIL-35MZ(u6OxMO$X?BO5o z;bdLcBt0Kap)Cql2c8_sk8Exv*A7qb2g4``Bro2d%4^VgofCj0&=3Ilg6z-7pw_HW z8%Mcm?url87*nH82E^>`nYrK1TXj>GP=UMjO337wA91ol79;kspon`|ra{#4Zy zL{Ie-B(XoA=l$SewMsp|Qn9Fxp~(TK79qi^2qjY^ZDz~owTM4&3#g7xoucyXky zAoUqOqjHC+{m~lzi5h8Y=J@vvB@z^46+8Tgv~J|;8-t|*jj)a)zIEx76>e^bt9Qxa zIlDt+h&7$jE>7xSsFK{TFY}qoT#}=uLJ7}bRIllQnju_L(t=}dDd##oybp}2><;3E zVfZhJ=}zt3(;tF-Edm|xQCp?FQG|ONFwF&~LMO=D=7SL%w5X^;vU_-rj-!bDTDAOd zjTqrWr`Vxi!H?N5$N7u-zm0207irDZJ)Q)$p{iJPmpBgLD@xBRLT|_^X=kJa=NkE{ zPa12{0}vnS#XdE-I^U2@rBA>G{!_a557D+BO?FA&w%isfiCH|l%di+iy8lP$#4$~n z>*($Fi7Wa-1TP_WYT{9#{Lt>bhdA|$a|4gvsvJZbm^-HQCII1KLl7rewXYo4e!xhA zGj789H}&*j{r&x2A&;4@WF^!G)=s`wSx&76lIXVf#j}@L&k4Rdl>*R-FeTorGn%lj z;kmi~dk3f#*O^oS+-UJwELF+yW+(+kbMi4p#$}jvw@?qduNl9^y_Uiwaq6hgb=s`` zk3vu#ivs}9y=pp$RP<6f+&Jci+>M7ROu5GY#uPTtEem6c>R}i?Yx$l1W)II-#G9Xd zq8Wvk`mDurinGl9!UFQg>34H8HSp_rCtCm*Gw-&Q3Qj7G#D{>T9xI=xU5iAU<8*x? ze^OgP0>;yut2-!&Z+1DPM{D4=4c4_x9F^8SWBB5~w)C7l9mI@a*^7(1#W%`P#bWTW zT;-k^28HmYQM0*dz8}kgdjy!^7m!{H5WSPNsx2AG#GUQ;g1r&mfKod>JA3CH8XBtd z_APQ^e>O*R9TnJmTKKKETto55DxHq8lQU}Pe~d{*tMbI_Zz2zHQSkTG|6;)t!k^0M|!d8@M5i+ zpEWfk%*ttm za+M|IdH+u?zz=?`GR+6zk}kh>7N)$m)xvVUHqO=Y> zvddt5Z||M6+-n<8Uay_r>4K;)fb|T!zxT`<8aOd5ONwRqR1OD;91&LspM}HkeUiq4 zTXu(@a}dkY$LPa|3}D}V7H)*Tp-H>L;6IBs=0f$csqfH>sjT zPoF*o7%UoO+QA{d6LiXk{mR9Zo&q=q#4&T;8hs4y@!G^PqQEpC*WaU!iYSqvo2hpJSZ_-3l|*%2Db zP2SK>aK{R1%?%ePr@Wh6-D%cCFfqZaJr{L>{WZAxl;gdanu?dHUxP6S2>{|tH zH^8|2){9oKmYJPfAh87lg!w%V`Zq@;>~b8hRd2*Y zvTC;u8&ow_d_kIuaW>898c<1yj0N3N63Fs}JCEC`k*hd0)5#bSA))?4y;EL(J{kXM znduPqHPqYqMu>!F6iB@4yLbLhdy|Ht4<*LC=#K<6@aVHJdTMgXmv@JlX}f2Dg0b2;>Le-=M|D`mB%Utgj%#w= zf!Z!2@toqfCL1bf%v}$()N#H4rl1Yk)T>6(hpDYgeak$>H)x+(ExB*^`0?Bm*tL~4ksP4908TKnyd%UTpE2Rz7&C!o@~lzzN$ z*mnm=O%K%v5oYVW>&=KJu)gZ~y<@-oswRJQ@SX!sM3{{+SP&(MO#kPqv4}Ymyi{gJ zJ7lII_+SdYBQ@$e=)*z$?qh&xs?wU*kEv&y={FiN@YjQJJ`>EV|H8&srS_Xr>@B*dKBm=GYV&w%oveJD-)u-BwE+$aTf z_KzRrSvrWfsF!GCojt$ZVjH`3@$dK77xx2~2j%nb7NOc$vGjr(xM^R@?g9MiC%-}l zK~Je4^G@F7p6=!N26m{17Bx+faN#yrWaR{93<$XCU&!zW3+cTld}&UcXkzg(Bz7*< zRosTqr~F#;S`H18G3$YRC8$hg2an3L+B@87Ygg$tX@)3!V|5zv&>o#zl2ljDjGD5F zXnbEyCOc3eT>5(-Xb5}sIz8f9_Ge+M^SX`|X~st{XXyS2&cJi2$!XZm?j)lrWLXHy zpFY4%%YKr40%&CJbbE%m|F5|-kB91g`}jdrl%@KjEF&#i>||$rOVMWeBD*1^>}1U{ z(t>17i)0C<2%$)psU$l|(vYSMBZ)CH)C@Coo@>6p*Yn5o=kxsa%xlaGbLPxB_qnh8 zzOMK6xvw)cF;S)5Mhsy&#EUW?6I8hSu$Xb7H;(z_Gu+qg$^k<7&!s|7MvVbCk6xph z@Uj+c^JVOX>%<4bBEoMe{rNXWTg(&zt0cj9k{lH(m&TyO>e79Fe2RIEge!uAleA5EP1MaT`q|kqO%xKhcC8%V%ovRJpRSeu6&YK% zZYUQWw=9^PUbfU2D|U{u68rS*RivNUq1>A{@0XWDlr=r+O&b~-x@f(}+hsGqQDLFP zA2h}HwPyW=uJO1neHEoRQWUq=V?uxvS zZ@2X%*Is%*OV_12QU&p+t9i{St`gu}Ku&fQru`M{V0#+(Vf_N?X>O`1XOkn7z}T}c z%VIBoUBphmM+7euF?CzMlAjiLl+`n2^-r@ov%}>w1=XutlwaxXyK22>4UpTBo_}2& zF?midOBa*s!yOsQLr)y3<5osKWLM@Sv{!9bvi$t+7&qCE+|(6rl|F`N%@&K;kZF2; z=ydrzGBl^im4h>JDhD4j!*;hVWn=U=|D!`LdVEsJ^4=?OaIQ3|g^#_A*x$yS6d8XU z$=9`D*O%8&x}%>^!Q9c0*O~OqY2dmPqD%P-6$2>Ngucg}NXyAaRTemoL(UiRao#FA z=+g^bsBUikHooj|w{YLxnar{x{F6Bg4+U|HS=Y)VxTIQU@#on<+x~0p{2G1D8JvUs z9dy{68*y)Sp9Xr=YcFcxRDj+eD|Lahl1x96etr?oV3UAAN+@KGR9?wdK z_CUH3dQUPSE;8wqY&?Gs2aGHo3P9}7RO@zxbW8-+u>hPIW7J?$3$dcZo> z?6mbSN97n)V!x9HzsIigq&a2N{urG<0*so$`9_k-FE9IhmgOyjS3+%88Un|~g|CRG znmxP6U(lTsyC5f}v5SHoiSEI#d~C0r?3NIZu~|8r{t|&K+~1y_+hs+QHDq^FFF!f- z&~Q8SUH?>SxPk4!`FmQv8Q>ki0qK{uon4txo1LBA+I8yS z<~&plBHRRQ93Ay4rir)OxV?i#3v9LiKi~RWF8)17=y?G)K6G}AVbsEjy{1tMUs9p$ zna|p%pdWxne(fP17#O%t=u(QA;#dR0q-gL5nON^Df<*sT!k$VHu->~xn5dY&u8`B6 zX*-tnRp+le=tq-6pqbOG+kqCr`NEngL=$>UrwNL#5HheEEj5Ta=^mYHveep@olG)V z33)J{Zf!BKbBVHdZNK@&sevq)P&TihgD0MqYLdX#Q+@eE5rU=gh=_Bm2)}qoN5|ss zUwR4b7qr*5t((+QvLV`jbl_6;jEVTEY}W0lQXxycsQpB|uG^1~0g0-&Mck9+SgfWy zAVRQ?SsT4~ctzKJ6z>%Ma-uu$QTPn$d&sN&r#oaty;hcH6(!ToIiV9lx?^Kw)~8Mh zDdZ(Xy86Y$LcNKw!9OvUO1~lvAy#=mG9q}p*XLK<*!=I@{F@aDjjds^ zcq@XDXF+HlI?Qrts@l4~l0ky*2twq0wp?@j#Loc@x#xrXhe?Xmd#XxXBjObFe--BE zS4LPkC#-W*m4f^4x5p_E4rmBI7|`ijCb74E91&{Te41NzTzT7-_F3)7gVO`PCx(~TQsz;| zk{u`nH{G$;Q=e=5a?z=cE1MQALtfzzy0J6e_)W1%0^Kszs&lFL+Vlg0_(S*-BEIwO zWDrVUskZ!fB~vcFc9ebXx~!XcGlyfGwGCUSZgmqXKvf&^tw}_G@yi>BT`*i+S`u$_ z-@+gFiv4nk({J;a0(1iDpE-=ddluSDp zl^8|Z?f@@Vjme@>#5Mk8|BoXhKIh`J3OKKqvE40PmySy zp4I9AKRhguPul@Gje&czKxW z7Ao_CtCTm2-?<|3EQEtrWs4aHTBvE-Ny+5_9N(%@wa3Vt&*ORR2ho!H18~SrRgZCayh1KH9>nVOTQ_lLnzB)r+9h= zp87AW>Yta+WLdrI6Ik(V@g<7#wtjBwS#wnHTURK;F;)Jq*ZKsz6?^Ob`F)nhxN@S? zRKv}AX^vJKQZIj72_9JqKF2+8)sK`bp=M^p@KeK!8E0Y|oaAuVj+Az*VNTj2zSqDO zd|i>pX(OEAh`4h`6zsP2lFCYvTF1T=P{K<95E&VH;3Ir?D~@8gDOH*lks$QWi_13$ zweQKt$p?5l*8Iuu{b+U|{N$zGJ9#r)lj3^0MvzbpO%q5!)oW*Avhu&FEz z5!5PeZ`qjvO%+U6w5l5`VbgH^=N9Gi;XGOfIn|6m)$CyJm5}z1(WCF`=}Dift5vIX zNuFF=FaAEP$4PF#VR0Wp9;U6l$vJI#hSmR(D*exoX&1&A$Z6f-)Yg8 z7nl$!_Z1jA@P7OQw6>C{fBfe!(dl6tU%Wmz8h!H5_%XR^Mnq}QKBpA$pZFTYI zQKkL7@C0B6eEE0~#B?=MjT4bFaFXy5cE>g z-WhV4okQ>~?0Wq6Z8jad9afCWH`C1c5wJORkeELMF^R6O6yh=1e;7i2n0U*!<<3Vh z4Vl+Y6MeI(VXx;S+k+YfKpjv_-}jmNC++36Q%}SO+a>=buqSB5A8BS!x%ZP7$rw~R z+hXS&?*bx=`C?evrMtmujtFvW1+P4V0(wjwghID{MOfT%?w?;o0fZOWHibRNM$3y5 zoVx)W+K#`5wgK}Zuoe$ZO)TMt(68q27`)ia9nXn~i+#;M&B8A~ABF1z80Y%TG&y#m z%_WvgilrKtV#6u8->j3m6JM>;-1mDbcYNJTeVDiEji!S(CKJgwuucAWvH=}6?GZAHPUOW*Uc?#u10f9zLZ^J-479WV^sv612e8GL2 z!wHBZ+x=|b!0hCr7dDHmmqHIID=L4gnbX(lj+6X>t4G2WO zsPh7{=c@%1D$(3mjFG2@4pZ)rrteaTUP@UDV>md;?>ca%bb-%AA~^Kd%FC0VvML|< zBqyzw+H8@MYM+l3NW3-tbZVUiEPiTmZNZ4KXT#tqOUuhU&)Vvc7++gsJN{+C(G;RD zFJl0~`&OB+&;}3L%~e$!fsuV)e18bZF+V)$vq#&Otu+m8I}EcL%qdq(N)*9C@dS?= zJhbSkZ1d|I-%oa=-K5~*X1YjDQ9Y0y=uEQuVQV0N{^RG*gCMZ~L=Wb+Wa^+qrt+C< z*bnSEN3_+QdZ!C)#14#tMD3~G!`-WN;T;>R_wB97VdA;t51GC_cpb9XXd&$uzKPpi z5ORL|K1}b7eGRV?4-mW;vk&tZzs6Fxi?5Rwytc56C%;SIOT~4XAr#rJO9~ZjsFaHH zWf+#{NiVj>V5kS3obqe}db9VisNnc7;o_B!p&U0rua9bKu;ob%QOj{I^Er#Lts5V3=}52W~Hu zezKz?Blk`4`M?0L<<6keqTepf4%dc~-~C-P(GsJ@V-YQuhq=>-8z_p>dTwm~EOT!A>VkAanJLw!7Bbmq_|Nz>U61Qb@NeG6+6&+JSeEUI26JbAJqvRMv- zMG&tYYePFPNem_lmL)JD;-%TTx;}}MOgS;N!4W3TgX;ok5{0)v?P$duzsu(3Hso!C z7Ge29huA0Vn&t^nz%vLWxS-E40ohzDwaB6G2D0fI_&7$yjx?4}BWg zCkZSTCTElj`IEyoHrcya)So}!K+^p++ogpo@CwpRj}M^Wn+YLRbLf?`b~_Z#%zdi5 zG!ZnKuti~FzoC2G&V>qQ0(+?`(An!qsZDrfB*eJeF77pI(%{uA@ovl^F%t+-zTu5WfxQ6{+LUeea0 zD2x^NYig`|#Q`=w<>RTczyLq$u+Ib~kIx@TNHBrG`T7f!BCAIM=FrwDM{a0+hiU7c zQOqVl3TBWOb8!LJt^5NQC9d6`IV9Hj9dFbY`JNg@ zLe~&bZ)`%H&y5evll>}>?&wFnr`D%pD?-a)d;$}LJSvQoygcg8O;FEE;ujFla(8>n zU8k6FCVU83AY_5h_1y&czxpoiFb{opHUqTi1kY)pu#sGa0>H z@k28KnS?un33WGGKL;b4oX+lz{r+eHJ!e}kjD+YF0MmqPrr8#Ex;)Zk+AeEfH+OBK znIa$JJcGMk{~9q33Q|Rk4Kc4~&nY-8zoo@poM3KzRFtG?%*9Ucq^`n0;^dI(G$e-Yn$ln&zb)-7XE+x zmz4DQS$Fp0iXZKUO8!6G!NI7u9SLZ6LL8$ahRIP{&F0267`L=JcR7+;{Nxwh*lsQ> zjEb==dBfr0n^e5=Tg)I!Nf93D@?i7{Z49{~Csma#2*Rgw)a-A&p`q5m^j z#OZ%{d*^L;b=8pQcS*ki22Gh0wT)Q#0#H?^ERpt+P;0821Ejj}=H{KhX*qb_zI!t6 zWw%(!M-;}_LN9u=gA-A&_M4pV(0{3dAGF(AjEqOubh|cc6 uN-jE88Y<(W9?Q{PSe{DgfAJU+=VB$6Sn_4ZJqrAwJWff>sH literal 116607 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ƫo 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�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�_r3hDVXrIkWOYP>neuvS^`p_&Vbx;@n)c@*APVL_A71F> znWXgf5B3`-faikm`+jJr{c6+$u=?pFNq@QRcvPJtYLJO|PQDO95?o-=e}MX~8Ly6X}=KT8PA(vW#a)%qRVIOtGdwFNo0e zd)hWB!StD1LU(MEzJ?sgm9Vi|3MHg@kllNkdtt|E{Ub_;_G1qAnLZB^mf&apHOGy3 zTalLQEVS&$vGy|(FTpD{&HVIQBW`tziu}*;~MopnAszG+n_}TIGX%x5k_L zzIF_6sx4X8CG*@ux9Q@4e;YLROfKFOeyo-C~PfC6L$JvwFBSt#H#=BUxw(vH(HDOd=ML?7e$~z;c=Mf}7;$L~m>Z zW9DdUO2FIy#o^1lETH~CneVYvMi~JFhDFWm+lc-7F^F9S#qMup3adVPl;BeQ>>x;t zu$qh`4FD#I zPT7Y~X^$)FMv3j122_Lw8Br2_OlrZKDHqA}?`g_7Fpego{)Yqf9cxb0ECrug~ z*WSnPSd_Ev>y+uJ$^m#8+8v>REi{MS^ zfDZT)(5=lqQOD2w&bB>`&10|Ld4A4I2G#;7Io0yzryAAU=(gyqcZ_4yCMnoJ(SnNT z3(-aVFGqN^-t<#y*{UrlOl~~%$s}lW<(_7X_#oGOSZ}vpXGKjDHWOkCtsh|P6vS}X zm0DTZzol&LqJGVuXulA-d7XhV>X)^?<~N<34|p&&=P2LF8fwg3`N1e(r#BJcBk@*J zn2Vej0eU->`&Sf3K|d39(kvGVM{@krQ#Ox{ySt?@PkOeqgD>?Si9s z;Hr@XrxwNz7plMCjYnZFUqe0f2=xQK&e-=SC~1$cH!*I06|RhrI%C^v8yf~I7NypG z9%`hwf`fQz4_*Vfbzyq$76)6?(jCKZ9KFuvvuH8q#%9mCy{iI1w20Pk`w2Og(RH=;ERU8?(m?XUf~yPxG$UKjY?&D2 z)m@>ihGp|06+)FwyD4V#tlqildK!I&x{l~8*Uo!8N^pnWzShEPqBonf=dGSSdrlZw z+Vjxbng?t>@u{iN(Y>0ye0)3tGAuDMF$w5GP*o3H*M10SAKraV4sQ*o;o-SM2fW8B zPG;=DHs(bp$A9{3=l}S5@5dkwWo4tJ+=Ko{4cX9=Ary>10CW&QvQZp1O#TR^>L>_(Bc7{IUA>J)tb0Eii@u(<3l z9PkBKgpO7CRRwg*&PU(}91wz=ohSx){-`g%m*dGNGVeftoPlRt! z;o>6CoJT4;+i+DPS7y)E3zN)((CV$Jpt{4SW#FWN{g2SPjhQJ-arAAtwnC1*iY~Dc zN7v}>C2l5thf@1f1`2D(H;; zlnM3pW7K%C`MbKRONTahU!C53yh~hd1r&%O@SYJg0pX|gvRU}#UyJEK-$iR#%oO1_ z4(yHd?@7P?Qdg-2X~CJ0kYFr$!bX3UJp4_635X9TQC3mUSq2H}^?=QZE#7x$ie!&%LNTBXbdXYgq_$A?xyP{ewQ3=1 z!|67#tH@}M!=+@Ic)~6cLUR&QLdVkChmqGGw5U?C@P5K8IWV$zt+tQ^^hCNYq%U6A zemiIVQHS&WP>Zudg$v&InC-F6Hd2&#Hw~!x=Q3Cf#e~e3<$6Ci``|pH2v% zA52wV`UiBq-*FrxUpWv3DLLBS6mPMrbKZlitig$?jiYyFgMYpdP5 zdxf-gGv!QGc3ti#a@QGjEGcG>Maxd6cC#+SdY^mjHnv6I&~4+;6a%*=zo%@JJJLP+ zARFG>$pC@H9us8y>PaQJ;s@C=`)%YHlT0^?T8mgG0`C48QOw`;;-dg7kDf)nlKbYy zXC%_YQmEF9zX|DohgMuS^n@;l&=%QmYk~noYbv)83dSDDUK+P!h8Bqvq2XkZm3!a+ zv0R-9qmRCoWyhPR8SxghnA8anWS+pFzkBWg&WzKaU=y5ysOcWk6qYr}D> zvS?)GC*bS_3pbHZo8j`#;^MOhgql8cf**e2B;F5=*`9C%k_fQ8!EgiAj%*2(k-cr* zLG_?DGcQl=55WUdj?Ijzi%=lS<2z3SJFwvVrsE}6If3gU=%3VV?FOjCC*`yJ^pP_1 z?8RBgZ4IrUci5rPWFBBCo{zA>K2S&g0jLt#@seIT26kLsa-Y)Tz7`=Bd;Q<&deEm;*JSmR)6TfzZL(I^ahYx|5@>)6OZzdybWN$@*R5Y(fPcgfTXU8km*^iZGTD%1 zDj$}J63xuq#}t>j9A6}%&bAt^kN<+(J|XV0cj-HpANUw#@ZLDp&BU}AJ@c96w$Ozv zjxozW-B))5kIpQ3`Y=sWqQ#Lk-;Xna-y|F+PXwF1cA*OJ$r*22% z$9M4bL0!ETPgTR}rEg0i`~7{YDZwdjvNq$vTyMN-!WzZ1MhBCXha)SVwp^ZZ|Ev>DAls6s{5cMIo zye|hQcN^*WvW+a^4q?l9G@z?S|4LpyN>jn4SMt zVLSDegQw)uDM3JgBiqSv?3u9Byy0$~M`z~Fy+OrrAyrnjU^3brC>X})lt zy)Q^9uHI_-%7ASkGd@_M+KlnPc@WZjb(}@xS@#2LrH5h4VbF@n3*^goH9-;yk!Pj) z$e$Kacgb<$Ski;)sU>8srnd>$m|ie0TP-x3?ex`A7Ahh-G>)Dav0+5Rim-I&!Wge` z?ft5^6J-LHT5NQFaGRmY(i3Pl|B=G(p^XK+v&H8U^89k>OHZijfGjfbc$UN4vPspL;+ddY3YeH?5y?fX)#|PzXA96Set9O4i8jcm~Kn{g=|gUbLkt|Kn`< z`VUy)BMkF+F0T-s&S%NoZgGU-44gc3swRqvnVG& zVFTuiaW*?t%feT4wi)<^4B$?e58C?eX5y>%+(H-4h=y`-U7Kg}QPvS)DcRl) zR>Sq&Uq@Zv8YK;!@3~TrNBcF>isepUqA+JJ@;>#;+A(E)BYBs(x(+{8L{qVeem4x~K><>8%neY%$QyyNAq1+~yMlteK<&ijA9s3-pyk~Av%8>KM;ap^l&fi?Q{x+`(`jmXOZ68V_bDn5g=q5K z>FiYwCN;I}Io4g;B1nC-4^NzHhd^qHi(dh?zQK5ew$82Yu$~;b;V`cuEIsFKQgc(S z&*xZtV~h$~A%`R`%N}Z0b~$p?3YfX{^FNq$&Rtja^DF6s4H;X%+q9 z3rAj;LW(;FddQR>z9J@hTEgICR+aADMwayIML4sCDKcc^@N~mzcPa^hQ>S4w9Mi;2 zohJ@_`&3Qh+OX88G@8Dv&`rmPByW-k5=1{fjlHZY363h++X%dUqa-q5%_!~pNhoQk zpy)=A4j?oGFxn+}8LJ3dvX-!ClIDnJ|go`Yu5X8d2wXyoMNnCP!Ye*5PLSQuy5M+&R?Zc;q?`?nw(GOhEt z2>d*&983`$0a#iZxgAL83ZvdOj`ZXQF#sTj)?T$7Z|24GgvtU4!omX;{&C9++s8cnHq2{>)SKqUZ(6MCR@Uq6Og-07#1)jJuLGpzG)b*<5> zbf1NuLtOii(C`4GL#=h~C)RmMTWv*4{C*0v>#d>}#CdNesV}pRWb@{15G?$PNweRuPIl!5l%LkUJmd!JZ^YyK+o+%i|hw{5jO2ghp zgTRwPCv%+~bKBehX@t+v=WI`6gb<#@0{15PT|&xu#v;dR8(9 z`Y*(ZJ^JiVv2z+0!;JRcH3gVhh$Z43X+cy%J0`%NqSUfgrLP{GC{xE=K$8zP4N|SS zch|v_)S>`ZwzciwMW-D)=Q5=L{%8}Uk3d`-&XOED}`HwK?^+W(Un3oW=RVw~Xb%F26JTn+3!S&Q5g z)N3qn+I`@=f!{w4#>~(r9j--vFEzK zv>%TM1Y8{~A5sZrO+QTKbB-&ToJ|$}plPf-B%fN53j*LyZNI;Q!PJBxNk{80$LK^{=MiqtK| ztxS{&eb>x?Daj*g2q+w6pe~A0xtDA1bZ#pTbU{23&IC!&tL(f0jMDeK=2q1xP^CEU zFVogky{{v)hJJdm^lFMWs&2u>GjmPIU+Sr6n_FF5vqfIlnZsyBVJbtGN^Bc2RCsx> zdw`!c1^q7%M?jxZ(I~hn_cie=)6>&w0VpkTs4dE6#0V0YwuzAaAaM3$z3Pf;wXI-S z%Dc}&H63mL{cHxWTV&;w(_8?~m{+@lXHpy@G&@ek|WoFC2R|lg%SMUgs-83em(}eWS~x zO0o3(`)SUVVO_vdoIA8u`fBYFRKErSo=w%%$Vef8#{hIPi{TBJcfkF|g?|F5fK7Xx zmK1+qZCg3ss@t{#k;qUW7VB3~YZWmHLiu+ek5b3jEIK2D~X zT!(vV7@NzRg-Ou{FveVb zHrNC=!)o7*AlV;7RI#)D-qaxq1mff^kjW=!XRR|c901#2=!ns)Cj>o~{P80hWK?EF zTwz?aSZ!Dc2#p0GC^9ngEs_jC{(Q;*&Q4A$Zl3ce|Db6;+MECm1HR#7aMccGqh#n^ z?KLwb?)5jLGKF~PUc&bT_0Sf{f~|^G<}p zvoK*QZ`KX)e3(vdYS7leqQ3hu_WTe zCv*UDu zvNz{-x5Rx6S;qo_PF}d2lIWVIMOrul>N8M45m8Z!y1Kf#gl_GQcil}Y9h)bd(J_ES z462_4s4S@S3s!RrDX0r$1wITC2coPv2>*-Bo|6w4HTu;o{&~lx$lISRY#s|p7&tjO z1G~e|L$wv+5c!_qPS8gYOTwhZiKNYmDtEf;n$W;FEDq#SLDnze?y1>d(bzfJ$T7sf zK$hhuo%e3*>Hf91XK)MYIZ41!g7tmTIJI;RDK}4d&sA6vXWrZa20ElCuQ?^Skj8#@R^NT?8CKbgFQcGLy`bi(YGnEIW<}9 z_@p~ze8$1Tql#@3dgM}A^HhPhRhb152mrvmeEMoT~ zaTJAu@hRFDVSEaYrOZk0esqh0=0VK_>)pe=tOV<K9;;H#Pp9A?vj~@BXY=yDPctjHg0=A?%K*HKuBHs?{WRXZ4rC<_*iWOC$_kPh4a-;%VHpsib}c} zcAu`D<=v{`Q`*D)TBm~njea1Fx$Je;e!NxO&Pgj{oaO2O!DU#cP*_z-36ViJ zXgiQ{Jz5%>kp!DCrYeDU;x$M?BXq}&JHRS9FB zhNu(g0=14ohwF1*eUb1Lc8-SU!TH>uYT=+{56YGCbqwPOsbEA{A#C?6h^)TCM7L;| zT@HJYKC9EqUrVN~tsO0sCd5kP=y;huanCh(h?ax(<~dd#3HP%+^qN)bfw8YIQqS!Y z@jcq9ALQLdf5*7>Zqf0l78b(um@mYGE{Dj;wO61iFOQ)nKzbehdkpD|%XP)gJiw1( zL$z%=WG{s#HJ|Pr9JHAq*tNJK2FKWLz)^A+Y1ktY>Kngf+Tg(%s%BK(4>3ZIZRgVo zgs03~&=P+F#z;!#pD5+Z`a0U2v=Kki;9{}8HD#*u{JN0%@xd_-May)9F98G)4;6sh zTTzO7Y>u~Iyn6eBUar;^EyKbQtKIqbo#SIwl$<}Ps1OFK_tt~L-3jQwHST=3@7xi! z>3&b$IbX2tB6(t2eD?rw-qhFE(+_!uMu)v4`4x7NMaRsH8d8u2K3aXo43O>PzL*+W zESX;8zH)OJIj3zb#J@~C>E7Re+4T3Q_a5t4JOCilTS(o8#Gv7P6@QgXkMs7c~-8z6VmXQXFCIl8t}&=x;9- z)#xc_#bA)Ews30Mc&WGA`$cE!<+Rpfhp}B#y-tZ*7x3U!*}_NWcUjuce&yKb`fiEE>v^K5%`S%P^ zKo9~n*J8lXad32`Up^~&@|~olevbnB0&=!a>hkjVi)UMiGp^;lZv>hOK(k9dHjN?d zd)D&1pn&uJOu+Fw3V_l|$G^c~=KPzip@ZIi`VJTfe$jpA5s9( zfHJ1P2uZpv%0#o@qX!kEn`pEvSCM1juD?*i_ra7%l|D3qPh$L>1#2(nD$gilK{mh4WKN*n^FQjYH`+5*COHT`|7ieSQ zl{_OX9rk@($bD?GtKyFXO#l9YLRoH>9;Vn)K%nDl;YHH@6Fbhj;-{S-d^3sR(>1QK zD?^Dq{X-gg`=AJC@4Y0U$QLYcMfX&k2dKwu@y_kYlrgyIM0)`sieXp6%+3vSjo3h=RiKc9TVw*o3#;}x5Nd;0JaW2(Mu1KbwjtwHzW;{oAtwZ7@O zTLkz@<{!D1Wex@U`T2=>ZkcA-knR-Kg@jxH6==9VfY+{;OMpMzdw<2#M?E@KuJcFq z`oY?eY9*i=I^SX5YIl8-@hl$T=ekIhJ9HzTMx68Y)+=d~_N+xQPOyI{DIGX0!M|QV zxeR+2_t-BXl|sG`=~*ovw9D=DKt(;?xB&1KkrAt7*z7$vHKNwFSL*AE7uC{a(ta84 z@=IOJ6NLNMI@Pdo5=T#NFje);O>2T-x>T)3aSkN)dV7^*@()3i$X zzd!!F%3|1L*F0w9+@o8Ke{oFyz5zeAhIWuu$83+qp!Vk1;hV^OxDab{2Jc8LQ$LKX z`PBI5#Z%~651^}2`L_nfg6HTX`1=3lkD%5jP}kB5Yn=<6a$>9`eE8tuH6BPmEaTkd z7_pyQS_%a!7MY%lnfKBaE{5^5CXbELi$I~%%B2IP585)7qh{ykf`Fa}XrT3`NRR%M zSxE2994UlFvlPP>R}*C?}8E4a_01UHM^U1hOk@`A6=dmB6e$tbHw6#Sx|qiMF5!(e~rg(Ekk zmtEC2_^aG-3L$SXxV#<55xzO#wvI39yT_;5>?P&+#RQ9lC$H8^yOi4FbB}iBz%bBP zPMfkk4|DL(6DL+OU77c)OuAydXuz_MB5Xs}Y|NzLqZV{~V4ww&>$!B`9jZ;R@bgzU z+3($cBn~^^37y*5@7xXF8=LsY$O#cBk9yAKe!eBPxc`uYfV%7OgJc$HO-+XzWBCEl;`-hHV$o0_nBU4{tUt>f z#)M)uo878lU%86eGREG5GgSSORiQW(_lw-44wf0SxgouxAKQYeVEq)lxSSTL07$MjQn8)t4rnoL)?3YMfEg&g9lJBAi)4CSyTjs zAt*Ts0xFV3Kypr!b7nw^B1se^2PH_9oEb7m&RK?>a~c?ineF-C_x(K2zPo$vm%ZNo zz??HfpFZbQS65g4s;X<`uI~!05{XmAT5Rb$_HVOF#C{5;q^2f;nvN9>wNd7(cVRFe zg=Mgi>z7ObjE4B7pfxEmky@c{SWC-uV^h<6+}xC4Uxq*c^g3HtRo}90{B;;lBxuE# zV9fqTeRv-?{LAZI=(_#-+jlBQk&K-OXQPemmc4_(;kGvF$J9BPqeNOqChOeeIWW2M zd(P4vIIyOsjh9^Iqgs5~X<@{5dpF{H)Qj6U19Zj;m<^O}VkvnCx9|+qUg)0s8i?aR zYF`VuaBGbi+r87Ey*t@CK+t#LFN}Qm^!klAhW3jTTucwBLR7a=xPB=MI!!qxSnb1QFBpz7ifL%$rw6p{YwB+>o)%Yao8A~lAKvgS1 zxfW-uCwB$wbRz&W)b4k(f7)q;weK%=?RByjGBPnW=3}YpY+DX1?g0g7z#1DZ_p+hC}IatYy+(!^tj^UKd_kKI-#Auz9`1-l{3`9>A;MTh;0&pvbMqIy_f6sgF zb{P~1hxytKPwh$9;rxW`!jJ*>l?3U#RmQC*LUaMEjXdm&hZY>#Vh+y(gRZljxU^VE+RxUQA2 zcLmobZ&TqoX1H?_Yb;4yNXBG>?qVZ^lfpkr{kVt&`4AZRV-zhRO~P-sasPme)JmHZ z7d@MZt6Om_u;m z=6LA;S$a`%g42b|W%brc8OczEN`o>+ct=&`Wdc?Z* znWgFk;SGq-deXlqf!}B#T^jP04y7_USndHuSfbg`^FpI*PN3pojxOdtF)+!a|NN}R zu_z?AGvI{Y&g1Z(-(w^b^714_YPQ8h4sRkZHb^O6oSkq+F|p?=-SSq)F=w4t_TV}! z#B$E?)~d36+;!ZKc%A?Y*3#3eo#&r7DBkn=`=VQ{{Y?BU@iJKEo_G3N zsUGT_GdRM8mf%?r!?utJ2E1LWq@-jvlc^Iax=LVS65M6+<@@(we1&ZaO;1pFujw2b z#*3l7y}j?^@OprVE%&8FoSe9+_IbAiUz#f#huaIv%S6z#ZHQMf_-bx?v6J8}M5ia` z2FUW@aI)sni!4P4`LrWX{t&*ESVvSQK2$zxH$G=U5h+~_btN54B%;*yR#MgBo*N;F zTBf}e>iYS8yfL}MzuI2@m=4;WHRiSg^oAQ~B+FnknlsB#_e?ur8;0X~DDw|yrAh@f z!V!XY|eG&g6CI$DDhsm}-p&s5}R7>R!)=nc7S%*@C2?x_wpI9s4p zmh4s{pGVZ3E|VSLI);DTu67Q#a_b_XnROSs91;T3 zS(^Hpq%`v{o|N%ej^+Wlc>b>|GN8xQQEQ(Z0*H=;q2WEC_Tlk25DRpwMs_c2PgGR8 z{i;DNxd1>WKNu22<`T!$g14U}C1aCOocA0wrAvI6Kcfh6=)6*QIVHxkt2Cj zy$a7N#Q;SEG9j_W2J?AEC` zMT5mM?v1mN9f{)eYb3@l;_mm}3n*#kXwt$~H1YGji0v`PDs;R-UnK6EUqjo&ylWe7 z*Bx?yZ=|#zp-Gx<)|{d99k8|hzSF|nXofmoDv6Da6qx!B8sL`CR7HipVTh8fAV>mK z`vYkULT7w9?hb2j=N}H5wOI5E&+vkO8EN;l5~k5AOAIS zm#jfj9#=F*+^`~w-R{N2e zXC5qnV;6h+>D{-@IGJ%P0`oltWdpQ~=;W^aIJJbsO>)(fP}ppHtCo;_*TIS87s8Lk zi6|+ZA#~9O?%`4?0R2wUJ3mo$HW1jXG7Las!}QpwTyszgu1bfO1K4w*nz8o~PZ^_g z;W8m3;Q?Zcr%WGvz=gvj+|CBr3Y|hW!7I=-;jojSsKy2RJ3Dfe98L zd?ie!ckjkQHiW7?*!~7U`~ZWvstMqTL=e#rbmLaTw0~fBn`3@zPVH1p5=b8`(U9a{ zkZY5(!Vx5l*)gh)wUl74tvPDQC=tJ+dA{T0o12UHglxEBLXDN@2o%fov|SgM_x{lM z#Gl9){Cv&)r_YQ71?&YWq~y&M{hqXrDRH1JC8I%1l$f%ubgO!`iYs!+N|svCjxZ+c^yx^#MsfR z^C{%*V@+k7YIiRuJ@fLBT_!+^BQHRYreC9Q;kVO|&JW}TcofC>GS&bE`GM{N9J{-F zd(WOfzaZ-aWE0Tie1XB*6w7Sw4ShkDf;fIg&3T6S>H_Xyc*|b@urbIIioXqLqS<7D;k~Gfg21xkH$9O^EWK%T5N`XRt`|arXt?$Y$d|jBgb>Oy zj;I7M3H_a?7tF4(Jy=4KhFGccz2AkruG&43A)LpZTyPzH^SD%kf9FKa+`amvD#%yf zgm;lJVj~poXmESq(pSKCMz9LQKXT*0&!HIG>40i z1gShB34)H9;3l3DiZ&ZxH{71meXlJf5veU`UbDN>E?O(X<<5X}9~W8@THaj$!#cq{ z1BL`OccS_D1uFJy5V2E$nJet&MD@Uk8vy}6)c*Xcca{2(mKZ7;MS!@etE#yibEl2~ zKXlbT941;>+A9wWa#Rne|HSGVC`T!ol3oEQssq54!9ai*{)ro|%--T3{i^FNX(6!w zhJio^04v*zymeYKWL()?SooN;{{G|+>2Pn-DJ+Z#pU0(zsnE>7bm`J+q)m-11TYKE zc`07V=TQrY0Drlf7Bsj!`M}W=xgUs+H8*N{P5VL=Ul0ZIYO)0;14;+kpwA_dJ3=@c zWT2q=sfgPk)39y;`24P3y3`Q&;nm|LIu=1bfuD%Q)4>UQ0TrbX@JwvX1VKZ+2B!y@ zOP7AR4&FXV@gE7sE!-IPB*2dpF~seZbiEL7b_3hdYe z>HF^4oSdPgUcI`4IX}C6+1%cMjL%Bk7gkZIlE)waS;T7G2eOQ^Wm#oVQm)6>9AosK;_Z8Jg<#>hu~t*Tg@C60V5t)trqhzKVf*@~HL! z>ZDIcGAIVx28;7*qi5CP$BKDhXop|gs}!2bR>JPqcIL%|N00`s#88dz}m$)IumqAQLr&Z=)Cyw+5o;&xDbdr@Ae zM3`9awXocr0<}_>-oI#vx2pJhacQ7DZd+=q+Fmxn04Vqf^okqnvKG@ixb4x{kHE`H zeTGcLFf%fy{;dX){U^=~@aUH4!xo%$N+6}@S9vTV(Ibk;SA7ibx5rG=KV^Fc-r2822s0%~yl=q7zCWKlca=8{36Cg*d3kx`^KC?^7;HC= zl9pUh@cz_iTRtf+iUfB>sRZmRE@t)Z_XUYv5OHI?VyhR@6w=Of)B3{OuR4vHd%sQ& zqPQjd9Nw!D=z6`s=VRF~X|@`&)F&RElDl;>TXGJa=sM)9g~~6e*l)k}$vUb~5C{=x zxI=_ryRFLA(4*_@AL@HdKgLpvKhWRsk4_qmT}XQN$Bp0e3P}H%x%2gN{C5PAF9o?Z zanNCVn}6I%RlFkRs6C~v=2RszUe(u?_<@nV+O+)4+$bn>)m}s-ygSaIN9hrxZaouF zLDlV#K!~Fc*FKhYVU%@s!}-+@!Xo@lHU@?e4B>R+e%;-#TMr3lU%9_z_XfE|t9lmn zX;5l#J*}RNUeF3v{&Pi~&v>Z=WoOr^ab$~B0+UqWY}eMt^J*BLJ&N8RaC%jFC#8o$ z3JZSGmpw2xT0i?NaQpvys2~dR18h@ZawtSj2 zDo$0{x>NpizB)gxtlrgjb7v}j=eMxk-%$vbPaWQBX@D5*pI|d@1=H2dDTqL<&et|m ztI^_Q#`O(D!>!h*t>!fw_J^(SL$-eiJAH?@(8%hQvQ1v1Ag_ytsSj2WLZCvN3-HvF)I@*Mc{K%#-aLe@e{=&f%OBG-VqPZA(4ZL>!3u;}FE1njI1 zO#7F$%AY{mbQowhxq*12!ZkUFh{AzDS%<7snCtm1Dys69e$2aVbYExh_E#6#LU_E2 z-y#M~{WYb1a;H=ReU6I&mlJ?efBm|g8x^in!UI9FWCQ?ZmcWgXwGMuoj#pXL>0~Lx z8`i)x47Q3hsK@QEFv!l!)(}7-g%6^HH z77vsPJQMcb>UVbL%xn#`$b#0F9R7@kym9iNd{Upy`}$!q>m~@wv=!i zJZ$TJ_4aw!znvn88U==-I&BO0G%h53tC)Is{|h+*l(7`hWFsJYerA7>n$ro*@Fmg5 zSw1cgd~_j?4tLtWef!3WC6Bs4Kp#8=Dt|fQvKHPlC+@F0W|o>V5#?{7cKh z(y?3eHS zJ*uj@GB4#YoDZyexRKJhskqg{MA32Y7)J%`Ff{L>Bs~58N8c-#t@Tp@< z`e3>JK=lJ5e{W8eujWd6>KwyW3-LsMc-Qam(RvSr?5ckq0Z|q}y&O2)7>jTeIxS=H zA^y1gKwDMk+M5|nK(1RK!vGjSzaG=*`w(A({0sjMWYidI826(~sv{!+=8z=aenI$h ze$I?5wY2oD+w{awIkLgvYE_)vt5=h5S-l&`PqVt5%)I&W_MNe zUexi4-zwnvvKXy=X$+C}YX`4ob32S7dQ6-Bh%l29U|%K(RCLt;2EPk7cF$QqmGLXP znVl1q&I}o#J%0~9{*`a46AIERV78g0`d>QO*cVJPfisWA6yO*N7@aA@u8aM0aIAy=WKd_2$}2_UTGL_xj560rt1{_6`_mxip? zH>_WLPPwNM?2%D>0e8@3nUs8;ISZDVPmf|>dVm+_tyzmAf{yk7cr5C4VgGn63dT0@ z9*av7<`U{a9201nBq@!mj@|NP(FyqB9v=p%4^D5552Q3piL-AcDuU872B=jACKhV_xqE}@u{Azm`yn**;5SibK7##9#5!Lkv^A;?j z_;eI77>_tO>N3VyGZYV;D+t4qM|;yvUsueFFO2z}2(1I9cm^| z?mb%o-iJa4S(!v_`y_bb@sT1GNkyzn1hh)%%g|=_B!W-?Xj8m=t_u}}-dkTZ1}J^0 z!^vz%;_U@!$7>g~YH@>4R!K$ouyR9@Cj&Mhp56uWXynnh_YMn$IS3{FR@3tXLBc^n zK}rQb>)B~;nBMbg1vuf}wNP7{(JR7?QRvjL%HEfx^KM^h3BL1~yvjuv7FHOXw&~!7 zEM88_vs2G4Jz#isUB8&9?<=dy%`p}?rz2^w;h{)1y2-sx&EYj*`i`44#YYe0w(l2^ zPX=!!wlIdv{-J~pQnYp!7b=$<7QIDxdk)#04)|sh)<(XU_9=dWqUn6Q;cB`Fxr0Pk z0YN}uA_bz^v}e?PoK3yY0lzpLO0yV>ud-Ry37W-{czHYnA{N&9shY9CvB6KU<|l9{ z5%#Ou<^Xq!2LeM%4D{ACk`tLil~*aF8#V#9jP78Xuvga2*`oPY|-f9ON6Y~qltk@6`ElG=w z^19iT@6y0y`V9RIJy_okczJdXV(a6_3rF-F4sNCfRuco^cQ0h6QNB)fFXagHDy{5l zXib^TO`-!tfN&3-=jihjXvaxt{bfxSq&jjiDsW;W8|~ zIN-zAt^OX-#n{NT#bM;$Rdd|Ya`h$=7e^!@Dx*6_^4+fXs>F5nA)J=pnwI088|G(< zU(NylH3Cd~s8bqrap5FLe<|jpoBN-j9>-nrmQD^5t-s{H#E2-1!m*Kqm&i#ISoVHI zziG)|yL>;8q#?On1LytwsdjMV#I#!VjRH;Iw(j>*Es$Jwu8&ar2o78p74(RK0i<6$ zYrN@VXMKoj(^tm$#c#TZIn9qWt=Sjo=`lB%#XkaLmOxUGi&gzq?N{4CF%oty3Qf!?Q-#?;Pj+XAp|SB}7o$;E!b%Yf&X?aMTg#5Hqm z9MGWw()YOtcQ+h3hWa;-xbB8YMkq=^e{1v!y$I*+1a=+E=#W`j_ybvxRGHxJSmA+Q zF<|v9o|1qx7VskWbTnZy3WZ~Mu43H#@%JBB$6Tpnllezs42+{s*1PT+;GP%SRg~b6 zU0Cr;h=hJN3&NL4cFMqIu(#>oZ3TIlfLEJzl=LdZfmB#SQl6IoG{Q0Tcz7FDMaS=xF+K z_ASzQ<$Pf?F-g>ukNZ!YMou5<;Ex%q+ZcsPj7$8(%iGt@c>BPI_aeD?$?(4DNsrt7 z#Mt3PAo{AR?(wcloXHzKl?Zga2bUIwPt613ZmOSIza&!N*2eM8e>-Z29xx}{Mh>(1 z={U77;GC@UmOOV8xX+u9(N@i^@gDb&_CB9aPe>j2N+avL!&q`kf2GIhuAuJ+vo}q6p_SgG#%^I5gKeU*g%C5n z=4q0GcJO^I=on};9O2l&WJ5h zDF>bdhtLhVmF!=y_?RCdb98(wZ@6u7xzWj_HWBC?ZfN}$T@e6-LqSXX8SIN})hAeB zeDyWtc2s0Be)d=6v34~mD`B_xYV&;iv97mO{B`f5&p*=B?KYlTbSAL%Y9`f<~ zX!z1Z+`Hn}j&2)&Nt`$|j?=zya1qSbnZWeda<)!-rUM{fWVcRmMsE26`0>#IHQi>x z-?MbEA;LfX0Gg(PbF`nn%#`t7VM6HM6bJVsQH{XroKXA$X%nJceDPsw0KI5AFTstO z_aJz4S4~)?oc9^I^p~(zeOcEXf3cU1|8zDOZL%7DGmqhtX{r1}uTmK9#Jm#L(RpGjF-k?30nv3Ar0!YZ6sHrE`^YqPIA;VR)_(l(&Z>f)t{Z=rx^U3LdE*&l8bah)(j}`v9=BVps%12*qc8}iEAmEKoRJ-mwzo6~7 zVCs~({MQFrmZFx{&x2H6$NuTDG#XIK+S-AyOQcOCTIpO%E z`|9k8(_6=!?%}MJs~^{Q3;ENLD9+pVVP5?z=s+f)-g2Q8`DMJ-n9-E8)K~sUhe}c8 z>~2iKWcar=$FJ+3@?NKW1Ov*h;c55l_a4~+mn(d&_&e6XQzSVl7a3q9pDU%GKYt{A>7~d~vCTi9K$P=B_E) zba3W{{FVpA>xR;uG`dd_zizuryH20C$h~rw-u9V)@VPc!co~Bn_MJ$L7d92ax5Ak0 zd3Dzs-E4bZs{`KPdq{=RGTo0uN63ft^*a->)diRil@>iA_6de|Q1`KV4*Qp5LqYH@ z(TB|U$|t#3N-8Qp`kK_#)$symO-IlCCj9uM?p*VsIz!9FwvIb7R(sxqPCaq_t$@QSfi1KYq1J+a45gbRz^@6Jr2=y(D`rEgu z<>jO7`Q_zmAw)iV^U`0xeg(AzFHpmD4-+!4=pM6CLym;1xGY8bXHf?2N$HMecIZXQ zwMps$-zG;EWw-77oav3W@obd~`3?kJL6$i#SUJU*wDnpPQhVg|{R0Jaoe}A`Nrf`t z%dn~rzEht*e5aL}uT~g*^~|Kc-MDV<9c80a!!|}*dd-g$C$SN#bk3iGl^UY1y1Aah z`2ThNssHy5IW?@*yk5p~>fDAB1s&VI>{u$Wu(4eMyD?R(y?@V^o1N`zMf2R7ne8yl zCA%Ljrv3hy;$M4RV=vqE1XVV--x1J<;9bUoemd1o21F#J680}ILp^IN?qK~24i1*E zdj0tc&1W>okpbWO^-MNsw(J&E$#ZCTC5FZSwaK`_H4c~2YNxd(5X_hIqa;MUbr@1M3sp@M@i!B%Mc6K%GGsbatC&-xOG{TRmOqfKwd zegz7^6_B#Jn*4>ZNWplWI30WWUtL;SD3d@CF&XWuGu^FQ8SRL!z>Vk6W$xYMxh_~$ zh4$puD;H~DJo-DJFXj}Vkg%+AS? zR8{>pay-`^$6F5G);r1;%zTApkzXqZDD8xZ7h1Oh4KvBzBz2*_;962|X2VM5=g<9h zN!SwM;hpGzS9#0JPz5&k>K?L)o4eyrkFbsd027e@5YDALwBKnUOHGVmMRD$ z(5bx)2fA3$+3m%F| z;-1$b3cOlJSC`8C1zBn7w920s0BzCEMn*rZCgj3FIn3Vx-ny7K)M$O_r`W%^V1P$+ zgrM@Ki&sck$TI^2CPO2`N5{19H||p$;SR$rHkU7hR4+>Mo!vDj<2s%%1Pzm6VQw~m zIlF`(r2D9J4C0C$kMa>_tPAY~kXmnbTb5UriB~I>%IL^j?sG`e)ulIVdqo2+?vlJI z{z-oAR~-X-!X;(@uj9}oVu)dx2u8c#Q}G7DYP^OUzhmcaHY%t*b!a%mFYDcjs^<0v z6GT+qZ`!s`Qy2U1`|)DYQxmgHQV;}#C9kN|M|A77K>E0P?+%P%+0qhhoj>5Qw??VJ zg-6^>*Q261?>`7&;u$oFhef9{_FM*<$ulry+n@KHR1+UR>R-UA8mN^U>U3~=Mgd06 zI6`2pZkiTcl6|kqRtzfAC)aa_g%tj>`1QT&9_>aSAM!;-;4M#>{_-a~+Vvtxg<5^V zR<>QGK_j-Q*(NN(*5P4tf1$cfgqJ2i^>~qA zV1M-Bwg}JlA)b0ebtKyJVLciBoe*YQ(TK@tWJhHCFFJ;~4y`^T$uS`-EdiP>@`5pV zIY(mHWt|PX#rzff_wBN84*fDWQe1uCa&auMFC8J6p4{Z6O?z>NAykw<%uw-|p|xe~ z>t50Kxl65q{YrQC-)X3Y+zD5rb(_62U7dCP&fm6G@rvzVEq)})jij=V)M8X$4Uoha zz-I{FG$tp=uomLTl+{!7%4q`0HvBf)4h@Jnce-1~(waT+KMFn9VUnU(9oc)7yA@bN z55I<7s*vq$NZAkvC+#{Bh`{1Wo9vwM*mUwII=EV*pC3RM%DT8)tSGvxTe zYtw@Z-_Ro=-wDdsvyqgxk0NznT%jL4l+_7|z@2h-vdbN%;7^Dns;_Gyru{L~QvZ2x z%~zqqkmoUdIh~*b)t2OZKj(e2=!Xi!0Yig>r&a6hloC!8`rtqjPJi`i#YJ8<7S$Z)xjOWC*`X7%&>}{7xS=v=kqZ9z_E(X z9eHe1!%vmR;Aa`RKP??6VLG>dqY*1bW86;f$ek2E?|amNFYw_b+f-MZiqbh**DGIA0J#CL* ze)Qj>tg&EnjNX>WwuqPe>3#vXbg!} zp>aP|MRH^^Nvf^(X;X#+S_$rulR!E&5b;b*7?3=V>uNMV)ti%yE$({44+=xS4dc!c z$z4!B{qud7rI$4*i#vKn$0TD!5L!Ov)44Dkx0~@#tjEc<0{ZChq$IQq->wUmEef6Ck?>8R$A&2~@7x8NGojB_FcYv;S~?ae<-vp5b<4u& zbl7C$Q$fs(mI^LklW5ju|2FcPOuzx`Ixt;9^yMOhc!6H7|3++VEDegnGW$5?7V0_$JX5%L=K5{T#*k%`gG4ymWW0pN{+>>C;_`z)MSgA^pd)(m* z`VNJg%kQwRj6%pW*SG0l74Wr3Z_KW#JY^BFtQZ-TUnRO2C((Ig|NXSE;`d<|iojMB zCe6^lu7}WbWzp~XsF>O@_q-yi;?>a8{jDmc#K}EMGUKhbVG|gkukOR*b$B52O=-_j z=CeKeM;(vbf=(N5y6I9!^fm8_Cq*7(LVLx>NT5Y(qgRTIpvi4)){XB3RejVF0DZhUB4PK#c8(=|q5mH0ayDA>diiwBfwU zwe9apWHyeDI?$zy=(fG9y!b96c=tda zJ}z0zR|kCaZeY~(F}FDm$7Fk;H!>i*bRJD z<&@L&FXRTJ<|2$!@Ott#>7eh_-26V6;IB0`K7QyngiYlI#)>nzllb!;;Zmzksef-uuEYn`mS*J-RDNo>?SGIJ5Y$$BLrRWYzJcqqFv$dXQsnhoN&O!c?XSFeD zeRC$l&6GKPFT9>S8RVr&izGh~MRjgbT9;lQ__NfTNtxVBr=o#2)w_3sG&%b^>b9R3EPhoO^VZYh}vCFz>7f=0%Z%!0m_(`gs zr#$K|3UhM{3TvOHF`9M18}Y27n)3Qlf@DnnK+L_MAxjS6Sk;R7r0F&Kqhs#t;0e*B zXknsr*nhW=RmN%Kl|UNnxh0O?;OuFSx5M)#^u-(SRkJB;k>#1&M14bUq}89%D`nR&}mGK8hZEfqFs8Jiy$%lPUfzl4%)%x@k zl?tev`};RnVJY}9ak-!g?yW~cafwhF*V6-a0NEr{7=WOiIaPXk9RVg)>;Z#05U&M~ zNq<${f#Sfp9&4U-%_WhmGVlFZK`bv}NaEvg9&#GD-+;o+Jf~bp&pB9-tJvGH7C0E( zu2b?SVA?2A1rAS>`o0#~xaQ%OanKu-6Lm5px>1{mli)onzi(pj0^Iz?$V^3_)>y%-Bg{l<4px+`e0fv6!X|cW z`7(3dtCa*;)3vW+6@D-=vL|die;4#4h*HCzE7FLE|8lB7y*Dkf=16lgzaa5rf2QiA z=*9RFTvOUsIjg8F_qSetJ%5@2i|q|F}4e z%w?H6*BVSl1GXevWfltbH1PtOHrLTCHiL0*#_@HL)8 zIM2fgmh%nUD`}D`Qw_-6!P>W0?#A2qjsb&+31J6KR>|pS`dGZ-#|GK`D}1}CoF}kb zS~J*1N0*&GmebV}x!AN6zEXrDx^)YHdJqt zcDv5bA9)k+# zv;jDDf@CG%(tP~Iv5hgcaG8WPny6pML=Fr(t}FAAMPJndsIntCpM54=Sl9$CImYlN z@YtWv&yMHd43$!da)&3AuaUv8&zG&{#!w1%(mj`+xMCi}))cUOu11tTA~IqL4-&Y7 zu9nurW(U+x(!%%=_G8{)sGf)La?Il9Hl`f5Ez7+c(x#2j7?)BPTrz;fXkZ9w1D zx1cf_8g5rCbUxWR;Ku9C%yX1b5}+p=?vvXZKTN=QY5t3}liTTw8cUUe*c+U>p$N+W z-uIcvn`#^UW}!uojf3Wbd1-k-ze2TMKfQs~sjE=w#(^!k)tepXqw+2vyk=W*BwZkL zuU*Gu*YMTd{itIO8lJjDyFE>e4tt_9?|J5LP4JYTO_+p9WfSKjHMVI7=9ZYZ07X3n z=jO{!YSaYgOwsZNWj>DOx4Y6a;v1<(yBHQ%OrJZse!69 zk;;sSwxso=EcIP-%?!s0ncXe+PV8OL5oEF zw6<7g!`BRSUn0b3?5>NLjA4xKaaF=P&1!(#6JiARrU)LhED%z`58xjkUz-Zgg|v6=r2Md ze6}(8t}LX^Hs-|jut$&ZkCbbBF4~n+dpltY2}wBCo<;<7dpn-dM2fp}7t|l2tl8i{ z>R0t?7I3Xzxrbr9JKk1Z&!L9tQ=-?x%p88E(4`NR#xL=9-J`azBRg|N@sk^&zN<7lRjF^b>E%WzE@ftV%_^D#VbXi zlzG>}vv40z!6h(RBKQ+8d?~9OFQb_fV`f_4L5|V+?g&A9=-59gnmNd?qB|y*7Hx6R zt>7ijgXAINVZz&lUc|MfOwDG8T27r6Rvj&h8@5efZKNXkQmGh{i`5vIG~?~T6Z~B( z;gUN_C^n<+ZuWi47*o^jNe_^U27%g7_N!HP1%0a(%TAt62Ky{9nNGJY$BR_2U%0Iq zaY9IEX#Oa-G4%0>ZD%raJD#M$^P*%O3+W_jku6&jM)`$CY2v$$Ruq#?uc=)x@|Ksw~ zi}7H}emF_qO7u%!IG9)s?)<(tBC9%ZFWH+R#te(P6AUq?!BX6Xfjm)8Hwxm$AiMANq$rY1MAv}-MU`e6~A*SOL}Irh~!NbSx2 z@_tujP`*)U|Srmf$4q!)=<)}yvOf~_T^cCw!Xh2H9XmApI_81$7TJr&ch<%cBgpdMEE z_MG^50r71vg`EHNCgXL%JBgC~nwO1ESN#qmlgLgUr;*pystozUeO$Bp)MQ0FTS^!Ziz8_8Ya@F%6KU&y8j9E4aP6PA zH?QpKn6+3AFpc>j<1bcX55qbJZF}i$Lc9M4J$Ktg=n`*}1?72;Cg~8=Z+sprn~k(Y z*!B==!_hK;L(C%TA4<+|OWkX`LoqWK>D)Ixack(LfOo!ZHL`G=Yii5C3oHb32tm(E z4jxyA>)gG*yZG*wdken19QZR9wpJvUL3g#p=M^eNyqSv+6H0=n1}FapX)a}p@VHV= z0cZ-6INpZU)&G#)mvBkvYIh(pKlyEW2g2BnwRQ-(T`-%pmW>VlaX3b)e%LCUwGuyR zd=bEX#Q>Y=_V6I1>Q4N)C!UbEV&YRxe>H~lS(~Gr(xRPY+qomnXJk)ThTf^uPiH?JueS(-J9gTe)gW?4P^ahO2Q9`sj~7!P5g+c)*~|Mme>h z)KnJj3`d6??W{dSWV8p=UD2l-WovuY@;ug%ue0#zoW!Wjx!K=vXWdgC?ihYptb3dh zK)9Ao!Y{u&cbz~mcsIRw&PqYJOdxOo-x~9(k*elfiMMrqR0tQl@4nzvdzf%|AX~(R(g#*GchD)506U0hF${&~bWs<$I9~ z4JakfiC*yv1F*8A&p+{XIAEpSvO~FV%8s~vPY)NEFObCbAUOX|O@Zcg?jucOEQq`3 zH6>^CNI|Qj+3Ht)cK$0|m2-{N{AiO#;pbswMcXNf<{iQoqiw3%{l|)f5yY`i(cBNM zlIdOfE>xVAS-c(>No+`Zb4c#$MRe7)xABLC?FKI;bHQpTj6o-VrY{HK zo)T<$-drlnDxzo@h*vtioZA}L__2twlzslo_0lM}%V=LU+?}mxjg(dMe5|D+5u{et zC4H+lFSh1ru6)JZzNlCun1OeCjY^mf=z1?AaHv6tgJ|wQCn26xAE=~q{e=G-W*O~9 zG7T=^q&d#dcYV;0FK`5^5xG{kDzpQ&BBLD_s+m}tc7CLBNs~06c>5$YDI92LWdc|R z^Ci-T5F?hT(=`tOe57UV5lf6dnw<-`Wjq)k-zIJR&y_H@uGj22f- z4Eh+8Du7mE<}F5O z`#j@dYx3)cGh+HwotwzOWjBUfC!pS*Sn`_~gCD9$F72QWjuhMRu*2>AU;odaK6pA) z%rvy&Q*}^iNZj;4`aZ`mL~*U?3Ky1iwG<*d0BfWJK&>tGj)zfX3i}GvZM-ic$u|5p zu5V63AR;s-;~!`Ra2dO*-lAKa3r1nIk=bqKP#a*}w{P$%#w6;s`S;-QO;?4!5#jsO ze7SQ=g%JWox_dar&&1rS>lS1WVS%H2u_R?^NFpON4j$vT!iBL`Y4bCn~veJ6J8p0?0y+wsFOHm@bXam5L-$_3x zd=qQ=Ytt>58Hop;nw45mJhExPKOVS>$sJzOWD};J??B;oY_6Mob=}IV5*rCjLO3?( zs+dk-*z9|QRmvMhv*&HOFpHx(?4d})jjosH5Ha%cUDb7`k|xU<{;PRTGm0?$eYE7VdcB~RA$fL+K95f-_szUI1ytUbk#*;L9{>m!r+TX!J3+Vg^D68XP0M}awgs$-Q9AM?IibcOsSvOB!|eYpp* zgmEK#-+WBX;$yF;gLs6)4O6E<;@{qos}JNKY(>0ZB>uR(nCs`VDP-KVu+t;NC_=1z zF@l=fQxNB83TEO1gBMsA4EHwaq11?NZ@5J2{>=H-iP7|()u0??BAuVaQr+3qUV9~P zKe;MGP?*rK(-T#(5MghY%8=vZ=u#TU$8aH&hd4@jT!W-+qmax52vX5c0O=@GkeCHd z9R~PD9hOOH6*Z$!AG57rGbRkP?Wi!h@PPMQFA9u1!N>|9ZT6uqj^fcR2`AX`N%TdqJ{e=qgM(a4PtW3wfU2Vb z)E{prOh#8f!xO{rifF&Qze;I+*0VdR7Fhmq$$teSJW;gM64M4NeoO^BIj~;mfv;F? z!nkwSV5}HSe#j12xKhlItA6Low}U&@_?btNBdN<`MOctmzg)*TCy z+bN>*WH!#Y1e4NoD8{Q_6o{_DO)K9Ea2e(mDvVMECQUR*MRb-hd8cJz&AJbM!t@s1 zas6JW&OAE?fs6NN(^xpe(2DS=w0?re9@06Y2R1JZKUN3K#dd|CuGXUTVJ@?8uTh;( zG4%va+%P;sBb>c{CS#RNGqBjQu-3tiMQrX34X?MCbhTa4U$Sv5Hk+Nj>ca~?`74W) zypNKY&}_4o(Z@Iz4blu@KceeXEliSU3{0gsRmn4i;xQ9N0#Mb?o_>1lmjNm8)j6Pf&TfI;e`FszuVr6`PJ9A*XQ zw`v|kLHjvirLRIGS5;35j0Q0@eVQT+hfc~qYe4qHqG0U|mV4zZaHTJ)AFq|_X|4JH z7b2snDm#nS>of7iIG{cV;~+Z^7PhhJTr+6}ZyLkoo9*w03*`uV;q!k&af1CbOzJ7k zN$~J1?PqU(2Y}YUd1=0(uqny6PLGjH%P-e1{Dc`-uD{yyULk16Vi$22ub~l0*ce5! zSKMd-*Af2bIy*qv=$X2r><))h6bC<@2m^oewp2aM`Qm$3@(ek*BH>?i z4x42CU+(!EQBJH#E1bDfH=axV&pl;@TZ_B4CXpVc=Y+*~MTlmYKhP+z4^9T!>Ky&+ zmI5?)cRegDa*s4I&$t(5X-^g9&!;QM`+aX%re8BaoQs5X#3z|r`F(R_752w~b)^}^ z11l>99^fv4y!m(29I(a|ju=~|WeBU2fwrt;5ij>0$9`+0;!pdgvvlanS>!ZMXiG|ti^AY51`M9bIZ31}t zyP3Am9x(W z$^+h~;06xn`lxb+2^1gP|7{`qqi#@bId(q8sD0P4P?xK#r1-|JdDgp!;U|t)8X^tn zC2>ILQ-Cnq9}z4@c1K?tX0ufoUjum z5=mgL9DJF4L{Rzrkg0I@;dwqmWE%1-hbbLX?$aKt-Lcaz4#??Kv2O<3t7md0otIH7 z7^2@JbR?GWxYHG5Cqf`iBCC}=^$-_NwjCLr)3)8FHah1zHQCCrTg;|B>Sy8fE8@0d z{hrq;c+}1UYEMU9pvnW>cGq%vJ>p5O5CJw34wdsF{hZgVv4Vi1-N|`Hj*5@P&Uj}J zV18M;qja{O?hmx(kdazA-Yj1A_7@QcI1F>cPfNc!ehb7dhB*e`BVtD>?AMPSSWk|E zulNcB)O+jcJ?>tSLsc1;Ss-pE@}^4f#EN?6{ywjH)m_c;(zQ01v--EG*;F%Oyy3d) z-sAKn9ak*xjH~|Jofo8aJcLl>UVZZ<8RUw!EJcQ(#RKt)}hxygYK-N(*(xUt2b=Loh$ zV%VO}uOTyGca@sxUF-4WhTx8NctH{X_vtH@|BKji6&3;C>2U8Bwj?>zVBnnMuIr(+ zR+LLY;qjcbn;+MA!qx(sA>8RXOLcq00%r8-^w*C)|M}ELzLx&ARB%G%ax%dL@uJw!_R?(TajPt;Et3eAG*{ILZyOU4>`SO4jd~l z-3(K_+>X{)?zB$P?QWU%jKChG!P(>eTXGodzA2pSav$)TiAUJ`r8{JB_c(wBTk=bA z$#8bYTBN$dBC>5<`;-3G_)(OJ&Sv64d_;UGG`p}u6&12rE321mhmH!nuq1?zqmY^d zkE2Dq@81Uz_`ie^2BuK@5987oZ8^=8I}u(u%Z;S6O{U-A-I}PJz2rkxtr~niSsrh@ zivilC&A}-~m2T6Z2u8fPu2?3CAblT3_Xr~imlnjS)7|$^#^Q)@_LOCzZ0Geu7Jf{Wk-9t@fRj89fU&GoXj!Xx#xqo*acgFq&anPX zsPxiTgCMqT;_COZ`~IxLcOT3Ug}uk*A;72102J`d-EFTRu7O~)>keaTJ7Vq-Vsv8i zXuMj>KGY$^wJeB*Mxe@`Lt~R{o-HkZx?D^YrM(UaC}Jjikt-Q^N7ct!aglE9N&IaErzchOnQ?z z2ASM6O;kb(-@x!5C(4ZO0)3m;`RVD zso@3-eIW!YRfRZz3e$B;2J+Li&=a%B6zQDy8UH@3XVVBD51!_Ld( zjVRb)+Qs`?&Wc5;s#v|}b&~`i_HDZpvOQmVK`0Le0^YLdx{rpJc^M}3lL9OB@YKoo z7_x&e7(PLtTaNz8Za6^caT#79Q^gLg;1+pQv%nZ+N5LT-Qb-G=fWJ)&nm>R9%`EK0 z)G31&>~CqhweAv^7`7gGy?zq`xW@d zeV>yP)8?I<^*g*h-X`;_RWl((fQHAt-3fIv2!5>qM6^?Q+Lf5?5>zyQU#?2=?PsMge^F3=OB+((&rK^#U!3zmlb?}{>p9B127J7+jFPiZ z;jU}JKBK10U5NP!B)9o4N)G#)_9qp<K~vRn#%)~WT=N^zl`>jfdy|BG zyw3v8Ijt*h=jZ*2%?&fng&^N29Ll@^s3;n+3nkgU8E{Bdr`{WUsQ99ov);z#i=at~ zjz)jk6Ge1U=+JkMaB-P^mvpWEq~3TBT)k%BjKW2b5B0c>of{BT!zoK`T=>JV@)^ag zTC%Eeih$RZ->N7|yuhtmsBr0vZfmL`&}m~I#muVSt5|NSu1>d!^e)lOhvYvDtl;yt+0k5@ir|MBj26?4^z*YvtZb$Q zMXHVDyp!-Q6F_8R*7L*f6|%Q_W8W-(1>{-$*OjnCe6{3M(E-P}=p zV_{~&qkypdnSBPpYU_Ye5IR2$BbU$M#((A{qg87VJr@8<+Yq)IyR}6#1&ewW(~Uk& zhh-S${&Km6G7496q2RfaO70x6jeU4qHkh!6PQv{e9u*q|?W!$(;6ZKft<)SzU0HWn z0rdw2-mfzTpyzBnx(x40!^IJ)9mcXM6hVU-4v?~k-(CwDXpQLmlQUTc6EXSqOwn$+ zu3*zgkzK#-(Z4X~5XJ35$w4zOeu;xhnK9q@Ji5!-{jj=u*ohZT6#S3bo30KxJsHz; zJP57kztZZim@yHrca}O83b*O#!%{41$qRl1h40W9#SQ%q4CPN08Qj)LG9rJ$)aIwZ z+$96VH}f#a!-trt=~!KB(j1^xZ?iY5qHvZojve77L49W~eBXyg&}Km?=ddHK0mM;h z3j3@>-nurvv8(%5%+HT?;bXLueAL13QkEbyWg(^BxRg3A)5ME>>ps$^!jzy9&5 zl6_KG*a&u~8A}}E{&3F_TpAZK3=j^zCSKR4|Mkgb z!=4}`iOQc{*iN0>bdy+{7GO;ZAywXy_3|_$t}FU@Epx%ddd$DukwJ zPO?nvz)UuifXs5H?bHtiV__(^)b4~Ty?k5+5P-HP>(vz*lnm<{@8C*t!Y%V>0!1k_ z18_@P@$DsP)q*z>BZlFt7gtXzM;{47FBD8atz4-o9oYjbpP%42WW$!;&cPg$E@|ZcQ@jJ~-Fc3XC9eo2@Km&b3kmu16<{uj&A1xkMsAfAIkn_!4 zr!n_p-95zqkWNW$1Nk8OEgj80%lW={oA^ijDneB%sDdhEcUH5W$c-yk$m1$G@UC{n z-57y2$txS_F9oHCZNnXooZvsq>ocLS`jDsCkZ&ubVI@nLX;RDeh(d%wz6}MqfV0iI z;}iP*gm4i`PW`fer;0IoMk|QiqrJ8s+2kL2df=yq&SgkFAvN$Oa9iyNqV!IGV0LR2_LJf8nPtL9~5`F z1oOO?=tt8AZUSDQ$7K>LPi&>WMgI}vj`>i$NBDyusM5LUu5+;B)R}!I_yZTq2n*5B zOv|n5sY;@eC;8xVB;Y%H>N1Sm7bnYdd?*pxD;c$%ABGLu3BKsY@T!h&zm+Q&$6G-W zqpIbOVGEUKe=({$SbhFh8b8xi!)Rd_PkGTwbuA<#opENjWV(c7yFBD#RJ2fV7jn#6 zHeRKz?flBxxAEj}Xe)mG(U{L~AqWV-{B>oVp(A_208TM2>X5Lf7DR$;&&&zWmut=vWmEFW40yFvHe;h|!`CtvyM=_;>sK_i zrbboEx7O9nF;n9uoHY$pPBnu92SoVGYZh&;=SR^AXx~H_C9la@Hl4#CJE-l_tW<}I zNDR;Am{Jd4s!C*?!u{kEJOYMxNM6(hSf=GPPgS1AMTYi}b5sG=U7@Xas(`2XN&O4x zsV`V;2j@$Ca8!5s7t!0TA>Hda0{-roqbJ!H?&@M$laAonqdjEyGHXR@qvG~q3|?^Y zKob0BRhcHlLUeGrdD;GXnh6nVb}$6e3&SXU`O3-rxnd>Wd^tMn6fg}mC~T?J33dP- z1^2+9rNF^-m_ash?=7Co-7%dlcPDhgOW?Uh?BKwtZaqPWja3XCsXTvap2S1L9@>mLF(cPT_9DR z)T0_UoT@t5!QP>SHv1XmG5ZfTFaKke>cHhG#pExStEu*3;dwLaE`vj-HJ5qhor>>$ z#DG6*2RNYLakfi>QNA=9Qmgn|^e3dM4lwk-(Mn~zfIP-3Syr0f)$<`m7W4%*2jUpF z+0ViljqE^|<35CM^eTzb`|vj!;p7+5A;Q>jE5v)6i{W(Cm#bfzU>zvCf?i|q;sv7S ztmQdFD01=$40R0cU*VG~$hnp!ow^t^90k~U7XFsNuvC=g?81Ua`v%RwFAJW$P-GRx zQ1g9Y24fY!$r>vxpdy!~FHx0h{%ex%7m}&+{qr@iy&^g$txvrX^Cc5C1v8Etp=x$OVbQqA>qf&T^PD^UCT|Cum~om}nW_4tJM%%} zxBwj%UZ2eSsh*5xotGfdqDA$e9yc10#i16ugX{t-S2tnf6>yL-9jp-^5*QQ9-nb0w zN}Ra-eD`a1UvVX1w)Ed?@%ApyKS9^g|3Y=7G`?BgZif$Lg6j&%FKf!Kgp;q4pUqfMp7xI9V!P5; zx*J1m6ma;m^9DEg&&Pn9Li45Ie0PUM54{ddRHn7?ELX|z-6HBxR?dRVm`{;H z*6bA9T<>^o|L64FtU~G##_h2KhbNnl zh_EmR+D&mQKHqI%DF43#N!syJsm%nzgd1T|)yu6SgOSjE8Qmya z-JTl;|ILgC&FI6+_lPUAvtYy(?3{)A&+eNp6#*VLak}ABS5wL}V0?jKz+g6LBlC+= zwatlO**ZllgWffIDW!$B=rNH#@LdEL8>oB8zdWj{*H3#k!t(tg;{qxtg+%_Mp)wtnh1oIK_cF|JHA>=F=4lIx@w8* zN8TKls$dQg#leun!Ri-lW@TE=T+7|FXm_wctR5ji5`Z-dQd(vZbNPd9UG;cB zz@PHy&?=*e!4CtmFbtH?U!}*Vgg-!u^VDUj_!VE9gQ?ta7B-UD*`CtD_hyvUVEpjc zFS*R;triT1=ft7EHsCNC2io=3O&l!quQt|P=6^esUo##fJ~Q(^^T?#jydCo|x3Q0K zYj5_C{bqY75E||+%$fXRA8r8+l4l_ORAB@m2u7U1Ff0E~qa`oc%Y*>T&_sxJ;Nj~jn2 zt;7jIJ9visR9l5Eo(s5jX1f3FG5EVZH^UV$f%jfh9AkbZ!>ciO(4@YBc<2uwe-CLB8FG_Jw>4zuCwp`Y;^5i1;^JGjM5YZhv1C_M~nCS`eS4@!_Dho1I4* zJ8{!E_?Z^fPuoc1l$7O(ON8~EEI+j`Nlste(_I7xa3Lir8%tMk`>)=0vDDX`(|aqM zndO>GdyN?1ZHbN!uVy_R1y=)aDEDMCA2y@+Wiq$-kpQ&iZIo^5dshT(BSo|Huboyl zN*ox=QCRD3q~d)@1RIipgej)T0N%)ZGu*~KFY7weo11C)fnxkI=fkkDE%O0*E!ja6 zpCK6Y=4*0W*OR5l_~z!xeo^j~A=t`^U+LfVyKI5!0QmgYMEv#h`&*PmKg`!}%3yIt zPWQyh0jNI(aM6}ZK#UmzCLS2N?KAPI;84HyGAiF9}&`4P#(CtwA1jk`M>Vw z>14etv})S^rV)7#s|d(RI)!7OmJ=8?IaX30AmL5@5~u{>OHVY5@+s+*U13Wy2tg(= z4UDlcTBf&993X9&;2+4~Qc;as9qMD`?`svhR!RemN@i9`Wrvr|qY20qGtc)iAOvk~ zmpKg$zs$xS6_9EBnJi8F>Ly<4zS~2|eLm!MKJo6mpn(?S#Vfa+6CQ0()%D9K2tFcA z_p3@Qnafv{_!%83H@{)n^FrSrpRh(xX$lAO+3~c&_|LxFEovc@eRaq`vpJ`c@M01% z(&6Gqf~oL2g!{L*aG$;L!~E6{$|;=RXX4N5Jxn0esXDu!3w9%GAmY$lKt`B~LN^;! z|3fU!WJP=~RhFFh-Oj$d{(Vhox2ffnYom!@!h9#TWnq3F=JB|OS$z!M=;iB;*`>#0 zC%E)d)do`XmKioBdUyt&XA!6YA~aS#7hHOO-(n(zM5SxH;YFO_WisJBrQi!QQNwK= zE)7=XC7m1|ZoMu*W1Xhkea;^eRp&Cez0*V@`v5GKj*{8(9j)j|{RnoK`gC_~gosTE?O-9{@>=uq?yr17Fas=k^{*b-h$IlLo2;9g@ zUR=14K|LOe-}ioQ_v~(#miUjNGRBfWxSyE|upl2Y%LVV)UIu*Rxt9|GFQXaRPG}0aYb&ydWff1tH0aBWj8N=xF$5_Zp=d#6ei2!b#S); z;8lA5=$7}>x7SjN7)+mndN`*0VnaO}i1R!kw2ZQ7FNd?3BXZW`oA(;tH#hL$-Nav- zyG!WPn ziimMi+_Z?J;z*Ah;Em3Qc?g+{KHsKBZ)J{Kd6A*tVcX zLGSJ8r2pxBb_R7hHzuck9+jCjh6ns%0xA!>&5*B+Tg-nUl0B)Nc~F<}lgw8?(>NQ~epI5|q3SK<=83 z?vAMuHOW4ixo{u>WGjNMNqECc@_fa9;dm+h0s>jJnWZHBd%Hs0sN4m|!|T)qdP+%5 zll_lMWn8Nq5+4t04qO|CR;qRx&+8@d|JAmE`cz+79J;WC^{p5o;{cFMHm=tIiTgq` zLVRjBfVk;tMeZFNa8MckVJMnj=#KKda8hgtmD4R1eZWNwi<3YxR=Ku1cx;6!W`JOq-L9MH+jp4U6E)jK0SRD(ni6KVXW# zKP`-uc97$Te3Ka7UV7Xajr)B<2EzKbYLcK#{9tkKhNi^&0}CO<{KvtN-Wy8w3Zuai z$qi8U_~cP9S6XrhD~r&e#9!3BZS-PC6j-XS zWj=5#hFQ9NJ^KfTz@=vsew|OHCFCjX>rz=tupb7=|C5&QM&4W3#6i&~Z}K>PAL$;G z%Mv>^3m8gh`gyk!!7n5MA?L{Qf5dMpTKDV@+P-%_AAhz>T<2xLa6$G>;t*)0;du>3 zQtZV_J0xL`@99=z#rwo1fqpslDOxlBr}wIW$@kLV#16BMUrmx3Hulc}fgjo|KI^w! zPWAhGA6^}MbiNc7)@MK+VDFQ$wq<-sC%N%YN73uY`ozIVuc9Z)2*c_XL#!nLO`Z>?fxi=rTp+aa%g|<7MzJWa@ySh#PMdk?f>kin z0-LPzO6%gW$D6qKTFE)=&H1;_PlKS`2m;TRXTg#7SuNftC2P_=pBnS%Ht zzVUk@>Y605otS=SW0xUMrjn#>;=s;@IieJ^R@c>&U}so~xKZ#{wJNG>Y7;I69~E^l z*sYT5@b?t?L{!cYWa)KS@cg~Rb$ItmVUUB4wu5M%B{gztHqX+YIl6tfo4s27ELwYQZ+K)a7U0rDR|7X1fj3h1TQ2k%AYkAQ-SS z)#b`EV}lXqMI7#4>0OlR?oQBdwcZWKlvOVy*?>lA7!(aY(V@}%?(ZV7_w1xPMyqhu z^Kt~=I;yoj!cP}2Vx4$LybH5i`dn4wT!1{CRY#ZWXS(Q|x?YLN)E9@THbOKy`iID> z=e)jkR1n3J^P3rtU{#7|(^aE$+w)cBl;uoDlF2iVLPD$cfxef6RK-P-5#aWTuX%)I zkay_ZUCEaF!i&i)-8Y7QVx34V-ifJ`=?h)a$(&&4(a0%?SoSh3g7>2?8~dsqsN-a+ z0adJ!k*0hEcm50sFu|k6MJsNI2cT_{0?K|h3v}PeS}Aj z=*_Z=eb39+Z|UgOn4U*`qB^N2@pvE>+@*yVAarLS#3K@4uI7d@7Hl#wLmI@K_(AET zjsp|Ey~U08l61b$x}Sp|Ug8~%FSL*@)^a(lJh1l^TC`_;;pGqgQ;Py!=k{QWk^rOP z7$qhgU*Wl+Z6rr@OF?Cdf9{M2jQBxmec|4e&ssjAE{+^}AoytM zE|X$9Me+;dJfX-weZ20ghf$<;u)Dtw`afia_E{#}n`4!D@9d#A#iNoain!?BS9bpM z`DHz#CVTkiY^SguvAKCV4}Is7;XdS^p=JL9%p}D_10Ezu|EQA6lUGKy~>TfmfOhsQ(@0`idepO*Wotc@K#5lE&TceKI z&W3^9oSdw>I{mzs5~O;q*XBC!D~oDFi*o&VL1~;uiPjI%+s2Z!4AYy)%K2)@!ilWgrg%=R4_y%n}Ghv2;rb3er$C}Cs#aT1e*MhF_zB5&ZXLjYGX=z< zu3)yaskSxF1oMCp!ZLBAe)-018Ovu$jOFYaNtG`b1fjo zPf$9EmjV2cfvh-cM_uram6^B!!|7sFX8Lj&!0**Z%K`mWi@RpuTkaP?Yl=nwxawOq z1_E5UkXLGlL?gLg{oZ2icUgyVp3W}Da_#Kim(76e1xaeu@n_C42ptZ-89fdb?Pqnk zV^}bUnmd>zWh;cZ=Kza+JX%=wFeB0i0b57byN(N9Nh2RysWuJ2wLQ3sFyL>J2~Ae) z3L@(*NpDh2d@s9snDRgkbACT)Uq2P5eEqOCM=&n&V`_AbD^93#!i5wsQQkum$GOx_ z)lQST5Q}z3;BDtel`Te5p)%M~gxs0u6#DB`bSS2UD3RV{;!FrkX=v~h=ULoT<8`Bx zQPA2ACc^*JGRM6JKQ$UTg47o6q5DvMH!VxiI-qsM(anp{0O#B35&!DU3oWec#tV!@ zPV94+#l?pn_l{JOI4kOGds*I|=3dc=`YGMIRVz%%jVka0Y}h=crjC)A5m3 zFf>3oT=5jUViAR%v?g;o0N*EnOrhUvQm$6 zE(PC$#y=CU>;QQ^avgU?!@PwoBhllwLw$0Xew~(1Tw@t?+XQE=u+6dmxk4C!Vd(K3 zphamqM{PbQcpMPU=x(`WisKNTMw#VWSeJk|#K4gHGnG%}jpSJDpDP$jWuMck1^rgY zxkcdFm_tPI_H(3&fWDtnR7xf^kKBrN}d>p=gL+2m$jC6k{m=}DMn$BHfW&Hw$=`tN9 zIRuxHrBdUypS1$)As%O!LW}rM{p1eb!^#~vWQB(UykJ8BmCF>XXBCB{NS^Iq0dZ~T zyx=*$Mrij^iCmR(M4h(NCfgpgP<7SqYhQ%S;rr1L-hS1Ww3yKVekXHc>WYNfXis=o zyX+8<_2pz1Vv_&t#afieGjDTV|5zG$3!gK&|D?t27VIc(J+4wu95DRJy1@fiY?pfs zV`ufvbWB|)Xibxnm<3}p&0vKDR+U+8TA`7gqK}w&W%7d;?k@p2huUp-3gsJo$sxxi z@lQlWl_iHvw~?o&KD=9hESo4?f64`-OGkTfmugMH>J*5W{#5y_6>J~ehA-SgTGvo; zz5bF_ltQWJ&-087Abt()I|L+^5sn?ZM{7hAf8fC7EIMuZSfeUN(bj)JOF?BJ*YLUc zBRaPQ!NF`(>Vfv?Mso*GfmHV3Gypg>@^yk_&}$2qi<>XNf=bqn z^qXlvBn1sH>*DC9E-?moA~4gQfIT3iIa`~65K57%Ie1Wy_{|4n9R1$! zAA19BG9zv}f9(j^T2^pgzf5anN;yY{X`a7r&e=vluuHoNJ^WsjU>0%M`L)g*{<$!S zu$zPswAZ|t%K+3Pb?s9F@3a-79(4pf2VZ)#>MLL}6lk6vX|_~wUUB_V>r0O@tRZQ#3+0|q{neY@mq@*m^FlDTxSp`=Q`EiTQ;8eN zc`lQ_t``XiyR6bT>@~Ktr!0N1^z-emHCTPB&8+KUdUS%myk=l>J+BXZTV-4#BJol( z;NS}JS1h25>g-I@^d+Ih?Be20s!qH0X;$atyhHMXSq2F=SI-x<6@5&6+6UxiJBs|% z4SuFod#Dvh124^nBQ$ZB(@0o&L2E%}?jx#vK-rY+dbhg#S+83?;>Fk^Z0H2Ko`CNh ziaY+q+x*m2vDCW#uMwSYllDw;5xP;qA7w&@M-X<=^ zV*#4{U{9y@N7I3|;`R19P%Z_es>j3~UzqkkA8oZi(w_U{Y)!IAzjtI$jztp!N0@Yg z45R848<@E1YM&9&OSbwM9a?AQd0>%6sQP*J!x-c$Eo@sUYSUbEOPhiJa#a5RoUruE8wa|*;QUqR6Ql(!h6aQQdLAA|qkFvBo%S~hr zuwgG_B3*5=d94Qr5_Rvyk!P@rJ=v=QlHe&K>>YRXyOxY!-GcMiFS>*B06o5sZ*=$w z$O6`=?T0`8#Mw*Bt8{fbTUhXrE-SHw&XHLtuf4PoOkN8*^{m4OB`7knH^*7~(|moOg5FyX%r>l)D4{ zHP5{*M2*wWvP{oLl|Rd;Njs`8DbKWh!FUc~)&vzDBaG2l9|R^BHaIcaN= zFD}Jgu1EUe8a6KcZQ{DgXUKqSJi~?sJ5?N`r#}D2#c`Cud=9(?3#vJPco^B#dI*F- zu{O9fNt;>_1jldy4)5*J92Dm8SQ1DfN*~QH`?U6#p7fi)2*~BBhgZI|We4FRMqb9lU~?jGG{*Nl z=F1J-M%YqerHc9i)hNEc7?Y!Y0aBco>e5`%e5o3NA!2>9yI*a2%L`$<;zNf0@2Cmb z9V?3!{ycT{d^h@*@UvfOM~N zZNdxTy_GpJ7Ukm(WTOL~#KN%q0`Adc=;cav3R-ePAb;4k$~w^RVN1R_uhb_r_;+jf zsb=w)K?sVd8_N101U0kLwcvRl9Z<+K^Pki-Ox-!p=^>DO1^&re>nYH1E$|tOiqa(%0=F69CU@N#TeG{HHJAb?8HV)m__qt>UFB?-~#uiPD zS&-SJ|NACtHYSLAtc}K)-niyn_B_6iXAQy1dH&38&)m`z^TDK(D1w4>$dVp}bI=Bb7I*$9Vs<(ajSqhy-c_HvdF>X)yb}Gr;N|%w2bcfA^hkKTJkFTNR)$9#{ zsq`~ezls<83ayC(Z@m9=#Y%hsO7aYb`#jI|53R|cH3Mt za3VUHdgxVO?r&kRLt%4Fqv(pHsX7gZ(-pP;{%dWZVR4Ca;53_J9SMgP;Yz$*U*xy8 zlH~=DoV0oHwVMt zZ^DcZ{iqID+(|Y$)o8Nv-#DMFvm#*NUwdA&p^jQq2guTSI^&jQ&A(en{yJ@GRT9)K zxeqZ!F!+L$#8YD>mAZ~*hf+K>|D6tg{zzFro{pWuVxQ%C+m$n*wSM#&sFY=1mpPPj z^@xhB3;|%b;(Y<`p+lI{0kclCp!>>1+VwP2pyPp@;Rl&fVBs+=r2YMPn8f`1^lG1h zQ-Z+a;b3r)q}nEOgN`$uX{-o9V3_N{UJ*%!iVApi=Wy0Lq>ukqbBiJZs2JaM zv)*LU`Cp znlIl|C{1i1yKd?aJjuZ?1+Kb2gAJLy5XF@7jdc#J573{4lf>V|0+J&-Op4QzhySA$ z+76)k>z@2;$Wybba;z)0I#;mAl|**SJS;e!8z+5cQ*sv|c@A;i@jV>Tv9Z{YI`LJF z(NUiUmNBkJiH4yy*~~2`pKm7C!RgAVwDWWWO3LAhJ%~r%E86V_o>@uIpm`m|5bGFf zQ0H9J7H#L&At2a?2~iqNEgN(*uH%E;IUrs1GP@ancv09}K+^i8Q5BWp;)OE|Qm~mw zSYCNzL$=eoF-aQzQReJIi=?a5d-J}IaW}MFTA67l={eA_xca`N%>vK7%Z$iWO@musL-6Laf;qcW@AA0Eu`!ONSWsdnS%I<+X5FOcV;5W0aHnClvZ<4n3>&>oW+g!$at}0j^U1^d# zB{FAF!YRDlHc66@1fi?7@E5DAr^Iw(f2$U*##nNE0)?kHI{qN%4w(y|h0bGqST8xu zG-Q)~rBbP1JWK#4c}uH+~}op}CB6 zc9HQcH8LMxzZa8>cy=Z}ZXj-vA0_)LlB`CR1wF>L%N?g7bZ1NSR9Lh~>d_XmgwgLS z3`i7t;ZtalG-Ala0oBP@EWVZDD%~G377wDnv4G2-t^XqBi`cqNaR9 z`)G`rH(;n`I0y2~sCMKU2F~;I^@(76gDV5*2wFGO6l4ZYX?>Gi5MeY3p2iIvRAWG1`_;R%FFd7(Jmx!a^p{$u1>V1@3L=uXH5Wkd^98gfdE=YN_fl3|kz zTvUm1TbZIYji#;f-}Xjcc=iq7+Yqp!B&-5=5FL51isJapMloDg5nZ{IXAy!= z(Z`Wh^Mz;e$td|or~HtGix^I;XYy|$H%SO30l@LXytvZT7B&1Nr>t8gI9%b`D`>pb zhIqO?o9wVOzAihgI(~AZR?ICL3F{JR1#@EGUG!Zsfv>@Hxk=6bjlAL>tipmsv)q1E z`Zq6W^Fhp_ZCT~=ussUm2_0F_hh_T=S5kde4dTQsZ|$0#BU@2HFgeT(qX> z<-eO)XjR&*0_hDV>gQH(i`!GLwmX)*%vc%2uwwRO7wefLn2ov2r zU0mN!-3cxr+}ZdB=3`D8W7>s)>(I@VUZ_eY2mI@>G&QH!Sfs1+=oX%EwF!uh*AAUWEjO(>~3Nl;0lovb)llV4~OZ$2qX# zPZ*a37l!vJoWF^0SXhjL>18j$A&Cn)$A8l0XI0+GT(%94-~Ytjx6-S0b31Wt0$by| zoHH?_tAFl)#Chd)%QXb7FdzyGtPojn3`Wf33HL&NN_H<1oBfvjM1;#J(R$k!Ztf|J zi<=3?J<*J@2x`$mrFxUazW>0v(g*6Cl*EyxTEtVBLHE|NTf zH4Mp&M3A#W(BA->9C>;905j<uc!exoir!A;8csBcIn zu44+bWMX;3fd-A$!;VSPvRQUR?>|^@`;Mj-^X}FP`cO8atPaSSUJRsEp*Y!M_^-&F zmCo~Xt%w)-y-6;t~v8fppKWv=>x13|i78n#x? zj)b6!b4jB#6G01W0M~3fK=e}kRxs;Px1#I_MSr|+x6Cdle~)A(-uGo}p>ZvyVd|*m z+gH7s!E19|VFAiS3TZEvsJKsBo1~u4_(^nvvOXXEDq2<5Ck-3zYIzTw+fg3*&IGf4 zA8}`*&N|KvOZi>_aE!MWQPBdq9E5)0t}hFX-1DiI6Y?1B9(qqgpN)m^u1j)aQ9dmK{WKHfU|&^zR*`2O_nELJ*4 z3;JJCs+h#vqN8+50q<_PViT~`;>hgDI7fxoy96ZX#xPUXJlPtVWi#8EBn{su5q}vpULRk zHmGfQ4gE@(eT})Pef9V0?0mDt`Dl^Pidj2{iSVOO>pAAunuTvc1nshQWXs(mq83A< ziDdd9KcaXnSoNX*a9E0@d2`cTHLur1wt_v;h1ZX9C8q~oo-8N=o9tPzeT^Dc(L~-3 zyI_D46tk?6^JuDMv;*!5s8Wnq5=1SfGYv@DSVGe zI4S`?GQK~{{P6sH1*gAg!(oSAtJz?JL*P8Q9C|g3?~m|w-@gBC`K)i_VQcNH_uE)O z=#v+9g%!K#(h}UVW<7?9)l-4SgYvBYI_D_(9Muxk0^T2Xzmc<*qn zrq%w-t_<&nqxp8kDlsJ9YiY*kd!WO2bZDVWQH=elq>qGUku~}{^R6Z^I58oc{Mc8R z_=a#&YaAx;CZIlcgZOK(Wb~)lQLWE#++zZ;e#oxQaem%y?H$t^e616FO{NT?1>w6( z+tmmD4%OjEw2|Ba%ndHX@;c>63j9VEWNGFd0X;i%1W=jDpD=l-Z*Y2$9qB!#dXm6y zs61K6OdgGkb8y&0V8vQsmH|xN{%F_U3K@e*soDXc)!31xcX+$sbW>!xrND`w? z=N(~cv_EL38oYjEzH!z0fIDRtt9i+ZsaQ@IWAk>?Nwsa5h6hZec)Olw?k+7_0h(LS zmq88lZTu?ILKJlGRgQ0IfGmhE)JA@ylj4@TA-;UF#WxS6^M{fkzL;eZVqq!@fr4EF zls{!%F4WVRH(F$MtKM!>-PXatgRwt`#2=}vhW(ZflO48e@_Or0>uJox0qk2OFVF6= z#48po=1++_TKUSTq@3Pnq=clv({-l~b}xgAS_PuYPy!Gs1ics^gXdTbwq@;f%p3D{ zZgD(nUvu{o0!NqYN0>r3I6FW`T&F5_%f2CdR2)eddYxam+^yqYf_wgaT&6hsZz(kM zUeYA+q?mTLr0s=8k4UOH?Dr#JY;%zsGNXK18bh6Z|QzkDv??I$hEL)S>)fO>}TC)mYZ z|7t`+vKzMRE-GBqvA3RSmE|UQ&iWs~nCw9O6zRa&^8J0Q94!%58=D#jpUS7q(_&91 zx-z!SDxiBgTR^9=d5D`IjJ-gd6UE6dhK~atnx3hN8as( z>MR$Bn^6A4&zfjWiQW|V-*v%ebV%CwsW;riHdkFa0P(jk3>(!LIcnl(0`?Y>e^*dU zlm+w~uAf>~T>?EehMY6@(NpNJ(_!dJ_4ij%#|o|ghq$i}i}LH* z9YR7{KpGSjP>_`FRzgDQ7Nm#n8YBdyrIZv)`FJA03`>TXbo{+ zvf2OhIhXgDqW=_34qx%{y&-{Jx=?}n`K@@ zm$h;2X{Gs=5+Lh99=tu)ulm(Ly@g?qdcteId)T=AfS++>|u&kN??**ybQJrbG>1^;%?ZkX!~gScU)xBfL|jtX6_NNOC?UInz5a@ zVc3M|;_TA`Dez2obZK^3Tq(^SuBqevX0}`d^xhW*o(!prq;P!m36r>d33N_#W5dhQ z<2>noJNQp$riAYhj!(Hm`~TwHRD`f!9@C_)b3EEE9=o|PRkK1`KGUt>|IHeTRFGf) zi@SSIAMEy;%?|K$ac-$M*LASbEBJ4M?q9d8s&;z+`<8Wh_@$*x#~({5z4Sw{E&+-$ z{4nk1%zxfO76H6!s59W*n{yrsUAlmW3Up#f#L>`3)dcdH?e}BA=Zh`ga8|t=E{-3@)po3Bp^{YieH3NNGW5z;$4(5KbG$S$QW-<~h6Dus&zBpWfxvlE?gthA?XXp&N>Re#;a#=+$?;7|tSG&U z!|npR3%2iU&DQmrzg8xWY_OiKrX(OXg@bBl<7_*S#Zg@=8K*Sx9{q%Ji+8=Is9yc%H)y<=l7AnQ$r}*S{!U)6~)mj#5rFUwh8Yd1Na8{5gJQRTb~?_c^oaO;&S3_LCS>^sSeC z$CEz43D$0r*yaxDXVLY7N&D@kIp3%FjEv$9FHo}f?bME^!(8iMn8e*uFT9$CZz}E% zh(&G;Y%v7lew{(dM`6cm9=cO{;SNZfgP>g5#AQDyz3w1L2f-U#+dpDpC$7^uMYv69 zq@Zfa%evB>t8@R93D`Zm+cfq@X^cp*_*|)hhps;GQytce)uU9phYWlt2^}XQB(v!Q zkk1!kidT6xUrpgyUfm?G@!>BpA>tSAks5{_BC|OW?p>FLa5h8a_XA#1hkJw3{Eg-? zSYpE0G!GOs;f5T;Y6Jb~Oa6%QWI;bWx1M0=f2LXc> zMFu;cG%fY8kQTZ9y2ij|a8k1nTFLU{kx2x@8A2fGdUN&F_O(6@&f~1 z+vZMUgFZs!+$|;?UHEIrY!g4sH?zc+n=IFt=cklRgyi`{KKru{o(IP=z)`)Jjd0^I+4b!tZB`{T+ABV}kaU{N3b*^R7$g(isfI z=CQho7k{mf4%k&qP5uu11SoD>$n zpv_(kw7>Wg6SJ<dFa1{c92HwHrp2M0SfvF5=7JQnbX)vi+jl3b5)n_^4f*jp*Oq= zfpl%TpXZhk+3$FcIpB?XRXUQH@hE@b2^cg!2$}q|&i;{w*|~$mOZrh+cj0|~RUc#d z&wn&b&dhx!95OQ}cO7*DUM;$3IK`&L+Q7D8rea8o;~c4-dxP}GdrtVPwe~SGAdicj zivqeGfA)wL%dR~W9hZWeYFb4KxSt8mq<^@dW0!?&x2nB}+qbE-$akHYxVO7hU@l9W zrV8yJSQkd5h}yYVdvA}tI*hug05saod*0^OfSjs2`a&fKN5;S>q%w|3e&k_-7epy* zJ>Ps8l8^w%SErCz;zgAgQ zxb-xkKi)Csf0L)tHNVh01p&+Adyg0_3@dBS=|kC(49 zqjQG;#)f3I?fn8{_)hQl7%4%CRKaiGatuco^?Eg6Cax>sr&y!B>X#ZiJEF-263N+#qc_x*@}g(qKem zOGiRC~*Z|!G->e>vl*9K_}Nm-gW&E3EGZON?#Q4_#r1i1TOLW zT})PIS#p|zVHQoFm9b!Yrc?k9)-sX=iftrne|PBwhB~Hk7=KeWm13<}r2u5-OqUPm7hH$sLo8Y_jexW+n!^S!XrRUFG`v0XnY=;vzLVunLWeKy@PS@c4tAq z1UFNOln0gq(fc?oUG(GOQS#*V;2Z|MOCvh1QOG^Th~178;z#IUXmMj>qak~&E8pg8 znZYw~a)a$GwE}=IXDuoo8sPbmr~@zuFhSA>4^y$#i@aOaFp^bG^VbQCA<$; z!W-4jbuW+FWr#UTN8E_fw!z1DMTm*8E!g$RME!g)!OdEJfwt)q@_Oh|rSimk@3L;^ z?F-5`g+vhXOCg5crn&HflntKzEeTu+#tb^jTaay4S(nzhz~&d>I@x80a?(WC8X3QE z4XLfgObR-W$F2M+^Jbl#)PL2J@}xiPf)|AFcilC#wjN$y=YP}B&oafbh1Fu<=*N+( zc2GVx*5>d$-Rz7)M-7Dm(lSufK6TJEG_i2!1yLff&y zMjZK4O^TwfA0J}lVE1ljMLzv?m)v*7phH^7VPQ1)&&VE9y0Q6JC$NoTebp`G+MwXD z+qGMDAsQ?y-SznhJcyW)iI0IVAo9I|SDgfZMJ(V_&ureux8$XcT{i zKC$0X+zBGv2@(8#v1ohyZtGjV&=M77C%LBU^$d%-s%qCLoZuKa>z3+!!t}G+c9bXZ z>fCXKH4#76*pudTZ;o48^x2mCPlZl~!&yZ()QkYed@HyA@0Y3TlTGkvy&0)LuPe?V z8V0VIM{9rY9bdw(1$33|31+PT_zLvFjq;ey%nmMM6`C&fy+v?qEBu4ww!Aj^ewir| z&T4DyR#}5qJ?dn_=uykj2pcCG8!nKT)$Tcr@BE=Qls#-_a9-k*0X1QLU6!zSW7LE= zSB<5#>QAc70*#4UZ|zr%-hTrY6;!BvwJ<{)jlYuLC`ou4vLHlLbf^7FvciMFIl1Xp z#9i`T8sfVCNT=I%$`Br_!mG>Qcge5KE4zaQ{rC~5<025}`erRzpNE6lk|7GcMHAGw z3!Jv5t-pUi5DUybR#&KgB&lc06W-79FpwyT2qQt`8q{DOhh=Bcim$@IYRitK)VBJ| zXX~AEejKsZyt5bIiFw;#Gcli*O{UzqGz*?o9l z>g>{$uKL4QB#BH6a&Pp(e1-}Z7H$p=OupS3kbU zyyF|7WU-K=j4C1lvQ=B`b>Zr9!wz?NNJKUVSOpenoFVRR9T%rbge~Rx_17gsPz^`x zH*cPcvwRo_Dsl;!LGn5}IvN2{;^@syJEO)cQixCG9$0@ufu(3t7CvUD9e`=au04on zNkSK!z@o%FLLCN#xis+G9Tufn`P1?RVHcyB2I{;@z6Zc(cx;XRn|w^YZI~R`O2H5B z69Z`mZ-q+islU>B#`c)wOQMH>xxg33B=zyJXIFX&$Y!#8%2M=WYB4r0qRzRMveRzI z@$SP*?Nm@`(YslHrdAvKPMJ7dzgWf(FTf?9yud9=r}dNCC*Vz6jjqy*iR6PJ8^Kjhg()AN*CMV;t28&c!D>=y2!Gfn6?IZ9!+_ZQba;&8~}l zFYSTJMz>yoiUe(X+BI>--7iFR5(O3CXudmr>-GCe#UeT$q2v~~1U`QyvBEs*Hy`g_ zgq#Bp8gq$TXRpw?CklUH*}X&@_Q%3nh=4;Ulq~NQNfMzlW~@_+X{ys0NUMTmli1jq z3D?$O_11dM|41QzI!TQ^7;<=Y{$ZCGb&zNB=atG?2_DXD;+~083em<%t*roW;cn4i&#@zFQFnGNay8dUHL7os ztb`1ruL=br&6TGoj%PaEoh%w-%RQlA{ld1~L`6l-c&Iye39R$dUb%<)AK({WNpVly z&N@+w!iOu%3vdonIHtN%$P*tlJ}U|S?55pB zC4P)#;wnq(7=!a&DOg_r*K_uOhs>Mk>dTVRUNisi^_NsU6Y4U$LP=@NepC=FO0xIWjwt2Y;zIP6_09@$vJAp#Dk53OqR2ePf?Z zNA!K{hBUkX=@BI5_9$-9{ZFv2BbDS6_zg|<*?;`#*`6;0t#59$5_k5Ac)9N^$qS~S zj2&waSB)EQn)>gXxVyX;;wW@wKUYY=CZm~$PMIKzv;p~5xfr$4COq_r#&_~?Xk3+> zkM9m+94<}Dm)W^uX1^F0;lha}T`1Q__dCoFL_B>+18DnF_+e z%pp&Pv8PdLKRM4YzkHx<+_cpBz9>cHN}}0kdalYZ;4;qQ&R=ST^)C-;> zIrd(7BP2@h#k@aC!?@)aTM;bYE<+D$zP{)S-cTyvzjblZJ0u|LDLkF#7csJnC1DI( zskxTiBg^5ozQyNhf3NTx6LHNJ8rbnFsa(l+X9YYrB+R@xxnZ->p!@!1dUUb2ncjMh zkfWUJYqOa=tl!~%Fvu_h+kt!yw)EcKYbhA9*H~M-&;(@=_A{8j6WB7#@ro&)3Tw$+ zFpfL&jYThg*ZzhQ1hPg*1}7c<{Z-{_3+18RmtF!fmwji>%cDC!hX(*jD%UxoYlSS2 zDb_j7#rAVGac&1D_JxAl!*k^Z-Ca4Sb&~hQ=7@-hI7LMCF@t{p)*3fWjKjFdP*G8# zA;GeI%9b%BnTBW@lb_CEnNPdD34e^KN=d4A{ESHc^q2GP47 zwKO_&r2#L$WWCmUwVW9zY3^UScZd+K1#Y8P>qO8`B&(T6n)9{eDdM%2_{pXiD8#h= zM6IKm&{qP7W@$f-3$w0qdwsvJ;lh+Zjfb68@fo7!gM21--WLLcTOVJp?m*lZJDq`V zhWaIYq{eEMwTAN6A+mG|9&nP6+<0Zs z+2)HRDQ=zbl)y0?A<<%rw?N&D9jL$|=!Bh=9BGPITwMGsJMz&VoYp7G>EY+Uj19x& z^D@FhhcFabQYo=JXCc9!<2P3 zUAFH|RmgWxL9l|z+3Y8G|2Bo$`?i==H)f!+VE5uvMi*S$IVLfQ^s$hL3=r`s ziwb`tQNZt8x0K}R3AMVunB0gj+4;JccSQAYciyANg7gH7L(;Y0BlPBf4HIy?4z^2=?rlutC_Z?REjfUp*Not5X;vIWeQ>jV0CEDpq%em5WN_K`I|9Fd5WL%^wE!twU&K@{k4Z&kwU`n)Z@So zc~MWlgc5@Og_Vp3y{nQTu)2m{gDxxoTvQEjk*cv{xHiW*WtbM9MZIGRgT%ARM;Sn#(0B6vejtfn3|?W|Kgc|!#XC)5MTnxU z%su5dPk1~eY~BbzeN2|B#@+uBwz+S*aVAtPF z>)nQGuAwUG1`<>GH4IXB10Dv{tVDmn1wy=|j$cHnY;F39-1NJmbkCn>mW0XNbVHZf zysyHeztMidxV_+QUT{O0Ty1^zR2z-Mln`q)5NQK-=XG?(E$-$*bC-rFXcrtvB`|p% z4^r8UJ@0er1!CfaU@*q@O3?^xp`LUoLG)6qzD;c9Ol&3CM9Yq}g6~D}=M9-`Ev|Szg5^Xq29y>4Xyu7T5V4QIH)ySqn{P{eIwSTW&j= ze=GUMLcF-R=y;h+XljHfO?<5>3it5vNIMSRYJB~fJVuj;ny?-;`l-l@qW6sU5Ei;w zrWzlmK?MxJBG$V6N75p|gE61zs4h+ZwxWqKLKDQy!UDuVI>6q(F5uBYNN7RM@-Jv% zXM6lkoWQR>sn!PkwI*ZlG3q$I5R50mN|GI9G&GUmIn+_e(V?(YXxGzbhL9C+QB@?5 z4LAGhJEi)X*WL=AF6(xKRBJgM#Bjy}d8$b}6566of)oE!zL8-G0> zswS(Qh#-XncTDp7HGgTdd%p9|#gSwD_}%7#cf<_0Lu9hN%z3Eip`M?QYGb4$y{Xp6 zFN9PCVh))f+~9pc$A7u@k=j>>vO$y-6<-6u$IQb_K`&uJDu_PV!XDaPGN?np{@4QI z=ux{kR(j2B4l!cX4=HF`MjJDhO=`1K?tkm?YTEXG5eyS>c(Sp+E}hpx2~Idac3{R^ zgyTZTNx<%b!g5JIr~=D%-bE6oC4euc38OP^?o%+}ULI1|rcO)g8S-<6ON>W4-ehZD>&gUXTZLn=cIIQET8WCmz6!Ra!N6 zdqQ{7LYgh;;#9||Fo$ccLy&EC#&Bfn4S@_PI>1KC^BF1j2=4A>2V09<)TeILA;VLw zG*OiD>QIvm=ByROxj$y2b7niJEL_`MVcxZ`A;l}}c(G`#`}zae*PJ~%rgN5E1kv}+ z3+n}LYZU(iHn+VO!9YjV6G;p)mK8lO_2}l+w)RkYila*6GK~OYQp zxqAmJR=1sq+|5Y)Z z`m=o2?oHNK2LCSSs;9`vWX+DJ$XI2}KUYc?*&z$+TuJ_rp5(>$Pb|R9>}_BL{CxM{ zZN|!$41+v0(#v$Moae`6o2q}U+;4)yn2Tp1wz_FB?xq^^%gqfO7)vb<%hj&}BtOnAtgY`A6L zo&03UIvF1#S@_<9!voMP9L4}&jiE*d!KQ#kNAVg-8pIUrI*`B**vn6~lVx6EnccgB zoYe)cuW=hxM?Bgg+rfUEDHYcn0>9pIN)v|Mx^?RYlu1rbKJQZx3=X(FHJ`4wWqW}bAp7Smu2u1IVmY_?zqfI&um2q#O%$2&9($7-dTf>ekQg9X`^IY zG!1`zLc&NMmX4<8TkY>Uksp{ykzTVtZ0S7a!Pt%gg6G6$T~X3OBctm^iwG%FSh77@9+k zn^xP9^$!lFKt6x@68dSts;j#j12XG>q-H*y!E4bopP&S?7XbJ==}>#mPu>`7*W1Kp z>J@rRV#X^N4PUJMhB}LMmWFL3vD)9!@LSyz5}H5<=q@@7mj_<^E}WUdw#tkeJ{-Id z>Y)~Uxg#k6L2y~eRiFU$6?PJM$T*qxV_<-C9BXP0;NT%J&{XC(twNqnnNtpeK(6m+ zgP$Q#9OklRR?Kr-Z+UI4symA6yAJMk3Df(|1vAAwvL?@+I}cq9czQmLZgeelh6{}J z|NMC<Xme~n==sbS-br?Bk&&Ey3(}E= zzAnj5OvI|1ivIB74$hC0&wtipcoSISf9^3(=uETxey7QTg9UMHenb4unxwsuEaVz} zfdZXS^h5=T^#dn;;2qez65Y~^wm-Sra|)0?t^4zPcl3c-+PaF(b5Bn}Ro0hf3qqHt zJ96L!An;)t$e^nwvDaOAU`TL4?KN>9KJRmNu=S;4H1)z>3?)WgPGKP)Ijd?L5Pu$@ zL(A>y8UoNo=E#NP#Ap=8bS~Un`U;JK4L#ZmW0$Qt-I<{pXVu)d zj+t^$)YjG(O0TxTP8(QtTr+JgWvV5H+?i=#@vSN#bf-Z3TSGth; zbmg0MJ1qGw1mvL9VxGnOjGw^?I8p785hHA*??X4J8OWKVOOiffAVQc}zF$m7*wUZbqODRDSmNhh*$MPh_>t z?WdEz%4itvuTz*qHvd#`USXy>M@0r__5zsGbI672{{H^Ut0uJR2xQ#}w;0TPs9w35Ox?9%t;5J4jAdf@hu~na?FqXS zzm!zA_N!N5LSau$O?6}rzWq!h{jFVDSy{u#Xd69fn?r(KdLsr)(}=qxIZj}j{`mfV0`Sx@$jIKN6^vt&M{n124O2dlYa~jo=R=`BDsTsfI`-_)8Xo&t%pLZ zuh0r3*@DjDAI>=4lwMw#E@MwJHKC---@?%6MtQ?%X80wR3{(8tC+JkAg1}$&PmQdr zEB_v*S_4rtEQM^b1!X#UF;lD&oWSMOTE9@F@&iO(m!h8^pwG+H$1 zvrpwl1Sa+65yLZxsg%!QQcJ zwX=Bg!486Kb*ip>(T%n#sVKI{z(0Q&T9A%gXQYSBX)K(AZVP3R?xFL8XBaY zb0i9;*o`Q`p#L%kBC;MmdSreTmzw#!GXxYB`u7ERrEkuHA-;oNiV5;LT74b>#n!<3 z=bumnB8iIs7z%`X9o-A|G%zqDavFc`v`$L1{BxNDmf-)skWfhgn844*dCecEn@_eMbaMZYNASzcO>f`SeCgim#SixOgUH3Z( zxXt=LJd8F)Q<->Uz)>e z$0wS%Cxui0&N0y5>WN=JU%rHm1EmS#s&urpI;bsB&?luZ*w)OBCmd(u2`A^DW)uMd!SzH? zYE&~$i}59puAGUSn}zH;hi))7t5gA8#J~vaYar~8OkiN(@OA!50|$N!adR`c?8@5O z=n>crYI+DQsg79-3>*m9B5XJG_@t_p+px|ttaqthjzj_*XdWe|01BY)NhFR*fkf0g z{zZn2JK5WJ2Aus3SBSb>0e*SodY9^Cs!!2Qd)s+4kN3pU$zT1RJgTJc_6+?Z9J%DE zoF-T?QTY}+czZ3CIXg`RMzrZC450h@c?=dBZ zH;}ZOzZ{cKXKiRD{>XuW&4sgjQvM+Q!B+PWDo0#MccL{a;9j~7Z_h`{X?l)Lsf2Ft z#TwecJJq7G-27^4YQ>e6cOcID^D@6OM93v1B-pvRm3XM-f!i&!6+}fF?n3*gJp>m+ z+JK&%#-ek^&YRiJgP!~re;hi$6tmiE&m^allz@sWw5VvZ+#Cz&hl5}IL!XFER= zf{Kdt>Ya1gH(YYii&5OucJ}r;MUS&!D4)WjqV9VJhC>};1T}MIabIg|b*7&tMLsh& z&V=sGw&;ZOKF-~eN+3|jTm#}~>^Ix&V{oWMsxvw=^7i!9GlzC(X9vJsq(z!|I`m#= zyMLpcg*pAFsdz=L=+OjrkUwK%Q!lc_@gX1_LS%@!q7ir2E&wvw;8t)qBoJGA72|Vh z>0mw+#(c##qT!_uUT7?+iKBd$Jpt2?9zQCClfJUtTk;-RYiaEvFWY7`lc@Y@mYX|w z*0I0?=0iBZ^HrE`QGX`}s+wfM85G)6+}W9_%lq~XA0QF61zEnz>%9Bl3bHD}sy>yL zmR1fdbFvlgw4$OSvK2<+a7}IPhen3#etu$EzMGF`f^QKxTw(r+lR{CitgLjrrs3{2 z{eChaiJ}t6ycru1XvhEx_Kan*Bs|M8_0m*L7bH6Hrk}eQ^lGE-j1ii}>!EHv%G|rh z7-s?Oe^b!bk5Vwn#RK7+yPcgiG4feSE`Kcuu^`kn@p9Khe z7TB1k_Q?|nqw&j857=4oTR$ekqnEvyEgZZVMcwgmNf?tpoYO53y$!)7Ssc!hoAw-; zod9j~+?js3xkZp)RP?jftQ~WvmkH+J!A>6AFM*=K~BZ8kA6^R+eKh_b-x9O%#HhFP_ z(E%=9Y*EqUrvd^i&8tInLXMVJo*H^3Wm2Dy5@jTfM>6@uWApP_tvCr#s`x?F-ac{3 zHt(}=hro6Y8(hs8Hm9#hOC=c3xC2^912{{+f3E@putJYpydIq#Id(Is3XEv@A2DK} z@(#MKmwIA2=bm%VRYipUu)B_ml+$4rW_{hK_}!W>XoQNqLI0=3aQ;ziZ0`!k#d@HNDLW}iYWQum*iNu~c859%oZJPB7e|QJqbMw!m z9G47HkM{zCf~#XT4h|Hh>ZIf}0UbMMmo>eEKW{&Z^p=Fe=eS$$&mUdr@lgNrIlo2) zS4Z6@lFi<(t*hflu^(SXM1ffsc@REU;cVGM;kVeWGL3pO%5Xh z`crROoZbb3$B0m`-(Q|b!`Y(R+uL16@IF4Zy+cP&pOh;AoqlSlu1+G_)Z|v{<>{4I zP=E^z>Z-^;+}zx~Uhqp}YC4RVn3(ORxoa-4%qjdN?+Wc+JK_b=sNhKLzt!}&R05M& z?A$N+0|-Ow1rPxU+naY6bz?LsqXO&c4a0wY;sOcEWfzH)b)h&^zgd34I)r1Hhz2sZ z(`N6l_A$H_aS?$9gT7G(PCc-Q-wsgc;US1f%m*d{e?aEn=6ms6#!^E*pYNgg_mQlc zm5?9-I&>GJU;B8#ogZ?3Y%DZec)8_Z)UPd%vFaC)SU$&Sj1=Y|9{d@I-b&}8knDM_ z-W*{KKb3<_9ezaj7KHASgqKbK@cvZhHW&A9J1p6S7Vp_@T8=oBH@W)t*Y`;)W`aBf64r!#|TFut#3)S63NOk zniSYcgh>ky%o)!>is*&jQ(6HiY#Av&qC;`Zv5u}nPt|XAhW}Ia1`;W3#5Ga)96q;a z4QScaFMfS2kfr+@8HMZp0qw!JYJdJz))Tp7riyxtpdMgtJa$Pr2b-syrH;DHnZD>1 z3iKeE%&;pL89TS=rPQlBQ1AHpdZ0(DB2Az2=1iK^Ni*YU4$0A&_20c=-DaxA z7NGlbXIc|pGUkq?UIf5I7}T3n==l|^Xuji`ur~M3RNBDuLrp>qTXWR>M1FO4==lkuhUgjlErgh zP(63wSo$S7nprg{a=Dj4lazEJr4HsS3_F?$g^K)+*MG-yyaU^y+TWf#H zlm5$Ac5iN&k59wtuv03&6Sn_l?ac7xr10W29@)0<8pHVHX8EDD_bdCldIK&r* z>Y&UWbTX0hvU)TR?%=aFRh*pc%3S?U=+NMcY;BckQ`ziDgL~Vv=`<^sUBe?LDeCLzN774g2M1q3*~CGN zROsj$r(Ss*tDk86_A(RX1*6+*(bwg9MA?%|kf86hj2**6C|t-qxgY(L-o}HqEUx>= zHFzDSE+Z5RQXOCvs~&4@(Qs%($Jc8i?DOl9ycE-?C6<1<zY1;nM$Vi?Nuk~O?1^_lBB((g{CqQivq&$02 z{Z4~9!R$rB%V#3gi7Hd0fhMqP4YhoUHP5KPuloZ8i}?cnZBBA?#Susy=jX`g>X>@9V+ z2|IpqFt9fH^;)deHr8ODzmt<&r*mH{!lL^k_&$2&ej2O=dKtl&+TEAP1_dCTHKg2n zh!Nqv6vHx``c-QBlKF%?l<=A$`Ry~w^LebEM5ll_G1zq*7D;)!Q>(rn&9Z$^bVTkrv{w~-D|xpt%bV;jI7K`@dQoV{K0{wRBqEj&ppZ5(^CoWld*6N$lEqby^2L9 zV04B770>@Erp?eP6MvQ(6Os;Xb>0!%t?%raG{=D)tx;v#dq?UFbPL~75;V$YL+NxU zf+g79%9_6Zuj7L|kt(QI?pIhrA1AB*J9xO4JF(Q({2FH@2eYCX&(9hB5mRwz*qd_~ z({MABLTu;{yFmhsqrvV&5&sT4?6M@ZkRbP~+?E$aAnHh(gM^0YLvhaqA8ruxyCC27 zC5Io%WHQobC`&@vZS_|K^nw;U_t>fVK=BE&eq-AtQS|DnmH$!tT+$sSH#dF|?V52W zK@)SYl{OAl7T`TSc%Vd9z^Md}=SPW4htudzx(7FNc$oUw$m{QILqkJ4I@&wv znG<@kRXKJFS@GRYkBLZo=aqEHPCwL19z>dz4PVH9dcbDREe9tkf-(qV<94Nr;tGuijdV* z>{cfnse1(P zQC%e=rbpUz`9qt1BY#rE7F{rd-4aYu+C)j|@UXJYpKp&=(UPAs?^JK>h1rw=l!WdS zx3aHZ68~?NHObAoXR|dDC;e1N$l_M17a?J(z~0iitL10$Qzr)OvOTTjVfukY;*HDFaGS5R9F z_gb+|-}y}0O13Akdrlf7CW#I4_sCcIq4oKS5hA`ZX1}VjKpw~)bRgYdu{+W)jfrFw zlB69*AUGf5J32Zl+S`A>D`#)dF_hI%;B^2Y}O= zQ&JLhuxz^gtSd}sI-%x{dMi$ZjUwGtx$EQKHq*>X=7HB+rl!9=t89SDQHOBt|Crsd zl42OjrC^|~oqTlNtoZ<0w-#c*NoNHN64m2puYfTKpx4jrx3@k0P8H3Fo2s=J4*%j$ zZn!It=xS32!c95$MBG++$|j-!v(mP8a`!khAAuXh+tVY*C#q@VNG6{H-Uugma z5a-1%e26O@hEbILP?~@W2i=GYmO-DlP0)Ix{q-DhyR~$%e|nKQx55=VQ?D|fslW~& zY5-kv)2E}{k#>|;QZQSCz!4p-^Phe3!AFnpaol$kqbc*%Nmw5F?j-2F~`rlK&PLXN;)1_s_{5Tzq z%{<6uRE6nU#;z*{@m}B#&b_?=XQ(om-{6QZz*ax)nU5ETZ@YzHI28%4R?w7XrF%lBrXZfXH%cK8XpMOx_yy4{3?1MwQ%i*2(uMzK1l~yJ zhB z=~Mda>9e*U@^k0Y=RTV2baIsmQ~QhS6OFnQw+_6;*JS5qCpx(0r5NK_KB)$?E%6Ct+w@(I=|Vn0AzhfrgvWd&o8k5 z@WZJ6z60Tu*_T#!e3dKTIG|-t=!^i5e1dHHxV)t5EaHkc9EKGe4x!^G`?Zb39*l818k$YEgzjpHq>>o)(KxW}7#HV1>f zBAVS_`1lvHIDxD;QgT@z{vo!D1G-{kZ}>Z0@CTtzNm`tD*4q~ri)HBM=yZz>I=RI$ z*99+`yHopol@9labQLi)LcRUhuLM&u35f_y@qgF_1ke{5B(>oAPR7bt?yLB4f5T`a zZv-$(EdWt(c!HJ|i8X!s!v+_NQ$;z&f&BdZW?lzGeS*ZvpO^XF<~6OYsy=tJ)F)I2 zDi-5+&>xdh^0W>!ojI)iwUNf*y$pAg#AH47RV@|1W z$B-G8eE47`muGg-SBby-^wu-a4{V|p40}l5p3cJel)UFAbCzN*=uyriAHtRqM6&ZB z+Y%+I3kl?&7*V0s;Zmn>fu9ID%Yi zBoY~Fw{>zM?vLVB$zF18h*$m!;Fc932wul+tE($E7GiI{l+5Mj^rg~)7O8t2@7>bw zoE+Y-0$=;F-bh*Y$>R%2&=pi^yN8?KNtTB19~H>b?v*yVEPZfExN`Gmk)FdJEF0o^ zsiZyD?1dPxW~{@>&kRY-IbYIEew9T#)0tasQnl!KYq zdYfm|K3ahC=i}oEGk~>JOs&R!r;bb*#``ym)kVD@6%#X~l%8ve6U|`NqZxLPa)rfG zV45jDh1EmM4}w$v9|r;*d=1(CtpkzFcIx^I$r~xGt~|c*|Fz?3ak$(E2?9>1ia#h7 z&xI9KWj(}vH|qHlEROr=s(AF;ee}x3-r1$Tu5K!{dLsAW!r$R!bIf}sS-0GEMcLtR z1iyd0CP(<5{ zHGX9bIzjeXY9aB>n2~UcUgBCn*FmO4CqXg*uzl@M$|@?zK)epw-4GKd2mqB{SA0A* zsFv)Vgg`2v>sebDP@v^pqzkExtnFXJ0PsRhPv13FW$kjh zt)KA0XQ449BxDjq3+!8DgFXTYr=vfS&%Ol*Ew&|SDa-)&N;Ibz))FX*1|IB^hBoDf zJ1zK+X*ogP9d}V8ZSAk;d#(-ht_}NB*4Y>k$;)ki=#2ac9JF+PuW9*i2!PgJ6p-Ua z@#{U^{!?3^^#~X~_a$VmlmIceW0}W(8(>cq3hm(v_*dQW48Ujpq}p@LC{nuTE-DZ( ziyW=PeEE&yPGo2~qfFrbkk{|E>0CdIKF|}jXkTwk$7A%?-;m$FrT{BdJV#%wWvgsp zEYXS+$0nn;U`>*WRr^5L)&?`{_h$VtAn@z`PO|Ka@mvK+kkFhjK}}6f{sgQvd(aYM zsbmC_97je*Fq-}nL!2jfWC7S(Z^YGneL52%&sVM`zH#|D{h@J0wlNW9Ca@s zZX*Y{n;`}LVL~qh@YsnVZ8agP@6qt=q~wS%zw6Zxn91UnMtT`L-G(ICmg~0q=Qdp1 zcRV{6obS;STU_dPcs~_nO8*<~0`pr5J<3kK1(9b?P&q|^P=b8uvwU$lGB-y8>F~`J zwN|%y$Vl>DTY&9iREnF{Gq=G8?|trPJ#Ed!gU@cKPhT3m_6>-g*-?C)j2SO+(D>JJ zN22N^X1!nE^z`f3ultwR9fk{maHatTx%xg6K4u&+o2VisFV@ne$I&FLR4N+*3w`hr zG{AHhkjO;k|JB=F^uZtV+G}+I(?7KBelHAF2F}$3L;1Y@w&SN34`11*dWQE9sOou{W~ zRocEwLkq-XlrC9P)WgF727Xy9b22!IJF+uU2GeXHbu_|rfLS#HNa(=8K*kI?(|yY< z!5Y=a^T{OjPQNy_VorPk?~!iEEoSKdAr}d8E(vpG>mDV@e$J0qB!n3cJ!A(s zt}2$j#BXjI-XxC@hDpi;dnRRc}j5b7?s*Pc2(}UPK5CZKFi;x#P$%Q;qNJtp2P$mW0aCphqbKSRZHvZ2Q0FrYnC%*4S}G)d&V;zy=Qt0zMpswY`i}AQYB6`N z!^00Z%d$nYi(Y^u3p3^*bHIANwlC`W5}v@_q#!M%C>oswq5^CD!a8qn@Ap37?X>@D zB(maPGFB=M8HBsJ-qlJejjn^l(8FDohBpH8LAv|oA6Inm3 zoEdO20TYr^cvaSj8KU)30pyOba-)TDM{0HNhcT^WpXUACV)$tug!TLNxsM}GL5K!H zBp0n;^?hFXbo`>(!amJVx%oK~_x}2ePRjveI^0#mk>Jwf)2DZw#yjSpi}T_OY8q*M ze+S(EUwa3`X>SeU3_D{~{l7PS*R?Vq)_$Dl>)vZD85gctfow-|-H0~(b|@$b zT|gAX(S@9Fa1cOXUjkofq9<*kC%xZBL(@?iY@VHM5=)&epKJK?NG+Ruh8eTW9-+~uG;TsYzbzOA7D8NSZO1!Frj}w+0uf_2hV%G!fvw# z7-08AW$RTxigL(LQkE!HA;iZ}Gxng$%U)b;edzD$!I&K2fX9{AUF_r_nKaXuv)Q|1 za-Oj6|FF4dk^7-3fI!HzdB3cOf(6dBuI$Xr4N^d;L3Tle9-oaf-4*J4E)< zHMiQ>+lzm=+*`ABK|TrCzoAZRLdla@fzYy})nkVD&*x(~OPW2Ty-PHgmss+e@8=DV zJTVfhE{W*Ye<=-vcv+nDPLdGfx^F+ro&6H?NJfc^vPcNC=3>v%SepP^d1sDC-{WY*08!NIaB9COfS;+zqLG z8{aqrXdnfj7zR0xCb5gqfSpy!y`VX+hkF-|9 z#vt{Lwzdp|l|J)oaCzoBlID0B@!MR>r@MXyU=i)353sUhN?82SOjPU1cCL>Z0xp`# z3scx1)-nj8&c>6q_ zj%4WjKc-OY|5mjbqTh!8-2A1?TrzTP!B2ZYT_!o_wJdiRVaYU9p<@kd0|_$ncTuBe zIEse+)IJpv5F2G#r+C(ZKsh%!k+hG$@}GZ3AAU%WFGgu>>kk-Q%V!5XJ_n8M0sy<& zT@=P`w0R*{K<5Iv{g(|tsB{GYPQdAwmrH?DhpM4(K^G_JeE}c1e3=i?WG&qq)*Tu# z%RS+MmuVCr1RE*yxm{L}!~9!_0O%*LwYh0E?Bt#$?H21akcBZ)@6&y)bgh)eK`4#lXd!G8KFv{F9w^ZTG zEU%5}nwy$>%Lp=RXjucW_2cgtHGn~(4E<+2;+%-NC7$Cy(`qnpSIr&|aN}*Ai^`cb z@>BvRv%38-PYjRMi|tTOI4jJBer>kLc6zhNHxWt=%S96|W82J4b)@ zRp%uhnXpafoS)y)7Z$u>V-DE>crIMN@We+@z?3FtuOY@p@YAZIq>Fu8N$4-h&iN3%RV*&DU*9)wzy}+|T)Ae}o zfryKUDhta|vHc0*ywW#k#+(vQNp3D*mD0NQ_RoQg*O{#oDN|xKnpdW|YpTdAT-HzZ zNYYIMa%vmbg+>1Ldx=z;rMMQQ!B??g&Q7+8iT#XI8PQ$W*+_HdLYx=y-R ze|*o4cuA++P6mlBv`YoG?lYra)pmxD1}{$10}q(iqy|MMeV^uXg2SzA@BL>_!m886**fo>zAZ)0+eWxsWp zY$*FPw##^9s$eeD*Opz{MOrJ{_GWaIqhfw+S)J;(ClxB9b`9gCde6>H?ixJa&y18) zk6pAz$2BVdj^BnVCmmj*)8!u>@k#^l0aa&kaPZ0GtUt`3b3}aMWXn(fojF)2o!;gh z+-gSWj7Nm=AX5f64W1l&cJhI~u;2SX$?od4bvITs?9tu+5>|4Cb9(UC#3RmDn=KFS z3Kn9JuJ)Tx+OSI-NMM{AX$`8v5J(jAbO}&IN7pqC&mP+uer%`Wj^uygp#0BrHx$;2 ztdVAtew;E!n{07cVE*5TvbCRb2;g-15{Nwb6(mV#KEY0mr=Qg^%1k%_tw_7KZY+M0 z8FF^Ycbu7h{NBQ1N?t(}tF#9L7{Or{gE|cA@k~}qzBQVFp4Azt$D(he%3o{knh22x zD_z?;0|UG*K{P+C)PB?*jAv~NlQ;JCN8)_{G8dV;HEV@dZpAsjYk4xIRL!u z{1*^H5RbN}<^a3+`M@EDZUinQ?^FznVuHqovk0>Mj3V#;W-NLbgVbCC>FVh@Xlv^j zI8(C9o+Bl=?}>&E9d6{x$6-Df?Fo9ABX(iJe+l*HCb$@xN1|@vA>k#E zDBb%P)3B75`&KtjE51SPF|oCU1DRmNTn~j5z$=L#e13hpQRAvLma^mmSQ}k<3spuQIyXqp?C$ANzzM>A1i_>LOF5CM6*3kK7Xdg9G)1W&7BBFHREMq) z9XQVF>gs72OJ1r1cBTdB%;$qMwK9)hDF(auoca}Q=|(H=4aSlDZ|@gf(31(C*2ZHj z+P%h+=cVfyCPk}`MQy$WmS3GmWr^oz#91ZPY)`7rKE8?&1F*CE9*I+Sb~(AZJW%T* zLvQ*cC!|J*i_OZ#j7agJ>t*v_)QaSAg4~FhhNH@7aXHu}z!-8NAab=Ubj)L5KmFS_ zFlI(cSENS?48jREHWMYAv)Y42Wd8~*Spn6=6%M$v3TR9Xn?x%p6%pjyEEH9;!l16r zR@i^S$^+(lzL-A8K7aMCpxePS9KbjW!7PVZvEiQnD^d%ozsSr-HyvN*Lxi#MZPfZmA5+mPA zy4^rq1*69S(1sKFuT&O@et>w`oXxce&TNYU48!}8hRAwnz%>AdI=DpRSPnrdDk}8* zS7!R7j;kmgvnK%_fFmBeXo@DdD=^6KTrZlSbNP?Gj_Bj)kj}naqG>0xbbH8tdU0U4 zt7HA7?BFrzw`skSavW1kTo2|3$d6<39a!R_x`)gnP2rL2N}K&Qogd3#H=1e|!^VNz zcZ3;SAE%~X`wtlT4Ix6(dZDiiD1|}Z@VO-9 z)|<>&ZB!E;@pXN-@Nvy1XyypwGBmgr%AY&Ndm2^*PNuhiaJ=CGsEs}SO<)Ae2^$+l zGr)hjkget>22c1NJmF70@+@M4>UH_DnVd+wmBD{7#>#`HJF=nNVF;j;Y5oe1Z{4H4 z3`VhAOPpioTzhxZNDWqUiIVgDxy3!K<$DG3N_+f`Bg`DOQ|2{i2`P~rk~W&2S2UjJ zvMuayo@y7vvk$Mb+Fn(CoX3j#6knb=x86hgo*)l>=M;`AOKG5z+iwrs7oCqUa40>J zhh3r+)~gkL=0^JVa$tj=hfLuNP2r66bPdUn+1^h#Ue7b<0%?c8at~qk2H@J3R#wJ8 z6E5}aMvO@$vK@LZpdf1Qo3e|A4@YBT#C-AT1y0` zwe2VU(UL(syP-^IgsiT|)OAc`2pnW@@XCMy@?)t+0A!Tgb^&|GGuT&h$se7aowaat zQfOSaD5@ z;#WE2Ql;6ex!a+KtzEJ_Na-&2>({UNY-&mt%ZU^T=lR>WZz(V+K1G*8KF+34TV7!> z@CN!`kWiQg1rK_nIQnlwJa1(-F|F^t$hw4tPMZY0Thp?;ZYSV_tP8KsxOJgZO|AFu zw|f9gSX!ZH*HI&LRP<j!Zv34q zNC99_AWs#FGBuR{@|b76JKOq2=e>GYXp9Ii=5Oj+XYBMroJwB6zJ4d4#=f=7s>__G zz!Eh^V&G8@ZZTdY=st~}A_I)i;T>RMErV{tY0$g+J7QUXGfInr3x%S1AY})f z=3pxpLDaalEenEr18#r0aBiV`gqec8LZS33S0hk0vIm$rX(4_PFe6p}AG3H~!2gxt z`=PROQ7tCt09>`dor#tMX?IWl86Lzr?r=KK7XT}g>+6}CF|l-~oe(jEj|pP7w)H$M z$+_9tTrekx$SQ7pPnJFX0q@~;JW(6r2>3YSQ2;$IaWn8@=kbineH9;FIg{y=+qZZzYm!?Uy@E+coGy#a%u1Byk|Dg>A9zsw5 zHDXk)e1*8Xf+=c!xe1Hjw4$4dF;^}aqb*TWq!8)*cY3ZdYP>|pZ2WkfgG)0e35@>% z1#YQHIh0E76)f=Lvn7=2HoO0LJThtb+3N#%5?H{&4Gjjba-+5r?(37r8c>!0A}^DdHRT4OwJJ8 z`eU#;5I>*F%d??rLf#mDnqj33b-bzH<{1i{5=eHwz6yDSAUqono0*(CLL&u#3H$3$5>P_KHn|>E zuVJ*vT7O$b}C}8DxUZ}X^LzPbO8>Bds9bB zXyiezvtEplw_+P;szhmJu~>PrSPl&L=bAQB6Huf0Y@>pz)Ro!U9u4l_kFfCOdf;** zKAGkDv*pe3Lc67!&}Ab2zK;w)x4G&1zjqy^18M4$-dN3TYwvFV+gR{ky@;xeMcu4% zL9c*tLJi0sxEi&%i)9ewQAd2@^^GNW)W|^21jt~&u9SYzc&8F$yA94EfHB}r(=hlB z&Z69=K&7=?T}+U#w~TU-u2JWa8O$daIK*E^At9&dxKY)#x{=Ch>Zx6ke|0FKJ-o*G zY*2u+0uo|;f;T4D-)^IjELD4mGb&98)c zX6iB+P`t_xX>j-jh1S37d%>x)m{hCSIj&LvL872zy6={}HtprA)4zC>jygG^u)s9n zN_j+_P;jOah{~%Nh$3)GW`;5iQdkSmCd_JDWJ7PR_@q)bY28{#)s<472LbcrE$wVS zxp>mD-g^&YmMGDJO;Y(%xQ4aK@K2kYpZv_fxP}F6$f~qw74sugN7>UJtca7EqE8TI3>7RRq& zCy!zC8B!0@q>b}m@evnHu4-qLmlqk`mG&{tNA-_jImwgzZs9BV1CA^VdI#6wo3wrl zSgLGw#rKZKb4xU5J_XWu+TAiLp3u_Oqdc@nGQ+JpWgu6oswtcWlT!Yd%{sUh7U?8i Vm{}q&*@(c$VRI|9!h_Ct{vWzyaPa^D diff --git a/icons/mob/human.dmi b/icons/mob/human.dmi index 7ebbdc046f0b9030bc69f9f7624b85c9064b4ef1..c98035743d581c8ab32aaa9c07c4d9b335230afe 100644 GIT binary patch delta 6757 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 From 3f1a98e1f36d8f25dc97958381a11ec77e943f06 Mon Sep 17 00:00:00 2001 From: ShadowLarkens Date: Tue, 17 Sep 2024 19:19:31 -0700 Subject: [PATCH 02/19] Adds Juke Build --- .gitignore | 3 + _build_dependencies.sh | 2 +- build.cmd | 2 + dependencies.sh | 34 + tools/bootstrap/node | 73 + tools/bootstrap/node.bat | 20 + tools/bootstrap/node_.ps1 | 71 + tools/bootstrap/python | 118 + tools/bootstrap/python.bat | 2 + tools/bootstrap/python_.ps1 | 108 + tools/build/.editorconfig | 10 + tools/build/README.md | 54 + tools/build/build | 4 + tools/build/build.bat | 2 + tools/build/build.js | 503 +++ tools/build/juke/index.d.ts | 248 ++ tools/build/juke/index.js | 5128 ++++++++++++++++++++++++++++ tools/build/juke/package.json | 4 + tools/build/lib/byond.js | 209 ++ tools/build/lib/winreg.js | 42 + tools/build/lib/yarn.js | 16 + tools/build/package.json | 4 + tools/icon_cutter/README.md | 23 + tools/icon_cutter/cache/.gitignore | 1 + tools/icon_cutter/check.py | 133 + 25 files changed, 6813 insertions(+), 1 deletion(-) create mode 100644 build.cmd create mode 100644 dependencies.sh create mode 100644 tools/bootstrap/node create mode 100644 tools/bootstrap/node.bat create mode 100644 tools/bootstrap/node_.ps1 create mode 100644 tools/bootstrap/python create mode 100644 tools/bootstrap/python.bat create mode 100644 tools/bootstrap/python_.ps1 create mode 100644 tools/build/.editorconfig create mode 100644 tools/build/README.md create mode 100644 tools/build/build create mode 100644 tools/build/build.bat create mode 100644 tools/build/build.js create mode 100644 tools/build/juke/index.d.ts create mode 100644 tools/build/juke/index.js create mode 100644 tools/build/juke/package.json create mode 100644 tools/build/lib/byond.js create mode 100644 tools/build/lib/winreg.js create mode 100644 tools/build/lib/yarn.js create mode 100644 tools/build/package.json create mode 100644 tools/icon_cutter/README.md create mode 100644 tools/icon_cutter/cache/.gitignore create mode 100644 tools/icon_cutter/check.py diff --git a/.gitignore b/.gitignore index 2833549fe5..f5ab48609c 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,6 @@ temp.dmi node_modules/ package-lock.json + +# CBT Things +.cache diff --git a/_build_dependencies.sh b/_build_dependencies.sh index 8b6659c3a9..a66b3a5a86 100644 --- a/_build_dependencies.sh +++ b/_build_dependencies.sh @@ -6,6 +6,6 @@ export NODE_VERSION=20 # Byond Major export BYOND_MAJOR=515 # Byond Minor -export BYOND_MINOR=1630 +export BYOND_MINOR=1637 # Macro Count export MACRO_COUNT=4 diff --git a/build.cmd b/build.cmd new file mode 100644 index 0000000000..dc791f60c9 --- /dev/null +++ b/build.cmd @@ -0,0 +1,2 @@ +@echo off +call "%~dp0\tools\build\build.bat" --wait-on-error build %* diff --git a/dependencies.sh b/dependencies.sh new file mode 100644 index 0000000000..cba44327e5 --- /dev/null +++ b/dependencies.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +#Project dependencies file +#Final authority on what's required to fully build the project + +# byond version +export BYOND_MAJOR=515 +export BYOND_MINOR=1637 + +#rust_g git tag +export RUST_G_VERSION=3.3.0 + +#node version +export NODE_VERSION_LTS=20.13.0 +# compatiblility mode MUST work with windows 7 +export NODE_VERSION_COMPAT=20.2.0 + +# SpacemanDMM git tag +export SPACEMAN_DMM_VERSION=suite-1.8 + +# Python version for mapmerge and other tools +export PYTHON_VERSION=3.9.0 + +#dreamluau repo +export DREAMLUAU_REPO="tgstation/dreamluau" + +#dreamluau git tag +export DREAMLUAU_VERSION=0.1.2 + +#hypnagogic repo +export CUTTER_REPO=spacestation13/hypnagogic + +#hypnagogic git tag +export CUTTER_VERSION=v4.0.0 diff --git a/tools/bootstrap/node b/tools/bootstrap/node new file mode 100644 index 0000000000..10701bc39a --- /dev/null +++ b/tools/bootstrap/node @@ -0,0 +1,73 @@ +#!/bin/sh +# bootstrap/node +# +# Node-finding script for all `sh` environments, including Linux, MSYS2, +# Git for Windows, and GitHub Desktop. Invokable from CLI or automation. +# +# If a node.exe installed by `node_.ps1` is present, it will be used. +# Otherwise, this script requires a system `node` to be provided. +set -e + +# Convenience variables +Bootstrap="$(dirname "$0")" +Cache="$Bootstrap/.cache" +if [ "$TG_BOOTSTRAP_CACHE" ]; then + Cache="$TG_BOOTSTRAP_CACHE" +fi +OldPWD="$PWD" +cd "$Bootstrap/../.." +. ./dependencies.sh # sets NODE_VERSION_LTS +cd "$OldPWD" +NodeVersion="$NODE_VERSION_LTS" +NodeFullVersion="node-v$NodeVersion-win-x64" +NodeDir="$Cache/$NodeFullVersion" +NodeExe="$NodeDir/node.exe" +is_vendored="1" + +# If a bootstrapped Node is not present, search on $PATH. +if [ "$(uname)" = "Linux" ] || [ ! -f "$NodeExe" ]; then + if [ "$TG_BOOTSTRAP_NODE_LINUX" ]; then + NodeFullVersion="node-v$NodeVersion-linux-x64" + NodeDir="$Cache/$NodeFullVersion/bin" + NodeExe="$NodeDir/node" + + if [ ! -f "$NodeExe" ]; then + mkdir -p "$Cache" + Archive="$(realpath "$Cache/node-v$NodeVersion.tar.gz")" + curl "https://nodejs.org/download/release/v$NodeVersion/$NodeFullVersion.tar.gz" -o "$Archive" + (cd "$Cache" && tar xf "$Archive") + fi + elif command -v node >/dev/null 2>&1; then + NodeExe="node" + is_vendored="0" + else + echo + if command -v apt-get >/dev/null 2>&1; then + # Ubuntu advice + echo "Please install Node using your system's package manager:" + echo " sudo apt-get install nodejs" + elif uname | grep -q MSYS; then + # MSYS2 (not packaged) or Git for Windows advice + echo "Please run bootstrap/node.bat instead of bootstrap/node once" + echo "to install Node automatically, or install it from https://nodejs.org/" + elif command -v pacman >/dev/null 2>&1; then + # Arch advice + echo "Please install Node using your system's package manager:" + echo " sudo pacman -S nodejs" + else + # Generic advice + echo "Please install Node from https://nodejs.org/ or using your system's package manager." + fi + echo + exit 1 + fi +fi + +# Invoke Node with all command-line arguments +if [ "$is_vendored" = "1" ]; then + PATH="$(readlink -f "$NodeDir"):$PATH" + echo "Using vendored Node $("$NodeExe" --version)" +else + echo "Using system-wide Node $("$NodeExe" --version)" +fi +exec "$NodeExe" "$@" diff --git a/tools/bootstrap/node.bat b/tools/bootstrap/node.bat new file mode 100644 index 0000000000..a3fca88674 --- /dev/null +++ b/tools/bootstrap/node.bat @@ -0,0 +1,20 @@ +@echo off +set NODE_SKIP_PLATFORM_CHECK=1 +call powershell -NoLogo -ExecutionPolicy Bypass -File "%~dp0\node_.ps1" Download-Node +for /f "tokens=* USEBACKQ" %%s in (` + call powershell -NoLogo -ExecutionPolicy Bypass -File "%~dp0\node_.ps1" Get-Path +`) do ( + set "PATH=%%s;%PATH%" +) +where node.exe >nul 2>nul +if %errorlevel% == 0 ( + echo | set /p printed_str="Using vendored Node " + call node.exe --version + call node.exe %* + goto exit_with_last_error_level +) +echo "node.bat: Failed to bootstrap Node!" +%COMSPEC% /c exit 1 + +:exit_with_last_error_level +if not %errorlevel% == 0 %COMSPEC% /c exit %errorlevel% >nul diff --git a/tools/bootstrap/node_.ps1 b/tools/bootstrap/node_.ps1 new file mode 100644 index 0000000000..8e3c96517f --- /dev/null +++ b/tools/bootstrap/node_.ps1 @@ -0,0 +1,71 @@ +## bootstrap/node_.ps1 +## Downloads a Node version to a cache directory and invokes it. + +$ErrorActionPreference = "Stop" + +function Extract-Variable { + param([string] $Path, [string] $Key) + foreach ($Line in Get-Content $Path) { + if ($Line.StartsWith("export $Key=")) { + return $Line.Substring("export $Key=".Length) + } + } + throw "Couldn't find value for $Key in $Path" +} + +function Download-Node { + if (Test-Path $NodeTarget -PathType Leaf) { + return + } + Write-Output "Downloading Node v$NodeVersion (may take a while)" + New-Item $NodeTargetDir -ItemType Directory -ErrorAction silentlyContinue | Out-Null + $WebClient = New-Object Net.WebClient + $WebClient.DownloadFile($NodeSource, "$NodeTarget.downloading") + Rename-Item "$NodeTarget.downloading" $NodeTarget +} + +## Convenience variables +$BaseDir = Split-Path $script:MyInvocation.MyCommand.Path +$Cache = "$BaseDir\.cache" +if ($Env:TG_BOOTSTRAP_CACHE) { + $Cache = $Env:TG_BOOTSTRAP_CACHE +} + +# Get OS version +[int]$OSMajor = (Get-WmiObject -Class Win32_OperatingSystem).Version.Split(".")[0] + +# Set Node version based on OS version +if ($OSMajor -lt 10) { + # Anything under Windows 10 + $NodeVersion = Extract-Variable -Path "$BaseDir\..\..\dependencies.sh" -Key "NODE_VERSION_COMPAT" +} +else { + $NodeVersion = Extract-Variable -Path "$BaseDir\..\..\dependencies.sh" -Key "NODE_VERSION_LTS" +} + +$NodeSource = "https://nodejs.org/download/release/v$NodeVersion/win-x64/node.exe" +$NodeTargetDir = "$Cache\node-v$NodeVersion-x64" +$NodeTarget = "$NodeTargetDir\node.exe" + +## Just print the path and exit +if ($Args.length -eq 1 -and $Args[0] -eq "Get-Path") { + Write-Output "$NodeTargetDir" + exit 0 +} + +## Just download node and exit +if ($Args.length -eq 1 -and $Args[0] -eq "Download-Node") { + Download-Node + exit 0 +} + +## Download node +Download-Node + +## Set PATH so that recursive calls find it +$Env:PATH = "$NodeTargetDir;$ENV:Path" + +## Invoke Node with all command-line arguments +$ErrorActionPreference = "Continue" +& "$NodeTarget" @Args +exit $LastExitCode diff --git a/tools/bootstrap/python b/tools/bootstrap/python new file mode 100644 index 0000000000..0c8d702020 --- /dev/null +++ b/tools/bootstrap/python @@ -0,0 +1,118 @@ +#!/bin/sh +# bootstrap/python +# +# Python-finding script for all `sh` environments, including Linux, MSYS2, +# Git for Windows, and GitHub Desktop. Invokable from CLI or automation. +# +# If a python.exe installed by `python_.ps1` is present, it will be used. +# Otherwise, this script requires a system `python3` and `pip` to be provided, +# and will create a standard virtualenv in which to install `requirements.txt`. +set -e + +# Convenience variables +Bootstrap="$(dirname "$0")" +Sdk="$(dirname "$Bootstrap")" +Cache="$Bootstrap/.cache" +if [ "$TG_BOOTSTRAP_CACHE" ]; then + Cache="$TG_BOOTSTRAP_CACHE" +fi +OldPWD="$PWD" +cd "$Bootstrap/../.." +. ./dependencies.sh # sets PYTHON_VERSION +cd "$OldPWD" +PythonVersion="$PYTHON_VERSION" +PythonDir="$Cache/python-$PythonVersion" +PythonExe="$PythonDir/python.exe" +Log="$Cache/last-command.log" + +# If a portable Python for Windows is not present, search on $PATH. +if [ "$(uname)" = "Linux" ] || [ ! -f "$PythonExe" ]; then + # Strip the "App Execution Aliases" from $PATH. Even if the user installed + # Python using the Windows Store on purpose, these aliases always generate + # "Permission denied" errors when sh.exe tries to invoke them. + PATH=$(echo "$PATH" | tr ":" "\n" | grep -v "AppData/Local/Microsoft/WindowsApps" | tr "\n" ":") + + # Try to find a Python executable. + if command -v python3 >/dev/null 2>&1; then + PythonExe=python3 + elif command -v python >/dev/null 2>&1; then + PythonExe=python + elif command -v py >/dev/null 2>&1; then + PythonExe="py -3" + else + echo + if command -v apt-get >/dev/null 2>&1; then + echo "Please install Python using your system's package manager:" + echo " sudo apt-get install python3 python3-pip" + elif [ "$(uname -o)" = "Msys" ]; then + echo "Please run tools/bootstrap/python.bat instead of tools/bootstrap/python once to" + echo "install Python automatically, or install it from https://www.python.org/downloads/" + # TODO: give MSYS pacman advice? + elif command -v pacman >/dev/null 2>&1; then + echo "Please install Python using your system's package manager:" + echo " sudo pacman -S python python-pip" + else + echo "Please install Python from https://www.python.org/downloads/ or using your system's package manager." + fi + echo + exit 1 + fi + + # Create a venv and activate it + PythonDir="$Cache/venv" + if [ ! -d "$PythonDir" ]; then + echo "Creating virtualenv..." + "$PythonExe" -m venv "$PythonDir" + fi + if [ -f "$PythonDir/bin/python" ]; then + PythonExe="$PythonDir/bin/python" + elif [ -f "$PythonDir/scripts/python3.exe" ]; then + PythonExe="$PythonDir/scripts/python3.exe"; + else + echo "bootstrap/python failed to find the python executable inside its virtualenv" + exit 1 + fi +fi + +# Use pip to install our requirements +if [ ! -f "$PythonDir/requirements.txt" ] || [ "$(b2sum < "$Sdk/requirements.txt")" != "$(b2sum < "$PythonDir/requirements.txt")" ]; then + echo "Updating dependencies..." + "$PythonExe" -m pip install -U wheel + "$PythonExe" -m pip install -U pip -r "$Sdk/requirements.txt" + cp "$Sdk/requirements.txt" "$PythonDir/requirements.txt" + echo "---" +fi + +# Verify version and deduce the path separator +PythonMajor=${PythonVersion%%.*} +PythonMinor=${PythonVersion#*.} +PythonMinor=${PythonMinor%.*} +PATHSEP=$("$PythonExe" - "$PythonMajor" "$PythonMinor" <<'EOF' +import sys, os +if sys.version_info.major != int(sys.argv[1]) or sys.version_info.minor < int(sys.argv[2]): + print("Error: Python ", sys.argv[1], ".", sys.argv[2], " or later is required, but you have:\n", sys.version, sep="", file=sys.stderr) + exit(1) +print(os.pathsep) +EOF +) + +# Cheap shell function if tee.exe is not available +if ! command -v tee >/dev/null 2>&1; then + tee() { + # Fudge: assume $1 is always "-a" + while read -r line; do + echo "$line" >> "$2" + echo "$line" + done + } +fi + +# Invoke python with all command-line arguments +export PYTHONPATH="$Sdk$PATHSEP${PYTHONPATH:-}" +mkdir -p "$Cache" +printf '%s\n' "$PythonExe" "$@" > "$Log" +printf -- '---\n' >> "$Log" +exec 4>&1 +exitstatus=$({ { set +e; "$PythonExe" -u "$@" 2>&1 3>&-; printf %s $? >&3; } 4>&- | tee -a "$Log" 1>&4; } 3>&1) +exec 4>&- +exit "$exitstatus" diff --git a/tools/bootstrap/python.bat b/tools/bootstrap/python.bat new file mode 100644 index 0000000000..5bec61b84c --- /dev/null +++ b/tools/bootstrap/python.bat @@ -0,0 +1,2 @@ +@echo off +call powershell.exe -NoLogo -ExecutionPolicy Bypass -File "%~dp0\python_.ps1" %* diff --git a/tools/bootstrap/python_.ps1 b/tools/bootstrap/python_.ps1 new file mode 100644 index 0000000000..f37589f106 --- /dev/null +++ b/tools/bootstrap/python_.ps1 @@ -0,0 +1,108 @@ +# bootstrap/python_.ps1 +# +# Python bootstrapping script for Windows. +# +# Automatically downloads a portable edition of a pinned Python version to +# a cache directory, installs Pip, installs `requirements.txt`, and then invokes +# Python. +# +# The underscore in the name is so that typing `bootstrap/python` into +# PowerShell finds the `.bat` file first, which ensures this script executes +# regardless of ExecutionPolicy. +$host.ui.RawUI.WindowTitle = "starting :: python $args" +$ErrorActionPreference = "Stop" +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 +Add-Type -AssemblyName System.IO.Compression.FileSystem + +function ExtractVersion { + param([string] $Path, [string] $Key) + foreach ($Line in Get-Content $Path) { + if ($Line.StartsWith("export $Key=")) { + return $Line.Substring("export $Key=".Length) + } + } + throw "Couldn't find value for $Key in $Path" +} + +# Convenience variables +$Bootstrap = Split-Path $script:MyInvocation.MyCommand.Path +$Tools = Split-Path $Bootstrap +$Cache = "$Bootstrap/.cache" +if ($Env:TG_BOOTSTRAP_CACHE) { + $Cache = $Env:TG_BOOTSTRAP_CACHE +} +$PythonVersion = ExtractVersion -Path "$Bootstrap/../../dependencies.sh" -Key "PYTHON_VERSION" +$PythonDir = "$Cache/python-$PythonVersion" +$PythonExe = "$PythonDir/python.exe" +$Log = "$Cache/last-command.log" + +# Download and unzip a portable version of Python +if (!(Test-Path $PythonExe -PathType Leaf)) { + $host.ui.RawUI.WindowTitle = "Downloading Python $PythonVersion..." + New-Item $Cache -ItemType Directory -ErrorAction silentlyContinue | Out-Null + + $Archive = "$Cache/python-$PythonVersion-embed.zip" + Invoke-WebRequest ` + "https://www.python.org/ftp/python/$PythonVersion/python-$PythonVersion-embed-amd64.zip" ` + -OutFile $Archive ` + -ErrorAction Stop + + [System.IO.Compression.ZipFile]::ExtractToDirectory($Archive, $PythonDir) + + $PythonVersionArray = $PythonVersion.Split(".") + $PythonVersionString = "python$($PythonVersionArray[0])$($PythonVersionArray[1])" + Write-Output "Generating PATH descriptor." + New-Item "$Cache/$PythonVersionString._pth" | Out-Null + Set-Content "$Cache/$PythonVersionString._pth" "$PythonVersionString.zip`n.`n..\..\..`nimport site`n" + # Copy a ._pth file without "import site" commented, so pip will work + Copy-Item "$Cache/$PythonVersionString._pth" $PythonDir ` + -ErrorAction Stop + + Remove-Item $Archive +} + +# Install pip +if (!(Test-Path "$PythonDir/Scripts/pip.exe")) { + $host.ui.RawUI.WindowTitle = "Downloading Pip..." + + Invoke-WebRequest "https://bootstrap.pypa.io/get-pip.py" ` + -OutFile "$Cache/get-pip.py" ` + -ErrorAction Stop + + & $PythonExe "$Cache/get-pip.py" --no-warn-script-location + if ($LASTEXITCODE -ne 0) { + exit $LASTEXITCODE + } + + Remove-Item "$Cache/get-pip.py" ` + -ErrorAction Stop +} + +# Use pip to install our requirements +if (!(Test-Path "$PythonDir/requirements.txt") -or ((Get-FileHash "$Tools/requirements.txt").hash -ne (Get-FileHash "$PythonDir/requirements.txt").hash)) { + $host.ui.RawUI.WindowTitle = "Updating dependencies..." + + & $PythonExe -m pip install -U pip -r "$Tools/requirements.txt" + if ($LASTEXITCODE -ne 0) { + exit $LASTEXITCODE + } + + Copy-Item "$Tools/requirements.txt" "$PythonDir/requirements.txt" + Write-Output "`n---`n" +} + +# Invoke python with all command-line arguments +Write-Output $PythonExe | Out-File -Encoding utf8 $Log +[System.String]::Join([System.Environment]::NewLine, $args) | Out-File -Encoding utf8 -Append $Log +Write-Output "---" | Out-File -Encoding utf8 -Append $Log +$host.ui.RawUI.WindowTitle = "python $args" +$ErrorActionPreference = "Continue" +& $PythonExe -u $args 2>&1 | ForEach-Object { + $str = "$_" + if ($_.GetType() -eq [System.Management.Automation.ErrorRecord]) { + $str = $str.TrimEnd("`r`n") + } + $str | Out-File -Encoding utf8 -Append $Log + $str | Out-Host +} +exit $LastExitCode diff --git a/tools/build/.editorconfig b/tools/build/.editorconfig new file mode 100644 index 0000000000..d1d8a4176a --- /dev/null +++ b/tools/build/.editorconfig @@ -0,0 +1,10 @@ +# http://editorconfig.org +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/tools/build/README.md b/tools/build/README.md new file mode 100644 index 0000000000..195c9eff83 --- /dev/null +++ b/tools/build/README.md @@ -0,0 +1,54 @@ +# /tg/station build script + +This build script is the recommended way to compile the game, including not only the DM code but also the JavaScript and any other dependencies. + +- VSCode: + a) Press `Ctrl+Shift+B` to build. + b) Press `F5` to build and run with debugger attached. +- Windows: + a) Double-click `BUILD.bat` in the repository root to build (will wait for a key press before it closes). + b) Double-click `tools/build/build.bat` to build (will exit as soon as it finishes building). +- Linux: + a) Run `tools/build/build` from the repository root. + +The script will skip build steps whose inputs have not changed since the last run. + +## Getting list of available targets + +You can get a list of all targets that you can build by running the following command: + +``` +tools/build/build --help +``` + +## Dependencies + +- On Windows, `build.bat` will automatically install a private (vendored) copy of Node. +- On Linux, install Node using your package manager or from . +- On Linux, unless using tgs4 or later you will need to compile rust-g on the server and obtain a .so file, for instructions see https://github.com/tgstation/rust-g + +## Why? + +We used to include compiled versions of the tgui JavaScript code in the Git repository so that the project could be compiled using BYOND only. These pre-compiled files tended to have merge conflicts for no good reason. Using a build script lets us avoid this problem, while keeping builds convenient for people who are not modifying tgui. + +This build script is based on [Juke Build](https://github.com/stylemistake/juke-build) - follow the link to read the documentation for the project and understand how it works and how to contribute. + +## Named byond versions + +If you have byond installations in non-standard locations or want to use few versions at once for testing you can fill in `dm_versions.json` file in this directory. +Entries with "default" set to true will be used BEFORE byond installations in standard locations. Otherwise you need to pass `--dm-version={name}` to the build script to choose version you want to use. +Example dm_versions.json file: +``` +[ + { + "name": "515.1594", + "path": "C:\\Repo\\ByondVersions\\515.1594_byond\\byond\\bin\\dm.exe", + "default": false + }, + { + "name": "funny_version", + "path": "D:\\Repo\\ByondVersions\\514.1589_byond\\byond\\bin\\dm.exe", + "default": true + } +] +``` diff --git a/tools/build/build b/tools/build/build new file mode 100644 index 0000000000..0e202e1bba --- /dev/null +++ b/tools/build/build @@ -0,0 +1,4 @@ +#!/bin/sh +set -e +cd "$(dirname "$0")" +exec ../bootstrap/node build.js "$@" diff --git a/tools/build/build.bat b/tools/build/build.bat new file mode 100644 index 0000000000..56e3bf1171 --- /dev/null +++ b/tools/build/build.bat @@ -0,0 +1,2 @@ +@echo off +"%~dp0\..\bootstrap\node.bat" --experimental-modules "%~dp0\build.js" %* diff --git a/tools/build/build.js b/tools/build/build.js new file mode 100644 index 0000000000..fb3f93d5ab --- /dev/null +++ b/tools/build/build.js @@ -0,0 +1,503 @@ +#!/usr/bin/env node +/** + * Build script for /tg/station 13 codebase. + * + * This script uses Juke Build, read the docs here: + * https://github.com/stylemistake/juke-build + */ + +import fs from 'fs'; +import https from 'https'; +import { env } from 'process'; +import Juke from './juke/index.js'; +import { DreamDaemon, DreamMaker, NamedVersionFile } from './lib/byond.js'; +import { yarn } from './lib/yarn.js'; + +const TGS_MODE = process.env.CBT_BUILD_MODE === 'TGS'; + +Juke.chdir('../..', import.meta.url); +Juke.setup({ file: import.meta.url }).then((code) => { + // We're using the currently available quirk in Juke Build, which + // prevents it from exiting on Windows, to wait on errors. + if (code !== 0 && process.argv.includes('--wait-on-error')) { + Juke.logger.error('Please inspect the error and close the window.'); + return; + } + + if (TGS_MODE) { + // workaround for ESBuild process lingering + // Once https://github.com/privatenumber/esbuild-loader/pull/354 is merged and updated to, this can be removed + setTimeout(() => process.exit(code), 10000); + } + else { + process.exit(code); + } +}); + +const DME_NAME = 'vorestation'; + +// Stores the contents of dependencies.sh as a key value pair +// Best way I could figure to get ahold of this stuff +const dependencies = fs.readFileSync('dependencies.sh', 'utf8') + .split("\n") + .map((statement) => statement.replace("export", "").trim()) + .filter((value) => !(value == "" || value.startsWith("#"))) + .map((statement) => statement.split("=")) + .reduce((acc, kv_pair) => { + acc[kv_pair[0]] = kv_pair[1]; + return acc + }, {}) + +// Canonical path for the cutter exe at this moment +const getCutterPath = () => { + const ver = dependencies.CUTTER_VERSION; + const suffix = process.platform === 'win32' ? '.exe' : ''; + const file_ver = ver.split('.').join('-'); + return `tools/icon_cutter/cache/hypnagogic${file_ver}${suffix}`; +}; + +const cutter_path = getCutterPath(); + +export const DefineParameter = new Juke.Parameter({ + type: 'string[]', + alias: 'D', +}); + +export const PortParameter = new Juke.Parameter({ + type: 'string', + alias: 'p', +}); + +export const DmVersionParameter = new Juke.Parameter({ + type: 'string', +}); + +export const CiParameter = new Juke.Parameter({ type: 'boolean' }); + +export const ForceRecutParameter = new Juke.Parameter({ + type: 'boolean', + name: "force-recut", +}); + +export const SkipIconCutter = new Juke.Parameter({ + type: 'boolean', + name: "skip-icon-cutter", +}); + +export const WarningParameter = new Juke.Parameter({ + type: 'string[]', + alias: 'W', +}); + +export const NoWarningParameter = new Juke.Parameter({ + type: 'string[]', + alias: 'I', +}); + +export const CutterTarget = new Juke.Target({ + onlyWhen: () => { + const files = Juke.glob(cutter_path); + return files.length == 0; + }, + executes: async () => { + const repo = dependencies.CUTTER_REPO; + const ver = dependencies.CUTTER_VERSION; + const suffix = process.platform === 'win32' ? '.exe' : ''; + const download_from = `https://github.com/${repo}/releases/download/${ver}/hypnagogic${suffix}` + await download_file(download_from, cutter_path); + if(process.platform !== 'win32') { + await Juke.exec("chmod", [ + '+x', + cutter_path, + ]); + } + }, +}); + +async function download_file(url, file) { + return new Promise((resolve, reject) => { + let file_stream = fs.createWriteStream(file); + https.get(url, function(response) { + if (response.statusCode === 302) { + file_stream.close(); + download_file(response.headers.location, file) + .then((value) => resolve()); + return; + } + if (response.statusCode !== 200) { + Juke.logger.error(`Failed to download ${url}: Status ${response.statusCode}`); + file_stream.close(); + reject() + return + } + response.pipe(file_stream); + + // after download completed close filestream + file_stream.on("finish", () => { + file_stream.close(); + resolve() + }); + + }).on("error", (err) => { + file_stream.close(); + Juke.rm(download_into); + Juke.logger.error(`Failed to download ${url}: ${err.message}`); + reject() + }); + }); +} + +export const IconCutterTarget = new Juke.Target({ + parameters: [ForceRecutParameter], + dependsOn: () => [ + CutterTarget, + ], + inputs: ({ get }) => { + const standard_inputs = [ + `icons/**/*.png.toml`, + `icons/**/*.dmi.toml`, + `cutter_templates/**/*.toml`, + cutter_path, + ] + // Alright we're gonna search out any existing toml files and convert + // them to their matching .dmi or .png file + const existing_configs = [ + ...Juke.glob(`icons/**/*.png.toml`), + ...Juke.glob(`icons/**/*.dmi.toml`), + ]; + return [ + ...standard_inputs, + ...existing_configs.map((file) => file.replace('.toml', '')), + ] + }, + outputs: ({ get }) => { + if(get(ForceRecutParameter)) + return []; + const folders = [ + ...Juke.glob(`icons/**/*.png.toml`), + ...Juke.glob(`icons/**/*.dmi.toml`), + ]; + return folders + .map((file) => file.replace(`.png.toml`, '.dmi')) + .map((file) => file.replace(`.dmi.toml`, '.png')); + }, + executes: async () => { + await Juke.exec(cutter_path, [ + '--dont-wait', + '--templates', + 'cutter_templates', + 'icons', + ]); + }, +}); + +export const DmMapsIncludeTarget = new Juke.Target({ + executes: async () => { + const folders = [ + ...Juke.glob('_maps/map_files/**/modular_pieces/*.dmm'), + ...Juke.glob('_maps/RandomRuins/**/*.dmm'), + ...Juke.glob('_maps/RandomZLevels/**/*.dmm'), + ...Juke.glob('_maps/shuttles/**/*.dmm'), + ...Juke.glob('_maps/templates/**/*.dmm'), + ]; + const content = folders + .map((file) => file.replace('_maps/', '')) + .map((file) => `#include "${file}"`) + .join('\n') + '\n'; + fs.writeFileSync('_maps/templates.dm', content); + }, +}); + +export const DmTarget = new Juke.Target({ + parameters: [DefineParameter, DmVersionParameter, WarningParameter, NoWarningParameter, SkipIconCutter], + dependsOn: ({ get }) => [ + get(DefineParameter).includes('ALL_MAPS') && DmMapsIncludeTarget, + !get(SkipIconCutter) && IconCutterTarget, + ], + inputs: [ + '_maps/map_files/generic/**', + 'maps/**/*.dm', + 'code/**', + 'html/**', + 'icons/**', + 'interface/**', + 'sound/**', + `${DME_NAME}.dme`, + NamedVersionFile, + ], + outputs: ({ get }) => { + if (get(DmVersionParameter)) { + return []; // Always rebuild when dm version is provided + } + return [ + `${DME_NAME}.dmb`, + `${DME_NAME}.rsc`, + ] + }, + executes: async ({ get }) => { + await DreamMaker(`${DME_NAME}.dme`, { + defines: ['CBT', ...get(DefineParameter)], + warningsAsErrors: get(WarningParameter).includes('error'), + ignoreWarningCodes: get(NoWarningParameter), + namedDmVersion: get(DmVersionParameter), + }); + }, +}); + +export const DmTestTarget = new Juke.Target({ + parameters: [DefineParameter, DmVersionParameter, WarningParameter, NoWarningParameter], + dependsOn: ({ get }) => [ + get(DefineParameter).includes('ALL_MAPS') && DmMapsIncludeTarget, + IconCutterTarget, + ], + executes: async ({ get }) => { + fs.copyFileSync(`${DME_NAME}.dme`, `${DME_NAME}.test.dme`); + await DreamMaker(`${DME_NAME}.test.dme`, { + defines: ['CBT', 'CIBUILDING', ...get(DefineParameter)], + warningsAsErrors: get(WarningParameter).includes('error'), + ignoreWarningCodes: get(NoWarningParameter), + namedDmVersion: get(DmVersionParameter), + }); + Juke.rm('data/logs/ci', { recursive: true }); + const options = { + dmbFile : `${DME_NAME}.test.dmb`, + namedDmVersion: get(DmVersionParameter), + } + await DreamDaemon( + options, + '-close', '-trusted', '-verbose', + '-params', 'log-directory=ci' + ); + Juke.rm('*.test.*'); + try { + const cleanRun = fs.readFileSync('data/logs/ci/clean_run.lk', 'utf-8'); + console.log(cleanRun); + } + catch (err) { + Juke.logger.error('Test run was not clean, exiting'); + throw new Juke.ExitCode(1); + } + }, +}); + +export const AutowikiTarget = new Juke.Target({ + parameters: [DefineParameter, DmVersionParameter, WarningParameter, NoWarningParameter], + dependsOn: ({ get }) => [ + get(DefineParameter).includes('ALL_MAPS') && DmMapsIncludeTarget, + IconCutterTarget, + ], + outputs: [ + 'data/autowiki_edits.txt', + ], + executes: async ({ get }) => { + fs.copyFileSync(`${DME_NAME}.dme`, `${DME_NAME}.test.dme`); + await DreamMaker(`${DME_NAME}.test.dme`, { + defines: ['CBT', 'AUTOWIKI', ...get(DefineParameter)], + warningsAsErrors: get(WarningParameter).includes('error'), + ignoreWarningCodes: get(NoWarningParameter), + namedDmVersion: get(DmVersionParameter), + }); + Juke.rm('data/autowiki_edits.txt'); + Juke.rm('data/autowiki_files', { recursive: true }); + Juke.rm('data/logs/ci', { recursive: true }); + + const options = { + dmbFile: `${DME_NAME}.test.dmb`, + namedDmVersion: get(DmVersionParameter), + } + await DreamDaemon( + options, + '-close', '-trusted', '-verbose', + '-params', 'log-directory=ci', + ); + Juke.rm('*.test.*'); + if (!fs.existsSync('data/autowiki_edits.txt')) { + Juke.logger.error('Autowiki did not generate an output, exiting'); + throw new Juke.ExitCode(1); + } + }, +}) + +export const YarnTarget = new Juke.Target({ + parameters: [CiParameter], + inputs: [ + 'tgui/.yarn/+(cache|releases|plugins|sdks)/**/*', + 'tgui/**/package.json', + 'tgui/yarn.lock', + ], + outputs: [ + 'tgui/.yarn/install-target', + ], + executes: ({ get }) => yarn('install', get(CiParameter) && '--immutable'), +}); + +export const TgFontTarget = new Juke.Target({ + dependsOn: [YarnTarget], + inputs: [ + 'tgui/.yarn/install-target', + 'tgui/packages/tgfont/**/*.+(js|cjs|svg)', + 'tgui/packages/tgfont/package.json', + ], + outputs: [ + 'tgui/packages/tgfont/dist/tgfont.css', + 'tgui/packages/tgfont/dist/tgfont.eot', + 'tgui/packages/tgfont/dist/tgfont.woff2', + ], + executes: async () => { + await yarn('tgfont:build'); + fs.copyFileSync('tgui/packages/tgfont/dist/tgfont.css', 'tgui/packages/tgfont/static/tgfont.css'); + fs.copyFileSync('tgui/packages/tgfont/dist/tgfont.eot', 'tgui/packages/tgfont/static/tgfont.eot'); + fs.copyFileSync('tgui/packages/tgfont/dist/tgfont.woff2', 'tgui/packages/tgfont/static/tgfont.woff2'); + } +}); + +export const TguiTarget = new Juke.Target({ + dependsOn: [YarnTarget], + inputs: [ + 'tgui/.yarn/install-target', + 'tgui/webpack.config.js', + 'tgui/**/package.json', + 'tgui/packages/**/*.+(js|cjs|ts|tsx|jsx|scss)', + ], + outputs: [ + 'tgui/public/tgui.bundle.css', + 'tgui/public/tgui.bundle.js', + 'tgui/public/tgui-panel.bundle.css', + 'tgui/public/tgui-panel.bundle.js', + 'tgui/public/tgui-say.bundle.css', + 'tgui/public/tgui-say.bundle.js', + ], + executes: () => yarn('tgui:build'), +}); + +export const TguiEslintTarget = new Juke.Target({ + parameters: [CiParameter], + dependsOn: [YarnTarget], + executes: ({ get }) => yarn('tgui:lint', !get(CiParameter) && '--fix'), +}); + +export const TguiPrettierTarget = new Juke.Target({ + dependsOn: [YarnTarget], + executes: () => yarn('tgui:prettier'), +}); + +export const TguiSonarTarget = new Juke.Target({ + dependsOn: [YarnTarget], + executes: () => yarn('tgui:sonar'), +}); + +export const TguiTscTarget = new Juke.Target({ + dependsOn: [YarnTarget], + executes: () => yarn('tgui:tsc'), +}); + +export const TguiTestTarget = new Juke.Target({ + parameters: [CiParameter], + dependsOn: [YarnTarget], + executes: ({ get }) => yarn(`tgui:test-${get(CiParameter) ? 'ci' : 'simple'}`), +}); + +export const TguiLintTarget = new Juke.Target({ + dependsOn: [YarnTarget, TguiPrettierTarget, TguiEslintTarget, TguiTscTarget], +}); + +export const TguiDevTarget = new Juke.Target({ + dependsOn: [YarnTarget], + executes: ({ args }) => yarn('tgui:dev', ...args), +}); + +export const TguiAnalyzeTarget = new Juke.Target({ + dependsOn: [YarnTarget], + executes: () => yarn('tgui:analyze'), +}); + +export const TguiBenchTarget = new Juke.Target({ + dependsOn: [YarnTarget], + executes: () => yarn('tgui:bench'), +}); + +export const TestTarget = new Juke.Target({ + dependsOn: [DmTestTarget, TguiTestTarget], +}); + +export const LintTarget = new Juke.Target({ + dependsOn: [TguiLintTarget], +}); + +export const BuildTarget = new Juke.Target({ + dependsOn: [TguiTarget, DmTarget], +}); + +export const ServerTarget = new Juke.Target({ + parameters: [DmVersionParameter, PortParameter], + dependsOn: [BuildTarget], + executes: async ({ get }) => { + const port = get(PortParameter) || '1337'; + const options = { + dmbFile: `${DME_NAME}.dmb`, + namedDmVersion: get(DmVersionParameter), + } + await DreamDaemon(options, port, '-trusted'); + }, +}); + +export const AllTarget = new Juke.Target({ + dependsOn: [TestTarget, LintTarget, BuildTarget], +}); + +export const TguiCleanTarget = new Juke.Target({ + executes: async () => { + Juke.rm('tgui/public/.tmp', { recursive: true }); + Juke.rm('tgui/public/*.map'); + Juke.rm('tgui/public/*.{chunk,bundle,hot-update}.*'); + Juke.rm('tgui/packages/tgfont/dist', { recursive: true }); + Juke.rm('tgui/.yarn/{cache,unplugged,webpack}', { recursive: true }); + Juke.rm('tgui/.yarn/build-state.yml'); + Juke.rm('tgui/.yarn/install-state.gz'); + Juke.rm('tgui/.yarn/install-target'); + Juke.rm('tgui/.pnp.*'); + }, +}); + +export const CleanTarget = new Juke.Target({ + dependsOn: [TguiCleanTarget], + executes: async () => { + Juke.rm('*.{dmb,rsc}'); + Juke.rm('_maps/templates.dm'); + }, +}); + +/** + * Removes more junk at the expense of much slower initial builds. + */ +export const CleanAllTarget = new Juke.Target({ + dependsOn: [CleanTarget], + executes: async () => { + Juke.logger.info('Cleaning up data/logs'); + Juke.rm('data/logs', { recursive: true }); + Juke.logger.info('Cleaning up global yarn cache'); + await yarn('cache', 'clean', '--all'); + }, +}); + +/** + * Prepends the defines to the .dme. + * Does not clean them up, as this is intended for TGS which + * clones new copies anyway. + */ +const prependDefines = (...defines) => { + const dmeContents = fs.readFileSync(`${DME_NAME}.dme`); + const textToWrite = defines.map(define => `#define ${define}\n`); + fs.writeFileSync(`${DME_NAME}.dme`, `${textToWrite}\n${dmeContents}`); +}; + +export const TgsTarget = new Juke.Target({ + dependsOn: [TguiTarget], + executes: async () => { + Juke.logger.info('Prepending TGS define'); + prependDefines('TGS'); + }, +}); + + +export default TGS_MODE ? TgsTarget : BuildTarget; diff --git a/tools/build/juke/index.d.ts b/tools/build/juke/index.d.ts new file mode 100644 index 0000000000..cdc30ea577 --- /dev/null +++ b/tools/build/juke/index.d.ts @@ -0,0 +1,248 @@ +// Generated by dts-bundle-generator v5.9.0 + +/// + +import _chalk from 'chalk'; +import { SpawnOptionsWithoutStdio } from 'child_process'; +import EventEmitter from 'events'; + +/** + * Change the current working directory of the Node.js process. + * + * Second argument is a file (or directory), relative to which chdir will be + * performed. This is usually `import.meta.url`. + */ +export declare const chdir: (directory: string, relativeTo?: string | undefined) => void; +export declare const logger: { + log: (...args: unknown[]) => void; + error: (...args: unknown[]) => void; + action: (...args: unknown[]) => void; + warn: (...args: unknown[]) => void; + info: (...args: unknown[]) => void; + debug: (...args: unknown[]) => void; +}; +export declare type ParameterType = (string | string[] | number | number[] | boolean | boolean[]); +export declare type StringType = ("string" | "string[]" | "number" | "number[]" | "boolean" | "boolean[]"); +export declare type TypeByString = (T extends "string" ? string : T extends "string[]" ? string[] : T extends "number" ? number : T extends "number[]" ? number[] : T extends "boolean" ? boolean : T extends "boolean[]" ? boolean[] : never); +export declare type ParameterConfig = { + /** + * Parameter name, as it would be used in CLI. + */ + name?: string; + /** + * Parameter type, one of: + * - `string` + * - `string[]` + * - `number` + * - `number[]` + * - `boolean` + * - `boolean[]` + */ + type: T; + /** + * Short flag for use in CLI, can only be a single character. + */ + alias?: string; +}; +export interface Parameter { + type: StringType; + name?: string; + alias?: string; + __internalType?: T; + isString(): this is Parameter; + isNumber(): this is Parameter; + isBoolean(): this is Parameter; + isArray(): this is Parameter; + toKebabCase(): string | undefined; + toConstCase(): string | undefined; + toCamelCase(): string | undefined; +} +export declare type ParameterCtor = { + new (config: ParameterConfig): Parameter>; +}; +export declare const Parameter: ParameterCtor; +export declare type ParameterCreator = (config: ParameterConfig) => Parameter>; +export declare const createParameter: ParameterCreator; +export declare type ExecutionContext = { + /** Get parameter value. */ + get: (parameter: Parameter) => (T extends Array ? T : T | null); + args: string[]; +}; +export declare type BooleanLike = boolean | null | undefined; +export declare type WithExecutionContext = (context: ExecutionContext) => R | Promise; +export declare type WithOptionalExecutionContext = R | WithExecutionContext; +export declare type DependsOn = WithOptionalExecutionContext<(Target | BooleanLike)[]>; +export declare type ExecutesFn = WithExecutionContext; +export declare type OnlyWhenFn = WithExecutionContext; +export declare type FileIo = WithOptionalExecutionContext<(string | BooleanLike)[]>; +export declare type TargetConfig = { + /** + * Target name. This parameter is required. + */ + name?: string; + /** + * Dependencies for this target. They will be ran before executing this + * target, and may run in parallel. + */ + dependsOn?: DependsOn; + /** + * Function that is delegated to the execution engine for building this + * target. It is normally an async function, which accepts a single + * argument - execution context (contains `get` for interacting with + * parameters). + * + * @example + * executes: async ({ get }) => { + * console.log(get(Parameter)); + * }, + */ + executes?: ExecutesFn; + /** + * Files that are consumed by this target. + */ + inputs?: FileIo; + /** + * Files that are produced by this target. Additionally, they are also + * touched every time target finishes executing in order to stop + * this target from re-running. + */ + outputs?: FileIo; + /** + * Parameters that are local to this task. Can be retrieved via `get` + * in the executor function. + */ + parameters?: Parameter[]; + /** + * Target will run only when this function returns true. It accepts a + * single argument - execution context. + */ + onlyWhen?: OnlyWhenFn; +}; +export declare class Target { + name?: string; + dependsOn: DependsOn; + executes?: ExecutesFn; + inputs: FileIo; + outputs: FileIo; + parameters: Parameter[]; + onlyWhen?: OnlyWhenFn; + constructor(target: TargetConfig); +} +export declare type TargetCreator = (target: TargetConfig) => Target; +export declare const createTarget: TargetCreator; +export declare type RunnerConfig = { + targets?: Target[]; + default?: Target; + parameters?: Parameter[]; + singleTarget?: boolean; +}; +export declare const runner: { + config: RunnerConfig; + targets: Target[]; + parameters: Parameter[]; + workers: Worker[]; + configure(config: RunnerConfig): void; + start(): Promise; +}; +declare class Worker { + readonly target: Target; + readonly context: ExecutionContext; + readonly dependsOn: Target[]; + dependencies: Set; + generator?: AsyncGenerator; + emitter: EventEmitter; + hasFailed: boolean; + constructor(target: Target, context: ExecutionContext, dependsOn: Target[]); + resolveDependency(target: Target): void; + rejectDependency(target: Target): void; + start(): void; + onFinish(fn: () => void): void; + onFail(fn: () => void): void; + private debugLog; + private process; +} +export declare class ExitCode extends Error { + code: number | null; + signal: string | null; + constructor(code: number | null, signal?: string | null); +} +export declare type ExecOptions = SpawnOptionsWithoutStdio & { + /** + * If `true`, this exec call will not pipe its output to stdio. + * @default false + */ + silent?: boolean; + /** + * Throw an exception on non-zero exit code. + * @default true + */ + throw?: boolean; +}; +export declare type ExecReturn = { + /** Exit code of the program. */ + code: number | null; + /** Signal received by the program which caused it to exit. */ + signal: NodeJS.Signals | null; + /** Output collected from `stdout` */ + stdout: string; + /** Output collected from `stderr` */ + stderr: string; + /** A combined output collected from `stdout` and `stderr`. */ + combined: string; +}; +export declare const exec: (executable: string, args?: string[], options?: ExecOptions) => Promise; +/** + * Unix style pathname pattern expansion. + * + * Perform a search matching a specified pattern according to the rules of + * the `glob` npm package. Path can be either absolute or relative, and can + * contain shell-style wildcards. Broken symlinks are included in the results + * (as in the shell). Whether or not the results are sorted depends on the + * file system. + * + * @returns A possibly empty list of file paths. + */ +export declare const glob: (globPath: string) => string[]; +export declare type RmOptions = { + /** + * If true, perform a recursive directory removal. + */ + recursive?: boolean; + /** + * If true, exceptions will be ignored if file or directory does not exist. + */ + force?: boolean; +}; +/** + * Removes files and directories (synchronously). Supports globs. + */ +export declare const rm: (path: string, options?: RmOptions) => void; +export declare const chalk: _chalk.Chalk & _chalk.ChalkFunction & { + supportsColor: false | _chalk.ColorSupport; + Level: _chalk.Level; + Color: ("black" | "red" | "green" | "yellow" | "blue" | "magenta" | "cyan" | "white" | "gray" | "grey" | "blackBright" | "redBright" | "greenBright" | "yellowBright" | "blueBright" | "magentaBright" | "cyanBright" | "whiteBright") | ("bgBlack" | "bgRed" | "bgGreen" | "bgYellow" | "bgBlue" | "bgMagenta" | "bgCyan" | "bgWhite" | "bgGray" | "bgGrey" | "bgBlackBright" | "bgRedBright" | "bgGreenBright" | "bgYellowBright" | "bgBlueBright" | "bgMagentaBright" | "bgCyanBright" | "bgWhiteBright"); + ForegroundColor: "black" | "red" | "green" | "yellow" | "blue" | "magenta" | "cyan" | "white" | "gray" | "grey" | "blackBright" | "redBright" | "greenBright" | "yellowBright" | "blueBright" | "magentaBright" | "cyanBright" | "whiteBright"; + BackgroundColor: "bgBlack" | "bgRed" | "bgGreen" | "bgYellow" | "bgBlue" | "bgMagenta" | "bgCyan" | "bgWhite" | "bgGray" | "bgGrey" | "bgBlackBright" | "bgRedBright" | "bgGreenBright" | "bgYellowBright" | "bgBlueBright" | "bgMagentaBright" | "bgCyanBright" | "bgWhiteBright"; + Modifiers: "bold" | "reset" | "dim" | "italic" | "underline" | "inverse" | "hidden" | "strikethrough" | "visible"; + stderr: _chalk.Chalk & { + supportsColor: false | _chalk.ColorSupport; + }; +}; +export declare type SetupConfig = { + file: string; + /** + * If true, CLI will only accept a single target to run and will receive all + * passed arguments as is (not only flags). + */ + singleTarget?: boolean; +}; +/** + * Configures Juke Build and starts executing targets. + * + * @param config Juke Build configuration. + * @returns Exit code of the whole runner process. + */ +export declare const setup: (config: SetupConfig) => Promise; +export declare const sleep: (time: number) => Promise; + +export {}; diff --git a/tools/build/juke/index.js b/tools/build/juke/index.js new file mode 100644 index 0000000000..4ee8fbf0bf --- /dev/null +++ b/tools/build/juke/index.js @@ -0,0 +1,5128 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __defProps = Object.defineProperties; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropDescs = Object.getOwnPropertyDescriptors; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getOwnPropSymbols = Object.getOwnPropertySymbols; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __propIsEnum = Object.prototype.propertyIsEnumerable; +var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; +var __spreadValues = (a, b) => { + for (var prop in b || (b = {})) + if (__hasOwnProp.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + if (__getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(b)) { + if (__propIsEnum.call(b, prop)) + __defNormalProp(a, prop, b[prop]); + } + return a; +}; +var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); +var __markAsModule = (target) => __defProp(target, "__esModule", { value: true }); +var __objRest = (source, exclude) => { + var target = {}; + for (var prop in source) + if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0) + target[prop] = source[prop]; + if (source != null && __getOwnPropSymbols) + for (var prop of __getOwnPropSymbols(source)) { + if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop)) + target[prop] = source[prop]; + } + return target; +}; +var __commonJS = (cb, mod) => function __require() { + return mod || (0, cb[Object.keys(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; +}; +var __export = (target, all) => { + __markAsModule(target); + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __reExport = (target, module2, desc) => { + if (module2 && typeof module2 === "object" || typeof module2 === "function") { + for (let key of __getOwnPropNames(module2)) + if (!__hasOwnProp.call(target, key) && key !== "default") + __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable }); + } + return target; +}; +var __toModule = (module2) => { + return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2); +}; + +// pnp:color-name-npm-1.1.4-025792b0ea-b044585952.zip/node_modules/color-name/index.js +var require_color_name = __commonJS({ + "pnp:color-name-npm-1.1.4-025792b0ea-b044585952.zip/node_modules/color-name/index.js"(exports, module2) { + "use strict"; + module2.exports = { + "aliceblue": [240, 248, 255], + "antiquewhite": [250, 235, 215], + "aqua": [0, 255, 255], + "aquamarine": [127, 255, 212], + "azure": [240, 255, 255], + "beige": [245, 245, 220], + "bisque": [255, 228, 196], + "black": [0, 0, 0], + "blanchedalmond": [255, 235, 205], + "blue": [0, 0, 255], + "blueviolet": [138, 43, 226], + "brown": [165, 42, 42], + "burlywood": [222, 184, 135], + "cadetblue": [95, 158, 160], + "chartreuse": [127, 255, 0], + "chocolate": [210, 105, 30], + "coral": [255, 127, 80], + "cornflowerblue": [100, 149, 237], + "cornsilk": [255, 248, 220], + "crimson": [220, 20, 60], + "cyan": [0, 255, 255], + "darkblue": [0, 0, 139], + "darkcyan": [0, 139, 139], + "darkgoldenrod": [184, 134, 11], + "darkgray": [169, 169, 169], + "darkgreen": [0, 100, 0], + "darkgrey": [169, 169, 169], + "darkkhaki": [189, 183, 107], + "darkmagenta": [139, 0, 139], + "darkolivegreen": [85, 107, 47], + "darkorange": [255, 140, 0], + "darkorchid": [153, 50, 204], + "darkred": [139, 0, 0], + "darksalmon": [233, 150, 122], + "darkseagreen": [143, 188, 143], + "darkslateblue": [72, 61, 139], + "darkslategray": [47, 79, 79], + "darkslategrey": [47, 79, 79], + "darkturquoise": [0, 206, 209], + "darkviolet": [148, 0, 211], + "deeppink": [255, 20, 147], + "deepskyblue": [0, 191, 255], + "dimgray": [105, 105, 105], + "dimgrey": [105, 105, 105], + "dodgerblue": [30, 144, 255], + "firebrick": [178, 34, 34], + "floralwhite": [255, 250, 240], + "forestgreen": [34, 139, 34], + "fuchsia": [255, 0, 255], + "gainsboro": [220, 220, 220], + "ghostwhite": [248, 248, 255], + "gold": [255, 215, 0], + "goldenrod": [218, 165, 32], + "gray": [128, 128, 128], + "green": [0, 128, 0], + "greenyellow": [173, 255, 47], + "grey": [128, 128, 128], + "honeydew": [240, 255, 240], + "hotpink": [255, 105, 180], + "indianred": [205, 92, 92], + "indigo": [75, 0, 130], + "ivory": [255, 255, 240], + "khaki": [240, 230, 140], + "lavender": [230, 230, 250], + "lavenderblush": [255, 240, 245], + "lawngreen": [124, 252, 0], + "lemonchiffon": [255, 250, 205], + "lightblue": [173, 216, 230], + "lightcoral": [240, 128, 128], + "lightcyan": [224, 255, 255], + "lightgoldenrodyellow": [250, 250, 210], + "lightgray": [211, 211, 211], + "lightgreen": [144, 238, 144], + "lightgrey": [211, 211, 211], + "lightpink": [255, 182, 193], + "lightsalmon": [255, 160, 122], + "lightseagreen": [32, 178, 170], + "lightskyblue": [135, 206, 250], + "lightslategray": [119, 136, 153], + "lightslategrey": [119, 136, 153], + "lightsteelblue": [176, 196, 222], + "lightyellow": [255, 255, 224], + "lime": [0, 255, 0], + "limegreen": [50, 205, 50], + "linen": [250, 240, 230], + "magenta": [255, 0, 255], + "maroon": [128, 0, 0], + "mediumaquamarine": [102, 205, 170], + "mediumblue": [0, 0, 205], + "mediumorchid": [186, 85, 211], + "mediumpurple": [147, 112, 219], + "mediumseagreen": [60, 179, 113], + "mediumslateblue": [123, 104, 238], + "mediumspringgreen": [0, 250, 154], + "mediumturquoise": [72, 209, 204], + "mediumvioletred": [199, 21, 133], + "midnightblue": [25, 25, 112], + "mintcream": [245, 255, 250], + "mistyrose": [255, 228, 225], + "moccasin": [255, 228, 181], + "navajowhite": [255, 222, 173], + "navy": [0, 0, 128], + "oldlace": [253, 245, 230], + "olive": [128, 128, 0], + "olivedrab": [107, 142, 35], + "orange": [255, 165, 0], + "orangered": [255, 69, 0], + "orchid": [218, 112, 214], + "palegoldenrod": [238, 232, 170], + "palegreen": [152, 251, 152], + "paleturquoise": [175, 238, 238], + "palevioletred": [219, 112, 147], + "papayawhip": [255, 239, 213], + "peachpuff": [255, 218, 185], + "peru": [205, 133, 63], + "pink": [255, 192, 203], + "plum": [221, 160, 221], + "powderblue": [176, 224, 230], + "purple": [128, 0, 128], + "rebeccapurple": [102, 51, 153], + "red": [255, 0, 0], + "rosybrown": [188, 143, 143], + "royalblue": [65, 105, 225], + "saddlebrown": [139, 69, 19], + "salmon": [250, 128, 114], + "sandybrown": [244, 164, 96], + "seagreen": [46, 139, 87], + "seashell": [255, 245, 238], + "sienna": [160, 82, 45], + "silver": [192, 192, 192], + "skyblue": [135, 206, 235], + "slateblue": [106, 90, 205], + "slategray": [112, 128, 144], + "slategrey": [112, 128, 144], + "snow": [255, 250, 250], + "springgreen": [0, 255, 127], + "steelblue": [70, 130, 180], + "tan": [210, 180, 140], + "teal": [0, 128, 128], + "thistle": [216, 191, 216], + "tomato": [255, 99, 71], + "turquoise": [64, 224, 208], + "violet": [238, 130, 238], + "wheat": [245, 222, 179], + "white": [255, 255, 255], + "whitesmoke": [245, 245, 245], + "yellow": [255, 255, 0], + "yellowgreen": [154, 205, 50] + }; + } +}); + +// pnp:color-convert-npm-2.0.1-79730e935b-79e6bdb9fd.zip/node_modules/color-convert/conversions.js +var require_conversions = __commonJS({ + "pnp:color-convert-npm-2.0.1-79730e935b-79e6bdb9fd.zip/node_modules/color-convert/conversions.js"(exports, module2) { + var cssKeywords = require_color_name(); + var reverseKeywords = {}; + for (const key of Object.keys(cssKeywords)) { + reverseKeywords[cssKeywords[key]] = key; + } + var convert = { + rgb: { channels: 3, labels: "rgb" }, + hsl: { channels: 3, labels: "hsl" }, + hsv: { channels: 3, labels: "hsv" }, + hwb: { channels: 3, labels: "hwb" }, + cmyk: { channels: 4, labels: "cmyk" }, + xyz: { channels: 3, labels: "xyz" }, + lab: { channels: 3, labels: "lab" }, + lch: { channels: 3, labels: "lch" }, + hex: { channels: 1, labels: ["hex"] }, + keyword: { channels: 1, labels: ["keyword"] }, + ansi16: { channels: 1, labels: ["ansi16"] }, + ansi256: { channels: 1, labels: ["ansi256"] }, + hcg: { channels: 3, labels: ["h", "c", "g"] }, + apple: { channels: 3, labels: ["r16", "g16", "b16"] }, + gray: { channels: 1, labels: ["gray"] } + }; + module2.exports = convert; + for (const model of Object.keys(convert)) { + if (!("channels" in convert[model])) { + throw new Error("missing channels property: " + model); + } + if (!("labels" in convert[model])) { + throw new Error("missing channel labels property: " + model); + } + if (convert[model].labels.length !== convert[model].channels) { + throw new Error("channel and label counts mismatch: " + model); + } + const { channels, labels } = convert[model]; + delete convert[model].channels; + delete convert[model].labels; + Object.defineProperty(convert[model], "channels", { value: channels }); + Object.defineProperty(convert[model], "labels", { value: labels }); + } + convert.rgb.hsl = function(rgb) { + const r = rgb[0] / 255; + const g = rgb[1] / 255; + const b = rgb[2] / 255; + const min = Math.min(r, g, b); + const max = Math.max(r, g, b); + const delta = max - min; + let h; + let s; + if (max === min) { + h = 0; + } else if (r === max) { + h = (g - b) / delta; + } else if (g === max) { + h = 2 + (b - r) / delta; + } else if (b === max) { + h = 4 + (r - g) / delta; + } + h = Math.min(h * 60, 360); + if (h < 0) { + h += 360; + } + const l = (min + max) / 2; + if (max === min) { + s = 0; + } else if (l <= 0.5) { + s = delta / (max + min); + } else { + s = delta / (2 - max - min); + } + return [h, s * 100, l * 100]; + }; + convert.rgb.hsv = function(rgb) { + let rdif; + let gdif; + let bdif; + let h; + let s; + const r = rgb[0] / 255; + const g = rgb[1] / 255; + const b = rgb[2] / 255; + const v = Math.max(r, g, b); + const diff = v - Math.min(r, g, b); + const diffc = function(c) { + return (v - c) / 6 / diff + 1 / 2; + }; + if (diff === 0) { + h = 0; + s = 0; + } else { + s = diff / v; + rdif = diffc(r); + gdif = diffc(g); + bdif = diffc(b); + if (r === v) { + h = bdif - gdif; + } else if (g === v) { + h = 1 / 3 + rdif - bdif; + } else if (b === v) { + h = 2 / 3 + gdif - rdif; + } + if (h < 0) { + h += 1; + } else if (h > 1) { + h -= 1; + } + } + return [ + h * 360, + s * 100, + v * 100 + ]; + }; + convert.rgb.hwb = function(rgb) { + const r = rgb[0]; + const g = rgb[1]; + let b = rgb[2]; + const h = convert.rgb.hsl(rgb)[0]; + const w = 1 / 255 * Math.min(r, Math.min(g, b)); + b = 1 - 1 / 255 * Math.max(r, Math.max(g, b)); + return [h, w * 100, b * 100]; + }; + convert.rgb.cmyk = function(rgb) { + const r = rgb[0] / 255; + const g = rgb[1] / 255; + const b = rgb[2] / 255; + const k = Math.min(1 - r, 1 - g, 1 - b); + const c = (1 - r - k) / (1 - k) || 0; + const m = (1 - g - k) / (1 - k) || 0; + const y = (1 - b - k) / (1 - k) || 0; + return [c * 100, m * 100, y * 100, k * 100]; + }; + function comparativeDistance(x, y) { + return (x[0] - y[0]) ** 2 + (x[1] - y[1]) ** 2 + (x[2] - y[2]) ** 2; + } + convert.rgb.keyword = function(rgb) { + const reversed = reverseKeywords[rgb]; + if (reversed) { + return reversed; + } + let currentClosestDistance = Infinity; + let currentClosestKeyword; + for (const keyword of Object.keys(cssKeywords)) { + const value = cssKeywords[keyword]; + const distance = comparativeDistance(rgb, value); + if (distance < currentClosestDistance) { + currentClosestDistance = distance; + currentClosestKeyword = keyword; + } + } + return currentClosestKeyword; + }; + convert.keyword.rgb = function(keyword) { + return cssKeywords[keyword]; + }; + convert.rgb.xyz = function(rgb) { + let r = rgb[0] / 255; + let g = rgb[1] / 255; + let b = rgb[2] / 255; + r = r > 0.04045 ? ((r + 0.055) / 1.055) ** 2.4 : r / 12.92; + g = g > 0.04045 ? ((g + 0.055) / 1.055) ** 2.4 : g / 12.92; + b = b > 0.04045 ? ((b + 0.055) / 1.055) ** 2.4 : b / 12.92; + const x = r * 0.4124 + g * 0.3576 + b * 0.1805; + const y = r * 0.2126 + g * 0.7152 + b * 0.0722; + const z = r * 0.0193 + g * 0.1192 + b * 0.9505; + return [x * 100, y * 100, z * 100]; + }; + convert.rgb.lab = function(rgb) { + const xyz = convert.rgb.xyz(rgb); + let x = xyz[0]; + let y = xyz[1]; + let z = xyz[2]; + x /= 95.047; + y /= 100; + z /= 108.883; + x = x > 8856e-6 ? x ** (1 / 3) : 7.787 * x + 16 / 116; + y = y > 8856e-6 ? y ** (1 / 3) : 7.787 * y + 16 / 116; + z = z > 8856e-6 ? z ** (1 / 3) : 7.787 * z + 16 / 116; + const l = 116 * y - 16; + const a = 500 * (x - y); + const b = 200 * (y - z); + return [l, a, b]; + }; + convert.hsl.rgb = function(hsl) { + const h = hsl[0] / 360; + const s = hsl[1] / 100; + const l = hsl[2] / 100; + let t2; + let t3; + let val; + if (s === 0) { + val = l * 255; + return [val, val, val]; + } + if (l < 0.5) { + t2 = l * (1 + s); + } else { + t2 = l + s - l * s; + } + const t1 = 2 * l - t2; + const rgb = [0, 0, 0]; + for (let i = 0; i < 3; i++) { + t3 = h + 1 / 3 * -(i - 1); + if (t3 < 0) { + t3++; + } + if (t3 > 1) { + t3--; + } + if (6 * t3 < 1) { + val = t1 + (t2 - t1) * 6 * t3; + } else if (2 * t3 < 1) { + val = t2; + } else if (3 * t3 < 2) { + val = t1 + (t2 - t1) * (2 / 3 - t3) * 6; + } else { + val = t1; + } + rgb[i] = val * 255; + } + return rgb; + }; + convert.hsl.hsv = function(hsl) { + const h = hsl[0]; + let s = hsl[1] / 100; + let l = hsl[2] / 100; + let smin = s; + const lmin = Math.max(l, 0.01); + l *= 2; + s *= l <= 1 ? l : 2 - l; + smin *= lmin <= 1 ? lmin : 2 - lmin; + const v = (l + s) / 2; + const sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s / (l + s); + return [h, sv * 100, v * 100]; + }; + convert.hsv.rgb = function(hsv) { + const h = hsv[0] / 60; + const s = hsv[1] / 100; + let v = hsv[2] / 100; + const hi = Math.floor(h) % 6; + const f = h - Math.floor(h); + const p = 255 * v * (1 - s); + const q = 255 * v * (1 - s * f); + const t = 255 * v * (1 - s * (1 - f)); + v *= 255; + switch (hi) { + case 0: + return [v, t, p]; + case 1: + return [q, v, p]; + case 2: + return [p, v, t]; + case 3: + return [p, q, v]; + case 4: + return [t, p, v]; + case 5: + return [v, p, q]; + } + }; + convert.hsv.hsl = function(hsv) { + const h = hsv[0]; + const s = hsv[1] / 100; + const v = hsv[2] / 100; + const vmin = Math.max(v, 0.01); + let sl; + let l; + l = (2 - s) * v; + const lmin = (2 - s) * vmin; + sl = s * vmin; + sl /= lmin <= 1 ? lmin : 2 - lmin; + sl = sl || 0; + l /= 2; + return [h, sl * 100, l * 100]; + }; + convert.hwb.rgb = function(hwb) { + const h = hwb[0] / 360; + let wh = hwb[1] / 100; + let bl = hwb[2] / 100; + const ratio = wh + bl; + let f; + if (ratio > 1) { + wh /= ratio; + bl /= ratio; + } + const i = Math.floor(6 * h); + const v = 1 - bl; + f = 6 * h - i; + if ((i & 1) !== 0) { + f = 1 - f; + } + const n = wh + f * (v - wh); + let r; + let g; + let b; + switch (i) { + default: + case 6: + case 0: + r = v; + g = n; + b = wh; + break; + case 1: + r = n; + g = v; + b = wh; + break; + case 2: + r = wh; + g = v; + b = n; + break; + case 3: + r = wh; + g = n; + b = v; + break; + case 4: + r = n; + g = wh; + b = v; + break; + case 5: + r = v; + g = wh; + b = n; + break; + } + return [r * 255, g * 255, b * 255]; + }; + convert.cmyk.rgb = function(cmyk) { + const c = cmyk[0] / 100; + const m = cmyk[1] / 100; + const y = cmyk[2] / 100; + const k = cmyk[3] / 100; + const r = 1 - Math.min(1, c * (1 - k) + k); + const g = 1 - Math.min(1, m * (1 - k) + k); + const b = 1 - Math.min(1, y * (1 - k) + k); + return [r * 255, g * 255, b * 255]; + }; + convert.xyz.rgb = function(xyz) { + const x = xyz[0] / 100; + const y = xyz[1] / 100; + const z = xyz[2] / 100; + let r; + let g; + let b; + r = x * 3.2406 + y * -1.5372 + z * -0.4986; + g = x * -0.9689 + y * 1.8758 + z * 0.0415; + b = x * 0.0557 + y * -0.204 + z * 1.057; + r = r > 31308e-7 ? 1.055 * r ** (1 / 2.4) - 0.055 : r * 12.92; + g = g > 31308e-7 ? 1.055 * g ** (1 / 2.4) - 0.055 : g * 12.92; + b = b > 31308e-7 ? 1.055 * b ** (1 / 2.4) - 0.055 : b * 12.92; + r = Math.min(Math.max(0, r), 1); + g = Math.min(Math.max(0, g), 1); + b = Math.min(Math.max(0, b), 1); + return [r * 255, g * 255, b * 255]; + }; + convert.xyz.lab = function(xyz) { + let x = xyz[0]; + let y = xyz[1]; + let z = xyz[2]; + x /= 95.047; + y /= 100; + z /= 108.883; + x = x > 8856e-6 ? x ** (1 / 3) : 7.787 * x + 16 / 116; + y = y > 8856e-6 ? y ** (1 / 3) : 7.787 * y + 16 / 116; + z = z > 8856e-6 ? z ** (1 / 3) : 7.787 * z + 16 / 116; + const l = 116 * y - 16; + const a = 500 * (x - y); + const b = 200 * (y - z); + return [l, a, b]; + }; + convert.lab.xyz = function(lab) { + const l = lab[0]; + const a = lab[1]; + const b = lab[2]; + let x; + let y; + let z; + y = (l + 16) / 116; + x = a / 500 + y; + z = y - b / 200; + const y2 = y ** 3; + const x2 = x ** 3; + const z2 = z ** 3; + y = y2 > 8856e-6 ? y2 : (y - 16 / 116) / 7.787; + x = x2 > 8856e-6 ? x2 : (x - 16 / 116) / 7.787; + z = z2 > 8856e-6 ? z2 : (z - 16 / 116) / 7.787; + x *= 95.047; + y *= 100; + z *= 108.883; + return [x, y, z]; + }; + convert.lab.lch = function(lab) { + const l = lab[0]; + const a = lab[1]; + const b = lab[2]; + let h; + const hr = Math.atan2(b, a); + h = hr * 360 / 2 / Math.PI; + if (h < 0) { + h += 360; + } + const c = Math.sqrt(a * a + b * b); + return [l, c, h]; + }; + convert.lch.lab = function(lch) { + const l = lch[0]; + const c = lch[1]; + const h = lch[2]; + const hr = h / 360 * 2 * Math.PI; + const a = c * Math.cos(hr); + const b = c * Math.sin(hr); + return [l, a, b]; + }; + convert.rgb.ansi16 = function(args, saturation = null) { + const [r, g, b] = args; + let value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; + value = Math.round(value / 50); + if (value === 0) { + return 30; + } + let ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r / 255)); + if (value === 2) { + ansi += 60; + } + return ansi; + }; + convert.hsv.ansi16 = function(args) { + return convert.rgb.ansi16(convert.hsv.rgb(args), args[2]); + }; + convert.rgb.ansi256 = function(args) { + const r = args[0]; + const g = args[1]; + const b = args[2]; + if (r === g && g === b) { + if (r < 8) { + return 16; + } + if (r > 248) { + return 231; + } + return Math.round((r - 8) / 247 * 24) + 232; + } + const ansi = 16 + 36 * Math.round(r / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5); + return ansi; + }; + convert.ansi16.rgb = function(args) { + let color = args % 10; + if (color === 0 || color === 7) { + if (args > 50) { + color += 3.5; + } + color = color / 10.5 * 255; + return [color, color, color]; + } + const mult = (~~(args > 50) + 1) * 0.5; + const r = (color & 1) * mult * 255; + const g = (color >> 1 & 1) * mult * 255; + const b = (color >> 2 & 1) * mult * 255; + return [r, g, b]; + }; + convert.ansi256.rgb = function(args) { + if (args >= 232) { + const c = (args - 232) * 10 + 8; + return [c, c, c]; + } + args -= 16; + let rem; + const r = Math.floor(args / 36) / 5 * 255; + const g = Math.floor((rem = args % 36) / 6) / 5 * 255; + const b = rem % 6 / 5 * 255; + return [r, g, b]; + }; + convert.rgb.hex = function(args) { + const integer = ((Math.round(args[0]) & 255) << 16) + ((Math.round(args[1]) & 255) << 8) + (Math.round(args[2]) & 255); + const string = integer.toString(16).toUpperCase(); + return "000000".substring(string.length) + string; + }; + convert.hex.rgb = function(args) { + const match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i); + if (!match) { + return [0, 0, 0]; + } + let colorString = match[0]; + if (match[0].length === 3) { + colorString = colorString.split("").map((char) => { + return char + char; + }).join(""); + } + const integer = parseInt(colorString, 16); + const r = integer >> 16 & 255; + const g = integer >> 8 & 255; + const b = integer & 255; + return [r, g, b]; + }; + convert.rgb.hcg = function(rgb) { + const r = rgb[0] / 255; + const g = rgb[1] / 255; + const b = rgb[2] / 255; + const max = Math.max(Math.max(r, g), b); + const min = Math.min(Math.min(r, g), b); + const chroma = max - min; + let grayscale; + let hue; + if (chroma < 1) { + grayscale = min / (1 - chroma); + } else { + grayscale = 0; + } + if (chroma <= 0) { + hue = 0; + } else if (max === r) { + hue = (g - b) / chroma % 6; + } else if (max === g) { + hue = 2 + (b - r) / chroma; + } else { + hue = 4 + (r - g) / chroma; + } + hue /= 6; + hue %= 1; + return [hue * 360, chroma * 100, grayscale * 100]; + }; + convert.hsl.hcg = function(hsl) { + const s = hsl[1] / 100; + const l = hsl[2] / 100; + const c = l < 0.5 ? 2 * s * l : 2 * s * (1 - l); + let f = 0; + if (c < 1) { + f = (l - 0.5 * c) / (1 - c); + } + return [hsl[0], c * 100, f * 100]; + }; + convert.hsv.hcg = function(hsv) { + const s = hsv[1] / 100; + const v = hsv[2] / 100; + const c = s * v; + let f = 0; + if (c < 1) { + f = (v - c) / (1 - c); + } + return [hsv[0], c * 100, f * 100]; + }; + convert.hcg.rgb = function(hcg) { + const h = hcg[0] / 360; + const c = hcg[1] / 100; + const g = hcg[2] / 100; + if (c === 0) { + return [g * 255, g * 255, g * 255]; + } + const pure = [0, 0, 0]; + const hi = h % 1 * 6; + const v = hi % 1; + const w = 1 - v; + let mg = 0; + switch (Math.floor(hi)) { + case 0: + pure[0] = 1; + pure[1] = v; + pure[2] = 0; + break; + case 1: + pure[0] = w; + pure[1] = 1; + pure[2] = 0; + break; + case 2: + pure[0] = 0; + pure[1] = 1; + pure[2] = v; + break; + case 3: + pure[0] = 0; + pure[1] = w; + pure[2] = 1; + break; + case 4: + pure[0] = v; + pure[1] = 0; + pure[2] = 1; + break; + default: + pure[0] = 1; + pure[1] = 0; + pure[2] = w; + } + mg = (1 - c) * g; + return [ + (c * pure[0] + mg) * 255, + (c * pure[1] + mg) * 255, + (c * pure[2] + mg) * 255 + ]; + }; + convert.hcg.hsv = function(hcg) { + const c = hcg[1] / 100; + const g = hcg[2] / 100; + const v = c + g * (1 - c); + let f = 0; + if (v > 0) { + f = c / v; + } + return [hcg[0], f * 100, v * 100]; + }; + convert.hcg.hsl = function(hcg) { + const c = hcg[1] / 100; + const g = hcg[2] / 100; + const l = g * (1 - c) + 0.5 * c; + let s = 0; + if (l > 0 && l < 0.5) { + s = c / (2 * l); + } else if (l >= 0.5 && l < 1) { + s = c / (2 * (1 - l)); + } + return [hcg[0], s * 100, l * 100]; + }; + convert.hcg.hwb = function(hcg) { + const c = hcg[1] / 100; + const g = hcg[2] / 100; + const v = c + g * (1 - c); + return [hcg[0], (v - c) * 100, (1 - v) * 100]; + }; + convert.hwb.hcg = function(hwb) { + const w = hwb[1] / 100; + const b = hwb[2] / 100; + const v = 1 - b; + const c = v - w; + let g = 0; + if (c < 1) { + g = (v - c) / (1 - c); + } + return [hwb[0], c * 100, g * 100]; + }; + convert.apple.rgb = function(apple) { + return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255]; + }; + convert.rgb.apple = function(rgb) { + return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535]; + }; + convert.gray.rgb = function(args) { + return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255]; + }; + convert.gray.hsl = function(args) { + return [0, 0, args[0]]; + }; + convert.gray.hsv = convert.gray.hsl; + convert.gray.hwb = function(gray) { + return [0, 100, gray[0]]; + }; + convert.gray.cmyk = function(gray) { + return [0, 0, 0, gray[0]]; + }; + convert.gray.lab = function(gray) { + return [gray[0], 0, 0]; + }; + convert.gray.hex = function(gray) { + const val = Math.round(gray[0] / 100 * 255) & 255; + const integer = (val << 16) + (val << 8) + val; + const string = integer.toString(16).toUpperCase(); + return "000000".substring(string.length) + string; + }; + convert.rgb.gray = function(rgb) { + const val = (rgb[0] + rgb[1] + rgb[2]) / 3; + return [val / 255 * 100]; + }; + } +}); + +// pnp:color-convert-npm-2.0.1-79730e935b-79e6bdb9fd.zip/node_modules/color-convert/route.js +var require_route = __commonJS({ + "pnp:color-convert-npm-2.0.1-79730e935b-79e6bdb9fd.zip/node_modules/color-convert/route.js"(exports, module2) { + var conversions = require_conversions(); + function buildGraph() { + const graph = {}; + const models = Object.keys(conversions); + for (let len = models.length, i = 0; i < len; i++) { + graph[models[i]] = { + distance: -1, + parent: null + }; + } + return graph; + } + function deriveBFS(fromModel) { + const graph = buildGraph(); + const queue = [fromModel]; + graph[fromModel].distance = 0; + while (queue.length) { + const current = queue.pop(); + const adjacents = Object.keys(conversions[current]); + for (let len = adjacents.length, i = 0; i < len; i++) { + const adjacent = adjacents[i]; + const node = graph[adjacent]; + if (node.distance === -1) { + node.distance = graph[current].distance + 1; + node.parent = current; + queue.unshift(adjacent); + } + } + } + return graph; + } + function link(from, to) { + return function(args) { + return to(from(args)); + }; + } + function wrapConversion(toModel, graph) { + const path2 = [graph[toModel].parent, toModel]; + let fn = conversions[graph[toModel].parent][toModel]; + let cur = graph[toModel].parent; + while (graph[cur].parent) { + path2.unshift(graph[cur].parent); + fn = link(conversions[graph[cur].parent][cur], fn); + cur = graph[cur].parent; + } + fn.conversion = path2; + return fn; + } + module2.exports = function(fromModel) { + const graph = deriveBFS(fromModel); + const conversion = {}; + const models = Object.keys(graph); + for (let len = models.length, i = 0; i < len; i++) { + const toModel = models[i]; + const node = graph[toModel]; + if (node.parent === null) { + continue; + } + conversion[toModel] = wrapConversion(toModel, graph); + } + return conversion; + }; + } +}); + +// pnp:color-convert-npm-2.0.1-79730e935b-79e6bdb9fd.zip/node_modules/color-convert/index.js +var require_color_convert = __commonJS({ + "pnp:color-convert-npm-2.0.1-79730e935b-79e6bdb9fd.zip/node_modules/color-convert/index.js"(exports, module2) { + var conversions = require_conversions(); + var route = require_route(); + var convert = {}; + var models = Object.keys(conversions); + function wrapRaw(fn) { + const wrappedFn = function(...args) { + const arg0 = args[0]; + if (arg0 === void 0 || arg0 === null) { + return arg0; + } + if (arg0.length > 1) { + args = arg0; + } + return fn(args); + }; + if ("conversion" in fn) { + wrappedFn.conversion = fn.conversion; + } + return wrappedFn; + } + function wrapRounded(fn) { + const wrappedFn = function(...args) { + const arg0 = args[0]; + if (arg0 === void 0 || arg0 === null) { + return arg0; + } + if (arg0.length > 1) { + args = arg0; + } + const result = fn(args); + if (typeof result === "object") { + for (let len = result.length, i = 0; i < len; i++) { + result[i] = Math.round(result[i]); + } + } + return result; + }; + if ("conversion" in fn) { + wrappedFn.conversion = fn.conversion; + } + return wrappedFn; + } + models.forEach((fromModel) => { + convert[fromModel] = {}; + Object.defineProperty(convert[fromModel], "channels", { value: conversions[fromModel].channels }); + Object.defineProperty(convert[fromModel], "labels", { value: conversions[fromModel].labels }); + const routes = route(fromModel); + const routeModels = Object.keys(routes); + routeModels.forEach((toModel) => { + const fn = routes[toModel]; + convert[fromModel][toModel] = wrapRounded(fn); + convert[fromModel][toModel].raw = wrapRaw(fn); + }); + }); + module2.exports = convert; + } +}); + +// pnp:ansi-styles-npm-4.3.0-245c7d42c7-513b44c3b2.zip/node_modules/ansi-styles/index.js +var require_ansi_styles = __commonJS({ + "pnp:ansi-styles-npm-4.3.0-245c7d42c7-513b44c3b2.zip/node_modules/ansi-styles/index.js"(exports, module2) { + "use strict"; + var wrapAnsi16 = (fn, offset) => (...args) => { + const code = fn(...args); + return `[${code + offset}m`; + }; + var wrapAnsi256 = (fn, offset) => (...args) => { + const code = fn(...args); + return `[${38 + offset};5;${code}m`; + }; + var wrapAnsi16m = (fn, offset) => (...args) => { + const rgb = fn(...args); + return `[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`; + }; + var ansi2ansi = (n) => n; + var rgb2rgb = (r, g, b) => [r, g, b]; + var setLazyProperty = (object, property, get) => { + Object.defineProperty(object, property, { + get: () => { + const value = get(); + Object.defineProperty(object, property, { + value, + enumerable: true, + configurable: true + }); + return value; + }, + enumerable: true, + configurable: true + }); + }; + var colorConvert; + var makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => { + if (colorConvert === void 0) { + colorConvert = require_color_convert(); + } + const offset = isBackground ? 10 : 0; + const styles = {}; + for (const [sourceSpace, suite] of Object.entries(colorConvert)) { + const name = sourceSpace === "ansi16" ? "ansi" : sourceSpace; + if (sourceSpace === targetSpace) { + styles[name] = wrap(identity, offset); + } else if (typeof suite === "object") { + styles[name] = wrap(suite[targetSpace], offset); + } + } + return styles; + }; + function assembleStyles() { + const codes = new Map(); + const styles = { + modifier: { + reset: [0, 0], + bold: [1, 22], + dim: [2, 22], + italic: [3, 23], + underline: [4, 24], + inverse: [7, 27], + hidden: [8, 28], + strikethrough: [9, 29] + }, + color: { + black: [30, 39], + red: [31, 39], + green: [32, 39], + yellow: [33, 39], + blue: [34, 39], + magenta: [35, 39], + cyan: [36, 39], + white: [37, 39], + blackBright: [90, 39], + redBright: [91, 39], + greenBright: [92, 39], + yellowBright: [93, 39], + blueBright: [94, 39], + magentaBright: [95, 39], + cyanBright: [96, 39], + whiteBright: [97, 39] + }, + bgColor: { + bgBlack: [40, 49], + bgRed: [41, 49], + bgGreen: [42, 49], + bgYellow: [43, 49], + bgBlue: [44, 49], + bgMagenta: [45, 49], + bgCyan: [46, 49], + bgWhite: [47, 49], + bgBlackBright: [100, 49], + bgRedBright: [101, 49], + bgGreenBright: [102, 49], + bgYellowBright: [103, 49], + bgBlueBright: [104, 49], + bgMagentaBright: [105, 49], + bgCyanBright: [106, 49], + bgWhiteBright: [107, 49] + } + }; + styles.color.gray = styles.color.blackBright; + styles.bgColor.bgGray = styles.bgColor.bgBlackBright; + styles.color.grey = styles.color.blackBright; + styles.bgColor.bgGrey = styles.bgColor.bgBlackBright; + for (const [groupName, group] of Object.entries(styles)) { + for (const [styleName, style] of Object.entries(group)) { + styles[styleName] = { + open: `[${style[0]}m`, + close: `[${style[1]}m` + }; + group[styleName] = styles[styleName]; + codes.set(style[0], style[1]); + } + Object.defineProperty(styles, groupName, { + value: group, + enumerable: false + }); + } + Object.defineProperty(styles, "codes", { + value: codes, + enumerable: false + }); + styles.color.close = ""; + styles.bgColor.close = ""; + setLazyProperty(styles.color, "ansi", () => makeDynamicStyles(wrapAnsi16, "ansi16", ansi2ansi, false)); + setLazyProperty(styles.color, "ansi256", () => makeDynamicStyles(wrapAnsi256, "ansi256", ansi2ansi, false)); + setLazyProperty(styles.color, "ansi16m", () => makeDynamicStyles(wrapAnsi16m, "rgb", rgb2rgb, false)); + setLazyProperty(styles.bgColor, "ansi", () => makeDynamicStyles(wrapAnsi16, "ansi16", ansi2ansi, true)); + setLazyProperty(styles.bgColor, "ansi256", () => makeDynamicStyles(wrapAnsi256, "ansi256", ansi2ansi, true)); + setLazyProperty(styles.bgColor, "ansi16m", () => makeDynamicStyles(wrapAnsi16m, "rgb", rgb2rgb, true)); + return styles; + } + Object.defineProperty(module2, "exports", { + enumerable: true, + get: assembleStyles + }); + } +}); + +// pnp:has-flag-npm-4.0.0-32af9f0536-261a135703.zip/node_modules/has-flag/index.js +var require_has_flag = __commonJS({ + "pnp:has-flag-npm-4.0.0-32af9f0536-261a135703.zip/node_modules/has-flag/index.js"(exports, module2) { + "use strict"; + module2.exports = (flag, argv = process.argv) => { + const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--"; + const position = argv.indexOf(prefix + flag); + const terminatorPosition = argv.indexOf("--"); + return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition); + }; + } +}); + +// pnp:supports-color-npm-7.2.0-606bfcf7da-3dda818de0.zip/node_modules/supports-color/index.js +var require_supports_color = __commonJS({ + "pnp:supports-color-npm-7.2.0-606bfcf7da-3dda818de0.zip/node_modules/supports-color/index.js"(exports, module2) { + "use strict"; + var os = require("os"); + var tty = require("tty"); + var hasFlag = require_has_flag(); + var { env } = process; + var forceColor; + if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) { + forceColor = 0; + } else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) { + forceColor = 1; + } + if ("FORCE_COLOR" in env) { + if (env.FORCE_COLOR === "true") { + forceColor = 1; + } else if (env.FORCE_COLOR === "false") { + forceColor = 0; + } else { + forceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3); + } + } + function translateLevel(level) { + if (level === 0) { + return false; + } + return { + level, + hasBasic: true, + has256: level >= 2, + has16m: level >= 3 + }; + } + function supportsColor(haveStream, streamIsTTY) { + if (forceColor === 0) { + return 0; + } + if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) { + return 3; + } + if (hasFlag("color=256")) { + return 2; + } + if (haveStream && !streamIsTTY && forceColor === void 0) { + return 0; + } + const min = forceColor || 0; + if (env.TERM === "dumb") { + return min; + } + if (process.platform === "win32") { + const osRelease = os.release().split("."); + if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) { + return Number(osRelease[2]) >= 14931 ? 3 : 2; + } + return 1; + } + if ("CI" in env) { + if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "GITHUB_ACTIONS", "BUILDKITE"].some((sign) => sign in env) || env.CI_NAME === "codeship") { + return 1; + } + return min; + } + if ("TEAMCITY_VERSION" in env) { + return /^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0; + } + if (env.COLORTERM === "truecolor") { + return 3; + } + if ("TERM_PROGRAM" in env) { + const version2 = parseInt((env.TERM_PROGRAM_VERSION || "").split(".")[0], 10); + switch (env.TERM_PROGRAM) { + case "iTerm.app": + return version2 >= 3 ? 3 : 2; + case "Apple_Terminal": + return 2; + } + } + if (/-256(color)?$/i.test(env.TERM)) { + return 2; + } + if (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) { + return 1; + } + if ("COLORTERM" in env) { + return 1; + } + return min; + } + function getSupportLevel(stream) { + const level = supportsColor(stream, stream && stream.isTTY); + return translateLevel(level); + } + module2.exports = { + supportsColor: getSupportLevel, + stdout: translateLevel(supportsColor(true, tty.isatty(1))), + stderr: translateLevel(supportsColor(true, tty.isatty(2))) + }; + } +}); + +// pnp:chalk-npm-4.1.2-ba8b67ab80-fe75c9d5c7.zip/node_modules/chalk/source/util.js +var require_util = __commonJS({ + "pnp:chalk-npm-4.1.2-ba8b67ab80-fe75c9d5c7.zip/node_modules/chalk/source/util.js"(exports, module2) { + "use strict"; + var stringReplaceAll = (string, substring, replacer) => { + let index = string.indexOf(substring); + if (index === -1) { + return string; + } + const substringLength = substring.length; + let endIndex = 0; + let returnValue = ""; + do { + returnValue += string.substr(endIndex, index - endIndex) + substring + replacer; + endIndex = index + substringLength; + index = string.indexOf(substring, endIndex); + } while (index !== -1); + returnValue += string.substr(endIndex); + return returnValue; + }; + var stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => { + let endIndex = 0; + let returnValue = ""; + do { + const gotCR = string[index - 1] === "\r"; + returnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? "\r\n" : "\n") + postfix; + endIndex = index + 1; + index = string.indexOf("\n", endIndex); + } while (index !== -1); + returnValue += string.substr(endIndex); + return returnValue; + }; + module2.exports = { + stringReplaceAll, + stringEncaseCRLFWithFirstIndex + }; + } +}); + +// pnp:chalk-npm-4.1.2-ba8b67ab80-fe75c9d5c7.zip/node_modules/chalk/source/templates.js +var require_templates = __commonJS({ + "pnp:chalk-npm-4.1.2-ba8b67ab80-fe75c9d5c7.zip/node_modules/chalk/source/templates.js"(exports, module2) { + "use strict"; + var TEMPLATE_REGEX = /(?:\\(u(?:[a-f\d]{4}|\{[a-f\d]{1,6}\})|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi; + var STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g; + var STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/; + var ESCAPE_REGEX = /\\(u(?:[a-f\d]{4}|{[a-f\d]{1,6}})|x[a-f\d]{2}|.)|([^\\])/gi; + var ESCAPES = new Map([ + ["n", "\n"], + ["r", "\r"], + ["t", " "], + ["b", "\b"], + ["f", "\f"], + ["v", "\v"], + ["0", "\0"], + ["\\", "\\"], + ["e", ""], + ["a", "\x07"] + ]); + function unescape(c) { + const u = c[0] === "u"; + const bracket = c[1] === "{"; + if (u && !bracket && c.length === 5 || c[0] === "x" && c.length === 3) { + return String.fromCharCode(parseInt(c.slice(1), 16)); + } + if (u && bracket) { + return String.fromCodePoint(parseInt(c.slice(2, -1), 16)); + } + return ESCAPES.get(c) || c; + } + function parseArguments(name, arguments_) { + const results = []; + const chunks = arguments_.trim().split(/\s*,\s*/g); + let matches; + for (const chunk of chunks) { + const number = Number(chunk); + if (!Number.isNaN(number)) { + results.push(number); + } else if (matches = chunk.match(STRING_REGEX)) { + results.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character)); + } else { + throw new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`); + } + } + return results; + } + function parseStyle(style) { + STYLE_REGEX.lastIndex = 0; + const results = []; + let matches; + while ((matches = STYLE_REGEX.exec(style)) !== null) { + const name = matches[1]; + if (matches[2]) { + const args = parseArguments(name, matches[2]); + results.push([name].concat(args)); + } else { + results.push([name]); + } + } + return results; + } + function buildStyle(chalk5, styles) { + const enabled = {}; + for (const layer of styles) { + for (const style of layer.styles) { + enabled[style[0]] = layer.inverse ? null : style.slice(1); + } + } + let current = chalk5; + for (const [styleName, styles2] of Object.entries(enabled)) { + if (!Array.isArray(styles2)) { + continue; + } + if (!(styleName in current)) { + throw new Error(`Unknown Chalk style: ${styleName}`); + } + current = styles2.length > 0 ? current[styleName](...styles2) : current[styleName]; + } + return current; + } + module2.exports = (chalk5, temporary) => { + const styles = []; + const chunks = []; + let chunk = []; + temporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => { + if (escapeCharacter) { + chunk.push(unescape(escapeCharacter)); + } else if (style) { + const string = chunk.join(""); + chunk = []; + chunks.push(styles.length === 0 ? string : buildStyle(chalk5, styles)(string)); + styles.push({ inverse, styles: parseStyle(style) }); + } else if (close) { + if (styles.length === 0) { + throw new Error("Found extraneous } in Chalk template literal"); + } + chunks.push(buildStyle(chalk5, styles)(chunk.join(""))); + chunk = []; + styles.pop(); + } else { + chunk.push(character); + } + }); + chunks.push(chunk.join("")); + if (styles.length > 0) { + const errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? "" : "s"} (\`}\`)`; + throw new Error(errMessage); + } + return chunks.join(""); + }; + } +}); + +// pnp:chalk-npm-4.1.2-ba8b67ab80-fe75c9d5c7.zip/node_modules/chalk/source/index.js +var require_source = __commonJS({ + "pnp:chalk-npm-4.1.2-ba8b67ab80-fe75c9d5c7.zip/node_modules/chalk/source/index.js"(exports, module2) { + "use strict"; + var ansiStyles = require_ansi_styles(); + var { stdout: stdoutColor, stderr: stderrColor } = require_supports_color(); + var { + stringReplaceAll, + stringEncaseCRLFWithFirstIndex + } = require_util(); + var { isArray } = Array; + var levelMapping = [ + "ansi", + "ansi", + "ansi256", + "ansi16m" + ]; + var styles = Object.create(null); + var applyOptions = (object, options = {}) => { + if (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) { + throw new Error("The `level` option should be an integer from 0 to 3"); + } + const colorLevel = stdoutColor ? stdoutColor.level : 0; + object.level = options.level === void 0 ? colorLevel : options.level; + }; + var ChalkClass = class { + constructor(options) { + return chalkFactory(options); + } + }; + var chalkFactory = (options) => { + const chalk6 = {}; + applyOptions(chalk6, options); + chalk6.template = (...arguments_) => chalkTag(chalk6.template, ...arguments_); + Object.setPrototypeOf(chalk6, Chalk.prototype); + Object.setPrototypeOf(chalk6.template, chalk6); + chalk6.template.constructor = () => { + throw new Error("`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead."); + }; + chalk6.template.Instance = ChalkClass; + return chalk6.template; + }; + function Chalk(options) { + return chalkFactory(options); + } + for (const [styleName, style] of Object.entries(ansiStyles)) { + styles[styleName] = { + get() { + const builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty); + Object.defineProperty(this, styleName, { value: builder }); + return builder; + } + }; + } + styles.visible = { + get() { + const builder = createBuilder(this, this._styler, true); + Object.defineProperty(this, "visible", { value: builder }); + return builder; + } + }; + var usedModels = ["rgb", "hex", "keyword", "hsl", "hsv", "hwb", "ansi", "ansi256"]; + for (const model of usedModels) { + styles[model] = { + get() { + const { level } = this; + return function(...arguments_) { + const styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler); + return createBuilder(this, styler, this._isEmpty); + }; + } + }; + } + for (const model of usedModels) { + const bgModel = "bg" + model[0].toUpperCase() + model.slice(1); + styles[bgModel] = { + get() { + const { level } = this; + return function(...arguments_) { + const styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler); + return createBuilder(this, styler, this._isEmpty); + }; + } + }; + } + var proto = Object.defineProperties(() => { + }, __spreadProps(__spreadValues({}, styles), { + level: { + enumerable: true, + get() { + return this._generator.level; + }, + set(level) { + this._generator.level = level; + } + } + })); + var createStyler = (open, close, parent) => { + let openAll; + let closeAll; + if (parent === void 0) { + openAll = open; + closeAll = close; + } else { + openAll = parent.openAll + open; + closeAll = close + parent.closeAll; + } + return { + open, + close, + openAll, + closeAll, + parent + }; + }; + var createBuilder = (self, _styler, _isEmpty) => { + const builder = (...arguments_) => { + if (isArray(arguments_[0]) && isArray(arguments_[0].raw)) { + return applyStyle(builder, chalkTag(builder, ...arguments_)); + } + return applyStyle(builder, arguments_.length === 1 ? "" + arguments_[0] : arguments_.join(" ")); + }; + Object.setPrototypeOf(builder, proto); + builder._generator = self; + builder._styler = _styler; + builder._isEmpty = _isEmpty; + return builder; + }; + var applyStyle = (self, string) => { + if (self.level <= 0 || !string) { + return self._isEmpty ? "" : string; + } + let styler = self._styler; + if (styler === void 0) { + return string; + } + const { openAll, closeAll } = styler; + if (string.indexOf("") !== -1) { + while (styler !== void 0) { + string = stringReplaceAll(string, styler.close, styler.open); + styler = styler.parent; + } + } + const lfIndex = string.indexOf("\n"); + if (lfIndex !== -1) { + string = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex); + } + return openAll + string + closeAll; + }; + var template; + var chalkTag = (chalk6, ...strings) => { + const [firstString] = strings; + if (!isArray(firstString) || !isArray(firstString.raw)) { + return strings.join(" "); + } + const arguments_ = strings.slice(1); + const parts = [firstString.raw[0]]; + for (let i = 1; i < firstString.length; i++) { + parts.push(String(arguments_[i - 1]).replace(/[{}\\]/g, "\\$&"), String(firstString.raw[i])); + } + if (template === void 0) { + template = require_templates(); + } + return template(chalk6, parts.join("")); + }; + Object.defineProperties(Chalk.prototype, styles); + var chalk5 = Chalk(); + chalk5.supportsColor = stdoutColor; + chalk5.stderr = Chalk({ level: stderrColor ? stderrColor.level : 0 }); + chalk5.stderr.supportsColor = stderrColor; + module2.exports = chalk5; + } +}); + +// pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/lowercase.js +var require_lowercase = __commonJS({ + "pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/lowercase.js"(exports, module2) { + "use strict"; + function lowercase(str) { + str = String(str); + if (!str) { + return str; + } + return str.toLowerCase(); + } + lowercase.isLowercase = function(str) { + return str && !/[A-Z]+/.test(str); + }; + module2.exports = lowercase; + } +}); + +// pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/uppercase.js +var require_uppercase = __commonJS({ + "pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/uppercase.js"(exports, module2) { + "use strict"; + function uppercase(str) { + str = String(str); + if (!str) { + return str; + } + return str.toUpperCase(); + } + uppercase.isUppercase = function(str) { + return str && !/[a-z]+/.test(str); + }; + module2.exports = uppercase; + } +}); + +// pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/camelcase.js +var require_camelcase = __commonJS({ + "pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/camelcase.js"(exports, module2) { + "use strict"; + var lowercase = require_lowercase(); + var uppercase = require_uppercase(); + var replacing = { + from: /[\-_:\.\s]([a-zA-Z])([a-zA-Z]*)/g, + to: function(match, $1, $2, offset, src) { + const len = $1.length; + return uppercase($1) + $2; + } + }; + function camelcase2(str) { + if (camelcase2.isCamelcase(str)) { + return str; + } + str = String(str).replace(/^[\-_:\.\s]/, ""); + if (!str) { + return str; + } + if (uppercase.isUppercase(str)) { + str = lowercase(str); + } + return lowercase(str[0]) + str.replace(replacing.from, replacing.to).slice(1).replace(/^([A-Z]+)([A-Z])/, (match, $1, $2) => lowercase($1) + $2); + } + camelcase2.isCamelcase = function(str) { + return str && /^[a-zA-Z]+$/.test(str) && lowercase(str[0]) === str[0]; + }; + module2.exports = camelcase2; + } +}); + +// pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/capitalcase.js +var require_capitalcase = __commonJS({ + "pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/capitalcase.js"(exports, module2) { + "use strict"; + var uppercase = require_uppercase(); + function capitalcase(str) { + str = String(str); + if (!str) { + return str; + } + return uppercase(str[0]) + str.slice(1); + } + module2.exports = capitalcase; + } +}); + +// pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/snakecase.js +var require_snakecase = __commonJS({ + "pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/snakecase.js"(exports, module2) { + "use strict"; + var lowercase = require_lowercase(); + var uppercase = require_uppercase(); + var JOINER = "_"; + var replacing = { + from: /([A-Z]+)/g, + to(match, $1, offset, src) { + const prefix = offset === 0 ? "" : JOINER; + const len = $1.length; + if (len === 1) { + return prefix + lowercase($1); + } + const next = src.slice(offset + $1.length); + const isOneWord = uppercase.isUppercase($1) && next[0] === JOINER; + if (isOneWord) { + return prefix + lowercase($1); + } + const replaced = lowercase($1.substr(0, len - 1)) + JOINER + lowercase($1[len - 1]); + return prefix + replaced; + } + }; + function snakecase(str) { + if (snakecase.isSnakecase(str)) { + return str; + } + str = String(str).replace(/[\-.:\s]/g, JOINER); + if (!str) { + return str; + } + if (uppercase.isUppercase(str)) { + str = lowercase(str); + } + return str.replace(replacing.from, replacing.to).replace(/_+/g, "_"); + } + snakecase.isSnakecase = function(str) { + return str && /^[a-z_]+$/.test(str); + }; + module2.exports = snakecase; + } +}); + +// pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/constcase.js +var require_constcase = __commonJS({ + "pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/constcase.js"(exports, module2) { + "use strict"; + var uppercase = require_uppercase(); + var snakecase = require_snakecase(); + function constcase2(str) { + if (constcase2.isConstcase(str)) { + return str; + } + return uppercase(snakecase(str)); + } + constcase2.isConstcase = function(str) { + return str && /^[A-Z_]+$/.test(str); + }; + module2.exports = constcase2; + } +}); + +// pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/cramcase.js +var require_cramcase = __commonJS({ + "pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/cramcase.js"(exports, module2) { + "use strict"; + var snakecase = require_snakecase(); + function cramcase(str) { + return snakecase(str).replace(/_/g, ""); + } + module2.exports = cramcase; + } +}); + +// pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/decapitalcase.js +var require_decapitalcase = __commonJS({ + "pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/decapitalcase.js"(exports, module2) { + "use strict"; + var lowercase = require_lowercase(); + function capitalcase(str) { + str = String(str); + if (!str) { + return str; + } + return lowercase(str[0]) + str.slice(1); + } + module2.exports = capitalcase; + } +}); + +// pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/dotcase.js +var require_dotcase = __commonJS({ + "pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/dotcase.js"(exports, module2) { + "use strict"; + var snakecase = require_snakecase(); + function dotcase(str) { + return snakecase(str).replace(/_/g, "."); + } + module2.exports = dotcase; + } +}); + +// pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/enumcase.js +var require_enumcase = __commonJS({ + "pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/enumcase.js"(exports, module2) { + "use strict"; + var snakecase = require_snakecase(); + function enumcase(str) { + return snakecase(str).replace(/_/g, ":"); + } + module2.exports = enumcase; + } +}); + +// pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/pascalcase.js +var require_pascalcase = __commonJS({ + "pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/pascalcase.js"(exports, module2) { + "use strict"; + var camelcase2 = require_camelcase(); + var capitalcase = require_capitalcase(); + function pascalcase(str) { + return capitalcase(camelcase2(str)); + } + module2.exports = pascalcase; + } +}); + +// pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/pathcase.js +var require_pathcase = __commonJS({ + "pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/pathcase.js"(exports, module2) { + "use strict"; + var snakecase = require_snakecase(); + function pathcase(str) { + return snakecase(str).replace(/_/g, "/"); + } + module2.exports = pathcase; + } +}); + +// pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/trimcase.js +var require_trimcase = __commonJS({ + "pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/trimcase.js"(exports, module2) { + "use strict"; + function trimcase(str) { + return String(str).trim(); + } + module2.exports = trimcase; + } +}); + +// pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/sentencecase.js +var require_sentencecase = __commonJS({ + "pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/sentencecase.js"(exports, module2) { + "use strict"; + var lowercase = require_lowercase(); + var trimcase = require_trimcase(); + var snakecase = require_snakecase(); + var capitalcase = require_capitalcase(); + var JOINER = " "; + function sentencecase(str) { + str = String(str).replace(/^[\-_\.\s]/g, JOINER); + if (!str) { + return str; + } + return capitalcase(snakecase(trimcase(str)).replace(/_/g, JOINER)); + } + module2.exports = sentencecase; + } +}); + +// pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/spacecase.js +var require_spacecase = __commonJS({ + "pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/spacecase.js"(exports, module2) { + "use strict"; + var snakecase = require_snakecase(); + function spacecase(str) { + return snakecase(str).replace(/_/g, " "); + } + module2.exports = spacecase; + } +}); + +// pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/spinalcase.js +var require_spinalcase = __commonJS({ + "pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/spinalcase.js"(exports, module2) { + "use strict"; + var snakecase = require_snakecase(); + function spinalcase2(str) { + return snakecase(str).replace(/_/g, "-"); + } + module2.exports = spinalcase2; + } +}); + +// pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/titlecase.js +var require_titlecase = __commonJS({ + "pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/titlecase.js"(exports, module2) { + "use strict"; + var snakecase = require_snakecase(); + var lowercase = require_lowercase(); + var trimcase = require_trimcase(); + var capitalcase = require_capitalcase(); + var LOWERCASE_WORDS = "a,the,and,or,not,but,for,of".split(","); + function titlecase(str) { + return snakecase(str).split(/_/g).map(trimcase).map(function(word) { + var lower = !!~LOWERCASE_WORDS.indexOf(word); + if (lower) { + return lowercase(word); + } else { + return capitalcase(word); + } + }).join(" "); + } + module2.exports = titlecase; + } +}); + +// pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/index.js +var require_lib = __commonJS({ + "pnp:stringcase-npm-4.3.1-2f1c329337-741a448632.zip/node_modules/stringcase/lib/index.js"(exports, module2) { + "use strict"; + var camelcase2 = require_camelcase(); + var capitalcase = require_capitalcase(); + var constcase2 = require_constcase(); + var cramcase = require_cramcase(); + var decapitalcase = require_decapitalcase(); + var dotcase = require_dotcase(); + var enumcase = require_enumcase(); + var lowercase = require_lowercase(); + var pascalcase = require_pascalcase(); + var pathcase = require_pathcase(); + var sentencecase = require_sentencecase(); + var snakecase = require_snakecase(); + var spacecase = require_spacecase(); + var spinalcase2 = require_spinalcase(); + var titlecase = require_titlecase(); + var trimcase = require_trimcase(); + var uppercase = require_uppercase(); + exports.camelcase = camelcase2; + exports.capitalcase = capitalcase; + exports.constcase = constcase2; + exports.cramcase = cramcase; + exports.decapitalcase = decapitalcase; + exports.dotcase = dotcase; + exports.enumcase = enumcase; + exports.lowercase = lowercase; + exports.pascalcase = pascalcase; + exports.pathcase = pathcase; + exports.sentencecase = sentencecase; + exports.snakecase = snakecase; + exports.spacecase = spacecase; + exports.spinalcase = spinalcase2; + exports.titlecase = titlecase; + exports.trimcase = trimcase; + exports.uppercase = uppercase; + module2.exports = { + camelcase: camelcase2, + capitalcase, + constcase: constcase2, + cramcase, + decapitalcase, + dotcase, + enumcase, + lowercase, + pascalcase, + pathcase, + sentencecase, + snakecase, + spacecase, + spinalcase: spinalcase2, + titlecase, + trimcase, + uppercase + }; + } +}); + +// pnp:fs.realpath-npm-1.0.0-c8f05d8126-99ddea01a7.zip/node_modules/fs.realpath/old.js +var require_old = __commonJS({ + "pnp:fs.realpath-npm-1.0.0-c8f05d8126-99ddea01a7.zip/node_modules/fs.realpath/old.js"(exports) { + var pathModule = require("path"); + var isWindows = process.platform === "win32"; + var fs4 = require("fs"); + var DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG); + function rethrow() { + var callback; + if (DEBUG) { + var backtrace = new Error(); + callback = debugCallback; + } else + callback = missingCallback; + return callback; + function debugCallback(err) { + if (err) { + backtrace.message = err.message; + err = backtrace; + missingCallback(err); + } + } + function missingCallback(err) { + if (err) { + if (process.throwDeprecation) + throw err; + else if (!process.noDeprecation) { + var msg = "fs: missing callback " + (err.stack || err.message); + if (process.traceDeprecation) + console.trace(msg); + else + console.error(msg); + } + } + } + } + function maybeCallback(cb) { + return typeof cb === "function" ? cb : rethrow(); + } + var normalize = pathModule.normalize; + if (isWindows) { + nextPartRe = /(.*?)(?:[\/\\]+|$)/g; + } else { + nextPartRe = /(.*?)(?:[\/]+|$)/g; + } + var nextPartRe; + if (isWindows) { + splitRootRe = /^(?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/][^\\\/]+)?[\\\/]*/; + } else { + splitRootRe = /^[\/]*/; + } + var splitRootRe; + exports.realpathSync = function realpathSync(p, cache) { + p = pathModule.resolve(p); + if (cache && Object.prototype.hasOwnProperty.call(cache, p)) { + return cache[p]; + } + var original = p, seenLinks = {}, knownHard = {}; + var pos; + var current; + var base; + var previous; + start(); + function start() { + var m = splitRootRe.exec(p); + pos = m[0].length; + current = m[0]; + base = m[0]; + previous = ""; + if (isWindows && !knownHard[base]) { + fs4.lstatSync(base); + knownHard[base] = true; + } + } + while (pos < p.length) { + nextPartRe.lastIndex = pos; + var result = nextPartRe.exec(p); + previous = current; + current += result[0]; + base = previous + result[1]; + pos = nextPartRe.lastIndex; + if (knownHard[base] || cache && cache[base] === base) { + continue; + } + var resolvedLink; + if (cache && Object.prototype.hasOwnProperty.call(cache, base)) { + resolvedLink = cache[base]; + } else { + var stat = fs4.lstatSync(base); + if (!stat.isSymbolicLink()) { + knownHard[base] = true; + if (cache) + cache[base] = base; + continue; + } + var linkTarget = null; + if (!isWindows) { + var id = stat.dev.toString(32) + ":" + stat.ino.toString(32); + if (seenLinks.hasOwnProperty(id)) { + linkTarget = seenLinks[id]; + } + } + if (linkTarget === null) { + fs4.statSync(base); + linkTarget = fs4.readlinkSync(base); + } + resolvedLink = pathModule.resolve(previous, linkTarget); + if (cache) + cache[base] = resolvedLink; + if (!isWindows) + seenLinks[id] = linkTarget; + } + p = pathModule.resolve(resolvedLink, p.slice(pos)); + start(); + } + if (cache) + cache[original] = p; + return p; + }; + exports.realpath = function realpath(p, cache, cb) { + if (typeof cb !== "function") { + cb = maybeCallback(cache); + cache = null; + } + p = pathModule.resolve(p); + if (cache && Object.prototype.hasOwnProperty.call(cache, p)) { + return process.nextTick(cb.bind(null, null, cache[p])); + } + var original = p, seenLinks = {}, knownHard = {}; + var pos; + var current; + var base; + var previous; + start(); + function start() { + var m = splitRootRe.exec(p); + pos = m[0].length; + current = m[0]; + base = m[0]; + previous = ""; + if (isWindows && !knownHard[base]) { + fs4.lstat(base, function(err) { + if (err) + return cb(err); + knownHard[base] = true; + LOOP(); + }); + } else { + process.nextTick(LOOP); + } + } + function LOOP() { + if (pos >= p.length) { + if (cache) + cache[original] = p; + return cb(null, p); + } + nextPartRe.lastIndex = pos; + var result = nextPartRe.exec(p); + previous = current; + current += result[0]; + base = previous + result[1]; + pos = nextPartRe.lastIndex; + if (knownHard[base] || cache && cache[base] === base) { + return process.nextTick(LOOP); + } + if (cache && Object.prototype.hasOwnProperty.call(cache, base)) { + return gotResolvedLink(cache[base]); + } + return fs4.lstat(base, gotStat); + } + function gotStat(err, stat) { + if (err) + return cb(err); + if (!stat.isSymbolicLink()) { + knownHard[base] = true; + if (cache) + cache[base] = base; + return process.nextTick(LOOP); + } + if (!isWindows) { + var id = stat.dev.toString(32) + ":" + stat.ino.toString(32); + if (seenLinks.hasOwnProperty(id)) { + return gotTarget(null, seenLinks[id], base); + } + } + fs4.stat(base, function(err2) { + if (err2) + return cb(err2); + fs4.readlink(base, function(err3, target) { + if (!isWindows) + seenLinks[id] = target; + gotTarget(err3, target); + }); + }); + } + function gotTarget(err, target, base2) { + if (err) + return cb(err); + var resolvedLink = pathModule.resolve(previous, target); + if (cache) + cache[base2] = resolvedLink; + gotResolvedLink(resolvedLink); + } + function gotResolvedLink(resolvedLink) { + p = pathModule.resolve(resolvedLink, p.slice(pos)); + start(); + } + }; + } +}); + +// pnp:fs.realpath-npm-1.0.0-c8f05d8126-99ddea01a7.zip/node_modules/fs.realpath/index.js +var require_fs = __commonJS({ + "pnp:fs.realpath-npm-1.0.0-c8f05d8126-99ddea01a7.zip/node_modules/fs.realpath/index.js"(exports, module2) { + module2.exports = realpath; + realpath.realpath = realpath; + realpath.sync = realpathSync; + realpath.realpathSync = realpathSync; + realpath.monkeypatch = monkeypatch; + realpath.unmonkeypatch = unmonkeypatch; + var fs4 = require("fs"); + var origRealpath = fs4.realpath; + var origRealpathSync = fs4.realpathSync; + var version2 = process.version; + var ok = /^v[0-5]\./.test(version2); + var old = require_old(); + function newError(er) { + return er && er.syscall === "realpath" && (er.code === "ELOOP" || er.code === "ENOMEM" || er.code === "ENAMETOOLONG"); + } + function realpath(p, cache, cb) { + if (ok) { + return origRealpath(p, cache, cb); + } + if (typeof cache === "function") { + cb = cache; + cache = null; + } + origRealpath(p, cache, function(er, result) { + if (newError(er)) { + old.realpath(p, cache, cb); + } else { + cb(er, result); + } + }); + } + function realpathSync(p, cache) { + if (ok) { + return origRealpathSync(p, cache); + } + try { + return origRealpathSync(p, cache); + } catch (er) { + if (newError(er)) { + return old.realpathSync(p, cache); + } else { + throw er; + } + } + } + function monkeypatch() { + fs4.realpath = realpath; + fs4.realpathSync = realpathSync; + } + function unmonkeypatch() { + fs4.realpath = origRealpath; + fs4.realpathSync = origRealpathSync; + } + } +}); + +// pnp:concat-map-npm-0.0.1-85a921b7ee-902a9f5d89.zip/node_modules/concat-map/index.js +var require_concat_map = __commonJS({ + "pnp:concat-map-npm-0.0.1-85a921b7ee-902a9f5d89.zip/node_modules/concat-map/index.js"(exports, module2) { + module2.exports = function(xs, fn) { + var res = []; + for (var i = 0; i < xs.length; i++) { + var x = fn(xs[i], i); + if (isArray(x)) + res.push.apply(res, x); + else + res.push(x); + } + return res; + }; + var isArray = Array.isArray || function(xs) { + return Object.prototype.toString.call(xs) === "[object Array]"; + }; + } +}); + +// pnp:balanced-match-npm-1.0.0-951a2ad706-9b67bfe558.zip/node_modules/balanced-match/index.js +var require_balanced_match = __commonJS({ + "pnp:balanced-match-npm-1.0.0-951a2ad706-9b67bfe558.zip/node_modules/balanced-match/index.js"(exports, module2) { + "use strict"; + module2.exports = balanced; + function balanced(a, b, str) { + if (a instanceof RegExp) + a = maybeMatch(a, str); + if (b instanceof RegExp) + b = maybeMatch(b, str); + var r = range(a, b, str); + return r && { + start: r[0], + end: r[1], + pre: str.slice(0, r[0]), + body: str.slice(r[0] + a.length, r[1]), + post: str.slice(r[1] + b.length) + }; + } + function maybeMatch(reg, str) { + var m = str.match(reg); + return m ? m[0] : null; + } + balanced.range = range; + function range(a, b, str) { + var begs, beg, left, right, result; + var ai = str.indexOf(a); + var bi = str.indexOf(b, ai + 1); + var i = ai; + if (ai >= 0 && bi > 0) { + begs = []; + left = str.length; + while (i >= 0 && !result) { + if (i == ai) { + begs.push(i); + ai = str.indexOf(a, i + 1); + } else if (begs.length == 1) { + result = [begs.pop(), bi]; + } else { + beg = begs.pop(); + if (beg < left) { + left = beg; + right = bi; + } + bi = str.indexOf(b, i + 1); + } + i = ai < bi && ai >= 0 ? ai : bi; + } + if (begs.length) { + result = [left, right]; + } + } + return result; + } + } +}); + +// pnp:brace-expansion-npm-1.1.11-fb95eb05ad-faf34a7bb0.zip/node_modules/brace-expansion/index.js +var require_brace_expansion = __commonJS({ + "pnp:brace-expansion-npm-1.1.11-fb95eb05ad-faf34a7bb0.zip/node_modules/brace-expansion/index.js"(exports, module2) { + var concatMap = require_concat_map(); + var balanced = require_balanced_match(); + module2.exports = expandTop; + var escSlash = "\0SLASH" + Math.random() + "\0"; + var escOpen = "\0OPEN" + Math.random() + "\0"; + var escClose = "\0CLOSE" + Math.random() + "\0"; + var escComma = "\0COMMA" + Math.random() + "\0"; + var escPeriod = "\0PERIOD" + Math.random() + "\0"; + function numeric(str) { + return parseInt(str, 10) == str ? parseInt(str, 10) : str.charCodeAt(0); + } + function escapeBraces(str) { + return str.split("\\\\").join(escSlash).split("\\{").join(escOpen).split("\\}").join(escClose).split("\\,").join(escComma).split("\\.").join(escPeriod); + } + function unescapeBraces(str) { + return str.split(escSlash).join("\\").split(escOpen).join("{").split(escClose).join("}").split(escComma).join(",").split(escPeriod).join("."); + } + function parseCommaParts(str) { + if (!str) + return [""]; + var parts = []; + var m = balanced("{", "}", str); + if (!m) + return str.split(","); + var pre = m.pre; + var body = m.body; + var post = m.post; + var p = pre.split(","); + p[p.length - 1] += "{" + body + "}"; + var postParts = parseCommaParts(post); + if (post.length) { + p[p.length - 1] += postParts.shift(); + p.push.apply(p, postParts); + } + parts.push.apply(parts, p); + return parts; + } + function expandTop(str) { + if (!str) + return []; + if (str.substr(0, 2) === "{}") { + str = "\\{\\}" + str.substr(2); + } + return expand(escapeBraces(str), true).map(unescapeBraces); + } + function embrace(str) { + return "{" + str + "}"; + } + function isPadded(el) { + return /^-?0\d/.test(el); + } + function lte(i, y) { + return i <= y; + } + function gte(i, y) { + return i >= y; + } + function expand(str, isTop) { + var expansions = []; + var m = balanced("{", "}", str); + if (!m || /\$$/.test(m.pre)) + return [str]; + var isNumericSequence = /^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(m.body); + var isAlphaSequence = /^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(m.body); + var isSequence = isNumericSequence || isAlphaSequence; + var isOptions = m.body.indexOf(",") >= 0; + if (!isSequence && !isOptions) { + if (m.post.match(/,.*\}/)) { + str = m.pre + "{" + m.body + escClose + m.post; + return expand(str); + } + return [str]; + } + var n; + if (isSequence) { + n = m.body.split(/\.\./); + } else { + n = parseCommaParts(m.body); + if (n.length === 1) { + n = expand(n[0], false).map(embrace); + if (n.length === 1) { + var post = m.post.length ? expand(m.post, false) : [""]; + return post.map(function(p) { + return m.pre + n[0] + p; + }); + } + } + } + var pre = m.pre; + var post = m.post.length ? expand(m.post, false) : [""]; + var N; + if (isSequence) { + var x = numeric(n[0]); + var y = numeric(n[1]); + var width = Math.max(n[0].length, n[1].length); + var incr = n.length == 3 ? Math.abs(numeric(n[2])) : 1; + var test = lte; + var reverse = y < x; + if (reverse) { + incr *= -1; + test = gte; + } + var pad = n.some(isPadded); + N = []; + for (var i = x; test(i, y); i += incr) { + var c; + if (isAlphaSequence) { + c = String.fromCharCode(i); + if (c === "\\") + c = ""; + } else { + c = String(i); + if (pad) { + var need = width - c.length; + if (need > 0) { + var z = new Array(need + 1).join("0"); + if (i < 0) + c = "-" + z + c.slice(1); + else + c = z + c; + } + } + } + N.push(c); + } + } else { + N = concatMap(n, function(el) { + return expand(el, false); + }); + } + for (var j = 0; j < N.length; j++) { + for (var k = 0; k < post.length; k++) { + var expansion = pre + N[j] + post[k]; + if (!isTop || isSequence || expansion) + expansions.push(expansion); + } + } + return expansions; + } + } +}); + +// pnp:minimatch-npm-3.0.4-6e76f51c23-66ac295f8a.zip/node_modules/minimatch/minimatch.js +var require_minimatch = __commonJS({ + "pnp:minimatch-npm-3.0.4-6e76f51c23-66ac295f8a.zip/node_modules/minimatch/minimatch.js"(exports, module2) { + module2.exports = minimatch; + minimatch.Minimatch = Minimatch; + var path2 = { sep: "/" }; + try { + path2 = require("path"); + } catch (er) { + } + var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}; + var expand = require_brace_expansion(); + var plTypes = { + "!": { open: "(?:(?!(?:", close: "))[^/]*?)" }, + "?": { open: "(?:", close: ")?" }, + "+": { open: "(?:", close: ")+" }, + "*": { open: "(?:", close: ")*" }, + "@": { open: "(?:", close: ")" } + }; + var qmark = "[^/]"; + var star = qmark + "*?"; + var twoStarDot = "(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?"; + var twoStarNoDot = "(?:(?!(?:\\/|^)\\.).)*?"; + var reSpecials = charSet("().*{}+?[]^$\\!"); + function charSet(s) { + return s.split("").reduce(function(set, c) { + set[c] = true; + return set; + }, {}); + } + var slashSplit = /\/+/; + minimatch.filter = filter; + function filter(pattern, options) { + options = options || {}; + return function(p, i, list) { + return minimatch(p, pattern, options); + }; + } + function ext(a, b) { + a = a || {}; + b = b || {}; + var t = {}; + Object.keys(b).forEach(function(k) { + t[k] = b[k]; + }); + Object.keys(a).forEach(function(k) { + t[k] = a[k]; + }); + return t; + } + minimatch.defaults = function(def) { + if (!def || !Object.keys(def).length) + return minimatch; + var orig = minimatch; + var m = function minimatch2(p, pattern, options) { + return orig.minimatch(p, pattern, ext(def, options)); + }; + m.Minimatch = function Minimatch2(pattern, options) { + return new orig.Minimatch(pattern, ext(def, options)); + }; + return m; + }; + Minimatch.defaults = function(def) { + if (!def || !Object.keys(def).length) + return Minimatch; + return minimatch.defaults(def).Minimatch; + }; + function minimatch(p, pattern, options) { + if (typeof pattern !== "string") { + throw new TypeError("glob pattern string required"); + } + if (!options) + options = {}; + if (!options.nocomment && pattern.charAt(0) === "#") { + return false; + } + if (pattern.trim() === "") + return p === ""; + return new Minimatch(pattern, options).match(p); + } + function Minimatch(pattern, options) { + if (!(this instanceof Minimatch)) { + return new Minimatch(pattern, options); + } + if (typeof pattern !== "string") { + throw new TypeError("glob pattern string required"); + } + if (!options) + options = {}; + pattern = pattern.trim(); + if (path2.sep !== "/") { + pattern = pattern.split(path2.sep).join("/"); + } + this.options = options; + this.set = []; + this.pattern = pattern; + this.regexp = null; + this.negate = false; + this.comment = false; + this.empty = false; + this.make(); + } + Minimatch.prototype.debug = function() { + }; + Minimatch.prototype.make = make; + function make() { + if (this._made) + return; + var pattern = this.pattern; + var options = this.options; + if (!options.nocomment && pattern.charAt(0) === "#") { + this.comment = true; + return; + } + if (!pattern) { + this.empty = true; + return; + } + this.parseNegate(); + var set = this.globSet = this.braceExpand(); + if (options.debug) + this.debug = console.error; + this.debug(this.pattern, set); + set = this.globParts = set.map(function(s) { + return s.split(slashSplit); + }); + this.debug(this.pattern, set); + set = set.map(function(s, si, set2) { + return s.map(this.parse, this); + }, this); + this.debug(this.pattern, set); + set = set.filter(function(s) { + return s.indexOf(false) === -1; + }); + this.debug(this.pattern, set); + this.set = set; + } + Minimatch.prototype.parseNegate = parseNegate; + function parseNegate() { + var pattern = this.pattern; + var negate = false; + var options = this.options; + var negateOffset = 0; + if (options.nonegate) + return; + for (var i = 0, l = pattern.length; i < l && pattern.charAt(i) === "!"; i++) { + negate = !negate; + negateOffset++; + } + if (negateOffset) + this.pattern = pattern.substr(negateOffset); + this.negate = negate; + } + minimatch.braceExpand = function(pattern, options) { + return braceExpand(pattern, options); + }; + Minimatch.prototype.braceExpand = braceExpand; + function braceExpand(pattern, options) { + if (!options) { + if (this instanceof Minimatch) { + options = this.options; + } else { + options = {}; + } + } + pattern = typeof pattern === "undefined" ? this.pattern : pattern; + if (typeof pattern === "undefined") { + throw new TypeError("undefined pattern"); + } + if (options.nobrace || !pattern.match(/\{.*\}/)) { + return [pattern]; + } + return expand(pattern); + } + Minimatch.prototype.parse = parse; + var SUBPARSE = {}; + function parse(pattern, isSub) { + if (pattern.length > 1024 * 64) { + throw new TypeError("pattern is too long"); + } + var options = this.options; + if (!options.noglobstar && pattern === "**") + return GLOBSTAR; + if (pattern === "") + return ""; + var re = ""; + var hasMagic = !!options.nocase; + var escaping = false; + var patternListStack = []; + var negativeLists = []; + var stateChar; + var inClass = false; + var reClassStart = -1; + var classStart = -1; + var patternStart = pattern.charAt(0) === "." ? "" : options.dot ? "(?!(?:^|\\/)\\.{1,2}(?:$|\\/))" : "(?!\\.)"; + var self = this; + function clearStateChar() { + if (stateChar) { + switch (stateChar) { + case "*": + re += star; + hasMagic = true; + break; + case "?": + re += qmark; + hasMagic = true; + break; + default: + re += "\\" + stateChar; + break; + } + self.debug("clearStateChar %j %j", stateChar, re); + stateChar = false; + } + } + for (var i = 0, len = pattern.length, c; i < len && (c = pattern.charAt(i)); i++) { + this.debug("%s %s %s %j", pattern, i, re, c); + if (escaping && reSpecials[c]) { + re += "\\" + c; + escaping = false; + continue; + } + switch (c) { + case "/": + return false; + case "\\": + clearStateChar(); + escaping = true; + continue; + case "?": + case "*": + case "+": + case "@": + case "!": + this.debug("%s %s %s %j <-- stateChar", pattern, i, re, c); + if (inClass) { + this.debug(" in class"); + if (c === "!" && i === classStart + 1) + c = "^"; + re += c; + continue; + } + self.debug("call clearStateChar %j", stateChar); + clearStateChar(); + stateChar = c; + if (options.noext) + clearStateChar(); + continue; + case "(": + if (inClass) { + re += "("; + continue; + } + if (!stateChar) { + re += "\\("; + continue; + } + patternListStack.push({ + type: stateChar, + start: i - 1, + reStart: re.length, + open: plTypes[stateChar].open, + close: plTypes[stateChar].close + }); + re += stateChar === "!" ? "(?:(?!(?:" : "(?:"; + this.debug("plType %j %j", stateChar, re); + stateChar = false; + continue; + case ")": + if (inClass || !patternListStack.length) { + re += "\\)"; + continue; + } + clearStateChar(); + hasMagic = true; + var pl = patternListStack.pop(); + re += pl.close; + if (pl.type === "!") { + negativeLists.push(pl); + } + pl.reEnd = re.length; + continue; + case "|": + if (inClass || !patternListStack.length || escaping) { + re += "\\|"; + escaping = false; + continue; + } + clearStateChar(); + re += "|"; + continue; + case "[": + clearStateChar(); + if (inClass) { + re += "\\" + c; + continue; + } + inClass = true; + classStart = i; + reClassStart = re.length; + re += c; + continue; + case "]": + if (i === classStart + 1 || !inClass) { + re += "\\" + c; + escaping = false; + continue; + } + if (inClass) { + var cs = pattern.substring(classStart + 1, i); + try { + RegExp("[" + cs + "]"); + } catch (er) { + var sp = this.parse(cs, SUBPARSE); + re = re.substr(0, reClassStart) + "\\[" + sp[0] + "\\]"; + hasMagic = hasMagic || sp[1]; + inClass = false; + continue; + } + } + hasMagic = true; + inClass = false; + re += c; + continue; + default: + clearStateChar(); + if (escaping) { + escaping = false; + } else if (reSpecials[c] && !(c === "^" && inClass)) { + re += "\\"; + } + re += c; + } + } + if (inClass) { + cs = pattern.substr(classStart + 1); + sp = this.parse(cs, SUBPARSE); + re = re.substr(0, reClassStart) + "\\[" + sp[0]; + hasMagic = hasMagic || sp[1]; + } + for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) { + var tail = re.slice(pl.reStart + pl.open.length); + this.debug("setting tail", re, pl); + tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function(_, $1, $2) { + if (!$2) { + $2 = "\\"; + } + return $1 + $1 + $2 + "|"; + }); + this.debug("tail=%j\n %s", tail, tail, pl, re); + var t = pl.type === "*" ? star : pl.type === "?" ? qmark : "\\" + pl.type; + hasMagic = true; + re = re.slice(0, pl.reStart) + t + "\\(" + tail; + } + clearStateChar(); + if (escaping) { + re += "\\\\"; + } + var addPatternStart = false; + switch (re.charAt(0)) { + case ".": + case "[": + case "(": + addPatternStart = true; + } + for (var n = negativeLists.length - 1; n > -1; n--) { + var nl = negativeLists[n]; + var nlBefore = re.slice(0, nl.reStart); + var nlFirst = re.slice(nl.reStart, nl.reEnd - 8); + var nlLast = re.slice(nl.reEnd - 8, nl.reEnd); + var nlAfter = re.slice(nl.reEnd); + nlLast += nlAfter; + var openParensBefore = nlBefore.split("(").length - 1; + var cleanAfter = nlAfter; + for (i = 0; i < openParensBefore; i++) { + cleanAfter = cleanAfter.replace(/\)[+*?]?/, ""); + } + nlAfter = cleanAfter; + var dollar = ""; + if (nlAfter === "" && isSub !== SUBPARSE) { + dollar = "$"; + } + var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast; + re = newRe; + } + if (re !== "" && hasMagic) { + re = "(?=.)" + re; + } + if (addPatternStart) { + re = patternStart + re; + } + if (isSub === SUBPARSE) { + return [re, hasMagic]; + } + if (!hasMagic) { + return globUnescape(pattern); + } + var flags = options.nocase ? "i" : ""; + try { + var regExp = new RegExp("^" + re + "$", flags); + } catch (er) { + return new RegExp("$."); + } + regExp._glob = pattern; + regExp._src = re; + return regExp; + } + minimatch.makeRe = function(pattern, options) { + return new Minimatch(pattern, options || {}).makeRe(); + }; + Minimatch.prototype.makeRe = makeRe; + function makeRe() { + if (this.regexp || this.regexp === false) + return this.regexp; + var set = this.set; + if (!set.length) { + this.regexp = false; + return this.regexp; + } + var options = this.options; + var twoStar = options.noglobstar ? star : options.dot ? twoStarDot : twoStarNoDot; + var flags = options.nocase ? "i" : ""; + var re = set.map(function(pattern) { + return pattern.map(function(p) { + return p === GLOBSTAR ? twoStar : typeof p === "string" ? regExpEscape(p) : p._src; + }).join("\\/"); + }).join("|"); + re = "^(?:" + re + ")$"; + if (this.negate) + re = "^(?!" + re + ").*$"; + try { + this.regexp = new RegExp(re, flags); + } catch (ex) { + this.regexp = false; + } + return this.regexp; + } + minimatch.match = function(list, pattern, options) { + options = options || {}; + var mm = new Minimatch(pattern, options); + list = list.filter(function(f) { + return mm.match(f); + }); + if (mm.options.nonull && !list.length) { + list.push(pattern); + } + return list; + }; + Minimatch.prototype.match = match; + function match(f, partial) { + this.debug("match", f, this.pattern); + if (this.comment) + return false; + if (this.empty) + return f === ""; + if (f === "/" && partial) + return true; + var options = this.options; + if (path2.sep !== "/") { + f = f.split(path2.sep).join("/"); + } + f = f.split(slashSplit); + this.debug(this.pattern, "split", f); + var set = this.set; + this.debug(this.pattern, "set", set); + var filename; + var i; + for (i = f.length - 1; i >= 0; i--) { + filename = f[i]; + if (filename) + break; + } + for (i = 0; i < set.length; i++) { + var pattern = set[i]; + var file = f; + if (options.matchBase && pattern.length === 1) { + file = [filename]; + } + var hit = this.matchOne(file, pattern, partial); + if (hit) { + if (options.flipNegate) + return true; + return !this.negate; + } + } + if (options.flipNegate) + return false; + return this.negate; + } + Minimatch.prototype.matchOne = function(file, pattern, partial) { + var options = this.options; + this.debug("matchOne", { "this": this, file, pattern }); + this.debug("matchOne", file.length, pattern.length); + for (var fi = 0, pi = 0, fl = file.length, pl = pattern.length; fi < fl && pi < pl; fi++, pi++) { + this.debug("matchOne loop"); + var p = pattern[pi]; + var f = file[fi]; + this.debug(pattern, p, f); + if (p === false) + return false; + if (p === GLOBSTAR) { + this.debug("GLOBSTAR", [pattern, p, f]); + var fr = fi; + var pr = pi + 1; + if (pr === pl) { + this.debug("** at the end"); + for (; fi < fl; fi++) { + if (file[fi] === "." || file[fi] === ".." || !options.dot && file[fi].charAt(0) === ".") + return false; + } + return true; + } + while (fr < fl) { + var swallowee = file[fr]; + this.debug("\nglobstar while", file, fr, pattern, pr, swallowee); + if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) { + this.debug("globstar found match!", fr, fl, swallowee); + return true; + } else { + if (swallowee === "." || swallowee === ".." || !options.dot && swallowee.charAt(0) === ".") { + this.debug("dot detected!", file, fr, pattern, pr); + break; + } + this.debug("globstar swallow a segment, and continue"); + fr++; + } + } + if (partial) { + this.debug("\n>>> no match, partial?", file, fr, pattern, pr); + if (fr === fl) + return true; + } + return false; + } + var hit; + if (typeof p === "string") { + if (options.nocase) { + hit = f.toLowerCase() === p.toLowerCase(); + } else { + hit = f === p; + } + this.debug("string match", p, f, hit); + } else { + hit = f.match(p); + this.debug("pattern match", p, f, hit); + } + if (!hit) + return false; + } + if (fi === fl && pi === pl) { + return true; + } else if (fi === fl) { + return partial; + } else if (pi === pl) { + var emptyFileEnd = fi === fl - 1 && file[fi] === ""; + return emptyFileEnd; + } + throw new Error("wtf?"); + }; + function globUnescape(s) { + return s.replace(/\\(.)/g, "$1"); + } + function regExpEscape(s) { + return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); + } + } +}); + +// pnp:inherits-npm-2.0.4-c66b3957a0-4a48a73384.zip/node_modules/inherits/inherits_browser.js +var require_inherits_browser = __commonJS({ + "pnp:inherits-npm-2.0.4-c66b3957a0-4a48a73384.zip/node_modules/inherits/inherits_browser.js"(exports, module2) { + if (typeof Object.create === "function") { + module2.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor; + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + } + }; + } else { + module2.exports = function inherits(ctor, superCtor) { + if (superCtor) { + ctor.super_ = superCtor; + var TempCtor = function() { + }; + TempCtor.prototype = superCtor.prototype; + ctor.prototype = new TempCtor(); + ctor.prototype.constructor = ctor; + } + }; + } + } +}); + +// pnp:inherits-npm-2.0.4-c66b3957a0-4a48a73384.zip/node_modules/inherits/inherits.js +var require_inherits = __commonJS({ + "pnp:inherits-npm-2.0.4-c66b3957a0-4a48a73384.zip/node_modules/inherits/inherits.js"(exports, module2) { + try { + util = require("util"); + if (typeof util.inherits !== "function") + throw ""; + module2.exports = util.inherits; + } catch (e) { + module2.exports = require_inherits_browser(); + } + var util; + } +}); + +// pnp:path-is-absolute-npm-1.0.1-31bc695ffd-060840f92c.zip/node_modules/path-is-absolute/index.js +var require_path_is_absolute = __commonJS({ + "pnp:path-is-absolute-npm-1.0.1-31bc695ffd-060840f92c.zip/node_modules/path-is-absolute/index.js"(exports, module2) { + "use strict"; + function posix(path2) { + return path2.charAt(0) === "/"; + } + function win32(path2) { + var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/; + var result = splitDeviceRe.exec(path2); + var device = result[1] || ""; + var isUnc = Boolean(device && device.charAt(1) !== ":"); + return Boolean(result[2] || isUnc); + } + module2.exports = process.platform === "win32" ? win32 : posix; + module2.exports.posix = posix; + module2.exports.win32 = win32; + } +}); + +// pnp:glob-npm-7.1.7-5698ad9c48-b61f48973b.zip/node_modules/glob/common.js +var require_common = __commonJS({ + "pnp:glob-npm-7.1.7-5698ad9c48-b61f48973b.zip/node_modules/glob/common.js"(exports) { + exports.setopts = setopts; + exports.ownProp = ownProp; + exports.makeAbs = makeAbs; + exports.finish = finish; + exports.mark = mark; + exports.isIgnored = isIgnored; + exports.childrenIgnored = childrenIgnored; + function ownProp(obj, field) { + return Object.prototype.hasOwnProperty.call(obj, field); + } + var path2 = require("path"); + var minimatch = require_minimatch(); + var isAbsolute = require_path_is_absolute(); + var Minimatch = minimatch.Minimatch; + function alphasort(a, b) { + return a.localeCompare(b, "en"); + } + function setupIgnores(self, options) { + self.ignore = options.ignore || []; + if (!Array.isArray(self.ignore)) + self.ignore = [self.ignore]; + if (self.ignore.length) { + self.ignore = self.ignore.map(ignoreMap); + } + } + function ignoreMap(pattern) { + var gmatcher = null; + if (pattern.slice(-3) === "/**") { + var gpattern = pattern.replace(/(\/\*\*)+$/, ""); + gmatcher = new Minimatch(gpattern, { dot: true }); + } + return { + matcher: new Minimatch(pattern, { dot: true }), + gmatcher + }; + } + function setopts(self, pattern, options) { + if (!options) + options = {}; + if (options.matchBase && pattern.indexOf("/") === -1) { + if (options.noglobstar) { + throw new Error("base matching requires globstar"); + } + pattern = "**/" + pattern; + } + self.silent = !!options.silent; + self.pattern = pattern; + self.strict = options.strict !== false; + self.realpath = !!options.realpath; + self.realpathCache = options.realpathCache || Object.create(null); + self.follow = !!options.follow; + self.dot = !!options.dot; + self.mark = !!options.mark; + self.nodir = !!options.nodir; + if (self.nodir) + self.mark = true; + self.sync = !!options.sync; + self.nounique = !!options.nounique; + self.nonull = !!options.nonull; + self.nosort = !!options.nosort; + self.nocase = !!options.nocase; + self.stat = !!options.stat; + self.noprocess = !!options.noprocess; + self.absolute = !!options.absolute; + self.maxLength = options.maxLength || Infinity; + self.cache = options.cache || Object.create(null); + self.statCache = options.statCache || Object.create(null); + self.symlinks = options.symlinks || Object.create(null); + setupIgnores(self, options); + self.changedCwd = false; + var cwd = process.cwd(); + if (!ownProp(options, "cwd")) + self.cwd = cwd; + else { + self.cwd = path2.resolve(options.cwd); + self.changedCwd = self.cwd !== cwd; + } + self.root = options.root || path2.resolve(self.cwd, "/"); + self.root = path2.resolve(self.root); + if (process.platform === "win32") + self.root = self.root.replace(/\\/g, "/"); + self.cwdAbs = isAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd); + if (process.platform === "win32") + self.cwdAbs = self.cwdAbs.replace(/\\/g, "/"); + self.nomount = !!options.nomount; + options.nonegate = true; + options.nocomment = true; + self.minimatch = new Minimatch(pattern, options); + self.options = self.minimatch.options; + } + function finish(self) { + var nou = self.nounique; + var all = nou ? [] : Object.create(null); + for (var i = 0, l = self.matches.length; i < l; i++) { + var matches = self.matches[i]; + if (!matches || Object.keys(matches).length === 0) { + if (self.nonull) { + var literal = self.minimatch.globSet[i]; + if (nou) + all.push(literal); + else + all[literal] = true; + } + } else { + var m = Object.keys(matches); + if (nou) + all.push.apply(all, m); + else + m.forEach(function(m2) { + all[m2] = true; + }); + } + } + if (!nou) + all = Object.keys(all); + if (!self.nosort) + all = all.sort(alphasort); + if (self.mark) { + for (var i = 0; i < all.length; i++) { + all[i] = self._mark(all[i]); + } + if (self.nodir) { + all = all.filter(function(e) { + var notDir = !/\/$/.test(e); + var c = self.cache[e] || self.cache[makeAbs(self, e)]; + if (notDir && c) + notDir = c !== "DIR" && !Array.isArray(c); + return notDir; + }); + } + } + if (self.ignore.length) + all = all.filter(function(m2) { + return !isIgnored(self, m2); + }); + self.found = all; + } + function mark(self, p) { + var abs = makeAbs(self, p); + var c = self.cache[abs]; + var m = p; + if (c) { + var isDir = c === "DIR" || Array.isArray(c); + var slash = p.slice(-1) === "/"; + if (isDir && !slash) + m += "/"; + else if (!isDir && slash) + m = m.slice(0, -1); + if (m !== p) { + var mabs = makeAbs(self, m); + self.statCache[mabs] = self.statCache[abs]; + self.cache[mabs] = self.cache[abs]; + } + } + return m; + } + function makeAbs(self, f) { + var abs = f; + if (f.charAt(0) === "/") { + abs = path2.join(self.root, f); + } else if (isAbsolute(f) || f === "") { + abs = f; + } else if (self.changedCwd) { + abs = path2.resolve(self.cwd, f); + } else { + abs = path2.resolve(f); + } + if (process.platform === "win32") + abs = abs.replace(/\\/g, "/"); + return abs; + } + function isIgnored(self, path3) { + if (!self.ignore.length) + return false; + return self.ignore.some(function(item) { + return item.matcher.match(path3) || !!(item.gmatcher && item.gmatcher.match(path3)); + }); + } + function childrenIgnored(self, path3) { + if (!self.ignore.length) + return false; + return self.ignore.some(function(item) { + return !!(item.gmatcher && item.gmatcher.match(path3)); + }); + } + } +}); + +// pnp:glob-npm-7.1.7-5698ad9c48-b61f48973b.zip/node_modules/glob/sync.js +var require_sync = __commonJS({ + "pnp:glob-npm-7.1.7-5698ad9c48-b61f48973b.zip/node_modules/glob/sync.js"(exports, module2) { + module2.exports = globSync; + globSync.GlobSync = GlobSync; + var fs4 = require("fs"); + var rp = require_fs(); + var minimatch = require_minimatch(); + var Minimatch = minimatch.Minimatch; + var Glob2 = require_glob().Glob; + var util = require("util"); + var path2 = require("path"); + var assert = require("assert"); + var isAbsolute = require_path_is_absolute(); + var common = require_common(); + var setopts = common.setopts; + var ownProp = common.ownProp; + var childrenIgnored = common.childrenIgnored; + var isIgnored = common.isIgnored; + function globSync(pattern, options) { + if (typeof options === "function" || arguments.length === 3) + throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167"); + return new GlobSync(pattern, options).found; + } + function GlobSync(pattern, options) { + if (!pattern) + throw new Error("must provide pattern"); + if (typeof options === "function" || arguments.length === 3) + throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167"); + if (!(this instanceof GlobSync)) + return new GlobSync(pattern, options); + setopts(this, pattern, options); + if (this.noprocess) + return this; + var n = this.minimatch.set.length; + this.matches = new Array(n); + for (var i = 0; i < n; i++) { + this._process(this.minimatch.set[i], i, false); + } + this._finish(); + } + GlobSync.prototype._finish = function() { + assert(this instanceof GlobSync); + if (this.realpath) { + var self = this; + this.matches.forEach(function(matchset, index) { + var set = self.matches[index] = Object.create(null); + for (var p in matchset) { + try { + p = self._makeAbs(p); + var real = rp.realpathSync(p, self.realpathCache); + set[real] = true; + } catch (er) { + if (er.syscall === "stat") + set[self._makeAbs(p)] = true; + else + throw er; + } + } + }); + } + common.finish(this); + }; + GlobSync.prototype._process = function(pattern, index, inGlobStar) { + assert(this instanceof GlobSync); + var n = 0; + while (typeof pattern[n] === "string") { + n++; + } + var prefix; + switch (n) { + case pattern.length: + this._processSimple(pattern.join("/"), index); + return; + case 0: + prefix = null; + break; + default: + prefix = pattern.slice(0, n).join("/"); + break; + } + var remain = pattern.slice(n); + var read; + if (prefix === null) + read = "."; + else if (isAbsolute(prefix) || isAbsolute(pattern.join("/"))) { + if (!prefix || !isAbsolute(prefix)) + prefix = "/" + prefix; + read = prefix; + } else + read = prefix; + var abs = this._makeAbs(read); + if (childrenIgnored(this, read)) + return; + var isGlobStar = remain[0] === minimatch.GLOBSTAR; + if (isGlobStar) + this._processGlobStar(prefix, read, abs, remain, index, inGlobStar); + else + this._processReaddir(prefix, read, abs, remain, index, inGlobStar); + }; + GlobSync.prototype._processReaddir = function(prefix, read, abs, remain, index, inGlobStar) { + var entries = this._readdir(abs, inGlobStar); + if (!entries) + return; + var pn = remain[0]; + var negate = !!this.minimatch.negate; + var rawGlob = pn._glob; + var dotOk = this.dot || rawGlob.charAt(0) === "."; + var matchedEntries = []; + for (var i = 0; i < entries.length; i++) { + var e = entries[i]; + if (e.charAt(0) !== "." || dotOk) { + var m; + if (negate && !prefix) { + m = !e.match(pn); + } else { + m = e.match(pn); + } + if (m) + matchedEntries.push(e); + } + } + var len = matchedEntries.length; + if (len === 0) + return; + if (remain.length === 1 && !this.mark && !this.stat) { + if (!this.matches[index]) + this.matches[index] = Object.create(null); + for (var i = 0; i < len; i++) { + var e = matchedEntries[i]; + if (prefix) { + if (prefix.slice(-1) !== "/") + e = prefix + "/" + e; + else + e = prefix + e; + } + if (e.charAt(0) === "/" && !this.nomount) { + e = path2.join(this.root, e); + } + this._emitMatch(index, e); + } + return; + } + remain.shift(); + for (var i = 0; i < len; i++) { + var e = matchedEntries[i]; + var newPattern; + if (prefix) + newPattern = [prefix, e]; + else + newPattern = [e]; + this._process(newPattern.concat(remain), index, inGlobStar); + } + }; + GlobSync.prototype._emitMatch = function(index, e) { + if (isIgnored(this, e)) + return; + var abs = this._makeAbs(e); + if (this.mark) + e = this._mark(e); + if (this.absolute) { + e = abs; + } + if (this.matches[index][e]) + return; + if (this.nodir) { + var c = this.cache[abs]; + if (c === "DIR" || Array.isArray(c)) + return; + } + this.matches[index][e] = true; + if (this.stat) + this._stat(e); + }; + GlobSync.prototype._readdirInGlobStar = function(abs) { + if (this.follow) + return this._readdir(abs, false); + var entries; + var lstat; + var stat; + try { + lstat = fs4.lstatSync(abs); + } catch (er) { + if (er.code === "ENOENT") { + return null; + } + } + var isSym = lstat && lstat.isSymbolicLink(); + this.symlinks[abs] = isSym; + if (!isSym && lstat && !lstat.isDirectory()) + this.cache[abs] = "FILE"; + else + entries = this._readdir(abs, false); + return entries; + }; + GlobSync.prototype._readdir = function(abs, inGlobStar) { + var entries; + if (inGlobStar && !ownProp(this.symlinks, abs)) + return this._readdirInGlobStar(abs); + if (ownProp(this.cache, abs)) { + var c = this.cache[abs]; + if (!c || c === "FILE") + return null; + if (Array.isArray(c)) + return c; + } + try { + return this._readdirEntries(abs, fs4.readdirSync(abs)); + } catch (er) { + this._readdirError(abs, er); + return null; + } + }; + GlobSync.prototype._readdirEntries = function(abs, entries) { + if (!this.mark && !this.stat) { + for (var i = 0; i < entries.length; i++) { + var e = entries[i]; + if (abs === "/") + e = abs + e; + else + e = abs + "/" + e; + this.cache[e] = true; + } + } + this.cache[abs] = entries; + return entries; + }; + GlobSync.prototype._readdirError = function(f, er) { + switch (er.code) { + case "ENOTSUP": + case "ENOTDIR": + var abs = this._makeAbs(f); + this.cache[abs] = "FILE"; + if (abs === this.cwdAbs) { + var error = new Error(er.code + " invalid cwd " + this.cwd); + error.path = this.cwd; + error.code = er.code; + throw error; + } + break; + case "ENOENT": + case "ELOOP": + case "ENAMETOOLONG": + case "UNKNOWN": + this.cache[this._makeAbs(f)] = false; + break; + default: + this.cache[this._makeAbs(f)] = false; + if (this.strict) + throw er; + if (!this.silent) + console.error("glob error", er); + break; + } + }; + GlobSync.prototype._processGlobStar = function(prefix, read, abs, remain, index, inGlobStar) { + var entries = this._readdir(abs, inGlobStar); + if (!entries) + return; + var remainWithoutGlobStar = remain.slice(1); + var gspref = prefix ? [prefix] : []; + var noGlobStar = gspref.concat(remainWithoutGlobStar); + this._process(noGlobStar, index, false); + var len = entries.length; + var isSym = this.symlinks[abs]; + if (isSym && inGlobStar) + return; + for (var i = 0; i < len; i++) { + var e = entries[i]; + if (e.charAt(0) === "." && !this.dot) + continue; + var instead = gspref.concat(entries[i], remainWithoutGlobStar); + this._process(instead, index, true); + var below = gspref.concat(entries[i], remain); + this._process(below, index, true); + } + }; + GlobSync.prototype._processSimple = function(prefix, index) { + var exists = this._stat(prefix); + if (!this.matches[index]) + this.matches[index] = Object.create(null); + if (!exists) + return; + if (prefix && isAbsolute(prefix) && !this.nomount) { + var trail = /[\/\\]$/.test(prefix); + if (prefix.charAt(0) === "/") { + prefix = path2.join(this.root, prefix); + } else { + prefix = path2.resolve(this.root, prefix); + if (trail) + prefix += "/"; + } + } + if (process.platform === "win32") + prefix = prefix.replace(/\\/g, "/"); + this._emitMatch(index, prefix); + }; + GlobSync.prototype._stat = function(f) { + var abs = this._makeAbs(f); + var needDir = f.slice(-1) === "/"; + if (f.length > this.maxLength) + return false; + if (!this.stat && ownProp(this.cache, abs)) { + var c = this.cache[abs]; + if (Array.isArray(c)) + c = "DIR"; + if (!needDir || c === "DIR") + return c; + if (needDir && c === "FILE") + return false; + } + var exists; + var stat = this.statCache[abs]; + if (!stat) { + var lstat; + try { + lstat = fs4.lstatSync(abs); + } catch (er) { + if (er && (er.code === "ENOENT" || er.code === "ENOTDIR")) { + this.statCache[abs] = false; + return false; + } + } + if (lstat && lstat.isSymbolicLink()) { + try { + stat = fs4.statSync(abs); + } catch (er) { + stat = lstat; + } + } else { + stat = lstat; + } + } + this.statCache[abs] = stat; + var c = true; + if (stat) + c = stat.isDirectory() ? "DIR" : "FILE"; + this.cache[abs] = this.cache[abs] || c; + if (needDir && c === "FILE") + return false; + return c; + }; + GlobSync.prototype._mark = function(p) { + return common.mark(this, p); + }; + GlobSync.prototype._makeAbs = function(f) { + return common.makeAbs(this, f); + }; + } +}); + +// pnp:wrappy-npm-1.0.2-916de4d4b3-159da4805f.zip/node_modules/wrappy/wrappy.js +var require_wrappy = __commonJS({ + "pnp:wrappy-npm-1.0.2-916de4d4b3-159da4805f.zip/node_modules/wrappy/wrappy.js"(exports, module2) { + module2.exports = wrappy; + function wrappy(fn, cb) { + if (fn && cb) + return wrappy(fn)(cb); + if (typeof fn !== "function") + throw new TypeError("need wrapper function"); + Object.keys(fn).forEach(function(k) { + wrapper[k] = fn[k]; + }); + return wrapper; + function wrapper() { + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + var ret = fn.apply(this, args); + var cb2 = args[args.length - 1]; + if (typeof ret === "function" && ret !== cb2) { + Object.keys(cb2).forEach(function(k) { + ret[k] = cb2[k]; + }); + } + return ret; + } + } + } +}); + +// pnp:once-npm-1.4.0-ccf03ef07a-cd0a885013.zip/node_modules/once/once.js +var require_once = __commonJS({ + "pnp:once-npm-1.4.0-ccf03ef07a-cd0a885013.zip/node_modules/once/once.js"(exports, module2) { + var wrappy = require_wrappy(); + module2.exports = wrappy(once); + module2.exports.strict = wrappy(onceStrict); + once.proto = once(function() { + Object.defineProperty(Function.prototype, "once", { + value: function() { + return once(this); + }, + configurable: true + }); + Object.defineProperty(Function.prototype, "onceStrict", { + value: function() { + return onceStrict(this); + }, + configurable: true + }); + }); + function once(fn) { + var f = function() { + if (f.called) + return f.value; + f.called = true; + return f.value = fn.apply(this, arguments); + }; + f.called = false; + return f; + } + function onceStrict(fn) { + var f = function() { + if (f.called) + throw new Error(f.onceError); + f.called = true; + return f.value = fn.apply(this, arguments); + }; + var name = fn.name || "Function wrapped with `once`"; + f.onceError = name + " shouldn't be called more than once"; + f.called = false; + return f; + } + } +}); + +// pnp:inflight-npm-1.0.6-ccedb4b908-f4f76aa072.zip/node_modules/inflight/inflight.js +var require_inflight = __commonJS({ + "pnp:inflight-npm-1.0.6-ccedb4b908-f4f76aa072.zip/node_modules/inflight/inflight.js"(exports, module2) { + var wrappy = require_wrappy(); + var reqs = Object.create(null); + var once = require_once(); + module2.exports = wrappy(inflight); + function inflight(key, cb) { + if (reqs[key]) { + reqs[key].push(cb); + return null; + } else { + reqs[key] = [cb]; + return makeres(key); + } + } + function makeres(key) { + return once(function RES() { + var cbs = reqs[key]; + var len = cbs.length; + var args = slice(arguments); + try { + for (var i = 0; i < len; i++) { + cbs[i].apply(null, args); + } + } finally { + if (cbs.length > len) { + cbs.splice(0, len); + process.nextTick(function() { + RES.apply(null, args); + }); + } else { + delete reqs[key]; + } + } + }); + } + function slice(args) { + var length = args.length; + var array = []; + for (var i = 0; i < length; i++) + array[i] = args[i]; + return array; + } + } +}); + +// pnp:glob-npm-7.1.7-5698ad9c48-b61f48973b.zip/node_modules/glob/glob.js +var require_glob = __commonJS({ + "pnp:glob-npm-7.1.7-5698ad9c48-b61f48973b.zip/node_modules/glob/glob.js"(exports, module2) { + module2.exports = glob2; + var fs4 = require("fs"); + var rp = require_fs(); + var minimatch = require_minimatch(); + var Minimatch = minimatch.Minimatch; + var inherits = require_inherits(); + var EE = require("events").EventEmitter; + var path2 = require("path"); + var assert = require("assert"); + var isAbsolute = require_path_is_absolute(); + var globSync = require_sync(); + var common = require_common(); + var setopts = common.setopts; + var ownProp = common.ownProp; + var inflight = require_inflight(); + var util = require("util"); + var childrenIgnored = common.childrenIgnored; + var isIgnored = common.isIgnored; + var once = require_once(); + function glob2(pattern, options, cb) { + if (typeof options === "function") + cb = options, options = {}; + if (!options) + options = {}; + if (options.sync) { + if (cb) + throw new TypeError("callback provided to sync glob"); + return globSync(pattern, options); + } + return new Glob2(pattern, options, cb); + } + glob2.sync = globSync; + var GlobSync = glob2.GlobSync = globSync.GlobSync; + glob2.glob = glob2; + function extend(origin, add) { + if (add === null || typeof add !== "object") { + return origin; + } + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; + } + glob2.hasMagic = function(pattern, options_) { + var options = extend({}, options_); + options.noprocess = true; + var g = new Glob2(pattern, options); + var set = g.minimatch.set; + if (!pattern) + return false; + if (set.length > 1) + return true; + for (var j = 0; j < set[0].length; j++) { + if (typeof set[0][j] !== "string") + return true; + } + return false; + }; + glob2.Glob = Glob2; + inherits(Glob2, EE); + function Glob2(pattern, options, cb) { + if (typeof options === "function") { + cb = options; + options = null; + } + if (options && options.sync) { + if (cb) + throw new TypeError("callback provided to sync glob"); + return new GlobSync(pattern, options); + } + if (!(this instanceof Glob2)) + return new Glob2(pattern, options, cb); + setopts(this, pattern, options); + this._didRealPath = false; + var n = this.minimatch.set.length; + this.matches = new Array(n); + if (typeof cb === "function") { + cb = once(cb); + this.on("error", cb); + this.on("end", function(matches) { + cb(null, matches); + }); + } + var self = this; + this._processing = 0; + this._emitQueue = []; + this._processQueue = []; + this.paused = false; + if (this.noprocess) + return this; + if (n === 0) + return done(); + var sync = true; + for (var i = 0; i < n; i++) { + this._process(this.minimatch.set[i], i, false, done); + } + sync = false; + function done() { + --self._processing; + if (self._processing <= 0) { + if (sync) { + process.nextTick(function() { + self._finish(); + }); + } else { + self._finish(); + } + } + } + } + Glob2.prototype._finish = function() { + assert(this instanceof Glob2); + if (this.aborted) + return; + if (this.realpath && !this._didRealpath) + return this._realpath(); + common.finish(this); + this.emit("end", this.found); + }; + Glob2.prototype._realpath = function() { + if (this._didRealpath) + return; + this._didRealpath = true; + var n = this.matches.length; + if (n === 0) + return this._finish(); + var self = this; + for (var i = 0; i < this.matches.length; i++) + this._realpathSet(i, next); + function next() { + if (--n === 0) + self._finish(); + } + }; + Glob2.prototype._realpathSet = function(index, cb) { + var matchset = this.matches[index]; + if (!matchset) + return cb(); + var found = Object.keys(matchset); + var self = this; + var n = found.length; + if (n === 0) + return cb(); + var set = this.matches[index] = Object.create(null); + found.forEach(function(p, i) { + p = self._makeAbs(p); + rp.realpath(p, self.realpathCache, function(er, real) { + if (!er) + set[real] = true; + else if (er.syscall === "stat") + set[p] = true; + else + self.emit("error", er); + if (--n === 0) { + self.matches[index] = set; + cb(); + } + }); + }); + }; + Glob2.prototype._mark = function(p) { + return common.mark(this, p); + }; + Glob2.prototype._makeAbs = function(f) { + return common.makeAbs(this, f); + }; + Glob2.prototype.abort = function() { + this.aborted = true; + this.emit("abort"); + }; + Glob2.prototype.pause = function() { + if (!this.paused) { + this.paused = true; + this.emit("pause"); + } + }; + Glob2.prototype.resume = function() { + if (this.paused) { + this.emit("resume"); + this.paused = false; + if (this._emitQueue.length) { + var eq = this._emitQueue.slice(0); + this._emitQueue.length = 0; + for (var i = 0; i < eq.length; i++) { + var e = eq[i]; + this._emitMatch(e[0], e[1]); + } + } + if (this._processQueue.length) { + var pq = this._processQueue.slice(0); + this._processQueue.length = 0; + for (var i = 0; i < pq.length; i++) { + var p = pq[i]; + this._processing--; + this._process(p[0], p[1], p[2], p[3]); + } + } + } + }; + Glob2.prototype._process = function(pattern, index, inGlobStar, cb) { + assert(this instanceof Glob2); + assert(typeof cb === "function"); + if (this.aborted) + return; + this._processing++; + if (this.paused) { + this._processQueue.push([pattern, index, inGlobStar, cb]); + return; + } + var n = 0; + while (typeof pattern[n] === "string") { + n++; + } + var prefix; + switch (n) { + case pattern.length: + this._processSimple(pattern.join("/"), index, cb); + return; + case 0: + prefix = null; + break; + default: + prefix = pattern.slice(0, n).join("/"); + break; + } + var remain = pattern.slice(n); + var read; + if (prefix === null) + read = "."; + else if (isAbsolute(prefix) || isAbsolute(pattern.join("/"))) { + if (!prefix || !isAbsolute(prefix)) + prefix = "/" + prefix; + read = prefix; + } else + read = prefix; + var abs = this._makeAbs(read); + if (childrenIgnored(this, read)) + return cb(); + var isGlobStar = remain[0] === minimatch.GLOBSTAR; + if (isGlobStar) + this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb); + else + this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb); + }; + Glob2.prototype._processReaddir = function(prefix, read, abs, remain, index, inGlobStar, cb) { + var self = this; + this._readdir(abs, inGlobStar, function(er, entries) { + return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb); + }); + }; + Glob2.prototype._processReaddir2 = function(prefix, read, abs, remain, index, inGlobStar, entries, cb) { + if (!entries) + return cb(); + var pn = remain[0]; + var negate = !!this.minimatch.negate; + var rawGlob = pn._glob; + var dotOk = this.dot || rawGlob.charAt(0) === "."; + var matchedEntries = []; + for (var i = 0; i < entries.length; i++) { + var e = entries[i]; + if (e.charAt(0) !== "." || dotOk) { + var m; + if (negate && !prefix) { + m = !e.match(pn); + } else { + m = e.match(pn); + } + if (m) + matchedEntries.push(e); + } + } + var len = matchedEntries.length; + if (len === 0) + return cb(); + if (remain.length === 1 && !this.mark && !this.stat) { + if (!this.matches[index]) + this.matches[index] = Object.create(null); + for (var i = 0; i < len; i++) { + var e = matchedEntries[i]; + if (prefix) { + if (prefix !== "/") + e = prefix + "/" + e; + else + e = prefix + e; + } + if (e.charAt(0) === "/" && !this.nomount) { + e = path2.join(this.root, e); + } + this._emitMatch(index, e); + } + return cb(); + } + remain.shift(); + for (var i = 0; i < len; i++) { + var e = matchedEntries[i]; + var newPattern; + if (prefix) { + if (prefix !== "/") + e = prefix + "/" + e; + else + e = prefix + e; + } + this._process([e].concat(remain), index, inGlobStar, cb); + } + cb(); + }; + Glob2.prototype._emitMatch = function(index, e) { + if (this.aborted) + return; + if (isIgnored(this, e)) + return; + if (this.paused) { + this._emitQueue.push([index, e]); + return; + } + var abs = isAbsolute(e) ? e : this._makeAbs(e); + if (this.mark) + e = this._mark(e); + if (this.absolute) + e = abs; + if (this.matches[index][e]) + return; + if (this.nodir) { + var c = this.cache[abs]; + if (c === "DIR" || Array.isArray(c)) + return; + } + this.matches[index][e] = true; + var st = this.statCache[abs]; + if (st) + this.emit("stat", e, st); + this.emit("match", e); + }; + Glob2.prototype._readdirInGlobStar = function(abs, cb) { + if (this.aborted) + return; + if (this.follow) + return this._readdir(abs, false, cb); + var lstatkey = "lstat\0" + abs; + var self = this; + var lstatcb = inflight(lstatkey, lstatcb_); + if (lstatcb) + fs4.lstat(abs, lstatcb); + function lstatcb_(er, lstat) { + if (er && er.code === "ENOENT") + return cb(); + var isSym = lstat && lstat.isSymbolicLink(); + self.symlinks[abs] = isSym; + if (!isSym && lstat && !lstat.isDirectory()) { + self.cache[abs] = "FILE"; + cb(); + } else + self._readdir(abs, false, cb); + } + }; + Glob2.prototype._readdir = function(abs, inGlobStar, cb) { + if (this.aborted) + return; + cb = inflight("readdir\0" + abs + "\0" + inGlobStar, cb); + if (!cb) + return; + if (inGlobStar && !ownProp(this.symlinks, abs)) + return this._readdirInGlobStar(abs, cb); + if (ownProp(this.cache, abs)) { + var c = this.cache[abs]; + if (!c || c === "FILE") + return cb(); + if (Array.isArray(c)) + return cb(null, c); + } + var self = this; + fs4.readdir(abs, readdirCb(this, abs, cb)); + }; + function readdirCb(self, abs, cb) { + return function(er, entries) { + if (er) + self._readdirError(abs, er, cb); + else + self._readdirEntries(abs, entries, cb); + }; + } + Glob2.prototype._readdirEntries = function(abs, entries, cb) { + if (this.aborted) + return; + if (!this.mark && !this.stat) { + for (var i = 0; i < entries.length; i++) { + var e = entries[i]; + if (abs === "/") + e = abs + e; + else + e = abs + "/" + e; + this.cache[e] = true; + } + } + this.cache[abs] = entries; + return cb(null, entries); + }; + Glob2.prototype._readdirError = function(f, er, cb) { + if (this.aborted) + return; + switch (er.code) { + case "ENOTSUP": + case "ENOTDIR": + var abs = this._makeAbs(f); + this.cache[abs] = "FILE"; + if (abs === this.cwdAbs) { + var error = new Error(er.code + " invalid cwd " + this.cwd); + error.path = this.cwd; + error.code = er.code; + this.emit("error", error); + this.abort(); + } + break; + case "ENOENT": + case "ELOOP": + case "ENAMETOOLONG": + case "UNKNOWN": + this.cache[this._makeAbs(f)] = false; + break; + default: + this.cache[this._makeAbs(f)] = false; + if (this.strict) { + this.emit("error", er); + this.abort(); + } + if (!this.silent) + console.error("glob error", er); + break; + } + return cb(); + }; + Glob2.prototype._processGlobStar = function(prefix, read, abs, remain, index, inGlobStar, cb) { + var self = this; + this._readdir(abs, inGlobStar, function(er, entries) { + self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb); + }); + }; + Glob2.prototype._processGlobStar2 = function(prefix, read, abs, remain, index, inGlobStar, entries, cb) { + if (!entries) + return cb(); + var remainWithoutGlobStar = remain.slice(1); + var gspref = prefix ? [prefix] : []; + var noGlobStar = gspref.concat(remainWithoutGlobStar); + this._process(noGlobStar, index, false, cb); + var isSym = this.symlinks[abs]; + var len = entries.length; + if (isSym && inGlobStar) + return cb(); + for (var i = 0; i < len; i++) { + var e = entries[i]; + if (e.charAt(0) === "." && !this.dot) + continue; + var instead = gspref.concat(entries[i], remainWithoutGlobStar); + this._process(instead, index, true, cb); + var below = gspref.concat(entries[i], remain); + this._process(below, index, true, cb); + } + cb(); + }; + Glob2.prototype._processSimple = function(prefix, index, cb) { + var self = this; + this._stat(prefix, function(er, exists) { + self._processSimple2(prefix, index, er, exists, cb); + }); + }; + Glob2.prototype._processSimple2 = function(prefix, index, er, exists, cb) { + if (!this.matches[index]) + this.matches[index] = Object.create(null); + if (!exists) + return cb(); + if (prefix && isAbsolute(prefix) && !this.nomount) { + var trail = /[\/\\]$/.test(prefix); + if (prefix.charAt(0) === "/") { + prefix = path2.join(this.root, prefix); + } else { + prefix = path2.resolve(this.root, prefix); + if (trail) + prefix += "/"; + } + } + if (process.platform === "win32") + prefix = prefix.replace(/\\/g, "/"); + this._emitMatch(index, prefix); + cb(); + }; + Glob2.prototype._stat = function(f, cb) { + var abs = this._makeAbs(f); + var needDir = f.slice(-1) === "/"; + if (f.length > this.maxLength) + return cb(); + if (!this.stat && ownProp(this.cache, abs)) { + var c = this.cache[abs]; + if (Array.isArray(c)) + c = "DIR"; + if (!needDir || c === "DIR") + return cb(null, c); + if (needDir && c === "FILE") + return cb(); + } + var exists; + var stat = this.statCache[abs]; + if (stat !== void 0) { + if (stat === false) + return cb(null, stat); + else { + var type = stat.isDirectory() ? "DIR" : "FILE"; + if (needDir && type === "FILE") + return cb(); + else + return cb(null, type, stat); + } + } + var self = this; + var statcb = inflight("stat\0" + abs, lstatcb_); + if (statcb) + fs4.lstat(abs, statcb); + function lstatcb_(er, lstat) { + if (lstat && lstat.isSymbolicLink()) { + return fs4.stat(abs, function(er2, stat2) { + if (er2) + self._stat2(f, abs, null, lstat, cb); + else + self._stat2(f, abs, er2, stat2, cb); + }); + } else { + self._stat2(f, abs, er, lstat, cb); + } + } + }; + Glob2.prototype._stat2 = function(f, abs, er, stat, cb) { + if (er && (er.code === "ENOENT" || er.code === "ENOTDIR")) { + this.statCache[abs] = false; + return cb(); + } + var needDir = f.slice(-1) === "/"; + this.statCache[abs] = stat; + if (abs.slice(-1) === "/" && stat && !stat.isDirectory()) + return cb(null, false, stat); + var c = true; + if (stat) + c = stat.isDirectory() ? "DIR" : "FILE"; + this.cache[abs] = this.cache[abs] || c; + if (needDir && c === "FILE") + return cb(); + return cb(null, c, stat); + }; + } +}); + +// pnp:/Users/style/Documents/Projects/juke-build/src/index.ts +__export(exports, { + ExitCode: () => ExitCode, + Parameter: () => Parameter, + Target: () => Target, + chalk: () => chalk4, + chdir: () => chdir, + createParameter: () => createParameter, + createTarget: () => createTarget, + exec: () => exec, + glob: () => glob, + logger: () => logger, + rm: () => rm, + runner: () => runner, + setup: () => setup, + sleep: () => sleep +}); +var import_chalk4 = __toModule(require_source()); +var import_module = __toModule(require("module")); + +// pnp:/Users/style/Documents/Projects/juke-build/package.json +var version = "0.8.1"; + +// pnp:/Users/style/Documents/Projects/juke-build/src/chdir.ts +var import_fs = __toModule(require("fs")); +var import_path = __toModule(require("path")); +var import_url = __toModule(require("url")); +var chdir = (directory, relativeTo) => { + if (relativeTo) { + if (relativeTo.startsWith("file://")) { + relativeTo = import_url.default.fileURLToPath(relativeTo); + } + try { + const stat = import_fs.default.statSync(relativeTo); + if (!stat.isDirectory()) { + relativeTo = import_path.default.dirname(relativeTo); + } + } catch { + relativeTo = import_path.default.dirname(relativeTo); + } + directory = import_path.default.resolve(relativeTo, directory); + } + process.chdir(directory); +}; + +// pnp:/Users/style/Documents/Projects/juke-build/src/exec.ts +var import_chalk = __toModule(require_source()); +var import_child_process = __toModule(require("child_process")); +var import_fs2 = __toModule(require("fs")); +var import_path2 = __toModule(require("path")); +var children = new Set(); +var killChildren = () => { + for (const child of children) { + child.kill("SIGTERM"); + children.delete(child); + console.log("killed child process"); + } +}; +var trap = (signals, handler) => { + let readline; + if (process.platform === "win32") { + readline = require("readline").createInterface({ + input: process.stdin, + output: process.stdout + }); + } + for (const signal of signals) { + const handleSignal = () => handler(signal); + if (signal === "EXIT") { + process.on("exit", handleSignal); + continue; + } + if (readline) { + readline.on("SIG" + signal, handleSignal); + } + process.on("SIG" + signal, handleSignal); + } +}; +var ExitCode = class extends Error { + constructor(code, signal) { + super("Process exited with code: " + code); + this.code = null; + this.signal = null; + this.code = code; + this.signal = signal || null; + } +}; +var exec = (executable, args = [], options = {}) => { + const _a = options, { + silent = false, + throw: canThrow = true + } = _a, spawnOptions = __objRest(_a, [ + "silent", + "throw" + ]); + return new Promise((resolve, reject) => { + if (import_fs2.default.existsSync(executable)) { + executable = (0, import_path2.resolve)(executable); + } + if (process.env.JUKE_DEBUG) { + console.log(import_chalk.default.grey("$", executable, ...args)); + } + const child = (0, import_child_process.spawn)(executable, args, spawnOptions); + children.add(child); + let stdout = ""; + let stderr = ""; + let combined = ""; + child.stdout.on("data", (data) => { + if (!silent) { + process.stdout.write(data); + } + stdout += data; + combined += data; + }); + child.stderr.on("data", (data) => { + if (!silent) { + process.stderr.write(data); + } + stderr += data; + combined += data; + }); + child.on("error", (err) => reject(err)); + child.on("exit", (code, signal) => { + children.delete(child); + if (code !== 0 && canThrow) { + const error = new ExitCode(code); + error.code = code; + error.signal = signal; + reject(error); + return; + } + resolve({ + code, + signal, + stdout, + stderr, + combined + }); + }); + }); +}; + +// pnp:/Users/style/Documents/Projects/juke-build/src/logger.ts +var import_chalk2 = __toModule(require_source()); +var logger = { + log: (...args) => { + console.log(...args); + }, + error: (...args) => { + console.log(import_chalk2.default.bold(import_chalk2.default.redBright("=>"), import_chalk2.default.whiteBright(...args))); + }, + action: (...args) => { + console.log(import_chalk2.default.bold(import_chalk2.default.greenBright("=>"), import_chalk2.default.whiteBright(...args))); + }, + warn: (...args) => { + console.log(import_chalk2.default.bold(import_chalk2.default.yellowBright("=>"), import_chalk2.default.whiteBright(...args))); + }, + info: (...args) => { + console.log(import_chalk2.default.bold(import_chalk2.default.blueBright("::"), import_chalk2.default.whiteBright(...args))); + }, + debug: (...args) => { + if (process.env.JUKE_DEBUG) { + console.log(import_chalk2.default.gray(...args)); + } + } +}; + +// pnp:/Users/style/Documents/Projects/juke-build/src/string.ts +var import_stringcase = __toModule(require_lib()); +var toKebabCase = (str) => (0, import_stringcase.spinalcase)(str); +var toCamelCase = (str) => (0, import_stringcase.camelcase)(str); +var toConstCase = (str) => (0, import_stringcase.constcase)(str); + +// pnp:/Users/style/Documents/Projects/juke-build/src/parameter.ts +var Parameter = class { + constructor(config) { + this.type = config.type; + this.name = config.name; + this.alias = config.alias; + } + isString() { + return this.type === "string" || this.type === "string[]"; + } + isNumber() { + return this.type === "number" || this.type === "number[]"; + } + isBoolean() { + return this.type === "boolean" || this.type === "boolean[]"; + } + isArray() { + return this.type.endsWith("[]"); + } + toKebabCase() { + if (!this.name) + return; + return toKebabCase(this.name); + } + toConstCase() { + if (!this.name) + return; + return toConstCase(this.name); + } + toCamelCase() { + if (!this.name) + return; + return toCamelCase(this.name); + } +}; +var createParameter = (config) => new Parameter(config); + +// pnp:/Users/style/Documents/Projects/juke-build/src/runner.ts +var import_chalk3 = __toModule(require_source()); +var import_events = __toModule(require("events")); + +// pnp:/Users/style/Documents/Projects/juke-build/src/argparse.ts +var stringToBoolean = (str) => str !== void 0 && str !== null && str !== "false" && str !== "0" && str !== "null"; +var prepareArgs = (args, singleTarget = false) => { + let inGlobalContext = true; + const globalFlags = []; + const taskArgs = []; + let currentTaskArgs; + while (args.length !== 0) { + const arg = args.shift(); + if (!arg) { + continue; + } + if (arg === "--") { + inGlobalContext = false; + continue; + } + if (arg.startsWith("-")) { + if (inGlobalContext) { + globalFlags.push(arg); + } else if (currentTaskArgs) { + currentTaskArgs.push(arg); + } + continue; + } + inGlobalContext = false; + if (singleTarget) { + if (!currentTaskArgs) { + currentTaskArgs = [arg]; + } else { + currentTaskArgs.push(arg); + } + continue; + } + if (currentTaskArgs) { + taskArgs.push(currentTaskArgs); + } + currentTaskArgs = [arg]; + } + if (currentTaskArgs) { + taskArgs.push(currentTaskArgs); + } + return { globalFlags, taskArgs }; +}; +var parseArgs = (args, parameters) => { + args = [...args]; + const parameterMap = new Map(); + const pushValue = (key, value) => { + const values = parameterMap.get(key); + if (!values) { + parameterMap.set(key, [value]); + return; + } + values.push(value); + }; + let currentSet = []; + let currentSetType; + while (true) { + if (currentSet.length === 0) { + const arg2 = args.shift(); + if (!arg2) { + break; + } + if (arg2.startsWith("--")) { + currentSet = [arg2.substr(2)]; + currentSetType = "long"; + } else if (arg2.startsWith("-")) { + currentSet = Array.from(arg2); + currentSetType = "short"; + } else { + currentSet = []; + currentSetType = void 0; + } + } + const arg = currentSet.shift(); + if (currentSetType === "short") { + const parameter = parameters.find((p) => p.alias === arg); + if (!parameter) { + continue; + } + if (parameter.isBoolean()) { + pushValue(parameter, true); + continue; + } + if (currentSet.length === 0) { + continue; + } + const string = currentSet.join(""); + currentSet = []; + if (parameter.isNumber()) { + pushValue(parameter, parseFloat(string)); + continue; + } + pushValue(parameter, string); + continue; + } + if (currentSetType === "long") { + const equalsIndex = arg.indexOf("="); + let name = arg; + let value = null; + if (equalsIndex >= 0) { + name = arg.substr(0, equalsIndex); + value = arg.substr(equalsIndex + 1); + if (value === "") { + value = null; + } + } + const parameter = parameters.find((p) => p.name === name || p.toKebabCase() === name || p.toCamelCase() === name); + if (!parameter) { + continue; + } + if (parameter.isBoolean()) { + const noEqualsSign = equalsIndex < 0; + pushValue(parameter, noEqualsSign || stringToBoolean(value)); + continue; + } + if (value === null) { + continue; + } + if (parameter.isNumber()) { + pushValue(parameter, parseFloat(value)); + continue; + } + pushValue(parameter, value); + continue; + } + } + for (const [key, value] of Object.entries(process.env)) { + const parameter = parameters.find((p) => p.name === key || p.toConstCase() === key); + if (!parameter || parameterMap.has(parameter)) { + continue; + } + let values = []; + if (value !== void 0) { + if (parameter.isArray()) { + values = value.split(","); + } else { + values = [value]; + } + } + for (const value2 of values) { + if (parameter.isBoolean()) { + pushValue(parameter, stringToBoolean(value2)); + continue; + } + if (value2 === "") { + continue; + } + if (parameter.isNumber()) { + pushValue(parameter, parseFloat(value2)); + continue; + } + pushValue(parameter, value2); + continue; + } + } + return parameterMap; +}; + +// pnp:/Users/style/Documents/Projects/juke-build/src/fs.ts +var import_fs3 = __toModule(require("fs")); +var import_glob = __toModule(require_glob()); +var File = class { + constructor(path2) { + this.path = path2; + } + get stat() { + if (this._stat === void 0) { + try { + this._stat = import_fs3.default.statSync(this.path); + } catch { + this._stat = null; + } + } + return this._stat; + } + exists() { + return this.stat !== null; + } + get mtime() { + return this.stat && this.stat.mtime; + } + touch() { + const time = new Date(); + try { + import_fs3.default.utimesSync(this.path, time, time); + } catch (err) { + import_fs3.default.closeSync(import_fs3.default.openSync(this.path, "w")); + } + } +}; +var Glob = class { + constructor(path2) { + this.path = path2; + this.path = path2; + } + toFiles() { + const paths = import_glob.glob.sync(this.path, { + strict: false, + silent: true + }); + return paths.map((path2) => new File(path2)).filter((file) => file.exists()); + } +}; +var compareFiles = (sources, targets) => { + let bestSource = null; + let bestTarget = null; + for (const file of sources) { + if (!bestSource || file.mtime > bestSource.mtime) { + bestSource = file; + } + } + for (const file of targets) { + if (!file.exists()) { + return `target '${file.path}' is missing`; + } + if (!bestTarget || file.mtime < bestTarget.mtime) { + bestTarget = file; + } + } + if (!bestSource) { + if (bestTarget) { + return false; + } + return "no known sources or targets"; + } + if (!bestTarget) { + return "no targets were specified"; + } + if (bestSource.mtime > bestTarget.mtime) { + return `source '${bestSource.path}' is newer than target '${bestTarget.path}'`; + } + return false; +}; +var glob = (globPath) => { + const unsafePaths = import_glob.glob.sync(globPath, { + strict: false, + silent: true + }); + const safePaths = []; + for (let path2 of unsafePaths) { + try { + import_fs3.default.lstatSync(path2); + safePaths.push(path2); + } catch { + } + } + return safePaths; +}; +var rm = (path2, options = {}) => { + for (const p of glob(path2)) { + try { + if (options.recursive && import_fs3.default.rmSync) { + import_fs3.default.rmSync(p, options); + } else if (options.recursive) { + import_fs3.default.rmdirSync(p, { recursive: true }); + } else { + import_fs3.default.unlinkSync(p); + } + } catch (err) { + if (!options.force) { + throw err; + } + } + } +}; + +// pnp:/Users/style/Documents/Projects/juke-build/src/runner.ts +var runner = new class Runner { + constructor() { + this.config = {}; + this.targets = []; + this.parameters = []; + this.workers = []; + } + configure(config) { + this.config = config; + this.targets = config.targets || []; + this.parameters = config.parameters || []; + } + async start() { + const startedAt = Date.now(); + const { globalFlags, taskArgs } = prepareArgs(process.argv.slice(2), this.config.singleTarget); + const globalParameterMap = parseArgs(globalFlags, this.parameters); + const targetsToRun = new Map(); + const showListOfTargets = () => { + logger.info("Available targets:"); + for (const target of this.targets) { + logger.log(" - " + import_chalk3.default.cyan(target.name)); + } + logger.info("Available parameters:"); + for (const parameter of this.parameters) { + logger.log(" --" + parameter.name + (parameter.alias ? `, -${parameter.alias}` : "") + ` (type: ${parameter.type})`); + } + }; + if (globalFlags.includes("-h") || globalFlags.includes("--help")) { + showListOfTargets(); + process.exit(1); + } + for (const [taskName, ...args] of taskArgs) { + const target = this.targets.find((t) => t.name === taskName); + if (!target) { + const nameStr = import_chalk3.default.cyan(taskName); + logger.error(`Task '${nameStr}' was not found.`); + showListOfTargets(); + process.exit(1); + } + targetsToRun.set(target, { args }); + } + if (targetsToRun.size === 0) { + if (!this.config.default) { + logger.error(`No task was provided in arguments.`); + showListOfTargets(); + process.exit(1); + } + targetsToRun.set(this.config.default, { + args: [] + }); + } + let toVisit = Array.from(targetsToRun.entries()); + while (true) { + const node = toVisit.shift(); + if (!node) { + break; + } + const [target, meta] = node; + if (!meta.context) { + const localParameterMap = parseArgs(meta.args, target.parameters); + meta.context = { + get: (parameter) => { + let value = localParameterMap.get(parameter); + if (value === void 0) { + value = globalParameterMap.get(parameter); + } + if (parameter.isArray()) { + return value || []; + } else { + const returnValue = value && value[0]; + return returnValue !== void 0 ? returnValue : null; + } + }, + args: meta.args + }; + } + if (!meta.dependsOn) { + const optionalDependsOn = (typeof target.dependsOn === "function" ? await target.dependsOn(meta.context) : target.dependsOn) || []; + meta.dependsOn = optionalDependsOn.filter((dep) => typeof dep === "object" && dep !== null); + } + for (const dependency of meta.dependsOn) { + if (!targetsToRun.has(dependency)) { + const depMeta = { args: meta.args }; + targetsToRun.set(dependency, depMeta); + toVisit.push([dependency, depMeta]); + } else { + logger.debug("Dropped a possible circular dependency", dependency); + } + } + } + for (const [target, meta] of targetsToRun.entries()) { + const context = meta.context; + const dependsOn = meta.dependsOn; + const spawnedWorker = new Worker(target, context, dependsOn); + this.workers.push(spawnedWorker); + spawnedWorker.onFinish(() => { + for (const worker of this.workers) { + if (worker === spawnedWorker) { + continue; + } + worker.resolveDependency(target); + } + }); + spawnedWorker.onFail(() => { + for (const worker of this.workers) { + if (worker === spawnedWorker) { + continue; + } + worker.rejectDependency(target); + } + }); + } + const resolutions = await Promise.all(this.workers.map((worker) => new Promise((resolve) => { + worker.onFinish(() => resolve(true)); + worker.onFail(() => resolve(false)); + worker.start(); + }))); + const hasFailedWorkers = resolutions.includes(false); + if (!hasFailedWorkers) { + const time = (Date.now() - startedAt) / 1e3 + "s"; + const timeStr = import_chalk3.default.magenta(time); + logger.action(`Done in ${timeStr}`); + } + return Number(hasFailedWorkers); + } +}(); +var Worker = class { + constructor(target, context, dependsOn) { + this.target = target; + this.context = context; + this.dependsOn = dependsOn; + this.emitter = new import_events.default(); + this.hasFailed = false; + this.dependencies = new Set(dependsOn); + this.debugLog("ready"); + } + resolveDependency(target) { + var _a; + this.dependencies.delete(target); + (_a = this.generator) == null ? void 0 : _a.next(); + } + rejectDependency(target) { + var _a; + this.dependencies.delete(target); + this.hasFailed = true; + (_a = this.generator) == null ? void 0 : _a.next(); + } + start() { + this.generator = this.process(); + this.generator.next(); + } + onFinish(fn) { + this.emitter.once("finish", fn); + } + onFail(fn) { + this.emitter.once("fail", fn); + } + debugLog(...args) { + logger.debug(`${this.target.name}:`, ...args); + } + async *process() { + const nameStr = import_chalk3.default.cyan(this.target.name); + this.debugLog("Waiting for dependencies"); + while (true) { + if (this.dependencies.size === 0) { + break; + } + yield; + } + if (this.hasFailed) { + const nameStr2 = import_chalk3.default.cyan(this.target.name); + logger.error(`Target '${nameStr2}' failed`); + this.emitter.emit("fail"); + return; + } + if (this.target.onlyWhen) { + const result = await this.target.onlyWhen(this.context); + if (!result) { + logger.info(`Skipping '${nameStr}' (condition unmet)`); + this.emitter.emit("finish"); + return; + } + this.debugLog("Needs rebuild based on onlyWhen condition"); + } + this.debugLog("Comparing inputs and outputs"); + const fileMapper = async (fileIo) => { + const optionalPaths = (typeof fileIo === "function" ? await fileIo(this.context) : fileIo) || []; + const paths = optionalPaths.filter((path2) => typeof path2 === "string"); + return paths.flatMap((path2) => path2.includes("*") ? new Glob(path2).toFiles() : new File(path2)); + }; + const inputs = await fileMapper(this.target.inputs); + const outputs = await fileMapper(this.target.outputs); + if (inputs.length > 0) { + const needsRebuild = compareFiles(inputs, outputs); + if (!needsRebuild) { + logger.info(`Skipping '${nameStr}' (up to date)`); + this.emitter.emit("finish"); + return; + } else { + this.debugLog("Needs rebuild, reason:", needsRebuild); + } + } else { + this.debugLog("Nothing to compare"); + } + if (this.hasFailed) { + const nameStr2 = import_chalk3.default.cyan(this.target.name); + logger.error(`Target '${nameStr2}' failed (at file comparison stage)`); + this.emitter.emit("fail"); + return; + } + if (this.target.executes) { + logger.action(`Starting '${nameStr}'`); + const startedAt = Date.now(); + try { + await this.target.executes(this.context); + } catch (err) { + const time2 = (Date.now() - startedAt) / 1e3 + "s"; + const timeStr2 = import_chalk3.default.magenta(time2); + if (err instanceof ExitCode) { + const codeStr = import_chalk3.default.red(err.code); + logger.error(`Target '${nameStr}' failed in ${timeStr2}, exit code: ${codeStr}`); + } else { + logger.error(`Target '${nameStr}' failed in ${timeStr2}, unhandled exception:`); + console.error(err); + } + this.emitter.emit("fail"); + return; + } + const time = (Date.now() - startedAt) / 1e3 + "s"; + const timeStr = import_chalk3.default.magenta(time); + logger.action(`Finished '${nameStr}' in ${timeStr}`); + } + if (outputs.length > 0) { + for (const file of outputs) { + file.touch(); + } + } + this.emitter.emit("finish"); + } +}; + +// pnp:/Users/style/Documents/Projects/juke-build/src/target.ts +var Target = class { + constructor(target) { + this.name = target.name; + this.dependsOn = target.dependsOn || []; + this.executes = target.executes; + this.inputs = target.inputs || []; + this.outputs = target.outputs || []; + this.parameters = target.parameters || []; + this.onlyWhen = target.onlyWhen; + } +}; +var createTarget = (config) => new Target(config); + +// pnp:/Users/style/Documents/Projects/juke-build/src/index.ts +var chalk4 = import_chalk4.default; +var lastExitCode = null; +var setup = async (config) => { + logger.info(`Juke Build version ${version}`); + if (!config.file) { + logger.error(`Field 'file' is required in Juke.setup()`); + process.exit(1); + } + let buildModule = await import(config.file); + const isCommonJs = Boolean((0, import_module.createRequire)(config.file).cache[config.file]); + if (isCommonJs) { + buildModule = buildModule.default; + } + const targets = []; + const parameters = []; + for (const name of Object.keys(buildModule)) { + if (name === "default") { + continue; + } + const obj = buildModule[name]; + if (obj instanceof Target) { + if (!obj.name) { + obj.name = name !== "Target" ? toKebabCase(name.replace(/Target$/, "")) : "target"; + } + targets.push(obj); + continue; + } + if (obj instanceof Parameter) { + if (!obj.name) { + obj.name = name !== "Parameter" ? toKebabCase(name.replace(/Parameter$/, "")) : "parameter"; + } + parameters.push(obj); + continue; + } + } + const DefaultTarget = buildModule.default || buildModule.DefaultTarget || buildModule.Default; + if (DefaultTarget && !(DefaultTarget instanceof Target)) { + logger.error(`Default export is not a valid 'Target' object.`); + process.exit(1); + } + runner.configure({ + parameters, + targets, + default: DefaultTarget, + singleTarget: config.singleTarget + }); + return runner.start().then((code) => { + lastExitCode = code; + return code; + }); +}; +var sleep = (time) => new Promise((resolve) => setTimeout(resolve, time)); +trap(["EXIT", "BREAK", "HUP", "INT", "TERM"], (signal) => { + if (signal !== "EXIT") { + console.log("Received", signal); + } + killChildren(); + if (signal !== "EXIT") { + process.exit(1); + } else if (lastExitCode !== null) { + process.exit(lastExitCode); + } +}); +var exceptionHandler = (err) => { + console.log(err); + killChildren(); + process.exit(1); +}; +process.on("unhandledRejection", exceptionHandler); +process.on("uncaughtException", exceptionHandler); +// Annotate the CommonJS export names for ESM import in node: +0 && (module.exports = { + ExitCode, + Parameter, + Target, + chalk, + chdir, + createParameter, + createTarget, + exec, + glob, + logger, + rm, + runner, + setup, + sleep +}); diff --git a/tools/build/juke/package.json b/tools/build/juke/package.json new file mode 100644 index 0000000000..0fef86e339 --- /dev/null +++ b/tools/build/juke/package.json @@ -0,0 +1,4 @@ +{ + "private": true, + "type": "commonjs" +} diff --git a/tools/build/lib/byond.js b/tools/build/lib/byond.js new file mode 100644 index 0000000000..8b6abcf8fe --- /dev/null +++ b/tools/build/lib/byond.js @@ -0,0 +1,209 @@ +import fs from 'fs'; +import path from 'path'; +import Juke from '../juke/index.js'; +import { regQuery } from './winreg.js'; + +/** + * Cached path to DM compiler + */ +let dmPath; + +const getDmPath = async (namedVersion) => { + // Use specific named version + if(namedVersion) { + return getNamedByondVersionPath(namedVersion); + } + if (dmPath) { + return dmPath; + } + dmPath = await (async () => { + // Search in array of paths + const paths = [ + ...((process.env.DM_EXE && process.env.DM_EXE.split(',')) || []), + ...getDefaultNamedByondVersionPath(), + 'C:\\Program Files\\BYOND\\bin\\dm.exe', + 'C:\\Program Files (x86)\\BYOND\\bin\\dm.exe', + ['reg', 'HKLM\\Software\\Dantom\\BYOND', 'installpath'], + ['reg', 'HKLM\\SOFTWARE\\WOW6432Node\\Dantom\\BYOND', 'installpath'], + ]; + const isFile = path => { + try { + return fs.statSync(path).isFile(); + } + catch (err) { + return false; + } + }; + for (let path of paths) { + // Resolve a registry key + if (Array.isArray(path)) { + const [type, ...args] = path; + path = await regQuery(...args); + } + if (!path) { + continue; + } + // Check if path exists + if (isFile(path)) { + return path; + } + if (isFile(path + '/dm.exe')) { + return path + '/dm.exe'; + } + if (isFile(path + '/bin/dm.exe')) { + return path + '/bin/dm.exe'; + } + } + // Default paths + return ( + process.platform === 'win32' && 'dm.exe' + || 'DreamMaker' + ); + })(); + return dmPath; +}; + + + +const getNamedByondVersionPath = (namedVersion) =>{ + const all_entries = getAllNamedDmVersions(true) + const map_entry = all_entries.find(x => x.name === namedVersion); + if(map_entry === undefined){ + Juke.logger.error(`No named byond version with name "${namedVersion}" found.`); + throw new Juke.ExitCode(1); + } + return map_entry.path; +} + +const getDefaultNamedByondVersionPath = () =>{ + const all_entries = getAllNamedDmVersions(false) + const map_entry = all_entries.find(x => x.default == true); + if(map_entry === undefined) + return [] + return [map_entry.path]; +} + + +/** @type {[{ name, path, default }]} */ +let namedDmVersionList; +export const NamedVersionFile = "tools/build/dm_versions.json" + +const getAllNamedDmVersions = (throw_on_fail) => { + if(!namedDmVersionList){ + if(!fs.existsSync(NamedVersionFile)){ + if(throw_on_fail){ + Juke.logger.error(`No byond version map file found.`); + throw new Juke.ExitCode(1); + } + namedDmVersionList = [] + return namedDmVersionList; + } + try{ + namedDmVersionList = JSON.parse(fs.readFileSync(NamedVersionFile)); + } + catch(err){ + if(throw_on_fail){ + Juke.logger.error(`Failed to parse byond version map file. ${err}`); + throw new Juke.ExitCode(1); + } + namedDmVersionList = [] + return namedDmVersionList; + } + } + return namedDmVersionList; +} + +/** + * @param {string} dmeFile + * @param {{ + * defines?: string[]; + * warningsAsErrors?: boolean; + * namedDmVersion?: string; + * }} options + */ +export const DreamMaker = async (dmeFile, options = {}) => { + if(options.namedDmVersion !== null){ + Juke.logger.info('Using named byond version:', options.namedDmVersion); + } + const dmPath = await getDmPath(options.namedDmVersion); + // Get project basename + const dmeBaseName = dmeFile.replace(/\.dme$/, ''); + // Make sure output files are writable + const testOutputFile = (name) => { + try { + fs.closeSync(fs.openSync(name, 'r+')); + } + catch (err) { + if (err && err.code === 'ENOENT') { + return; + } + if (err && err.code === 'EBUSY') { + Juke.logger.error(`File '${name}' is locked by the DreamDaemon process.`); + Juke.logger.error(`Stop the currently running server and try again.`); + throw new Juke.ExitCode(1); + } + throw err; + } + }; + + const testDmVersion = async (dmPath) => { + const execReturn = await Juke.exec(dmPath, [], { silent: true, throw: false }); + const version = execReturn.combined.match(`DM compiler version (\\d+)\\.(\\d+)`) + if(version == null){ + Juke.logger.error(`Unexpected DreamMaker return, ensure "${dmPath}" is correct DM path.`) + throw new Juke.ExitCode(1); + } + const requiredMajorVersion = 515; + const requiredMinorVersion = 1597 // First with -D switch functionality + const major = Number(version[1]); + const minor = Number(version[2]); + if(major < requiredMajorVersion || major == requiredMajorVersion && minor < requiredMinorVersion){ + Juke.logger.error(`${requiredMajorVersion}.${requiredMinorVersion} or later DM version required. Version ${major}.${minor} found at: ${dmPath}`) + throw new Juke.ExitCode(1); + } + } + + await testDmVersion(dmPath); + testOutputFile(`${dmeBaseName}.dmb`); + testOutputFile(`${dmeBaseName}.rsc`); + + const runWithWarningChecks = async (dmPath, args) => { + const execReturn = await Juke.exec(dmPath, args); + if(options.warningsAsErrors){ + const ignoredWarningCodes = options.ignoreWarningCodes ?? []; + if(ignoredWarningCodes.length > 0 ){ + Juke.logger.info('Ignored warning codes:', ignoredWarningCodes.join(', ')); + } + const base_regex = '\\d+:warning( \\([a-z_]*\\))?:' + const with_ignores = `\\d+:warning( \\([a-z_]*\\))?:(?!(${ignoredWarningCodes.map(x => `.*${x}.*$`).join('|')}))` + const reg = ignoredWarningCodes.length > 0 ? new RegExp(with_ignores, "m") : new RegExp(base_regex,"m") + if (options.warningsAsErrors && execReturn.combined.match(reg)) { + Juke.logger.error(`Compile warnings treated as errors`); + throw new Juke.ExitCode(2); + } + } + return execReturn; + } + // Compile + const { defines } = options; + if (defines && defines.length > 0) { + Juke.logger.info('Using defines:', defines.join(', ')); + } + + await runWithWarningChecks(dmPath, [...defines.map(def => `-D${def}`), dmeFile]); +}; + + +/** +* @param {{ +* dmbFile: string; +* namedDmVersion?: string; +* }} options +*/ +export const DreamDaemon = async (options, ...args) => { + const dmPath = await getDmPath(options.namedDmVersion); + const baseDir = path.dirname(dmPath); + const ddExeName = process.platform === 'win32' ? 'dreamdaemon.exe' : 'DreamDaemon'; + const ddExePath = baseDir === '.' ? ddExeName : path.join(baseDir, ddExeName); + return Juke.exec(ddExePath, [options.dmbFile, ...args]); +}; diff --git a/tools/build/lib/winreg.js b/tools/build/lib/winreg.js new file mode 100644 index 0000000000..0916ea3a31 --- /dev/null +++ b/tools/build/lib/winreg.js @@ -0,0 +1,42 @@ +/** + * Tools for dealing with Windows Registry bullshit. + * + * Adapted from `tgui/packages/tgui-dev-server/winreg.js`. + * + * @file + * @copyright 2021 Aleksej Komarov + * @license MIT + */ + +import { exec } from 'child_process'; +import { promisify } from 'util'; + +export const regQuery = async (path, key) => { + if (process.platform !== 'win32') { + return null; + } + try { + const command = `reg query "${path}" /v ${key}`; + const { stdout } = await promisify(exec)(command); + const keyPattern = ` ${key} `; + const indexOfKey = stdout.indexOf(keyPattern); + if (indexOfKey === -1) { + return null; + } + const indexOfEol = stdout.indexOf('\r\n', indexOfKey); + if (indexOfEol === -1) { + return null; + } + const indexOfValue = stdout.indexOf( + ' ', + indexOfKey + keyPattern.length); + if (indexOfValue === -1) { + return null; + } + const value = stdout.substring(indexOfValue + 4, indexOfEol); + return value; + } + catch (err) { + return null; + } +}; diff --git a/tools/build/lib/yarn.js b/tools/build/lib/yarn.js new file mode 100644 index 0000000000..84b717001f --- /dev/null +++ b/tools/build/lib/yarn.js @@ -0,0 +1,16 @@ +import Juke from '../juke/index.js'; + +let yarnPath; + +export const yarn = (...args) => { + if (!yarnPath) { + yarnPath = Juke.glob('./tgui/.yarn/releases/*.cjs')[0] + .replace('/tgui/', '/'); + } + return Juke.exec('node', [ + yarnPath, + ...args.filter((arg) => typeof arg === 'string'), + ], { + cwd: './tgui', + }); +}; diff --git a/tools/build/package.json b/tools/build/package.json new file mode 100644 index 0000000000..e986b24bba --- /dev/null +++ b/tools/build/package.json @@ -0,0 +1,4 @@ +{ + "private": true, + "type": "module" +} diff --git a/tools/icon_cutter/README.md b/tools/icon_cutter/README.md new file mode 100644 index 0000000000..91edd1a406 --- /dev/null +++ b/tools/icon_cutter/README.md @@ -0,0 +1,23 @@ +# Hypnagogic + +## What is this? + +This folder will hold a set of cached versions of hypnagogic, our icon cutter. We autodownload the tagged version from github on build. + +## How is it used? + +The cutter works off 2 inputs. A file, typically a png, and a toml config file in the format `{filename}.{other input extension}.toml` + +The input resource is transformed by the cutter following a set of rules set out in the .toml file. +Typically these are very basic. We have a set of templates in repo stored in [cutter_templates/](../../cutter_templates/) and most uses just copy from them. + +You can find more information about it in its repository, found [here](https://github.com/actioninja/hypnagogic), the examples subfolder in particular contains fully detailed explanations of all the config values for the different types of cutting (there are more then one) + +## How does it work? + +Anytime you build the game, CBT will check and see if any of the files that the cutter cares about have been modified +If they have been, the cutter will perform a full runthrough, and compile all inputs down into typically dmis + +These dmis can then be committed, and badabing badaboom we have autocut sprites. + +If you want to change the cutter version we have a set of config values in [dependancies.sh](../../dependencies.sh) that control it. diff --git a/tools/icon_cutter/cache/.gitignore b/tools/icon_cutter/cache/.gitignore new file mode 100644 index 0000000000..038aa919d4 --- /dev/null +++ b/tools/icon_cutter/cache/.gitignore @@ -0,0 +1 @@ +hypnagogic* diff --git a/tools/icon_cutter/check.py b/tools/icon_cutter/check.py new file mode 100644 index 0000000000..568ec27243 --- /dev/null +++ b/tools/icon_cutter/check.py @@ -0,0 +1,133 @@ +import glob +import os +import re +import sys +import hashlib +import platform +import subprocess +from PIL import Image +import numpy as np +import difflib + +BUF_SIZE = 65536 # lets read stuff in 64kb chunks! +chop_filename = re.compile(r"^.*(\..+?)$", re.M) +chop_extension = re.compile(r"^(.*)\..+?$", re.M) + +def reshape_split(image: np.ndarray, cut_to: tuple): + img_height, img_width, channels = image.shape + + tile_height, tile_width = cut_to + + tiled_array = image.reshape(img_height // tile_height, + tile_height, + img_width // tile_width, + tile_width, + channels) + tiled_array = tiled_array.swapaxes(1, 2) + tiled_array = tiled_array.reshape(tile_height, -1, channels) + return tiled_array + +def get_file_hash(path): + path_suffix = re.sub(chop_filename, r"\1", path, count = 1) + if path_suffix == ".dmi" or path_suffix == ".png": + return hash_dmi(path) + else: + return hash_file(path) + +def hash_dmi(path): + md5 = hashlib.md5() + + dmi = Image.open(path) + dmi = dmi.convert('RGBA') + dmi.load() # Needed only for .png EXIF data (see citation above) + dmi_metadata = dmi.info['Description'] + md5.update(dmi_metadata.encode('utf-8')) + + readable_metadata = dict( + map(lambda entry: (entry[0], entry[1]), + map(lambda entry : (entry[0].strip(), entry[1].strip()), + filter(lambda entry: entry[0].strip() == 'width' or entry[0].strip() == 'height', + map(lambda entry : entry.split("="), dmi_metadata.split("\n")))))) + + icon_hash = hashlib.md5() + divided_dmi = reshape_split(np.asarray(dmi), (int(readable_metadata['height']), int(readable_metadata['width']))) + for i in range(divided_dmi.shape[0]): + bytes = divided_dmi[1].tobytes() + md5.update(bytes) + icon_hash.update(bytes) + return (md5.hexdigest(), dmi_metadata, icon_hash.hexdigest()) + +def hash_file(path): + md5 = hashlib.md5() + + with open(path, 'rb') as f: + while True: + data = f.read(BUF_SIZE) + if not data: + break + md5.update(data) + + return (md5.hexdigest(), None, None) + +path_to_us = os.path.realpath(os.path.dirname(__file__)) +pass_count = 0 +fail_count = 0 +output_hash = {} +files = [] +if platform.system() == "Windows": + files = glob.glob(f"{path_to_us}\..\\..\\icons\\**\*.toml", recursive = True) +else: + files = glob.glob(f"{path_to_us}/../../icons/**/*.toml", recursive = True) +for cutter_template in files: + resource_name = re.sub(chop_extension, r"\1", cutter_template, count = 1) + if not os.path.isfile(resource_name): + print(f"::error template={cutter_template} exists but lacks a matching resource file ({resource_name})") + fail_count += 1 + continue + + output_name = re.sub(chop_extension, r"\1.dmi", resource_name, count = 1) + if not os.path.isfile(output_name): + print(f"::error template={cutter_template} and resource={resource_name} exist but they lack a matching output={output_name}. (Try rebuilding)") + fail_count += 1 + continue + + output_hash[output_name] = get_file_hash(output_name) + +# Execute cutter +if platform.system() == "Windows": + subprocess.run(f"{path_to_us}\..\\build\\build.bat --force-recut --ci icon-cutter") +else: + subprocess.run(f"{path_to_us}/../build/build --force-recut --ci icon-cutter", shell = True) + +for output_name in output_hash: + old_hash, old_metadata, old_icon_hash = output_hash[output_name] + new_hash, new_metadata, new_icon_hash = get_file_hash(output_name) + if old_hash == new_hash: + pass_count += 1 + continue + if old_metadata != new_metadata: + print("Metadata differs!") + events = "" + current_op = None + working = "" + for index, op in enumerate(difflib.ndiff(old_metadata, new_metadata)): + in_nothing = False + if current_op == None: + current_op = op[0] + if current_op != op[0]: + events += f"{current_op*10}\n{working}\n" + current_op = op[0] + working = "" + if op[0]== ' ': + continue + working += f"{op[-1]}" + events += f"{current_op*10}\n{working}\n" + print(events, end="") + if old_icon_hash != new_icon_hash: + print("Icon hashes differ!") + fail_count += 1 + print(f"::error output={output_name} and its templates all exist but were not comitted fully compiled") + +print(f"{len(output_hash)} templates checked, {pass_count} passed, {fail_count} failed", end="") +if fail_count > 0: + sys.exit(1) From 62d3e2c77665560a52c0aa24fdba7483969c2bb5 Mon Sep 17 00:00:00 2001 From: ShadowLarkens Date: Tue, 17 Sep 2024 20:22:55 -0700 Subject: [PATCH 03/19] Fix problems found by fixing validate_files --- code/controllers/subsystems/media_tracks.dm | 2 +- code/game/machinery/jukebox.dm | 2 +- code/modules/food/kitchen/cooking_machines/_appliance.dm | 4 ++-- maps/expedition_vr/aerostat/aerostat_science_outpost.dmm | 6 ------ 4 files changed, 4 insertions(+), 10 deletions(-) diff --git a/code/controllers/subsystems/media_tracks.dm b/code/controllers/subsystems/media_tracks.dm index 9bd4f3ca1a..7fbffa65b6 100644 --- a/code/controllers/subsystems/media_tracks.dm +++ b/code/controllers/subsystems/media_tracks.dm @@ -172,7 +172,7 @@ SUBSYSTEM_DEF(media_tracks) sort_tracks() return - to_chat(C, "") + to_chat(C, "Couldn't find a track matching the specified parameters.") /datum/controller/subsystem/media_tracks/proc/add_track(var/mob/user, var/new_url, var/new_title, var/new_duration, var/new_artist, var/new_genre, var/new_secret, var/new_lobby) if(!check_rights(R_DEBUG|R_FUN)) diff --git a/code/game/machinery/jukebox.dm b/code/game/machinery/jukebox.dm index caaaaef648..38948cff0f 100644 --- a/code/game/machinery/jukebox.dm +++ b/code/game/machinery/jukebox.dm @@ -441,7 +441,7 @@ qdel(T) return - to_chat(C, "") + to_chat(C, "Couldn't find a track matching the specified parameters.") /obj/machinery/media/jukebox/ghost/vv_get_dropdown() . = ..() diff --git a/code/modules/food/kitchen/cooking_machines/_appliance.dm b/code/modules/food/kitchen/cooking_machines/_appliance.dm index c58bed83e3..3cc1cf57f7 100644 --- a/code/modules/food/kitchen/cooking_machines/_appliance.dm +++ b/code/modules/food/kitchen/cooking_machines/_appliance.dm @@ -77,7 +77,7 @@ string += "-\a [CI.container.label(null, CI.combine_target)], [report_progress(CI)]
" return string else - to_chat(user, "") + to_chat(user, "It is empty.") /obj/machinery/appliance/proc/report_progress_tgui(datum/cooking_item/CI) if(!CI || !CI.max_cookwork) @@ -812,4 +812,4 @@ return food_safety = !food_safety - to_chat(usr, "You flip \the [src]'s safe mode switch. Safe mode is now [food_safety ? "on" : "off"].") \ No newline at end of file + to_chat(usr, "You flip \the [src]'s safe mode switch. Safe mode is now [food_safety ? "on" : "off"].") diff --git a/maps/expedition_vr/aerostat/aerostat_science_outpost.dmm b/maps/expedition_vr/aerostat/aerostat_science_outpost.dmm index 499219e3dd..5310c85abc 100644 --- a/maps/expedition_vr/aerostat/aerostat_science_outpost.dmm +++ b/maps/expedition_vr/aerostat/aerostat_science_outpost.dmm @@ -318,7 +318,6 @@ master_tag = "aerostat_n_n_airlock"; pixel_x = 24; pixel_y = 24; - tag = "aerostat_n_n_sensint" }, /turf/simulated/floor/tiled/techfloor, /area/offmap/aerostat/inside/airlock/north) @@ -924,7 +923,6 @@ master_tag = "aerostat_s_s_airlock"; pixel_x = -24; pixel_y = -24; - tag = "aerostat_s_s_sensint" }, /turf/simulated/floor/tiled/techfloor, /area/offmap/aerostat/inside/airlock/south) @@ -1969,7 +1967,6 @@ dir = 8; master_tag = "aerostat_n_e_airlock"; pixel_x = 32; - tag = "aerostat_n_e_sensint" }, /turf/simulated/floor/tiled/techfloor, /area/offmap/aerostat/inside/airlock/north) @@ -8673,7 +8670,6 @@ dir = 8; master_tag = "aerostat_s_e_airlock"; pixel_x = 24; - tag = "aerostat_s_e_sensint" }, /turf/simulated/floor/tiled/techfloor, /area/offmap/aerostat/inside/airlock/south) @@ -11336,7 +11332,6 @@ dir = 4; master_tag = "aerostat_n_w_airlock"; pixel_x = -32; - tag = "aerostat_n_w_sensint" }, /turf/simulated/floor/tiled/techfloor, /area/offmap/aerostat/inside/airlock/north) @@ -13479,7 +13474,6 @@ dir = 4; master_tag = "aerostat_s_w_airlock"; pixel_x = -24; - tag = "aerostat_s_w_sensint" }, /turf/simulated/floor/tiled/techfloor, /area/offmap/aerostat/inside/airlock/south) From 75abae7a947747716f70830e9ba42ec5d0b9e9e3 Mon Sep 17 00:00:00 2001 From: ShadowLarkens Date: Tue, 17 Sep 2024 19:26:13 -0700 Subject: [PATCH 04/19] Use CBT in CI --- .github/workflows/ci.yml | 61 ++++++++++----- _build_dependencies.sh | 2 +- dependencies.sh | 2 +- tools/bootstrap/node | 0 tools/bootstrap/python | 0 tools/build/build | 0 tools/build/build.bat | 0 tools/build/build.js | 13 ++-- tools/ci/build_tgui.sh | 0 tools/ci/ci_dependencies.sh | 6 ++ tools/ci/compile_and_run.sh | 9 +-- tools/ci/install_build_deps.sh | 12 --- tools/ci/install_byond.sh | 0 tools/ci/install_node.sh | 10 +++ tools/ci/install_ripgrep.sh | 6 ++ tools/ci/validate_files.sh | 136 +++++++++++++++++++++++++-------- tools/requirements.txt | 13 ++++ 17 files changed, 196 insertions(+), 74 deletions(-) mode change 100644 => 100755 tools/bootstrap/node mode change 100644 => 100755 tools/bootstrap/python mode change 100644 => 100755 tools/build/build mode change 100644 => 100755 tools/build/build.bat mode change 100644 => 100755 tools/ci/build_tgui.sh create mode 100644 tools/ci/ci_dependencies.sh mode change 100644 => 100755 tools/ci/compile_and_run.sh delete mode 100644 tools/ci/install_build_deps.sh mode change 100644 => 100755 tools/ci/install_byond.sh create mode 100755 tools/ci/install_node.sh create mode 100644 tools/ci/install_ripgrep.sh mode change 100644 => 100755 tools/ci/validate_files.sh create mode 100644 tools/requirements.txt diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4f10fceae2..ab7c849f12 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,31 +8,58 @@ env: BASENAME: "vorestation" jobs: - file_tests: + + run_linters: name: Run Linters runs-on: ubuntu-20.04 + steps: - uses: actions/checkout@v4 - - name: Ensure +x on CI directory - run: | - chmod -R +x ./tools/ci - - name: Install Tools - run: | - bash tools/ci/install_build_deps.sh + # Caches - name: Restore Yarn cache - if: "${{ contains(github.event.pull_request.labels.*.name, 'Type: TGUI Bundle') }}" uses: actions/cache@v4 with: path: tgui/.yarn/cache - key: ${{ runner.os }}-yarn-${{ secrets.CACHE_PURGE_KEY }}-${{ hashFiles('tgui/yarn.lock') }} + key: ${{ runner.os }}-yarn-${{ hashFiles('tgui/yarn.lock') }} restore-keys: | - ${{ runner.os }}-build-${{ secrets.CACHE_PURGE_KEY }}- - ${{ runner.os }}-build- - ${{ runner.os }}- - - name: Run Tests + ${{ runner.os }}-yarn- + - name: Restore Node cache + uses: actions/cache@v4 + with: + path: ~/.nvm + key: ${{ runner.os }}-node-${{ hashFiles('dependencies.sh') }} + restore-keys: | + ${{ runner.os }}-node- + - name: Restore Bootstrap cache + uses: actions/cache@v4 + with: + path: tools/bootstrap/.cache + key: ${{ runner.os }}-bootstrap-${{ hashFiles('tools/requirements.txt') }} + restore-keys: | + ${{ runner.os }}-bootstrap- + - name: Restore Rust cache + uses: actions/cache@v4 + with: + path: ~/.cargo + key: ${{ runner.os }}-rust-${{ hashFiles('tools/ci/ci_dependencies.sh')}} + restore-keys: | + ${{ runner.os }}-rust- + - name: Restore Cutter cache + uses: actions/cache@v4 + with: + path: tools/icon_cutter/cache + key: ${{ runner.os }}-cutter-${{ hashFiles('dependencies.sh') }} + # End Caches + - name: Install Tools run: | - tools/ci/validate_files.sh - tools/ci/build_tgui.sh + pip3 install setuptools + bash tools/ci/install_node.sh + bash tools/ci/install_ripgrep.sh + tools/bootstrap/python -c '' + - name: Run Grep Checks + run: tools/ci/validate_files.sh + - name: Run TGUI Checks + run: tools/build/build --ci lint tgui-test dreamchecker: name: DreamChecker @@ -68,7 +95,7 @@ jobs: map: ['tether', 'stellar_delight', 'groundbase'] # name: Integration Tests (${{ matrix.map }}) name: Integration Tests - # needs: ['file_tests', 'dreamchecker'] + # needs: ['run_linters', 'dreamchecker'] runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v4 @@ -119,7 +146,7 @@ jobs: tests_successful: name: Integration Tests - needs: ['file_tests', 'dreamchecker', 'unit_tests'] + needs: ['run_linters', 'dreamchecker', 'unit_tests'] runs-on: ubuntu-20.04 steps: - name: Report Success diff --git a/_build_dependencies.sh b/_build_dependencies.sh index a66b3a5a86..2edcacda85 100644 --- a/_build_dependencies.sh +++ b/_build_dependencies.sh @@ -8,4 +8,4 @@ export BYOND_MAJOR=515 # Byond Minor export BYOND_MINOR=1637 # Macro Count -export MACRO_COUNT=4 +export MACRO_COUNT=8 diff --git a/dependencies.sh b/dependencies.sh index cba44327e5..57e14e9c8c 100644 --- a/dependencies.sh +++ b/dependencies.sh @@ -19,7 +19,7 @@ export NODE_VERSION_COMPAT=20.2.0 export SPACEMAN_DMM_VERSION=suite-1.8 # Python version for mapmerge and other tools -export PYTHON_VERSION=3.9.0 +export PYTHON_VERSION=3.8.10 #dreamluau repo export DREAMLUAU_REPO="tgstation/dreamluau" diff --git a/tools/bootstrap/node b/tools/bootstrap/node old mode 100644 new mode 100755 diff --git a/tools/bootstrap/python b/tools/bootstrap/python old mode 100644 new mode 100755 diff --git a/tools/build/build b/tools/build/build old mode 100644 new mode 100755 diff --git a/tools/build/build.bat b/tools/build/build.bat old mode 100644 new mode 100755 diff --git a/tools/build/build.js b/tools/build/build.js index fb3f93d5ab..5f1a101940 100644 --- a/tools/build/build.js +++ b/tools/build/build.js @@ -182,12 +182,13 @@ export const IconCutterTarget = new Juke.Target({ .map((file) => file.replace(`.dmi.toml`, '.png')); }, executes: async () => { - await Juke.exec(cutter_path, [ - '--dont-wait', - '--templates', - 'cutter_templates', - 'icons', - ]); + // Don't run icon cutter, we don't use it and it's not compiled for ubuntu 20.04 + // await Juke.exec(cutter_path, [ + // '--dont-wait', + // '--templates', + // 'cutter_templates', + // 'icons', + // ]); }, }); diff --git a/tools/ci/build_tgui.sh b/tools/ci/build_tgui.sh old mode 100644 new mode 100755 diff --git a/tools/ci/ci_dependencies.sh b/tools/ci/ci_dependencies.sh new file mode 100644 index 0000000000..fd1bee5ea8 --- /dev/null +++ b/tools/ci/ci_dependencies.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +#Project dependencies file +#Contains versions of programs that we might need to install for CI purposes - do not add anything here that is REQUIRED to run the project, this is just for CI. + +export RIPGREP_VERSION=14.0.3 diff --git a/tools/ci/compile_and_run.sh b/tools/ci/compile_and_run.sh old mode 100644 new mode 100755 index d991773ec7..ae58fa1807 --- a/tools/ci/compile_and_run.sh +++ b/tools/ci/compile_and_run.sh @@ -25,12 +25,11 @@ elif grep -q '#include[[:space:]]\"maps\\groundbase\\groundbase.dm\"' $BASENAME. fi # Compile a copy of the codebase, and print errors as Github Actions annotations -DreamMaker $BASENAME.dme > compile.log +tools/build/build --ci dm -DCIBUILDING -DCITESTING exitVal=$? -cat compile.log -if [ $exitVal -gt 0 ]; then - sed -E -n 's/^(.+?\.dm):([0-9]+):(error|warning): (.+)$/::\3 file=\1,line=\2::\4/gp' < compile.log -fi +# if [ $exitVal -gt 0 ]; then +# sed -E -n 's/^(.+?\.dm):([0-9]+):(error|warning): (.+)$/::\3 file=\1,line=\2::\4/gp' +# fi # Compile failed on map_test if [ $exitVal -gt 0 ] && [ $TEST_DEFINE = "MAP_TEST" ]; then diff --git a/tools/ci/install_build_deps.sh b/tools/ci/install_build_deps.sh deleted file mode 100644 index e59934c1e2..0000000000 --- a/tools/ci/install_build_deps.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -set -euo pipefail - -source _build_dependencies.sh - -source ~/.nvm/nvm.sh -nvm install $NODE_VERSION -nvm use $NODE_VERSION -npm install --location=global yarn - -pip install --user PyYaml -q -pip install --user beautifulsoup4 -q diff --git a/tools/ci/install_byond.sh b/tools/ci/install_byond.sh old mode 100644 new mode 100755 diff --git a/tools/ci/install_node.sh b/tools/ci/install_node.sh new file mode 100755 index 0000000000..906984ed3f --- /dev/null +++ b/tools/ci/install_node.sh @@ -0,0 +1,10 @@ +#!/bin/bash +set -euo pipefail + +source dependencies.sh + +if [[ -e ~/.nvm/nvm.sh ]]; then + source ~/.nvm/nvm.sh + nvm install $NODE_VERSION_COMPAT + nvm use $NODE_VERSION_COMPAT +fi diff --git a/tools/ci/install_ripgrep.sh b/tools/ci/install_ripgrep.sh new file mode 100644 index 0000000000..455027d93a --- /dev/null +++ b/tools/ci/install_ripgrep.sh @@ -0,0 +1,6 @@ +#!/bin/bash +set -euo pipefail + +source tools/ci/ci_dependencies.sh + +cargo install ripgrep --features pcre2 --version $RIPGREP_VERSION diff --git a/tools/ci/validate_files.sh b/tools/ci/validate_files.sh old mode 100644 new mode 100755 index 034bd222c8..a97d28fe78 --- a/tools/ci/validate_files.sh +++ b/tools/ci/validate_files.sh @@ -1,51 +1,86 @@ #!/bin/bash +set -euo pipefail + +# nb: must be bash to support shopt globstar +shopt -s globstar extglob source _build_dependencies.sh +# ANSI Colors RED='\033[0;31m' -NC='\033[0m' +GREEN="\033[0;32m" +BLUE="\033[0;34m" +NC='\033[0m' # No color + FAILED=0 +# check for ripgrep +if command -v rg >/dev/null 2>&1; then + grep=rg + pcre2_support=1 + if [ ! rg -P '' >/dev/null 2>&1 ] ; then + pcre2_support=0 + fi + code_files="code/**/**.dm" + map_files="maps/**/**.dmm" + # shuttle_map_files="_maps/shuttles/**.dmm" + # code_x_515="code/**/!(__byond_version_compat).dm" +else + pcre2_support=0 + grep=grep + code_files="-r --include=code/**/**.dm" + map_files="-r --include=maps/**/**.dmm" + # shuttle_map_files="-r --include=_maps/shuttles/**.dmm" + # code_x_515="-r --include=code/**/!(__byond_version_compat).dm" +fi + +echo -e "${BLUE}Using grep provider at $(which $grep)${NC}" + +part=0 +section() { + echo -e "${BLUE}Checking for $1${NC}..." + part=0 +} + +part() { + part=$((part+1)) + padded=$(printf "%02d" $part) + echo -e "${GREEN} $padded- $1${NC}" +} + +section "map issues" + +part "step_[xy]" #Checking for step_x/step_y defined in any maps anywhere. -(! grep 'step_[xy]' maps/**/*.dmm) +(! $grep 'step_[xy]' $map_files) retVal=$? if [ $retVal -ne 0 ]; then echo -e "${RED}The variables 'step_x' and 'step_y' are present on a map, and they 'break' movement ingame.${NC}" FAILED=1 fi -#Checking for 'tag' set to something on maps -(! grep -Pn '( |\t|;|{)tag( ?)=' maps/**/*.dmm) -retVal=$? -if [ $retVal -ne 0 ]; then - echo -e "${RED}A map has 'tag' set on an atom. It may cause problems and should be removed.${NC}" - FAILED=1 -fi - -#Checking for broken HTML tags (didn't close the quote for class) -(! grep -En "<\s*span\s+class\s*=\s*('[^'>]+|[^'>]+')\s*>" **/*.dm) -retVal=$? -if [ $retVal -ne 0 ]; then - echo -e "${RED}A broken span tag class is present (check quotes).${NC}" - FAILED=1 -fi - +part "test map included" #Checking for any 'checked' maps that include 'test' -(! grep 'maps\\.*test.*' *.dme) +(! $grep 'maps\\.*test.*' *.dme) retVal=$? if [ $retVal -ne 0 ]; then echo -e "${RED}A map containing the word 'test' is included. This is not allowed to be committed.${NC}" FAILED=1 fi -#Check for weird indentation in any .dm files -awk -f tools/indentation.awk **/*.dm -retVal=$? -if [ $retVal -ne 0 ]; then - echo -e "${RED}Indention testing failed. Please see results and fix indentation.${NC}" - FAILED=1 -fi +section "code issues" +part "indentation" +echo -e "${RED}DISABLED" +#Check for weird indentation in any .dm files +# awk -f tools/indentation.awk $code_files +# retVal=$? +# if [ $retVal -ne 0 ]; then +# echo -e "${RED}Indention testing failed. Please see results and fix indentation.${NC}" +# FAILED=1 +# fi + +part "changelog" #Checking for a change to html/changelogs/example.yml md5sum -c - <<< "ea467b7b75774b41ecdf35e07091d96f *html/changelogs/example.yml" retVal=$? @@ -54,20 +89,57 @@ if [ $retVal -ne 0 ]; then FAILED=1 fi +part "color macros" #Checking for color macros -(num=`grep -E '\\\\(red|blue|green|black|b|i[^mc])' **/*.dm | wc -l`; echo "$num escapes (expecting ${MACRO_COUNT} or less)"; [ $num -le ${MACRO_COUNT} ]) +(num=`$grep -n '\\\\(red|blue|green|black|b|i[^mc])' $code_files | wc -l`; echo "$num escapes (expecting ${MACRO_COUNT} or less)"; [ $num -le ${MACRO_COUNT} ]) retVal=$? if [ $retVal -ne 0 ]; then echo -e "${RED}Do not use any byond color macros (such as \blue), they are deprecated.${NC}" FAILED=1 fi +part "html tag matching" #Checking for missed tags -python tools/TagMatcher/tag-matcher.py ../.. -retVal=$? -if [ $retVal -ne 0 ]; then - echo -e "${RED}Some HTML tags are missing their opening/closing partners. Please correct this.${NC}" - FAILED=1 +echo -e "${RED}DISABLED" +# python tools/TagMatcher/tag-matcher.py ../.. +# retVal=$? +# if [ $retVal -ne 0 ]; then +# echo -e "${RED}Some HTML tags are missing their opening/closing partners. Please correct this.${NC}" +# FAILED=1 +# fi + +if [ "$pcre2_support" -eq 1 ]; then + section "regexes requiring PCRE2" + + part "tag" + #Checking for 'tag' set to something on maps + (! $grep -Pn '( |\t|;|{)tag( ?)=' $map_files) + retVal=$? + if [ $retVal -ne 0 ]; then + echo -e "${RED}A map has 'tag' set on an atom. It may cause problems and should be removed.${NC}" + FAILED=1 + fi + + part "broken html" + # echo -e "${RED}DISABLED" + #Checking for broken HTML tags (didn't close the quote for class) + (! $grep -Pn "<\s*span\s+class\s*=\s*('[^'>]+|[^'>]+')\s*>" $code_files) + retVal=$? + if [ $retVal -ne 0 ]; then + echo -e "${RED}A broken span tag class is present (check quotes).${NC}" + FAILED=1 + fi +else + echo -e "${RED}pcre2 not supported, skipping checks requiring pcre2" + echo -e "if you want to run these checks install ripgrep with pcre2 support.${NC}" +fi + +if [ $FAILED = 0 ]; then + echo + echo -e "${GREEN}No errors found using $grep!${NC}" +else + echo + echo -e "${RED}Errors found, please fix them and try again.${NC}" fi # Quit with our status code diff --git a/tools/requirements.txt b/tools/requirements.txt new file mode 100644 index 0000000000..2d9bf2fbcd --- /dev/null +++ b/tools/requirements.txt @@ -0,0 +1,13 @@ +pygit2==1.7.2 +bidict==0.22.0 +Pillow==9.3.0 + +# changelogs +PyYaml==6.0.1 +beautifulsoup4==4.9.3 + +# ezdb +mysql-connector-python==8.0.33 + +# icon cutter +numpy==1.24.4 From 3fdf434f8e2e74f40368357a596347fdc638eaa5 Mon Sep 17 00:00:00 2001 From: ShadowLarkens Date: Tue, 17 Sep 2024 20:48:30 -0700 Subject: [PATCH 05/19] Convert TGUI to Juke-only --- README.md | 6 +- bin/build.cmd | 2 + bin/clean.cmd | 2 + bin/server.cmd | 2 + bin/test.cmd | 2 + bin/tgfont.cmd | 2 + bin/tgui-bench.cmd | 3 + bin/tgui-build.cmd | 2 + bin/tgui-dev.cmd | 2 + bin/tgui-sonar.cmd | 2 + tgui/.gitattributes | 1 - tgui/.gitignore | 6 +- tgui/README.md | 187 ++++------ tgui/bin/tgui | 235 ------------ tgui/bin/tgui-bench.bat | 9 - tgui/bin/tgui-dev-server.bat | 9 - tgui/bin/tgui-prettybuild.bat | 9 - tgui/bin/tgui.bat | 9 - tgui/bin/tgui_.ps1 | 177 --------- tgui/packages/tgfont/package.json | 2 +- tgui/public/tgui-panel.bundle.css | 1 - tgui/public/tgui-panel.bundle.js | 598 ------------------------------ tgui/public/tgui-say.bundle.css | 1 - tgui/public/tgui-say.bundle.js | 377 ------------------- tgui/public/tgui.bundle.css | 10 - tgui/public/tgui.bundle.js | 407 -------------------- 26 files changed, 99 insertions(+), 1964 deletions(-) create mode 100644 bin/build.cmd create mode 100644 bin/clean.cmd create mode 100644 bin/server.cmd create mode 100644 bin/test.cmd create mode 100644 bin/tgfont.cmd create mode 100644 bin/tgui-bench.cmd create mode 100644 bin/tgui-build.cmd create mode 100644 bin/tgui-dev.cmd create mode 100644 bin/tgui-sonar.cmd delete mode 100644 tgui/bin/tgui delete mode 100644 tgui/bin/tgui-bench.bat delete mode 100644 tgui/bin/tgui-dev-server.bat delete mode 100644 tgui/bin/tgui-prettybuild.bat delete mode 100644 tgui/bin/tgui.bat delete mode 100644 tgui/bin/tgui_.ps1 delete mode 100644 tgui/public/tgui-panel.bundle.css delete mode 100644 tgui/public/tgui-panel.bundle.js delete mode 100644 tgui/public/tgui-say.bundle.css delete mode 100644 tgui/public/tgui-say.bundle.js delete mode 100644 tgui/public/tgui.bundle.css delete mode 100644 tgui/public/tgui.bundle.js diff --git a/README.md b/README.md index b878df4d7e..28724e3d8c 100644 --- a/README.md +++ b/README.md @@ -54,11 +54,11 @@ This will take a while to download, but it provides an easier method for updatin First-time installation should be fairly straightforward. First, you'll need BYOND installed. You can get it from [here](http://www.byond.com/). -This is a sourcecode-only release, so the next step is to compile the server files. Open vorestation.dme by double-clicking it, open the Build menu, and click compile. This'll take a little while, and if everything's done right you'll get a message like this: +**The quick way**. Find `bin/server.cmd` in this folder and double click it to automatically build and host the server on port 1337. - saving vorestation.dmb (DEBUG mode) +**The long way**. Find `bin/build.cmd` in this folder, and double click it to initiate the build. It consists of multiple steps and might take around 1-5 minutes to compile. If it closes, it means it has finished its job. You can then [setup the server](.github/guides/RUNNING_A_SERVER.md) normally by opening `tgstation.dmb` in DreamDaemon. - vorestation.dmb - 0 errors, 0 warnings +**Building vorestation in DreamMaker directly is deprecated and might produce errors**, such as `'tgui.bundle.js': cannot find file`. If you see any errors or warnings, something has gone wrong - possibly a corrupt download or the files extracted wrong, or a code issue on the main repo. Ask on IRC. diff --git a/bin/build.cmd b/bin/build.cmd new file mode 100644 index 0000000000..98c2ef45e1 --- /dev/null +++ b/bin/build.cmd @@ -0,0 +1,2 @@ +@echo off +call "%~dp0\..\tools\build\build.bat" --wait-on-error build %* diff --git a/bin/clean.cmd b/bin/clean.cmd new file mode 100644 index 0000000000..8eacd92ebd --- /dev/null +++ b/bin/clean.cmd @@ -0,0 +1,2 @@ +@echo off +call "%~dp0\..\tools\build\build.bat" --wait-on-error clean-all %* diff --git a/bin/server.cmd b/bin/server.cmd new file mode 100644 index 0000000000..c6e6642baf --- /dev/null +++ b/bin/server.cmd @@ -0,0 +1,2 @@ +@echo off +call "%~dp0\..\tools\build\build.bat" --wait-on-error server %* diff --git a/bin/test.cmd b/bin/test.cmd new file mode 100644 index 0000000000..a76a9c6745 --- /dev/null +++ b/bin/test.cmd @@ -0,0 +1,2 @@ +@echo off +call "%~dp0\..\tools\build\build.bat" --wait-on-error dm-test %* diff --git a/bin/tgfont.cmd b/bin/tgfont.cmd new file mode 100644 index 0000000000..b768c81d65 --- /dev/null +++ b/bin/tgfont.cmd @@ -0,0 +1,2 @@ +@echo off +call "%~dp0\..\tools\build\build.bat" --wait-on-error tg-font %* diff --git a/bin/tgui-bench.cmd b/bin/tgui-bench.cmd new file mode 100644 index 0000000000..333115f795 --- /dev/null +++ b/bin/tgui-bench.cmd @@ -0,0 +1,3 @@ +@echo off +call "%~dp0\..\tools\build\build.bat" --wait-on-error tgui-bench %* +pause diff --git a/bin/tgui-build.cmd b/bin/tgui-build.cmd new file mode 100644 index 0000000000..7804fc6daa --- /dev/null +++ b/bin/tgui-build.cmd @@ -0,0 +1,2 @@ +@echo off +call "%~dp0\..\tools\build\build.bat" --wait-on-error tgui tgui-lint tgui-test %* diff --git a/bin/tgui-dev.cmd b/bin/tgui-dev.cmd new file mode 100644 index 0000000000..25ff3495d4 --- /dev/null +++ b/bin/tgui-dev.cmd @@ -0,0 +1,2 @@ +@echo off +call "%~dp0\..\tools\build\build.bat" --wait-on-error tgui-dev %* diff --git a/bin/tgui-sonar.cmd b/bin/tgui-sonar.cmd new file mode 100644 index 0000000000..e083f65362 --- /dev/null +++ b/bin/tgui-sonar.cmd @@ -0,0 +1,2 @@ +@echo off +call "%~dp0\..\tools\build\build.bat" --wait-on-error tgui-sonar %* diff --git a/tgui/.gitattributes b/tgui/.gitattributes index ce30adb9e2..3103a46c24 100644 --- a/tgui/.gitattributes +++ b/tgui/.gitattributes @@ -13,7 +13,6 @@ *.md text eol=lf *.bat text eol=lf yarn.lock text eol=lf -bin/tgui text eol=lf ## Treat bundles as binary *.bundle.* binary diff --git a/tgui/.gitignore b/tgui/.gitignore index eb4f718b1b..4d0dd666d8 100644 --- a/tgui/.gitignore +++ b/tgui/.gitignore @@ -14,9 +14,9 @@ package-lock.json ## Build artifacts /public/.tmp/**/* -/public/*.map -/public/tgui-bench.bundle.js -/public/tgui-bench.bundle.css +/public/**/* +!/public/*.html +!/public/tgui-polyfill.min.js /coverage ## Previously ignored locations that are kept to avoid confusing git diff --git a/tgui/README.md b/tgui/README.md index ad79758279..2bcb6d06af 100644 --- a/tgui/README.md +++ b/tgui/README.md @@ -4,21 +4,15 @@ tgui is a robust user interface framework of /tg/station. -tgui is very different from most UIs you will encounter in BYOND programming. -It is heavily reliant on Javascript and web technologies as opposed to DM. -If you are familiar with NanoUI (a library which can be found on almost -every other SS13 codebase), tgui should be fairly easy to pick up. +tgui is very different from most UIs you will encounter in BYOND programming. It is heavily reliant on Javascript and web technologies as opposed to DM. If you are familiar with NanoUI (a library which can be found on almost every other SS13 codebase), tgui should be fairly easy to pick up. ## Learn tgui -People come to tgui from different backgrounds and with different -learning styles. Whether you prefer a more theoretical or a practical -approach, we hope you’ll find this section helpful. +People come to tgui from different backgrounds and with different learning styles. Whether you prefer a more theoretical or a practical approach, we hope you’ll find this section helpful. ### Practical Tutorial -If you are completely new to frontend and prefer to **learn by doing**, -start with our [practical tutorial](docs/tutorial-and-examples.md). +If you are completely new to frontend and prefer to **learn by doing**, start with our [practical tutorial](docs/tutorial-and-examples.md). ### Guides @@ -26,9 +20,7 @@ This project uses React. Take your time to read the guide: - [React guide](https://react.dev/learn) -If you were already familiar with an older, Ractive-based tgui, and want -to translate concepts between old and new tgui, read this -[interface conversion guide](docs/converting-old-tgui-interfaces.md). +If you were already familiar with an older, Ractive-based tgui, and want to translate concepts between old and new tgui, read this [interface conversion guide](docs/converting-old-tgui-interfaces.md). ### Other Documentation @@ -39,97 +31,84 @@ to translate concepts between old and new tgui, read this ## Pre-requisites -You will need these programs to start developing in tgui: +If you are using the tooling provided in this repo, everything is included! Feel free to skip this step. -- [Node v16.13+](https://nodejs.org/en/download/) +However, if you want finer control over the installation or build process, you will need these: + +- [Node v20.2+](https://nodejs.org/en/download/) - **LTS** release is recommended instead of latest -- [Yarn v1.22.4+](https://yarnpkg.com/getting-started/install) (optional) + - **DO NOT install Chocolatey if Node installer asks you to!** +- [Yarn v4.1.1+](https://yarnpkg.com/getting-started/install) - You can run `npm install -g yarn` to install it. -- [Git Bash](https://git-scm.com/downloads) - or [MSys2](https://www.msys2.org/) (optional) - -**DO NOT install Chocolatey if Node installer asks you to!** ## Usage -**For Git Bash, MSys2, WSL, Linux or macOS users:** +**Via provided cmd scripts (Windows)**: -Change your directory to `tgui`. +- `bin/tgui-build` - Build tgui in production mode and run a full suite of code checks. +- `bin/tgui-dev` - Launch a development server. + - `bin/tgui-dev --reload` - Reload byond cache once. + - `bin/tgui-dev --debug` - Run server with debug logging enabled. + - `bin/tgui-dev --no-hot` - Disable hot module replacement (helps when doing development on IE8). +- `bin/tgui-sonar` - Analyze code with SonarQube. +- `bin/tgui-bench` - Run benchmarks. -Run `bin/tgui --install-git-hooks` to install merge drivers which will -assist you in conflict resolution when rebasing your branches. Only has -to be done once. +> To open a CMD or PowerShell window in any open folder, right click **while holding Shift** on any free space in the folder, then click on either `Open command window here` or `Open PowerShell window here`. -Run `bin/tgui` with any of the options listed below. +**Via Juke Build (cross-platform)**: -**For Windows CMD or PowerShell users:** +- `tools/build/build tgui` - Build tgui in production mode. +- `tools/build/build tgui-dev` - Build tgui in production mode. + - `tools/build/build tgui-dev --reload` - Reload byond cache once. + - `tools/build/build tgui-dev --debug` - Run server with debug logging enabled. + - `tools/build/build tgui-dev --no-hot` - Disable hot module replacement (helps when doing development on IE8). +- `tools/build/build tgui-lint` - Show (and auto-fix) problems with the code. +- `tools/build/build tgui-sonar` - Analyze code with SonarQube. +- `tools/build/build tgui-test` - Run unit and integration tests. +- `tools/build/build tgui-analyze` - Run a bundle analyzer. +- `tools/build/build tgui-bench` - Run benchmarks. +- `tools/build/build tgui-clean` - Clean up tgui folder. -If you haven't opened the console already, you can do that by holding -Shift and right clicking on the `tgui` folder, then pressing -either `Open command window here` or `Open PowerShell window here`. +> With Juke Build, you can run multiple targets together, e.g.: +> +> ``` +> tools/build/build tgui tgui-lint tgui-tsc tgui-test +> ``` -Run `.\bin\tgui.bat` with any of the options listed below. +**Via Yarn (cross-platform)**: -> If using PowerShell, you will receive errors if trying to run -> `.\bin\tgui.ps1`, because default Windows policy does not allow direct -> execution of PS1 scripts. Run `.\bin\tgui.bat` instead. +Run `yarn install` once to install tgui dependencies. -**Available commands:** +- `yarn tgui:build` - Build tgui in production mode. + - `yarn tgui:build [options]` - Build tgui with custom webpack options. +- `yarn tgui:dev` - Launch a development server. + - `yarn tgui:dev --reload` - Reload byond cache once. + - `yarn tgui:dev --debug` - Run server with debug logging enabled. + - `yarn tgui:dev --no-hot` - Disable hot module replacement (helps when doing development on IE8). +- `yarn tgui:lint` - Show (and auto-fix) problems with the code. +- `yarn tgui:sonar` - Analyze code with SonarQube. +- `yarn tgui:tsc` - Check code with TypeScript compiler. +- `yarn tgui:test` - Run unit and integration tests. +- `yarn tgui:analyze` - Run a bundle analyzer. +- `yarn tgui:bench` - Run benchmarks. +- `yarn tgfont:build` - Build icon fonts. +- `yarn tgui-polyfill:build` - Build polyfills. You need to run it when updating any of the static (numbered) polyfills. -- `bin/tgui` - (Recommended build option) Build the project in production mode. -- `bin/tgui --pretty` - Check/Prettify all files inside of the packages folder (Mainly Interfaces/Components). Build the project in production mode afterwards. -- `bin/tgui --dev` - Launch a development server. - - tgui development server provides you with incremental compilation, - hot module replacement and logging facilities in all running instances - of tgui. In short, this means that you will instantly see changes in the - game as you code it. Very useful, highly recommended. - - In order to use it, you should start the game server first, connect to it - and wait until the world has been properly loaded and you are no longer - in the lobby. Start tgui dev server, and once it has finished building, - press F5 on any tgui window. You'll know that it's hooked correctly if - you see a green bug icon in titlebar and data gets dumped to the console. - - `bin/tgui --dev --reload` - Reload byond cache once. - - `bin/tgui --dev --debug` - Run server with debug logging enabled. - - `bin/tgui --dev --no-hot` - Disable hot module replacement (helps when -doing development on IE8). -- `bin/tgui --lint` - Show problems with the code. -- `bin/tgui --fix` - Auto-fix problems with the code. -- `bin/tgui --test` - Run tests. -- `bin/tgui --analyze` - Run a bundle analyzer. -- `bin/tgui --clean` - Clean up project repo. -- `bin/tgui [webpack options]` - Build the project with custom webpack -options. +## Important Memo -**For virgins:** - -You can double-click these batch files to achieve the same thing: - -- `bin\tgui.bat` - (Recommended build option) Build the project in production mode. -- `bin\tgui-prettybuild.bat` - Prettify all the files inside the packages folder. Build the project in production mode afterwards. -- `bin\tgui-dev-server.bat` - Launch a development server. - -> Remember to always run a full build before submitting a PR. It creates -> a compressed javascript bundle which is then referenced from DM code. -> We prefer to keep it version controlled, so that people could build the -> game just by using Dream Maker. +Remember to always run a full build of tgui before submitting a PR, because it comes with the full suite of CI checks, and runs much faster on your computer than on GitHub servers. It will save you some time and possibly a few broken commits! Address the issues that are reported by the tooling as much as possible, because maintainers will beat you with a ruler and force you to address them anyway (unless it's a false positive or something unfixable). ## Troubleshooting **Development server is crashing** -Make sure path to your working directory does not contain spaces or special -unicode characters. If so, move codebase to a location which does not contain -spaces or unicode characters. +Make sure path to your working directory does not contain spaces, special unicode characters, exclamation marks or any other special symbols. If so, move codebase to a location which does not contain these characters. -This is a known issue with Yarn Berry, and fix is going to happen someday. +This is a known issue with Yarn (and some other tools, like Webpack), and fix is going to happen eventually. **Development server doesn't find my BYOND cache!** -This happens if your Documents folder in Windows has a custom location, for -example in `E:\Libraries\Documents`. Development server tries its best to find -this non-standard location (searches for a Windows Registry key), but it can -fail. You have to run the dev server with an additional environmental -variable, with a full path to BYOND cache. +This happens if your Documents folder in Windows has a custom location, for example in `E:\Libraries\Documents`. Development server tries its best to find this non-standard location (searches for a Windows Registry key), but it can fail. You have to run the dev server with an additional environmental variable, with a full path to BYOND cache. ``` BYOND_CACHE="E:/Libraries/Documents/BYOND/cache" @@ -139,14 +118,11 @@ BYOND_CACHE="E:/Libraries/Documents/BYOND/cache" > Example: `No template for dependency: PureExpressionDependency` -Webpack stores its cache on disk since tgui 4.3, and it is very sensitive -to build configuration. So if you update webpack, or share the same cache -directory between development and production build, it will start -hallucinating. +Webpack stores its cache on disk since tgui 4.3, and it is very sensitive to build configuration. So if you update webpack, or share the same cache directory between development and production build, it will start hallucinating. To fix this kind of problem, run `bin/tgui --clean` and try again. -## Developer Tools +## Dev Server Tools When developing with `tgui-dev-server`, you will have access to certain development only features. @@ -157,7 +133,7 @@ logs and time spent on rendering. Use this information to optimize your code, and try to keep re-renders below 16ms. **Kitchen Sink.** -Press `F12` to open the KitchenSink interface. This interface is a +Press `F12` or click the green bug to open the KitchenSink interface. This interface is a playground to test various tgui components. **Layout Debugger.** @@ -168,12 +144,13 @@ together, and can reveal certain layout bugs which are not normally visible. ## Browser Developer Tools To debug TGUI interfaces with browser-style developer tools, there exists a utility -that Microsoft bundles with Windows to debug any Internet Explorer/Trident-using interface, +that Microsoft bundles with Windows called IEChooser/F12 to debug any Internet Explorer/Trident-using interface, which BYOND uses. This provides invaluable tools such as a local console, a DOM viewer, an interactive debugger, and more. -The 64-bit version that we use is located at `%windir%\SysWOW64\F12\IEChooser.exe`. +You can access the `IEChooser.exe` by pressing Win + R, then typing `f12`, then pressing enter. +To manually go there: 64-bit version that we use is located at `%windir%\SysWOW64\F12\IEChooser.exe`. There's also a 32-bit one in `system32\`. Simply launch the application after you've opened a TGUI window, and choose the .html name. @@ -185,42 +162,24 @@ so you'll need to restart it if it disconnects from the window. ## Project Structure - `/packages` - Each folder here represents a self-contained Node module. -- `/packages/common` - Helper functions +- `/packages/common` - Helper functions that are used throughout all packages. - `/packages/tgui/index.js` - Application entry point. - `/packages/tgui/components` - Basic UI building blocks. - `/packages/tgui/interfaces` - Actual in-game interfaces. -Interface takes data via the `state` prop and outputs an html-like stucture, -which you can build using existing UI components. -- `/packages/tgui/layouts` - Root level UI components, that affect the final -look and feel of the browser window. They usually hold various window -elements, like the titlebar and resize handlers, and control the UI theme. -- `/packages/tgui/routes.js` - This is where tgui decides which interface to -pull and render. -- `/packages/tgui/layout.js` - A root-level component, holding the -window elements, like the titlebar, buttons, resize handlers. Calls -`routes.js` to decide which component to render. +- `/packages/tgui/layouts` - Root level UI components, that affect the final look and feel of the browser window. These hold various window elements, like the titlebar and resize handlers, and control the UI theme. +- `/packages/tgui/routes.js` - This is where tgui decides which interface to pull and render. - `/packages/tgui/styles/main.scss` - CSS entry point. -- `/packages/tgui/styles/functions.scss` - Useful SASS functions. -Stuff like `lighten`, `darken`, `luminance` are defined here. -- `/packages/tgui/styles/atomic` - Atomic CSS classes. -These are very simple, tiny, reusable CSS classes which you can use and -combine to change appearance of your elements. Keep them small. -- `/packages/tgui/styles/components` - CSS classes which are used -in UI components. These stylesheets closely follow the -[BEM](https://en.bem.info/methodology/) methodology. -- `/packages/tgui/styles/interfaces` - Custom stylesheets for your interfaces. -Add stylesheets here if you really need a fine control over your UI styles. +- `/packages/tgui/styles/functions.scss` - Useful SASS functions. Stuff like `lighten`, `darken`, `luminance` are defined here. +- `/packages/tgui/styles/atomic` - Atomic CSS classes. These are very simple, tiny, reusable CSS classes which you can use and combine to change appearance of your elements. Keep them small. +- `/packages/tgui/styles/components` - CSS classes which are used in UI components. These stylesheets closely follow the [BEM](https://en.bem.info/methodology/) methodology. +- `/packages/tgui/styles/interfaces` - Custom stylesheets for your interfaces. Add stylesheets here if you really need a fine control over your UI styles. - `/packages/tgui/styles/layouts` - Layout-related styles. -- `/packages/tgui/styles/themes` - Contains all the various themes you can -use in tgui. Each theme must be registered in `webpack.config.js` file. +- `/packages/tgui/styles/themes` - Contains themes that you can use in tgui. Each theme must be registered in `/packages/tgui/index.js` file. ## License -Source code is covered by /tg/station's parent license - **AGPL-3.0** -(see the main [README](../README.md)), unless otherwise indicated. +Source code is covered by /tg/station's parent license - **AGPL-3.0** (see the main [README](../README.md)), unless otherwise indicated. -Some files are annotated with a copyright header, which explicitly states -the copyright holder and license of the file. Most of the core tgui -source code is available under the **MIT** license. +Some files are annotated with a copyright header, which explicitly states the copyright holder and license of the file. Most of the core tgui source code is available under the **MIT** license. The Authors retain all copyright to their respective work here submitted. diff --git a/tgui/bin/tgui b/tgui/bin/tgui deleted file mode 100644 index 256f0e579e..0000000000 --- a/tgui/bin/tgui +++ /dev/null @@ -1,235 +0,0 @@ -#!/usr/bin/env bash -## Copyright (c) 2020 Aleksej Komarov -## SPDX-License-Identifier: MIT - -set -e -shopt -s globstar -shopt -s expand_aliases - -## Initial set-up -## -------------------------------------------------------- - -## Returns an absolute path to file -alias tgui-realpath="readlink -f" - -## Fallbacks for GNU readlink -## Detecting GNU coreutils http://stackoverflow.com/a/8748344/319952 -if ! readlink --version >/dev/null 2>&1; then - if hash greadlink 2>/dev/null; then - alias tgui-realpath="greadlink -f" - else - alias tgui-realpath="perl -MCwd -le 'print Cwd::abs_path(shift)'" - fi -fi - -## Find a canonical path to project root -base_dir="$(dirname "$(tgui-realpath "${0}")")/.." -base_dir="$(tgui-realpath "${base_dir}")" - -## Make use of nvm if it exists -if [[ -e "${HOME}/.nvm/nvm.sh" ]]; then - source "${HOME}/.nvm/nvm.sh" -fi - -## Fall back to running Yarn from the repo -if ! hash yarn 2>/dev/null; then - yarn_releases=("${base_dir}"/.yarn/releases/yarn-*.cjs) - yarn_release="${yarn_releases[0]}" - yarn() { - node "${yarn_release}" "${@}" - } -fi - - -## Functions -## -------------------------------------------------------- - -## Installs node modules -task-install() { - cd "${base_dir}" - yarn install -} - -## Runs webpack -task-webpack() { - cd "${base_dir}" - yarn run webpack-cli "${@}" -} - -## Runs a development server -task-dev-server() { - cd "${base_dir}" - yarn node --experimental-modules packages/tgui-dev-server/index.js "${@}" -} - -## Run a linter through all packages -task-lint() { - cd "${base_dir}" - yarn run tsc - echo "tgui: type check passed" - yarn run eslint packages --ext .js,.cjs,.ts,.tsx "${@}" - echo "tgui: eslint check passed" -} - -task-test() { - cd "${base_dir}" - yarn run jest -} - -## Mr. Proper -task-clean() { - cd "${base_dir}" - ## Build artifacts - rm -rf public/.tmp - rm -f public/*.map - rm -f public/*.chunk.* - rm -f public/*.bundle.* - rm -f public/*.hot-update.* - ## Yarn artifacts - rm -rf .yarn/cache - rm -rf .yarn/unplugged - rm -rf .yarn/webpack - rm -f .yarn/build-state.yml - rm -f .yarn/install-state.gz - rm -f .yarn/install-target - rm -f .pnp.* - ## NPM artifacts - rm -rf **/node_modules - rm -f **/package-lock.json -} - -## Validates current build against the build stored in git -## VOREStation Addition Start -task-validate-build() { - cd "${base_dir}" - local diff - diff="$(git diff packages/tgui/public/tgui.bundle.*)" - if [[ -n ${diff} ]]; then - echo "Error: our build differs from the build committed into git." - echo "Please rebuild tgui." - exit 1 - fi - echo "tgui: build is ok" -} -## VOREStation Addition End - -## Installs merge drivers and git hooks -task-install-git-hooks() { - cd "${base_dir}" - local git_root - local git_base_dir - git_root="$(git rev-parse --show-toplevel)" - git_base_dir="${base_dir/${git_root}/.}" - git config --replace-all merge.tgui-merge-bundle.driver \ - "${git_base_dir}/bin/tgui --merge=bundle %O %A %B %L" - echo "tgui: Merge drivers have been successfully installed!" -} - -## Bundle merge driver -task-merge-bundle() { - local file_ancestor="${1}" - local file_current="${2}" - local file_other="${3}" - local conflict_marker_size="${4}" - echo "tgui: Discarding a local tgui build" - ## Do nothing (file_current will be merged and is what we want to keep). - exit 0 -} - - -## Main -## -------------------------------------------------------- - -if [[ ${1} == "--merge"* ]]; then - if [[ ${1} == "--merge=bundle" ]]; then - shift 1 - task-merge-bundle "${@}" - fi - echo "Unknown merge strategy: ${1}" - exit 1 -fi - -if [[ ${1} == "--install-git-hooks" ]]; then - shift 1 - task-install-git-hooks - exit 0 -fi - -if [[ ${1} == "--clean" ]]; then - task-clean - exit 0 -fi - -if [[ ${1} == "--dev" ]]; then - shift - task-install - task-dev-server "${@}" - exit 0 -fi - -## VOREStation Addition Start -## Continuous integration scenario -if [[ ${1} == "--ci" ]]; then - task-clean - task-install - task-lint - task-test - task-webpack --mode=production - task-validate-build - exit 0 -fi -## VOREStation Addition End - -if [[ ${1} == '--lint' ]]; then - shift 1 - task-install - task-lint "${@}" - exit 0 -fi - -if [[ ${1} == '--lint-harder' ]]; then - shift 1 - task-install - task-lint -c .eslintrc-harder.yml "${@}" - exit 0 -fi - -if [[ ${1} == '--fix' ]]; then - shift 1 - task-install - task-lint --fix "${@}" - exit 0 -fi - -if [[ ${1} == '--test' ]]; then - shift 1 - task-install - task-test "${@}" - exit 0 -fi - -## Analyze the bundle -if [[ ${1} == '--analyze' ]]; then - task-install - task-webpack --mode=production --analyze - exit 0 -fi - -## Make a production webpack build -if [[ ${1} == '--build' ]]; then - task-install - task-webpack --mode=production - exit 0 -fi - -## Make a production webpack build + Run eslint -if [[ -z ${1} ]]; then - task-install - task-lint --fix - task-webpack --mode=production - exit 0 -fi - -## Run webpack with custom flags -task-install -task-webpack "${@}" diff --git a/tgui/bin/tgui-bench.bat b/tgui/bin/tgui-bench.bat deleted file mode 100644 index da22a7b2ae..0000000000 --- a/tgui/bin/tgui-bench.bat +++ /dev/null @@ -1,9 +0,0 @@ -@echo off -rem Copyright (c) 2020 Aleksej Komarov -rem SPDX-License-Identifier: MIT -call powershell.exe -NoLogo -ExecutionPolicy Bypass -File "%~dp0\tgui_.ps1" --bench %* -rem Pause if launched in a separate shell unless initiated from powershell -echo %PSModulePath% | findstr %USERPROFILE% >NUL -if %errorlevel% equ 0 exit 0 -echo %cmdcmdline% | find /i "/c" -if %errorlevel% equ 0 pause diff --git a/tgui/bin/tgui-dev-server.bat b/tgui/bin/tgui-dev-server.bat deleted file mode 100644 index 21b2ea4e96..0000000000 --- a/tgui/bin/tgui-dev-server.bat +++ /dev/null @@ -1,9 +0,0 @@ -@echo off -rem Copyright (c) 2020 Aleksej Komarov -rem SPDX-License-Identifier: MIT -call powershell.exe -NoLogo -ExecutionPolicy Bypass -File "%~dp0\tgui_.ps1" --dev %* -rem Pause if launched in a separate shell unless initiated from powershell -echo %PSModulePath% | findstr %USERPROFILE% >NUL -if %errorlevel% equ 0 exit 0 -echo %cmdcmdline% | find /i "/c" -if %errorlevel% equ 0 pause diff --git a/tgui/bin/tgui-prettybuild.bat b/tgui/bin/tgui-prettybuild.bat deleted file mode 100644 index fe827e1657..0000000000 --- a/tgui/bin/tgui-prettybuild.bat +++ /dev/null @@ -1,9 +0,0 @@ -@echo off -rem Copyright (c) 2020 Aleksej Komarov -rem SPDX-License-Identifier: MIT -call powershell.exe -NoLogo -ExecutionPolicy Bypass -File "%~dp0\tgui_.ps1" --pretty %* -rem Pause if launched in a separate shell unless initiated from powershell -echo %PSModulePath% | findstr %USERPROFILE% >NUL -if %errorlevel% equ 0 exit 0 -echo %cmdcmdline% | find /i "/c" -if %errorlevel% equ 0 pause diff --git a/tgui/bin/tgui.bat b/tgui/bin/tgui.bat deleted file mode 100644 index 39aa279dca..0000000000 --- a/tgui/bin/tgui.bat +++ /dev/null @@ -1,9 +0,0 @@ -@echo off -rem Copyright (c) 2020 Aleksej Komarov -rem SPDX-License-Identifier: MIT -call powershell.exe -NoLogo -ExecutionPolicy Bypass -File "%~dp0\tgui_.ps1" %* -rem Pause if launched in a separate shell unless initiated from powershell -echo %PSModulePath% | findstr %USERPROFILE% >NUL -if %errorlevel% equ 0 exit 0 -echo %cmdcmdline% | find /i "/c" -if %errorlevel% equ 0 pause diff --git a/tgui/bin/tgui_.ps1 b/tgui/bin/tgui_.ps1 deleted file mode 100644 index eb9c7a1a97..0000000000 --- a/tgui/bin/tgui_.ps1 +++ /dev/null @@ -1,177 +0,0 @@ -## Copyright (c) 2020 Aleksej Komarov -## SPDX-License-Identifier: MIT - -## Initial set-up -## -------------------------------------------------------- - -## Enable strict mode and stop of first cmdlet error -Set-StrictMode -Version Latest -$ErrorActionPreference = "Stop" -$PSDefaultParameterValues['*:ErrorAction'] = 'Stop' - -## Validates exit code of external commands -function Throw-On-Native-Failure { - if (-not $?) { - exit 1 - } -} - -## Normalize current directory -$basedir = Split-Path $MyInvocation.MyCommand.Path -$basedir = Resolve-Path "$($basedir)\.." -Set-Location $basedir -[Environment]::CurrentDirectory = $basedir - - -## Functions -## -------------------------------------------------------- - -function yarn { - $YarnRelease = Get-ChildItem -Filter ".yarn\releases\yarn-*.cjs" | Select-Object -First 1 - node ".yarn\releases\$YarnRelease" @Args - Throw-On-Native-Failure -} - -function Remove-Quiet { - Remove-Item -ErrorAction SilentlyContinue @Args -} - -function task-install { - yarn install -} - -## Runs webpack -function task-webpack { - yarn run webpack-cli @Args -} - -## Runs a development server -function task-dev-server { - yarn node --experimental-modules "packages/tgui-dev-server/index.js" @Args -} - -function task-bench { - yarn tgui:bench @Args -} - -function task-prettier { - yarn tgui:prettier @Args -} - -function task-prettify { - yarn prettier --write packages @Args -} - -## Run a linter through all packages -function task-lint { - yarn run tsc - Write-Output "tgui: type check passed" - yarn run eslint packages --ext ".js,.cjs,.ts,.tsx" @Args - Write-Output "tgui: eslint check passed" -} - -function task-test { - yarn run jest -} - -## Mr. Proper -function task-clean { - ## Build artifacts - Remove-Quiet -Recurse -Force "public\.tmp" - Remove-Quiet -Force "public\*.map" - Remove-Quiet -Force "public\*.hot-update.*" - ## Yarn artifacts - Remove-Quiet -Recurse -Force ".yarn\cache" - Remove-Quiet -Recurse -Force ".yarn\unplugged" - Remove-Quiet -Recurse -Force ".yarn\webpack" - Remove-Quiet -Force ".yarn\build-state.yml" - Remove-Quiet -Force ".yarn\install-state.gz" - Remove-Quiet -Force ".yarn\install-target" - Remove-Quiet -Force ".pnp.*" - ## NPM artifacts - Get-ChildItem -Path "." -Include "node_modules" -Recurse -File:$false | Remove-Item -Recurse -Force - Remove-Quiet -Force "package-lock.json" -} - - -## Main -## -------------------------------------------------------- - -if ($Args.Length -gt 0) { - if ($Args[0] -eq "--clean") { - task-clean - exit 0 - } - - if ($Args[0] -eq "--dev") { - $Rest = $Args | Select-Object -Skip 1 - task-install - task-dev-server @Rest - exit 0 - } - - if ($Args[0] -eq "--lint") { - $Rest = $Args | Select-Object -Skip 1 - task-install - task-lint @Rest - exit 0 - } - - if ($Args[0] -eq "--lint-harder") { - $Rest = $Args | Select-Object -Skip 1 - task-install - task-lint -c ".eslintrc-harder.yml" @Rest - exit 0 - } - - if ($Args[0] -eq "--fix") { - $Rest = $Args | Select-Object -Skip 1 - task-install - task-lint --fix @Rest - exit 0 - } - - if ($Args[0] -eq "--test") { - $Rest = $Args | Select-Object -Skip 1 - task-install - task-test @Rest - exit 0 - } - - if ($Args[0] -eq "--pretty") { - $Rest = $Args | Select-Object -Skip 1 - task-install - task-prettify - task-prettier - task-lint - task-webpack --mode=production - exit 0 - } - - ## Analyze the bundle - if ($Args[0] -eq "--analyze") { - task-install - task-webpack --mode=production --analyze - exit 0 - } - - if ($Args[0] -eq "--bench") { - $Rest = $Args | Select-Object -Skip 1 - task-install - task-bench --wait-on-error - exit 0 - } -} - -## Make a production webpack build -if ($Args.Length -eq 0) { - task-install - task-prettier - task-lint - task-webpack --mode=production - exit 0 -} - -## Run webpack with custom flags -task-install -task-webpack @Args diff --git a/tgui/packages/tgfont/package.json b/tgui/packages/tgfont/package.json index 5e5a3f060c..56bb38bf68 100644 --- a/tgui/packages/tgfont/package.json +++ b/tgui/packages/tgfont/package.json @@ -3,7 +3,7 @@ "name": "tgfont", "version": "1.0.0", "scripts": { - "build": "node mkdist.cjs && fantasticon --config config.cjs" + "tgfont:build": "node mkdist.cjs && fantasticon --config config.cjs" }, "dependencies": { "fantasticon": "^1.2.3" diff --git a/tgui/public/tgui-panel.bundle.css b/tgui/public/tgui-panel.bundle.css deleted file mode 100644 index c692a18baf..0000000000 --- a/tgui/public/tgui-panel.bundle.css +++ /dev/null @@ -1 +0,0 @@ -html,body{box-sizing:border-box;height:100%;margin:0;font-size:12px}html{overflow:hidden;cursor:default}body{overflow:auto;font-family:Verdana,Geneva,sans-serif}*,*:before,*:after{box-sizing:inherit}h1,h2,h3,h4,h5,h6{display:block;margin:0;padding:6px 0;padding:.5rem 0}h1{font-size:18px;font-size:1.5rem}h2{font-size:16px;font-size:1.333rem}h3{font-size:14px;font-size:1.167rem}h4{font-size:12px;font-size:1rem}td,th{vertical-align:baseline;text-align:left}.candystripe:nth-child(odd){background-color:rgba(0,0,0,.25)}.color-black{color:#1a1a1a!important}.color-white{color:#fff!important}.color-red{color:#df3e3e!important}.color-orange{color:#f37f33!important}.color-yellow{color:#fbda21!important}.color-olive{color:#cbe41c!important}.color-green{color:#25ca4c!important}.color-teal{color:#00d6cc!important}.color-blue{color:#2e93de!important}.color-violet{color:#7349cf!important}.color-purple{color:#ad45d0!important}.color-pink{color:#e34da1!important}.color-brown{color:#b97447!important}.color-grey{color:#848484!important}.color-light-grey{color:#b3b3b3!important}.color-good{color:#68c22d!important}.color-average{color:#f29a29!important}.color-bad{color:#df3e3e!important}.color-label{color:#8b9bb0!important}.color-bg-black{background-color:#000!important}.color-bg-white{background-color:#d9d9d9!important}.color-bg-red{background-color:#bd2020!important}.color-bg-orange{background-color:#d95e0c!important}.color-bg-yellow{background-color:#d9b804!important}.color-bg-olive{background-color:#9aad14!important}.color-bg-green{background-color:#1b9638!important}.color-bg-teal{background-color:#009a93!important}.color-bg-blue{background-color:#1c71b1!important}.color-bg-violet{background-color:#552dab!important}.color-bg-purple{background-color:#8b2baa!important}.color-bg-pink{background-color:#cf2082!important}.color-bg-brown{background-color:#8c5836!important}.color-bg-grey{background-color:#646464!important}.color-bg-light-grey{background-color:#919191!important}.color-bg-good{background-color:#4d9121!important}.color-bg-average{background-color:#cd7a0d!important}.color-bg-bad{background-color:#bd2020!important}.color-bg-label{background-color:#657a94!important}.debug-layout,.debug-layout *:not(g):not(path){color:rgba(255,255,255,.9)!important;background:rgba(0,0,0,0)!important;outline:1px solid rgba(255,255,255,.5)!important;box-shadow:none!important;filter:none!important}.debug-layout:hover,.debug-layout *:not(g):not(path):hover{outline-color:rgba(255,255,255,.8)!important}.outline-dotted{outline-style:dotted!important}.outline-dashed{outline-style:dashed!important}.outline-solid{outline-style:solid!important}.outline-double{outline-style:double!important}.outline-groove{outline-style:groove!important}.outline-ridge{outline-style:ridge!important}.outline-inset{outline-style:inset!important}.outline-outset{outline-style:outset!important}.outline-color-black{outline:.167rem solid #1a1a1a!important}.outline-color-white{outline:.167rem solid #fff!important}.outline-color-red{outline:.167rem solid #df3e3e!important}.outline-color-orange{outline:.167rem solid #f37f33!important}.outline-color-yellow{outline:.167rem solid #fbda21!important}.outline-color-olive{outline:.167rem solid #cbe41c!important}.outline-color-green{outline:.167rem solid #25ca4c!important}.outline-color-teal{outline:.167rem solid #00d6cc!important}.outline-color-blue{outline:.167rem solid #2e93de!important}.outline-color-violet{outline:.167rem solid #7349cf!important}.outline-color-purple{outline:.167rem solid #ad45d0!important}.outline-color-pink{outline:.167rem solid #e34da1!important}.outline-color-brown{outline:.167rem solid #b97447!important}.outline-color-grey{outline:.167rem solid #848484!important}.outline-color-light-grey{outline:.167rem solid #b3b3b3!important}.outline-color-good{outline:.167rem solid #68c22d!important}.outline-color-average{outline:.167rem solid #f29a29!important}.outline-color-bad{outline:.167rem solid #df3e3e!important}.outline-color-label{outline:.167rem solid #8b9bb0!important}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-baseline{text-align:baseline}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-pre{white-space:pre}.text-bold{font-weight:700}.text-italic{font-style:italic}.text-underline{text-decoration:underline}.BlockQuote{color:#8b9bb0;border-left:.1666666667em solid #8b9bb0;padding-left:.5em;margin-bottom:.5em}.BlockQuote:last-child{margin-bottom:0}.Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.Button:last-child{margin-right:0;margin-bottom:0}.Button .fa,.Button .fas,.Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.Button--dropdown{line-height:1.3333333333em;height:1.8333333333em;padding:.2rem .5rem}.Button--hasContent .fa,.Button--hasContent .fas,.Button--hasContent .far{margin-right:.25em}.Button--hasContent.Button--iconPosition--right .fa,.Button--hasContent.Button--iconPosition--right .fas,.Button--hasContent.Button--iconPosition--right .far{margin-right:0;margin-left:3px}.Button--ellipsis{text-overflow:ellipsis;overflow:hidden}.Button--fluid{display:block;margin-left:0;margin-right:0}.Button--circular{border-radius:50%}.Button--compact{padding:0 .25em;line-height:1.333em}.Button--color--black{transition:color 50ms,background-color 50ms;background-color:#000;color:#fff}.Button--color--black:hover{transition:color 0ms,background-color 0ms}.Button--color--black:focus{transition:color .1s,background-color .1s}.Button--color--black:hover,.Button--color--black:focus{background-color:#131313;color:#fff}.Button--color--white{transition:color 50ms,background-color 50ms;background-color:#d9d9d9;color:#000}.Button--color--white:hover{transition:color 0ms,background-color 0ms}.Button--color--white:focus{transition:color .1s,background-color .1s}.Button--color--white:hover,.Button--color--white:focus{background-color:#f8f8f8;color:#000}.Button--color--red{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.Button--color--red:hover{transition:color 0ms,background-color 0ms}.Button--color--red:focus{transition:color .1s,background-color .1s}.Button--color--red:hover,.Button--color--red:focus{background-color:#dc4848;color:#fff}.Button--color--orange{transition:color 50ms,background-color 50ms;background-color:#d95e0c;color:#fff}.Button--color--orange:hover{transition:color 0ms,background-color 0ms}.Button--color--orange:focus{transition:color .1s,background-color .1s}.Button--color--orange:hover,.Button--color--orange:focus{background-color:#f0853f;color:#fff}.Button--color--yellow{transition:color 50ms,background-color 50ms;background-color:#d9b804;color:#000}.Button--color--yellow:hover{transition:color 0ms,background-color 0ms}.Button--color--yellow:focus{transition:color .1s,background-color .1s}.Button--color--yellow:hover,.Button--color--yellow:focus{background-color:#f5d72e;color:#000}.Button--color--olive{transition:color 50ms,background-color 50ms;background-color:#9aad14;color:#fff}.Button--color--olive:hover{transition:color 0ms,background-color 0ms}.Button--color--olive:focus{transition:color .1s,background-color .1s}.Button--color--olive:hover,.Button--color--olive:focus{background-color:#c4da2b;color:#fff}.Button--color--green{transition:color 50ms,background-color 50ms;background-color:#1b9638;color:#fff}.Button--color--green:hover{transition:color 0ms,background-color 0ms}.Button--color--green:focus{transition:color .1s,background-color .1s}.Button--color--green:hover,.Button--color--green:focus{background-color:#32c154;color:#fff}.Button--color--teal{transition:color 50ms,background-color 50ms;background-color:#009a93;color:#fff}.Button--color--teal:hover{transition:color 0ms,background-color 0ms}.Button--color--teal:focus{transition:color .1s,background-color .1s}.Button--color--teal:hover,.Button--color--teal:focus{background-color:#13c4bc;color:#fff}.Button--color--blue{transition:color 50ms,background-color 50ms;background-color:#1c71b1;color:#fff}.Button--color--blue:hover{transition:color 0ms,background-color 0ms}.Button--color--blue:focus{transition:color .1s,background-color .1s}.Button--color--blue:hover,.Button--color--blue:focus{background-color:#3a95d9;color:#fff}.Button--color--violet{transition:color 50ms,background-color 50ms;background-color:#552dab;color:#fff}.Button--color--violet:hover{transition:color 0ms,background-color 0ms}.Button--color--violet:focus{transition:color .1s,background-color .1s}.Button--color--violet:hover,.Button--color--violet:focus{background-color:#7953cc;color:#fff}.Button--color--purple{transition:color 50ms,background-color 50ms;background-color:#8b2baa;color:#fff}.Button--color--purple:hover{transition:color 0ms,background-color 0ms}.Button--color--purple:focus{transition:color .1s,background-color .1s}.Button--color--purple:hover,.Button--color--purple:focus{background-color:#ad4fcd;color:#fff}.Button--color--pink{transition:color 50ms,background-color 50ms;background-color:#cf2082;color:#fff}.Button--color--pink:hover{transition:color 0ms,background-color 0ms}.Button--color--pink:focus{transition:color .1s,background-color .1s}.Button--color--pink:hover,.Button--color--pink:focus{background-color:#e257a5;color:#fff}.Button--color--brown{transition:color 50ms,background-color 50ms;background-color:#8c5836;color:#fff}.Button--color--brown:hover{transition:color 0ms,background-color 0ms}.Button--color--brown:focus{transition:color .1s,background-color .1s}.Button--color--brown:hover,.Button--color--brown:focus{background-color:#b47851;color:#fff}.Button--color--grey{transition:color 50ms,background-color 50ms;background-color:#646464;color:#fff}.Button--color--grey:hover{transition:color 0ms,background-color 0ms}.Button--color--grey:focus{transition:color .1s,background-color .1s}.Button--color--grey:hover,.Button--color--grey:focus{background-color:#868686;color:#fff}.Button--color--light-grey{transition:color 50ms,background-color 50ms;background-color:#919191;color:#fff}.Button--color--light-grey:hover{transition:color 0ms,background-color 0ms}.Button--color--light-grey:focus{transition:color .1s,background-color .1s}.Button--color--light-grey:hover,.Button--color--light-grey:focus{background-color:#bababa;color:#fff}.Button--color--good{transition:color 50ms,background-color 50ms;background-color:#4d9121;color:#fff}.Button--color--good:hover{transition:color 0ms,background-color 0ms}.Button--color--good:focus{transition:color .1s,background-color .1s}.Button--color--good:hover,.Button--color--good:focus{background-color:#6cba39;color:#fff}.Button--color--average{transition:color 50ms,background-color 50ms;background-color:#cd7a0d;color:#fff}.Button--color--average:hover{transition:color 0ms,background-color 0ms}.Button--color--average:focus{transition:color .1s,background-color .1s}.Button--color--average:hover,.Button--color--average:focus{background-color:#ed9d35;color:#fff}.Button--color--bad{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.Button--color--bad:hover{transition:color 0ms,background-color 0ms}.Button--color--bad:focus{transition:color .1s,background-color .1s}.Button--color--bad:hover,.Button--color--bad:focus{background-color:#dc4848;color:#fff}.Button--color--label{transition:color 50ms,background-color 50ms;background-color:#657a94;color:#fff}.Button--color--label:hover{transition:color 0ms,background-color 0ms}.Button--color--label:focus{transition:color .1s,background-color .1s}.Button--color--label:hover,.Button--color--label:focus{background-color:#91a1b3;color:#fff}.Button--color--default{transition:color 50ms,background-color 50ms;background-color:#3e6189;color:#fff}.Button--color--default:hover{transition:color 0ms,background-color 0ms}.Button--color--default:focus{transition:color .1s,background-color .1s}.Button--color--default:hover,.Button--color--default:focus{background-color:#5c83b0;color:#fff}.Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#d9b804;color:#000}.Button--color--caution:hover{transition:color 0ms,background-color 0ms}.Button--color--caution:focus{transition:color .1s,background-color .1s}.Button--color--caution:hover,.Button--color--caution:focus{background-color:#f5d72e;color:#000}.Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.Button--color--danger:hover{transition:color 0ms,background-color 0ms}.Button--color--danger:focus{transition:color .1s,background-color .1s}.Button--color--danger:hover,.Button--color--danger:focus{background-color:#dc4848;color:#fff}.Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#202020;color:#fff;background-color:rgba(32,32,32,0);color:rgba(255,255,255,.5)}.Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.Button--color--transparent:focus{transition:color .1s,background-color .1s}.Button--color--transparent:hover,.Button--color--transparent:focus{background-color:#383838;color:#fff}.Button--disabled{background-color:#999!important}.Button--selected{transition:color 50ms,background-color 50ms;background-color:#1b9638;color:#fff}.Button--selected:hover{transition:color 0ms,background-color 0ms}.Button--selected:focus{transition:color .1s,background-color .1s}.Button--selected:hover,.Button--selected:focus{background-color:#32c154;color:#fff}.Button--flex{display:inline-flex;flex-direction:column}.Button--flex--fluid{width:100%}.Button--verticalAlignContent--top{justify-content:flex-start}.Button--verticalAlignContent--middle{justify-content:center}.Button--verticalAlignContent--bottom{justify-content:flex-end}.Button__content{display:block;align-self:stretch}.Button__textMargin{margin-left:.4rem}.ColorBox{display:inline-block;width:1em;height:1em;line-height:1em;text-align:center}.Dimmer{display:flex;justify-content:center;align-items:center;position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(0,0,0,.75);z-index:1}.Dropdown{display:flex;align-items:flex-start}.Dropdown__control{flex:1;font-family:Verdana,sans-serif;font-size:1em;overflow:hidden;-ms-user-select:none;user-select:none;width:8.3333333333em}.Dropdown__arrow-button{float:right;padding-left:.35em;width:1.2em;border-left:.0833333333em solid rgba(0,0,0,.25)}.Dropdown__menu{overflow-y:auto;align-items:center;max-height:16.6666666667em;border-radius:0 0 .1666666667em .1666666667em;color:#fff;background-color:#000;background-color:rgba(0,0,0,.75)}.Dropdown__menu-scroll{overflow-y:scroll}.Dropdown__menuentry{padding:.1666666667em .3333333333em;font-family:Verdana,sans-serif;font-size:1em;line-height:1.4166666667em;transition:background-color .1s ease-out}.Dropdown__menuentry.selected{background-color:rgba(255,255,255,.5)!important;transition:background-color 0ms}.Dropdown__menuentry:hover{background-color:rgba(255,255,255,.2);transition:background-color 0ms}.Dropdown__over{top:auto;bottom:100%}.Dropdown__selected-text{display:inline-block;text-overflow:ellipsis;white-space:nowrap;height:1.4166666667em;width:calc(100% - 1.2em)}.Flex{display:-ms-flexbox;display:flex}.Flex--inline{display:inline-flex}.Flex--iefix{display:block}.Flex--iefix.Flex--inline,.Flex__item--iefix{display:inline-block}.Flex--iefix--column>.Flex__item--iefix{display:block}.Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.Knob__popupValue{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.Knob__ringTrackPivot{transform:rotate(135deg)}.Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.Knob__ringFillPivot{transform:rotate(135deg)}.Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms ease-out}.Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.Knob--color--white .Knob__ringFill{stroke:#fff}.Knob--color--red .Knob__ringFill{stroke:#df3e3e}.Knob--color--orange .Knob__ringFill{stroke:#f37f33}.Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.Knob--color--green .Knob__ringFill{stroke:#25ca4c}.Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.Knob--color--blue .Knob__ringFill{stroke:#2e93de}.Knob--color--violet .Knob__ringFill{stroke:#7349cf}.Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.Knob--color--pink .Knob__ringFill{stroke:#e34da1}.Knob--color--brown .Knob__ringFill{stroke:#b97447}.Knob--color--grey .Knob__ringFill{stroke:#848484}.Knob--color--light-grey .Knob__ringFill{stroke:#b3b3b3}.Knob--color--good .Knob__ringFill{stroke:#68c22d}.Knob--color--average .Knob__ringFill{stroke:#f29a29}.Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.Knob--color--label .Knob__ringFill{stroke:#8b9bb0}.LabeledList{display:table;width:100%;width:calc(100% + 1em);border-collapse:collapse;border-spacing:0;margin:-.25em -.5em 0;padding:0}.LabeledList__row{display:table-row}.LabeledList__row:last-child .LabeledList__cell{padding-bottom:0}.LabeledList__cell{display:table-cell;margin:0;padding:.25em .5em;border:0;text-align:left}.LabeledList__label--nowrap{width:1%;white-space:nowrap;min-width:5em}.LabeledList__buttons{width:.1%;white-space:nowrap;text-align:right;padding-top:.0833333333em;padding-bottom:0}.LabeledList__breakContents{word-break:break-all;word-wrap:break-word}.Modal{background-color:#202020;max-width:calc(100% - 1rem);padding:1rem}.NoticeBox{padding:.33em .5em;margin-bottom:.5em;box-shadow:none;font-weight:700;font-style:italic;color:#000;background-color:#bb9b68;background-image:repeating-linear-gradient(-45deg,transparent,transparent .8333333333em,rgba(0,0,0,.1) .8333333333em,rgba(0,0,0,.1) 1.6666666667em)}.NoticeBox--color--black{color:#fff;background-color:#000}.NoticeBox--color--white{color:#000;background-color:#b3b3b3}.NoticeBox--color--red{color:#fff;background-color:#701f1f}.NoticeBox--color--orange{color:#fff;background-color:#854114}.NoticeBox--color--yellow{color:#000;background-color:#83710d}.NoticeBox--color--olive{color:#000;background-color:#576015}.NoticeBox--color--green{color:#fff;background-color:#174e24}.NoticeBox--color--teal{color:#fff;background-color:#064845}.NoticeBox--color--blue{color:#fff;background-color:#1b4565}.NoticeBox--color--violet{color:#fff;background-color:#3b2864}.NoticeBox--color--purple{color:#fff;background-color:#542663}.NoticeBox--color--pink{color:#fff;background-color:#802257}.NoticeBox--color--brown{color:#fff;background-color:#4c3729}.NoticeBox--color--grey{color:#fff;background-color:#3e3e3e}.NoticeBox--color--light-grey{color:#fff;background-color:#6a6a6a}.NoticeBox--color--good{color:#fff;background-color:#2e4b1a}.NoticeBox--color--average{color:#fff;background-color:#7b4e13}.NoticeBox--color--bad{color:#fff;background-color:#701f1f}.NoticeBox--color--label{color:#fff;background-color:#53565a}.NoticeBox--type--info{color:#fff;background-color:#235982}.NoticeBox--type--success{color:#fff;background-color:#1e662f}.NoticeBox--type--warning{color:#fff;background-color:#a95219}.NoticeBox--type--danger{color:#fff;background-color:#8f2828}.NumberInput{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#88bfff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.NumberInput--fluid{display:block}.NumberInput__content{margin-left:.5em}.NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #88bfff;background-color:#88bfff}.NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-width:.0833333333em!important;border-style:solid!important;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .9s ease-out}.ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.ProgressBar__fill--animated{transition:background-color .9s ease-out,width .9s ease-out}.ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.ProgressBar--color--default{border:.0833333333em solid #3e6189}.ProgressBar--color--default .ProgressBar__fill{background-color:#3e6189}.ProgressBar--color--black{border-color:#000!important}.ProgressBar--color--black .ProgressBar__fill{background-color:#000}.ProgressBar--color--white{border-color:#d9d9d9!important}.ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.ProgressBar--color--red{border-color:#bd2020!important}.ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--orange{border-color:#d95e0c!important}.ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.ProgressBar--color--yellow{border-color:#d9b804!important}.ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.ProgressBar--color--olive{border-color:#9aad14!important}.ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.ProgressBar--color--green{border-color:#1b9638!important}.ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.ProgressBar--color--teal{border-color:#009a93!important}.ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.ProgressBar--color--blue{border-color:#1c71b1!important}.ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.ProgressBar--color--violet{border-color:#552dab!important}.ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.ProgressBar--color--purple{border-color:#8b2baa!important}.ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.ProgressBar--color--pink{border-color:#cf2082!important}.ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.ProgressBar--color--brown{border-color:#8c5836!important}.ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.ProgressBar--color--grey{border-color:#646464!important}.ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.ProgressBar--color--light-grey{border-color:#919191!important}.ProgressBar--color--light-grey .ProgressBar__fill{background-color:#919191}.ProgressBar--color--good{border-color:#4d9121!important}.ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.ProgressBar--color--average{border-color:#cd7a0d!important}.ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.ProgressBar--color--bad{border-color:#bd2020!important}.ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.ProgressBar--color--label{border-color:#657a94!important}.ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.Section{position:relative;margin-bottom:.5em;background-color:#131313;box-sizing:border-box}.Section:last-child{margin-bottom:0}.Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #4972a1}.Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.Section__rest{position:relative}.Section__content{padding:.66em .5em}.Section--fitted>.Section__rest>.Section__content{padding:0}.Section--fill{display:flex;flex-direction:column;height:100%}.Section--fill>.Section__rest{flex-grow:1}.Section--fill>.Section__rest>.Section__content{height:100%}.Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.Section--scrollable{overflow-x:hidden;overflow-y:hidden}.Section--scrollable>.Section__rest>.Section__content{overflow-y:scroll;overflow-x:hidden}.Section--scrollableHorizontal{overflow-x:hidden;overflow-y:hidden}.Section--scrollableHorizontal>.Section__rest>.Section__content{overflow-y:hidden;overflow-x:scroll}.Section--scrollable.Section--scrollableHorizontal{overflow-x:hidden;overflow-y:hidden}.Section--scrollable.Section--scrollableHorizontal>.Section__rest>.Section__content{overflow-y:scroll;overflow-x:scroll}.Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.Section .Section:first-child{margin-top:-.5em}.Section .Section .Section__titleText{font-size:1.0833333333em}.Section .Section .Section .Section__titleText{font-size:1em}.Section--flex{display:flex;flex-flow:column}.Section--flex .Section__content{overflow:auto;flex-grow:1}.Section__content--noTopPadding{padding-top:0}.Section__content--stretchContents{height:calc(100% - 3rem)}.Slider{cursor:e-resize}.Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.Divider--horizontal{margin:.5em 0}.Divider--horizontal:not(.Divider--hidden){border-top:.1666666667em solid rgba(255,255,255,.1)}.Divider--vertical{height:100%;margin:0 .5em}.Divider--vertical:not(.Divider--hidden){border-left:.1666666667em solid rgba(255,255,255,.1)}.Stack--fill{height:100%}.Stack--horizontal>.Stack__item{margin-left:.5em}.Stack--horizontal>.Stack__item:first-child{margin-left:0}.Stack--vertical>.Stack__item{margin-top:.5em}.Stack--vertical>.Stack__item:first-child{margin-top:0}.Stack--zebra>.Stack__item:nth-child(2n){background-color:#131313}.Stack--horizontal>.Stack__divider:not(.Stack__divider--hidden){border-left:.1666666667em solid rgba(255,255,255,.1)}.Stack--vertical>.Stack__divider:not(.Stack__divider--hidden){border-top:.1666666667em solid rgba(255,255,255,.1)}.Table{display:table;width:100%;border-collapse:collapse;border-spacing:0;margin:0}.Table--collapsing{width:auto}.Table__row{display:table-row}.Table__cell{display:table-cell;padding:0 .25em}.Table__cell:first-child{padding-left:0}.Table__cell:last-child{padding-right:0}.Table__row--header .Table__cell,.Table__cell--header{font-weight:700;padding-bottom:.5em}.Table__cell--collapsing{width:1%;white-space:nowrap}.Tabs{display:flex;align-items:stretch;overflow:hidden;background-color:#131313}.Tabs--fill{height:100%}.Section .Tabs{background-color:rgba(0,0,0,0)}.Section:not(.Section--fitted) .Tabs{margin:0 -.5em .5em}.Section:not(.Section--fitted) .Tabs:first-child{margin-top:-.5em}.Tabs--vertical{flex-direction:column;padding:.25em 0 .25em .25em}.Tabs--horizontal{margin-bottom:.5em;padding:.25em .25em 0}.Tabs--horizontal:last-child{margin-bottom:0}.Tabs__Tab{flex-grow:0}.Tabs--fluid .Tabs__Tab{flex-grow:1}.Tab{display:flex;align-items:center;justify-content:space-between;background-color:rgba(0,0,0,0);color:rgba(255,255,255,.5);min-height:2.25em;min-width:4em}.Tab:not(.Tab--selected):hover{background-color:rgba(255,255,255,.075)}.Tab--selected{background-color:rgba(255,255,255,.125);color:#dfe7f0}.Tab__text{flex-grow:1;margin:0 .5em}.Tab__left{min-width:1.5em;text-align:center;margin-left:.25em}.Tab__right{min-width:1.5em;text-align:center;margin-right:.25em}.Tabs--horizontal .Tab{border-top:.1666666667em solid rgba(0,0,0,0);border-bottom:.1666666667em solid rgba(0,0,0,0);border-top-left-radius:.25em;border-top-right-radius:.25em}.Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #d4dfec}.Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid rgba(0,0,0,0);border-right:.1666666667em solid rgba(0,0,0,0);border-top-left-radius:.25em;border-bottom-left-radius:.25em}.Tabs--vertical .Tab--selected{border-right:.1666666667em solid #d4dfec}.Tab--selected.Tab--color--black{color:#535353}.Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#1a1a1a}.Tabs--vertical .Tab--selected.Tab--color--black{border-right-color:#1a1a1a}.Tab--selected.Tab--color--white{color:#fff}.Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#fff}.Tabs--vertical .Tab--selected.Tab--color--white{border-right-color:#fff}.Tab--selected.Tab--color--red{color:#e76e6e}.Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#df3e3e}.Tabs--vertical .Tab--selected.Tab--color--red{border-right-color:#df3e3e}.Tab--selected.Tab--color--orange{color:#f69f66}.Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#f37f33}.Tabs--vertical .Tab--selected.Tab--color--orange{border-right-color:#f37f33}.Tab--selected.Tab--color--yellow{color:#fce358}.Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#fbda21}.Tabs--vertical .Tab--selected.Tab--color--yellow{border-right-color:#fbda21}.Tab--selected.Tab--color--olive{color:#d8eb55}.Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#cbe41c}.Tabs--vertical .Tab--selected.Tab--color--olive{border-right-color:#cbe41c}.Tab--selected.Tab--color--green{color:#53e074}.Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#25ca4c}.Tabs--vertical .Tab--selected.Tab--color--green{border-right-color:#25ca4c}.Tab--selected.Tab--color--teal{color:#21fff5}.Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00d6cc}.Tabs--vertical .Tab--selected.Tab--color--teal{border-right-color:#00d6cc}.Tab--selected.Tab--color--blue{color:#62aee6}.Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#2e93de}.Tabs--vertical .Tab--selected.Tab--color--blue{border-right-color:#2e93de}.Tab--selected.Tab--color--violet{color:#9676db}.Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#7349cf}.Tabs--vertical .Tab--selected.Tab--color--violet{border-right-color:#7349cf}.Tab--selected.Tab--color--purple{color:#c274db}.Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#ad45d0}.Tabs--vertical .Tab--selected.Tab--color--purple{border-right-color:#ad45d0}.Tab--selected.Tab--color--pink{color:#ea79b9}.Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#e34da1}.Tabs--vertical .Tab--selected.Tab--color--pink{border-right-color:#e34da1}.Tab--selected.Tab--color--brown{color:#ca9775}.Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#b97447}.Tabs--vertical .Tab--selected.Tab--color--brown{border-right-color:#b97447}.Tab--selected.Tab--color--grey{color:#a3a3a3}.Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#848484}.Tabs--vertical .Tab--selected.Tab--color--grey{border-right-color:#848484}.Tab--selected.Tab--color--light-grey{color:#c6c6c6}.Tabs--horizontal .Tab--selected.Tab--color--light-grey{border-bottom-color:#b3b3b3}.Tabs--vertical .Tab--selected.Tab--color--light-grey{border-right-color:#b3b3b3}.Tab--selected.Tab--color--good{color:#8cd95a}.Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#68c22d}.Tabs--vertical .Tab--selected.Tab--color--good{border-right-color:#68c22d}.Tab--selected.Tab--color--average{color:#f5b35e}.Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#f29a29}.Tabs--vertical .Tab--selected.Tab--color--average{border-right-color:#f29a29}.Tab--selected.Tab--color--bad{color:#e76e6e}.Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#df3e3e}.Tabs--vertical .Tab--selected.Tab--color--bad{border-right-color:#df3e3e}.Tab--selected.Tab--color--label{color:#a8b4c4}.Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#8b9bb0}.Tabs--vertical .Tab--selected.Tab--color--label{border-right-color:#8b9bb0}.Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#fff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible}.Input--fluid{display:block;width:auto}.Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.Input--monospace .Input__input{font-family:Consolas,monospace}.TextArea{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.TextArea--fluid{display:block;width:auto;height:auto}.TextArea--noborder{border:0px}.TextArea__textarea.TextArea__textarea--scrollable{overflow:auto;overflow-x:hidden;overflow-y:scroll}.TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.TextArea__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.TextArea__textarea_custom{overflow:visible;white-space:pre-wrap}.TextArea__nowrap{white-space:nowrap;overflow-wrap:normal;overflow-x:scroll}.Tooltip{z-index:2;padding:.5em .75em;pointer-events:none;text-align:left;transition:opacity .15s ease-out;background-color:#000;color:#fff;box-shadow:.1em .1em 1.25em -.1em rgba(0,0,0,.5);border-radius:.16em;max-width:20.8333333333em}.Chat{color:#abc6ec}.Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s ease-out}.Chat__badge:before{content:"x"}.Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.Chat__scrollButton{position:fixed;right:2em;bottom:1em}.Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#131313}.Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.Chat__highlight{color:#000}.Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.ChatMessage{word-wrap:break-word}.ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.Ping{position:relative;padding:.125em .25em;border:.0833333333em solid rgba(140,140,140,.5);border-radius:.25em;width:3.75em;text-align:right}.Ping__indicator{content:"";position:absolute;top:.5em;left:.5em;width:.5em;height:.5em;background-color:#888;border-radius:.25em}.Notifications{position:absolute;bottom:1em;left:1em;right:2em}.Notification{color:#fff;background-color:#dc143c;padding:.5em;margin:1em 0}.Notification:first-child{margin-top:0}.Notification:last-child{margin-bottom:0}.Layout,.Layout *{scrollbar-base-color:#181818;scrollbar-face-color:#363636;scrollbar-3dlight-color:#202020;scrollbar-highlight-color:#202020;scrollbar-track-color:#181818;scrollbar-arrow-color:#909090;scrollbar-shadow-color:#363636}.Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden}.Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.Layout__content--flexRow{display:flex;flex-flow:row}.Layout__content--flexColumn{display:flex;flex-flow:column}.Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#202020;background-image:linear-gradient(to bottom,#202020,#202020)}.Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.Window__contentPadding:after{height:0}.Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(56,56,56,.25);pointer-events:none}.Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}img{margin:0;padding:0;line-height:1;-ms-interpolation-mode:nearest-neighbor;image-rendering:pixelated}img.icon{height:1em;min-height:16px;width:auto;vertical-align:bottom}a{color:#397ea5}a.visited,a:visited{color:#7c00e6}a.popt{text-decoration:none}.popup{position:fixed;top:50%;left:50%;background:#ddd}.popup .close{position:absolute;background:#aaa;top:0;right:0;color:#333;text-decoration:none;z-index:2;padding:0 10px;height:30px;line-height:30px}.popup .close:hover{background:#999}.popup .head{background:#999;color:#ddd;padding:0 10px;height:30px;line-height:30px;text-transform:uppercase;font-size:.9em;font-weight:700;border-bottom:2px solid green}.popup input{border:1px solid #999;background:#fff;margin:0;padding:5px;outline:none;color:#333}.popup input[type=text]:hover,.popup input[type=text]:active,.popup input[type=text]:focus{border-color:green}.popup input[type=submit]{padding:5px 10px;background:#999;color:#ddd;text-transform:uppercase;font-size:.9em;font-weight:700}.popup input[type=submit]:hover,.popup input[type=submit]:focus,.popup input[type=submit]:active{background:#aaa;cursor:pointer}.changeFont{padding:10px}.changeFont a{display:block;text-decoration:none;padding:3px;color:#333}.changeFont a:hover{background:#ccc}.highlightPopup{padding:10px;text-align:center}.highlightPopup input[type=text]{display:block;width:215px;text-align:left;margin-top:5px}.highlightPopup input.highlightColor{background-color:#ff0}.highlightPopup input.highlightTermSubmit{margin-top:5px}.contextMenu{background-color:#ddd;position:fixed;margin:2px;width:150px}.contextMenu a{display:block;padding:2px 5px;text-decoration:none;color:#333}.contextMenu a:hover{background-color:#ccc}.filterMessages{padding:5px}.filterMessages div{padding:2px 0}.icon-stack{height:1em;line-height:1em;width:1em;vertical-align:middle;margin-top:-2px}.motd{color:#a4bad6;font-family:Verdana,sans-serif;white-space:normal}.motd h1,.motd h2,.motd h3,.motd h4,.motd h5,.motd h6{color:#a4bad6;text-decoration:underline}.motd a,.motd a:link,.motd a:visited,.motd a:active,.motd a:hover{color:#a4bad6}.bold,.name,.prefix,.ooc,.looc,.adminooc,.admin,.medal,.yell{font-weight:700}.italic,.italics{font-style:italic}.highlight{background:#ff0}h1,h2,h3,h4,h5,h6{color:#a4bad6;font-family:Georgia,Verdana,sans-serif}h1.alert,h2.alert{color:#a4bad6}em{font-style:normal;font-weight:700}.ooc{color:#cca300;font-weight:700}.ooc .elevated{color:#2e78d9}.ooc .moderator{color:#184880}.ooc .developer{color:#1b521f}.ooc .admin{color:#b82e00}.ooc .event_manager{color:#603}.ooc .aooc{color:#960018}img.text_tag{width:32px;height:10px;min-height:10px}img.icon{vertical-align:middle;max-height:1em}img.icon.bigicon{max-height:32px}.looc{color:#3a9696;font-weight:700}.rlooc{color:#3abb96;font-weight:700}.adminobserverooc{color:#09c;font-weight:700}.adminooc{color:#3d5bc3;font-weight:700}.adminsay{color:#ff4500;font-weight:700}.admin{color:#5975da;font-weight:700}.mentor_channel{color:olive;font-weight:700}.mod_channel{color:#735638;font-weight:700}.admin_channel{color:#9611d4;font-weight:700}.event_channel{color:#c39;font-weight:700}.name{font-weight:700}.hivemind{font-style:italic}.psay,.pemote{color:#e300e4;font-style:italic}.deadsay{color:#e2c1ff}.binarysay{font-style:italic;color:#1e90ff}.binarysay a{color:#0f0}.binarysay a:active,.binarysay a:visited{color:#8f8}.radio{color:#1ecc43}.sciradio{color:#c68cfa}.comradio{color:#57b8f0}.secradio{color:#dd3535}.medradio{color:#57f09e}.engradio{color:#fcdf03}.supradio{color:#b88646}.srvradio{color:#6ca729}.expradio{color:#8a8a8a}.syndradio{color:#8f4a4b}.gangradio{color:#ac2ea1}.centradio{color:#2681a5}.airadio{color:#d65d95}.redteamradio{color:#f44!important}.blueteamradio{color:#3434fd!important}.greenteamradio{color:#34fd34!important}.yellowteamradio{color:#fdfd34!important}.yell{font-weight:700}.alert,.valert{color:#d82020}.userdanger{color:#c51e1e;font-weight:700;font-size:185%}.bolddanger{color:#c51e1e;font-weight:700}.danger,.vdanger{color:#c51e1e}.warning,.vwarning{color:#c51e1e;font-style:italic}.alertwarning{color:red;font-weight:700}.boldwarning{color:#c51e1e;font-style:italic;font-weight:700}.announce,.boldannounce{color:#c51e1e;font-weight:700}.minorannounce{color:#c51e1e;font-weight:700;font-size:185%}.minoralert{color:#a4bad6;font-size:125%}.priorityannounce{color:#a4bad6;font-weight:700;font-size:225%}.prioritytitle{color:#6685f5;font-weight:700;font-size:185%}.priorityalert{color:#c51e1e;font-size:140%}.greenannounce{color:#059223;font-weight:700}.rose{color:#ff5050}.info{color:#9ab0ff}.notice,.vnotice{color:#6685f5}.tinynotice{color:#6685f5;font-size:85%}.tinynoticeital{color:#6685f5;font-style:italic;font-size:85%}.smallnotice{color:#6685f5;font-size:90%}.smallnoticeital{color:#6685f5;font-style:italic;font-size:90%}.bolditalic{font-style:italic;font-weight:700}.boldnotice{color:#6685f5;font-weight:700}.hear{color:#6685f5;font-style:italic}.adminnotice{color:#6685f5}.adminhelp{color:red;font-weight:700}.log_message{color:#386aff;font-weight:700}.unconscious{color:#a4bad6;font-weight:700}.suicide{color:#ff5050;font-style:italic}.green{color:#059223}.grey{color:#838383}.red{color:red}.crimson{color:#dc143c}.maroon{color:#c60000}.brown{color:#db733b}.blue{color:#4173fd}.black,.white{color:#fff}.darkgray{color:gray}.gray{color:#a9a9a9}.yellow{color:#fc0}.pink{color:pink}.cyan{color:#0ff}.orange{color:#ff8c00}.nicegreen{color:#059223}.boldnicegreen{color:#059223;font-weight:700}.blob{color:#ee4000}.blobannounce{color:#556b2f;font-weight:700;font-size:185%}.cult{color:#973e3b}.cultitalic{color:#973e3b;font-style:italic}.cultbold{color:#973e3b;font-style:italic;font-weight:700}.cultboldtalic,.cultlarge{color:#973e3b;font-weight:700;font-size:185%}.narsie{color:#973e3b;font-weight:700;font-size:925%}.narsiesmall{color:#973e3b;font-weight:700;font-size:370%}.colossus{color:#7f282a;font-size:310%}.hierophant{color:#b441ee;font-weight:700;font-style:italic}.hierophant_warning{color:#c56bf1;font-style:italic}.purple{color:#9956d3}.lightpurple{color:#ad5aad}.darkpink{color:#e3209b}.holoparasite{color:#88809c}.revennotice{color:#c099e2}.revenboldnotice{color:#c099e2;font-weight:700}.revenbignotice{color:#c099e2;font-weight:700;font-size:185%}.revenminor{color:#823abb}.revenwarning{color:#760fbb;font-style:italic}.revendanger{color:#760fbb;font-weight:700;font-size:185%}.deconversion_message{color:#a947ff;font-size:185%;font-style:italic}.ghostalert{color:#60f;font-style:italic;font-weight:700}.alien{color:#855d85}.noticealien{color:#059223}.alertalien{color:#059223;font-weight:700}.changeling{color:#b000b1;font-style:italic}.alertsyndie{color:red;font-size:185%;font-weight:700}.spiderbroodmother{color:#80f;font-weight:700;font-size:185%}.spiderbreacher{color:#e8b670;font-weight:700;font-size:140%}.spiderscout{color:#231d98;font-weight:700;font-size:120%}.interface{color:#961196}.sans{font-family:Comic Sans MS,cursive,sans-serif}.papyrus{font-family:Papyrus,cursive,sans-serif}.robot{font-family:Courier New,cursive,sans-serif}.tape_recorder{color:red;font-family:Courier New,cursive,sans-serif}.command_headset{font-weight:700;font-size:160%}.small{font-size:60%}.big{font-size:185%}.reallybig{font-size:245%}.extremelybig{font-size:310%}.greentext{color:#059223;font-size:185%}.redtext{color:#c51e1e;font-size:185%}.clown{color:#ff70c1;font-size:160%;font-family:Comic Sans MS,cursive,sans-serif;font-weight:700}.singing{font-family:Trebuchet MS,cursive,sans-serif;font-style:italic}.his_grace{color:#15d512;font-family:Courier New,cursive,sans-serif;font-style:italic}.hypnophrase{color:#202020;font-weight:700;animation:hypnocolor 1.5s infinite;animation-direction:alternate}.phobia{color:#d00;font-weight:700;animation:phobia .75s infinite}.icon{height:1em;width:auto}.bigicon{font-size:2.5em}.hugeicon{font-size:5em}.memo{color:#638500;text-align:center}.memoedit{text-align:center;font-size:125%}.abductor{color:#c204c2;font-style:italic}.mind_control{color:#df3da9;font-size:100%;font-weight:700;font-style:italic}.slime{color:#00ced1}.drone{color:#848482}.monkey{color:#975032}.swarmer{color:#2c75ff}.resonate{color:#298f85}.upside_down{display:inline;-moz-transform:scale(-1,-1);-webkit-transform:scale(-1,-1);-o-transform:scale(-1,-1);-ms-transform:scale(-1,-1);transform:scale(-1)}.connectionClosed,.fatalError{background:red;color:#fff;padding:5px}.connectionClosed.restored{background:green}.internal.boldnshit{color:#3d5bc3;font-weight:700}.text-normal{font-weight:400;font-style:normal}.hidden{display:none;visibility:hidden}.ml-1{margin-left:1em}.ml-2{margin-left:2em}.ml-3{margin-left:3em}.examine_block{background:#1b1c1e;border:1px solid #a4bad6;margin:.5em;padding:.5em .75em}.tooltip{font-style:italic;border-bottom:1px dashed #fff}.major_announcement_title{font-size:175%;padding:0rem .5rem;line-height:100%;text-align:left;text-decoration:none;width:100%}.subheader_announcement_text{font-weight:700;padding:.25rem .5rem 0;line-height:100%;width:100%;height:100%;text-align:left;font-size:125%}.major_announcement_text{color:#eaeaea;background-color:#131313;font-weight:700;font-size:100%;text-align:left;padding:.5rem;width:100%;height:100%}.minor_announcement_title{font-weight:700;padding:0 .5rem;padding-top:0;line-height:100%;width:100%;height:100%;text-align:left;font-size:150%}.minor_announcement_text{background-color:#202020;color:#eaeaea;padding:.5rem;text-align:left;font-size:100%}.announcement_header{padding:.5rem 0;display:flex;flex-direction:column}.ooc_alert{background:#4d4100;border:1px solid #cca300;margin:.5em;padding:.5em .5em .5em .2em;color:#fff;font-weight:700;display:flex;flex-direction:column}.ooc_announcement_text{color:#cca300;padding:.5em 0 0 .35em;display:flex;flex-direction:column}.chat_alert_default{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#003045,#003045 10px,#00283a 10px,#00283a 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.chat_alert_default .major_announcement_title,.chat_alert_default .minor_announcement_title{color:#33d5ff}.chat_alert_default .subheader_announcement_text{color:#ff5297}.chat_alert_default .minor_announcement_text,.chat_alert_default .major_announcement_text{background-color:#001621}.chat_alert_green{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#004700,#004700 10px,#003d00 10px,#003d00 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.chat_alert_green .major_announcement_title,.chat_alert_green .minor_announcement_title{color:#00ff80}.chat_alert_green .subheader_announcement_text{color:#ff85b5}.chat_alert_green .minor_announcement_text,.chat_alert_green .major_announcement_text{background-color:#002400}.chat_alert_blue{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#003045,#003045 10px,#00283a 10px,#00283a 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.chat_alert_blue .major_announcement_title,.chat_alert_blue .minor_announcement_title{color:#33d5ff}.chat_alert_blue .subheader_announcement_text{color:#ff5297}.chat_alert_blue .minor_announcement_text,.chat_alert_blue .major_announcement_text{background-color:#001621}.chat_alert_pink{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#400025,#400025 10px,#30001b 10px,#30001b 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.chat_alert_pink .major_announcement_title,.chat_alert_pink .minor_announcement_title{color:#ff5297}.chat_alert_pink .subheader_announcement_text{color:#33d5ff}.chat_alert_pink .minor_announcement_text,.chat_alert_pink .major_announcement_text{background-color:#17000d}.chat_alert_yellow{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#4d4100,#4d4100 10px,#574a00 10px,#574a00 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.chat_alert_yellow .major_announcement_title,.chat_alert_yellow .minor_announcement_title{color:#fff4e0}.chat_alert_yellow .subheader_announcement_text{color:#33d5ff}.chat_alert_yellow .minor_announcement_text,.chat_alert_yellow .major_announcement_text{background-color:#3e3400}.chat_alert_orange{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#6b4200,#6b4200 10px,#593400 10px,#593400 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.chat_alert_orange .major_announcement_title,.chat_alert_orange .minor_announcement_title{color:#feefe7}.chat_alert_orange .subheader_announcement_text{color:#33d5ff}.chat_alert_orange .minor_announcement_text,.chat_alert_orange .major_announcement_text{background-color:#402500}.chat_alert_red{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#520000,#520000 10px,#420000 10px,#420000 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.chat_alert_red .major_announcement_title,.chat_alert_red .minor_announcement_title{color:#ff5297}.chat_alert_red .subheader_announcement_text{color:#33d5ff}.chat_alert_red .minor_announcement_text,.chat_alert_red .major_announcement_text{background-color:#290000}.chat_alert_purple{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#38003d,#38003d 10px,#2c0030 10px,#2c0030 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.chat_alert_purple .major_announcement_title,.chat_alert_purple .minor_announcement_title{color:#c7a1f7}.chat_alert_purple .subheader_announcement_text{color:#33d5ff}.chat_alert_purple .minor_announcement_text,.chat_alert_purple .major_announcement_text{background-color:#150017}.chat_alert_grey{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#292929,#292929 10px,#252525 10px,#252525 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.chat_alert_grey .major_announcement_title,.chat_alert_grey .minor_announcement_title{color:#ff5297}.chat_alert_grey .subheader_announcement_text{color:#33d5ff}.chat_alert_grey .minor_announcement_text,.chat_alert_grey .major_announcement_text{background-color:#181818}.tajaran{color:#803b56}.tajaran_signlang{color:#941c1c}.akhani{color:#ac398c}.skrell{color:#00b0b3}.skrellfar{color:#70fcff}.soghun{color:#50ba6c}.solcom{color:#6da6f0}.sergal{color:#07f}.birdsongc{color:#c90}.vulpkanin{color:#b97a57}.tavan{color:#f54298;font-family:Arial}.echosong{color:#826d8c}.enochian{color:#848a33;letter-spacing:-1pt;word-spacing:4pt;font-family:Lucida Sans Unicode,Lucida Grande,sans-serif}.daemon{color:#5e339e;letter-spacing:-1pt;word-spacing:0pt;font-family:Courier New,Courier,monospace}.drudakar{color:#bb2463;word-spacing:0pt;font-family:High Tower Text,monospace}.bug{color:#9e9e39}.vox{color:#a0a}.promethean{color:#a5a5a5;font-family:Comic Sans MS,Comic Sans,cursive}.zaddat{color:#941c1c}.rough{font-family:Trebuchet MS,cursive,sans-serif}.say_quote{font-family:Georgia,Verdana,sans-serif}.say_quote_italics{font-style:italic;font-family:Georgia,Verdana,sans-serif}.terminus{font-family:Times New Roman,Times,serif,sans-serif}.spacer{color:#9c660b}.teppi{color:#816540;word-spacing:4pt;font-family:Segoe Script Bold,Segoe Script,sans-serif,Verdana}.shadekin{color:#be3cc5;font-size:150%;font-weight:700;font-family:Gabriola,cursive,sans-serif;line-height:.3}.theme-light .color-black{color:#000!important}.theme-light .color-white{color:#e6e6e6!important}.theme-light .color-red{color:#c82121!important}.theme-light .color-orange{color:#e6630d!important}.theme-light .color-yellow{color:#e5c304!important}.theme-light .color-olive{color:#a3b816!important}.theme-light .color-green{color:#1d9f3b!important}.theme-light .color-teal{color:#00a39c!important}.theme-light .color-blue{color:#1e78bb!important}.theme-light .color-violet{color:#5a30b5!important}.theme-light .color-purple{color:#932eb4!important}.theme-light .color-pink{color:#db228a!important}.theme-light .color-brown{color:#955d39!important}.theme-light .color-grey{color:#e6e6e6!important}.theme-light .color-light-grey{color:#999!important}.theme-light .color-good{color:#529923!important}.theme-light .color-average{color:#da810e!important}.theme-light .color-bad{color:#c82121!important}.theme-light .color-label{color:#353535!important}.theme-light .color-bg-black{background-color:#000!important}.theme-light .color-bg-white{background-color:#bfbfbf!important}.theme-light .color-bg-red{background-color:#a61c1c!important}.theme-light .color-bg-orange{background-color:#c0530b!important}.theme-light .color-bg-yellow{background-color:#bfa303!important}.theme-light .color-bg-olive{background-color:#889912!important}.theme-light .color-bg-green{background-color:#188532!important}.theme-light .color-bg-teal{background-color:#008882!important}.theme-light .color-bg-blue{background-color:#19649c!important}.theme-light .color-bg-violet{background-color:#4b2897!important}.theme-light .color-bg-purple{background-color:#7a2696!important}.theme-light .color-bg-pink{background-color:#b61d73!important}.theme-light .color-bg-brown{background-color:#7c4d2f!important}.theme-light .color-bg-grey{background-color:#bfbfbf!important}.theme-light .color-bg-light-grey{background-color:gray!important}.theme-light .color-bg-good{background-color:#44801d!important}.theme-light .color-bg-average{background-color:#b56b0b!important}.theme-light .color-bg-bad{background-color:#a61c1c!important}.theme-light .color-bg-label{background-color:#2c2c2c!important}.theme-light .Tabs{display:flex;align-items:stretch;overflow:hidden;background-color:#fff}.theme-light .Tabs--fill{height:100%}.theme-light .Section .Tabs{background-color:rgba(0,0,0,0)}.theme-light .Section:not(.Section--fitted) .Tabs{margin:0 -.5em .5em}.theme-light .Section:not(.Section--fitted) .Tabs:first-child{margin-top:-.5em}.theme-light .Tabs--vertical{flex-direction:column;padding:.25em 0 .25em .25em}.theme-light .Tabs--horizontal{margin-bottom:.5em;padding:.25em .25em 0}.theme-light .Tabs--horizontal:last-child{margin-bottom:0}.theme-light .Tabs__Tab{flex-grow:0}.theme-light .Tabs--fluid .Tabs__Tab{flex-grow:1}.theme-light .Tab{display:flex;align-items:center;justify-content:space-between;background-color:rgba(0,0,0,0);color:rgba(0,0,0,.5);min-height:2.25em;min-width:4em}.theme-light .Tab:not(.Tab--selected):hover{background-color:rgba(255,255,255,.075)}.theme-light .Tab--selected{background-color:rgba(255,255,255,.125);color:#404040}.theme-light .Tab__text{flex-grow:1;margin:0 .5em}.theme-light .Tab__left{min-width:1.5em;text-align:center;margin-left:.25em}.theme-light .Tab__right{min-width:1.5em;text-align:center;margin-right:.25em}.theme-light .Tabs--horizontal .Tab{border-top:.1666666667em solid rgba(0,0,0,0);border-bottom:.1666666667em solid rgba(0,0,0,0);border-top-left-radius:.25em;border-top-right-radius:.25em}.theme-light .Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #000}.theme-light .Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid rgba(0,0,0,0);border-right:.1666666667em solid rgba(0,0,0,0);border-top-left-radius:.25em;border-bottom-left-radius:.25em}.theme-light .Tabs--vertical .Tab--selected{border-right:.1666666667em solid #000}.theme-light .Tab--selected.Tab--color--black{color:#404040}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#000}.theme-light .Tabs--vertical .Tab--selected.Tab--color--black{border-right-color:#000}.theme-light .Tab--selected.Tab--color--white{color:#ececec}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#e6e6e6}.theme-light .Tabs--vertical .Tab--selected.Tab--color--white{border-right-color:#e6e6e6}.theme-light .Tab--selected.Tab--color--red{color:#e14d4d}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#c82121}.theme-light .Tabs--vertical .Tab--selected.Tab--color--red{border-right-color:#c82121}.theme-light .Tab--selected.Tab--color--orange{color:#f48942}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#e6630d}.theme-light .Tabs--vertical .Tab--selected.Tab--color--orange{border-right-color:#e6630d}.theme-light .Tab--selected.Tab--color--yellow{color:#fcdd33}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#e5c304}.theme-light .Tabs--vertical .Tab--selected.Tab--color--yellow{border-right-color:#e5c304}.theme-light .Tab--selected.Tab--color--olive{color:#d0e732}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#a3b816}.theme-light .Tabs--vertical .Tab--selected.Tab--color--olive{border-right-color:#a3b816}.theme-light .Tab--selected.Tab--color--green{color:#33da5a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#1d9f3b}.theme-light .Tabs--vertical .Tab--selected.Tab--color--green{border-right-color:#1d9f3b}.theme-light .Tab--selected.Tab--color--teal{color:#00faef}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00a39c}.theme-light .Tabs--vertical .Tab--selected.Tab--color--teal{border-right-color:#00a39c}.theme-light .Tab--selected.Tab--color--blue{color:#419ce1}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#1e78bb}.theme-light .Tabs--vertical .Tab--selected.Tab--color--blue{border-right-color:#1e78bb}.theme-light .Tab--selected.Tab--color--violet{color:#7f58d3}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#5a30b5}.theme-light .Tabs--vertical .Tab--selected.Tab--color--violet{border-right-color:#5a30b5}.theme-light .Tab--selected.Tab--color--purple{color:#b455d4}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#932eb4}.theme-light .Tabs--vertical .Tab--selected.Tab--color--purple{border-right-color:#932eb4}.theme-light .Tab--selected.Tab--color--pink{color:#e558a7}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#db228a}.theme-light .Tabs--vertical .Tab--selected.Tab--color--pink{border-right-color:#db228a}.theme-light .Tab--selected.Tab--color--brown{color:#c0825a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#955d39}.theme-light .Tabs--vertical .Tab--selected.Tab--color--brown{border-right-color:#955d39}.theme-light .Tab--selected.Tab--color--grey{color:#ececec}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#e6e6e6}.theme-light .Tabs--vertical .Tab--selected.Tab--color--grey{border-right-color:#e6e6e6}.theme-light .Tab--selected.Tab--color--light-grey{color:#b3b3b3}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--light-grey{border-bottom-color:#999}.theme-light .Tabs--vertical .Tab--selected.Tab--color--light-grey{border-right-color:#999}.theme-light .Tab--selected.Tab--color--good{color:#77d23b}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#529923}.theme-light .Tabs--vertical .Tab--selected.Tab--color--good{border-right-color:#529923}.theme-light .Tab--selected.Tab--color--average{color:#f3a23a}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#da810e}.theme-light .Tabs--vertical .Tab--selected.Tab--color--average{border-right-color:#da810e}.theme-light .Tab--selected.Tab--color--bad{color:#e14d4d}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#c82121}.theme-light .Tabs--vertical .Tab--selected.Tab--color--bad{border-right-color:#c82121}.theme-light .Tab--selected.Tab--color--label{color:#686868}.theme-light .Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#353535}.theme-light .Tabs--vertical .Tab--selected.Tab--color--label{border-right-color:#353535}.theme-light .Section{position:relative;margin-bottom:.5em;background-color:#fff;box-sizing:border-box}.theme-light .Section:last-child{margin-bottom:0}.theme-light .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #fff}.theme-light .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#000}.theme-light .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-light .Section__rest{position:relative}.theme-light .Section__content{padding:.66em .5em}.theme-light .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-light .Section--fill{display:flex;flex-direction:column;height:100%}.theme-light .Section--fill>.Section__rest{flex-grow:1}.theme-light .Section--fill>.Section__rest>.Section__content{height:100%}.theme-light .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-light .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-light .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-light .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-light .Section--scrollable>.Section__rest>.Section__content{overflow-y:scroll;overflow-x:hidden}.theme-light .Section--scrollableHorizontal{overflow-x:hidden;overflow-y:hidden}.theme-light .Section--scrollableHorizontal>.Section__rest>.Section__content{overflow-y:hidden;overflow-x:scroll}.theme-light .Section--scrollable.Section--scrollableHorizontal{overflow-x:hidden;overflow-y:hidden}.theme-light .Section--scrollable.Section--scrollableHorizontal>.Section__rest>.Section__content{overflow-y:scroll;overflow-x:scroll}.theme-light .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-light .Section .Section:first-child{margin-top:-.5em}.theme-light .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-light .Section .Section .Section .Section__titleText{font-size:1em}.theme-light .Section--flex{display:flex;flex-flow:column}.theme-light .Section--flex .Section__content{overflow:auto;flex-grow:1}.theme-light .Section__content--noTopPadding{padding-top:0}.theme-light .Section__content--stretchContents{height:calc(100% - 3rem)}.theme-light .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-light .Button:last-child{margin-right:0;margin-bottom:0}.theme-light .Button .fa,.theme-light .Button .fas,.theme-light .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-light .Button--dropdown{line-height:1.3333333333em;height:1.8333333333em;padding:.2rem .5rem}.theme-light .Button--hasContent .fa,.theme-light .Button--hasContent .fas,.theme-light .Button--hasContent .far{margin-right:.25em}.theme-light .Button--hasContent.Button--iconPosition--right .fa,.theme-light .Button--hasContent.Button--iconPosition--right .fas,.theme-light .Button--hasContent.Button--iconPosition--right .far{margin-right:0;margin-left:3px}.theme-light .Button--ellipsis{text-overflow:ellipsis;overflow:hidden}.theme-light .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-light .Button--circular{border-radius:50%}.theme-light .Button--compact{padding:0 .25em;line-height:1.333em}.theme-light .Button--color--black{transition:color 50ms,background-color 50ms;background-color:#000;color:#fff}.theme-light .Button--color--black:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--black:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--black:hover,.theme-light .Button--color--black:focus{background-color:#131313;color:#fff}.theme-light .Button--color--white{transition:color 50ms,background-color 50ms;background-color:#bfbfbf;color:#000}.theme-light .Button--color--white:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--white:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--white:hover,.theme-light .Button--color--white:focus{background-color:#efefef;color:#000}.theme-light .Button--color--red{transition:color 50ms,background-color 50ms;background-color:#a61c1c;color:#fff}.theme-light .Button--color--red:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--red:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--red:hover,.theme-light .Button--color--red:focus{background-color:#d23333;color:#fff}.theme-light .Button--color--orange{transition:color 50ms,background-color 50ms;background-color:#c0530b;color:#fff}.theme-light .Button--color--orange:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--orange:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--orange:hover,.theme-light .Button--color--orange:focus{background-color:#ea7426;color:#fff}.theme-light .Button--color--yellow{transition:color 50ms,background-color 50ms;background-color:#bfa303;color:#fff}.theme-light .Button--color--yellow:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--yellow:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--yellow:hover,.theme-light .Button--color--yellow:focus{background-color:#efce17;color:#fff}.theme-light .Button--color--olive{transition:color 50ms,background-color 50ms;background-color:#889912;color:#fff}.theme-light .Button--color--olive:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--olive:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--olive:hover,.theme-light .Button--color--olive:focus{background-color:#afc328;color:#fff}.theme-light .Button--color--green{transition:color 50ms,background-color 50ms;background-color:#188532;color:#fff}.theme-light .Button--color--green:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--green:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--green:hover,.theme-light .Button--color--green:focus{background-color:#2fac4c;color:#fff}.theme-light .Button--color--teal{transition:color 50ms,background-color 50ms;background-color:#008882;color:#fff}.theme-light .Button--color--teal:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--teal:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--teal:hover,.theme-light .Button--color--teal:focus{background-color:#13afa9;color:#fff}.theme-light .Button--color--blue{transition:color 50ms,background-color 50ms;background-color:#19649c;color:#fff}.theme-light .Button--color--blue:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--blue:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--blue:hover,.theme-light .Button--color--blue:focus{background-color:#3086c7;color:#fff}.theme-light .Button--color--violet{transition:color 50ms,background-color 50ms;background-color:#4b2897;color:#fff}.theme-light .Button--color--violet:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--violet:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--violet:hover,.theme-light .Button--color--violet:focus{background-color:#6a41c1;color:#fff}.theme-light .Button--color--purple{transition:color 50ms,background-color 50ms;background-color:#7a2696;color:#fff}.theme-light .Button--color--purple:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--purple:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--purple:hover,.theme-light .Button--color--purple:focus{background-color:#a03fc0;color:#fff}.theme-light .Button--color--pink{transition:color 50ms,background-color 50ms;background-color:#b61d73;color:#fff}.theme-light .Button--color--pink:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--pink:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--pink:hover,.theme-light .Button--color--pink:focus{background-color:#da3f96;color:#fff}.theme-light .Button--color--brown{transition:color 50ms,background-color 50ms;background-color:#7c4d2f;color:#fff}.theme-light .Button--color--brown:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--brown:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--brown:hover,.theme-light .Button--color--brown:focus{background-color:#a26c49;color:#fff}.theme-light .Button--color--grey{transition:color 50ms,background-color 50ms;background-color:#bfbfbf;color:#000}.theme-light .Button--color--grey:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--grey:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--grey:hover,.theme-light .Button--color--grey:focus{background-color:#efefef;color:#000}.theme-light .Button--color--light-grey{transition:color 50ms,background-color 50ms;background-color:gray;color:#fff}.theme-light .Button--color--light-grey:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--light-grey:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--light-grey:hover,.theme-light .Button--color--light-grey:focus{background-color:#a6a6a6;color:#fff}.theme-light .Button--color--good{transition:color 50ms,background-color 50ms;background-color:#44801d;color:#fff}.theme-light .Button--color--good:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--good:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--good:hover,.theme-light .Button--color--good:focus{background-color:#62a635;color:#fff}.theme-light .Button--color--average{transition:color 50ms,background-color 50ms;background-color:#b56b0b;color:#fff}.theme-light .Button--color--average:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--average:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--average:hover,.theme-light .Button--color--average:focus{background-color:#e48f20;color:#fff}.theme-light .Button--color--bad{transition:color 50ms,background-color 50ms;background-color:#a61c1c;color:#fff}.theme-light .Button--color--bad:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--bad:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--bad:hover,.theme-light .Button--color--bad:focus{background-color:#d23333;color:#fff}.theme-light .Button--color--label{transition:color 50ms,background-color 50ms;background-color:#2c2c2c;color:#fff}.theme-light .Button--color--label:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--label:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--label:hover,.theme-light .Button--color--label:focus{background-color:#464646;color:#fff}.theme-light .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#bbb;color:#000}.theme-light .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--default:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--default:hover,.theme-light .Button--color--default:focus{background-color:#eaeaea;color:#000}.theme-light .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#be6209;color:#fff}.theme-light .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--caution:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--caution:hover,.theme-light .Button--color--caution:focus{background-color:#ec8420;color:#fff}.theme-light .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#9a9d00;color:#fff}.theme-light .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--danger:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--danger:hover,.theme-light .Button--color--danger:focus{background-color:#c4c813;color:#fff}.theme-light .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#eee;color:#000;background-color:rgba(238,238,238,0);color:rgba(0,0,0,.5)}.theme-light .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--color--transparent:focus{transition:color .1s,background-color .1s}.theme-light .Button--color--transparent:hover,.theme-light .Button--color--transparent:focus{background-color:#fcfcfc;color:#000}.theme-light .Button--disabled{background-color:#363636!important}.theme-light .Button--selected{transition:color 50ms,background-color 50ms;background-color:#0668b8;color:#fff}.theme-light .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-light .Button--selected:focus{transition:color .1s,background-color .1s}.theme-light .Button--selected:hover,.theme-light .Button--selected:focus{background-color:#1a8be7;color:#fff}.theme-light .Button--flex{display:inline-flex;flex-direction:column}.theme-light .Button--flex--fluid{width:100%}.theme-light .Button--verticalAlignContent--top{justify-content:flex-start}.theme-light .Button--verticalAlignContent--middle{justify-content:center}.theme-light .Button--verticalAlignContent--bottom{justify-content:flex-end}.theme-light .Button__content{display:block;align-self:stretch}.theme-light .Button__textMargin{margin-left:.4rem}.theme-light .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;color:#353535;background-color:#fff;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-light .NumberInput--fluid{display:block}.theme-light .NumberInput__content{margin-left:.5em}.theme-light .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-light .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #353535;background-color:#353535}.theme-light .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#fff;color:#000;text-align:right}.theme-light .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;color:#000;background-color:#fff;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible}.theme-light .Input--fluid{display:block;width:auto}.theme-light .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-light .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#000;color:inherit}.theme-light .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-light .TextArea{position:relative;display:inline-block;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;background-color:#fff;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-light .TextArea--fluid{display:block;width:auto;height:auto}.theme-light .TextArea--noborder{border:0px}.theme-light .TextArea__textarea.TextArea__textarea--scrollable{overflow:auto;overflow-x:hidden;overflow-y:scroll}.theme-light .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-light .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-light .TextArea__textarea_custom{overflow:visible;white-space:pre-wrap}.theme-light .TextArea__nowrap{white-space:nowrap;overflow-wrap:normal;overflow-x:scroll}.theme-light .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-light .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-light .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-light .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-light .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-light .Knob__popupValue{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-light .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-light .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-light .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-light .Knob__ringFillPivot{transform:rotate(135deg)}.theme-light .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-light .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms ease-out}.theme-light .Knob--color--black .Knob__ringFill{stroke:#000}.theme-light .Knob--color--white .Knob__ringFill{stroke:#e6e6e6}.theme-light .Knob--color--red .Knob__ringFill{stroke:#c82121}.theme-light .Knob--color--orange .Knob__ringFill{stroke:#e6630d}.theme-light .Knob--color--yellow .Knob__ringFill{stroke:#e5c304}.theme-light .Knob--color--olive .Knob__ringFill{stroke:#a3b816}.theme-light .Knob--color--green .Knob__ringFill{stroke:#1d9f3b}.theme-light .Knob--color--teal .Knob__ringFill{stroke:#00a39c}.theme-light .Knob--color--blue .Knob__ringFill{stroke:#1e78bb}.theme-light .Knob--color--violet .Knob__ringFill{stroke:#5a30b5}.theme-light .Knob--color--purple .Knob__ringFill{stroke:#932eb4}.theme-light .Knob--color--pink .Knob__ringFill{stroke:#db228a}.theme-light .Knob--color--brown .Knob__ringFill{stroke:#955d39}.theme-light .Knob--color--grey .Knob__ringFill{stroke:#e6e6e6}.theme-light .Knob--color--light-grey .Knob__ringFill{stroke:#999}.theme-light .Knob--color--good .Knob__ringFill{stroke:#529923}.theme-light .Knob--color--average .Knob__ringFill{stroke:#da810e}.theme-light .Knob--color--bad .Knob__ringFill{stroke:#c82121}.theme-light .Knob--color--label .Knob__ringFill{stroke:#353535}.theme-light .Slider{cursor:e-resize}.theme-light .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-light .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #000}.theme-light .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #000}.theme-light .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-light .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-width:.0833333333em!important;border-style:solid!important;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .9s ease-out}.theme-light .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-light .ProgressBar__fill--animated{transition:background-color .9s ease-out,width .9s ease-out}.theme-light .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-light .ProgressBar--color--default{border:.0833333333em solid #bfbfbf}.theme-light .ProgressBar--color--default .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--black{border-color:#000!important}.theme-light .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-light .ProgressBar--color--white{border-color:#bfbfbf!important}.theme-light .ProgressBar--color--white .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--red{border-color:#a61c1c!important}.theme-light .ProgressBar--color--red .ProgressBar__fill{background-color:#a61c1c}.theme-light .ProgressBar--color--orange{border-color:#c0530b!important}.theme-light .ProgressBar--color--orange .ProgressBar__fill{background-color:#c0530b}.theme-light .ProgressBar--color--yellow{border-color:#bfa303!important}.theme-light .ProgressBar--color--yellow .ProgressBar__fill{background-color:#bfa303}.theme-light .ProgressBar--color--olive{border-color:#889912!important}.theme-light .ProgressBar--color--olive .ProgressBar__fill{background-color:#889912}.theme-light .ProgressBar--color--green{border-color:#188532!important}.theme-light .ProgressBar--color--green .ProgressBar__fill{background-color:#188532}.theme-light .ProgressBar--color--teal{border-color:#008882!important}.theme-light .ProgressBar--color--teal .ProgressBar__fill{background-color:#008882}.theme-light .ProgressBar--color--blue{border-color:#19649c!important}.theme-light .ProgressBar--color--blue .ProgressBar__fill{background-color:#19649c}.theme-light .ProgressBar--color--violet{border-color:#4b2897!important}.theme-light .ProgressBar--color--violet .ProgressBar__fill{background-color:#4b2897}.theme-light .ProgressBar--color--purple{border-color:#7a2696!important}.theme-light .ProgressBar--color--purple .ProgressBar__fill{background-color:#7a2696}.theme-light .ProgressBar--color--pink{border-color:#b61d73!important}.theme-light .ProgressBar--color--pink .ProgressBar__fill{background-color:#b61d73}.theme-light .ProgressBar--color--brown{border-color:#7c4d2f!important}.theme-light .ProgressBar--color--brown .ProgressBar__fill{background-color:#7c4d2f}.theme-light .ProgressBar--color--grey{border-color:#bfbfbf!important}.theme-light .ProgressBar--color--grey .ProgressBar__fill{background-color:#bfbfbf}.theme-light .ProgressBar--color--light-grey{border-color:gray!important}.theme-light .ProgressBar--color--light-grey .ProgressBar__fill{background-color:gray}.theme-light .ProgressBar--color--good{border-color:#44801d!important}.theme-light .ProgressBar--color--good .ProgressBar__fill{background-color:#44801d}.theme-light .ProgressBar--color--average{border-color:#b56b0b!important}.theme-light .ProgressBar--color--average .ProgressBar__fill{background-color:#b56b0b}.theme-light .ProgressBar--color--bad{border-color:#a61c1c!important}.theme-light .ProgressBar--color--bad .ProgressBar__fill{background-color:#a61c1c}.theme-light .ProgressBar--color--label{border-color:#2c2c2c!important}.theme-light .ProgressBar--color--label .ProgressBar__fill{background-color:#2c2c2c}.theme-light .Chat{color:#000}.theme-light .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s ease-out}.theme-light .Chat__badge:before{content:"x"}.theme-light .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-light .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-light .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-light .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#fff}.theme-light .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-light .Chat__highlight{color:#000}.theme-light .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-light .ChatMessage{word-wrap:break-word}.theme-light .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-light .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-light .Layout,.theme-light .Layout *{scrollbar-base-color:#f2f2f2;scrollbar-face-color:#d6d6d6;scrollbar-3dlight-color:#eee;scrollbar-highlight-color:#eee;scrollbar-track-color:#f2f2f2;scrollbar-arrow-color:#777;scrollbar-shadow-color:#d6d6d6}.theme-light .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden}.theme-light .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-light .Layout__content--flexRow{display:flex;flex-flow:row}.theme-light .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-light .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#000;background-color:#eee;background-image:linear-gradient(to bottom,#eee,#eee)}.theme-light .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-light .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-light .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-light .Window__contentPadding:after{height:0}.theme-light .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-light .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(252,252,252,.25);pointer-events:none}.theme-light .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-light .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-light .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-light .TitleBar{background-color:#eee;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-light .TitleBar__clickable{color:rgba(0,0,0,.5);background-color:#eee;transition:color .25s ease-out,background-color .25s ease-out}.theme-light .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-light .TitleBar__title{position:absolute;display:inline-block;top:0;left:46px;left:3.8333333333rem;color:rgba(0,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap;pointer-events:none}.theme-light .TitleBar__buttons{pointer-events:initial;display:inline-block;width:100%;margin-left:10px}.theme-light .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-light .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-light .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-light .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-light html,.theme-light body{padding:0;margin:0;height:100%;color:#000}.theme-light body{background:#fff;font-family:Verdana,sans-serif;font-size:13px;line-height:1.2;overflow-x:hidden;overflow-y:scroll;word-wrap:break-word}.theme-light img{margin:0;padding:0;line-height:1;-ms-interpolation-mode:nearest-neighbor;image-rendering:pixelated}.theme-light img.icon{height:1em;min-height:16px;width:auto;vertical-align:bottom}.theme-light a{color:#00f}.theme-light a.visited,.theme-light a:visited{color:#f0f}.theme-light a.popt{text-decoration:none}.theme-light .popup{position:fixed;top:50%;left:50%;background:#ddd}.theme-light .popup .close{position:absolute;background:#aaa;top:0;right:0;color:#333;text-decoration:none;z-index:2;padding:0 10px;height:30px;line-height:30px}.theme-light .popup .close:hover{background:#999}.theme-light .popup .head{background:#999;color:#ddd;padding:0 10px;height:30px;line-height:30px;text-transform:uppercase;font-size:.9em;font-weight:700;border-bottom:2px solid green}.theme-light .popup input{border:1px solid #999;background:#fff;margin:0;padding:5px;outline:none;color:#333}.theme-light .popup input[type=text]:hover,.theme-light .popup input[type=text]:active,.theme-light .popup input[type=text]:focus{border-color:green}.theme-light .popup input[type=submit]{padding:5px 10px;background:#999;color:#ddd;text-transform:uppercase;font-size:.9em;font-weight:700}.theme-light .popup input[type=submit]:hover,.theme-light .popup input[type=submit]:focus,.theme-light .popup input[type=submit]:active{background:#aaa;cursor:pointer}.theme-light .changeFont{padding:10px}.theme-light .changeFont a{display:block;text-decoration:none;padding:3px;color:#333}.theme-light .changeFont a:hover{background:#ccc}.theme-light .highlightPopup{padding:10px;text-align:center}.theme-light .highlightPopup input[type=text]{display:block;width:215px;text-align:left;margin-top:5px}.theme-light .highlightPopup input.highlightColor{background-color:#ff0}.theme-light .highlightPopup input.highlightTermSubmit{margin-top:5px}.theme-light .contextMenu{background-color:#ddd;position:fixed;margin:2px;width:150px}.theme-light .contextMenu a{display:block;padding:2px 5px;text-decoration:none;color:#333}.theme-light .contextMenu a:hover{background-color:#ccc}.theme-light .filterMessages{padding:5px}.theme-light .filterMessages div{padding:2px 0}.theme-light .icon-stack{height:1em;line-height:1em;width:1em;vertical-align:middle;margin-top:-2px}.theme-light .motd{color:#638500;font-family:Verdana,sans-serif;white-space:normal}.theme-light .motd h1,.theme-light .motd h2,.theme-light .motd h3,.theme-light .motd h4,.theme-light .motd h5,.theme-light .motd h6{color:#638500;text-decoration:underline}.theme-light .motd a,.theme-light .motd a:link,.theme-light .motd a:visited,.theme-light .motd a:active,.theme-light .motd a:hover{color:#638500}.theme-light .bold,.theme-light .name,.theme-light .prefix,.theme-light .ooc,.theme-light .looc,.theme-light .adminooc,.theme-light .admin,.theme-light .medal,.theme-light .yell{font-weight:700}.theme-light .italic,.theme-light .italics{font-style:italic}.theme-light .highlight{background:#ff0}.theme-light h1,.theme-light h2,.theme-light h3,.theme-light h4,.theme-light h5,.theme-light h6{color:#00f;font-family:Georgia,Verdana,sans-serif}.theme-light em{font-style:normal;font-weight:700}.theme-light .ooc{color:#002eb8;font-weight:700}.theme-light .ooc .elevated{color:#2e78d9}.theme-light .ooc .moderator{color:#184880}.theme-light .ooc .developer{color:#1b521f}.theme-light .ooc .admin{color:#b82e00}.theme-light .ooc .event_manager{color:#603}.theme-light .ooc .aooc{color:#960018}.theme-light img.text_tag{width:32px;height:10px;min-height:10px}.theme-light img.icon{vertical-align:middle;max-height:1em}.theme-light img.icon.bigicon{max-height:32px}.theme-light .looc{color:#3a9696;font-weight:700}.theme-light .rlooc{color:#3abb96;font-weight:700}.theme-light .adminobserverooc{color:#09c;font-weight:700}.theme-light .adminooc{color:#700038;font-weight:700}.theme-light .adminsay{color:#ff4500;font-weight:700}.theme-light .admin{color:#4473ff;font-weight:700}.theme-light .mentor_channel{color:olive;font-weight:700}.theme-light .mod_channel{color:#735638;font-weight:700}.theme-light .admin_channel{color:#9611d4;font-weight:700}.theme-light .event_channel{color:#c39;font-weight:700}.theme-light .name{font-weight:700}.theme-light .hivemind{font-style:italic}.theme-light .psay,.theme-light .pemote{color:purple;font-style:italic}.theme-light .deadsay{color:#5c00e6}.theme-light .binarysay{font-style:italic;color:#20c20e;background-color:#000;display:inline-block}.theme-light .binarysay a{color:#0f0}.theme-light .binarysay a:active,.theme-light .binarysay a:visited{color:#8f8}.theme-light .radio{color:green}.theme-light .sciradio{color:#939}.theme-light .comradio{color:#337296}.theme-light .secradio{color:#a30000}.theme-light .medradio{color:#339661}.theme-light .engradio{color:#948f02}.theme-light .supradio{color:#a8732b}.theme-light .srvradio{color:#6eaa2c}.theme-light .expradio{color:#555}.theme-light .syndradio{color:#6d3f40}.theme-light .gangradio{color:#ac2ea1}.theme-light .centradio{color:#686868}.theme-light .airadio{color:#f0f}.theme-light .redteamradio{color:red!important}.theme-light .blueteamradio{color:#00f!important}.theme-light .greenteamradio{color:#0f0!important}.theme-light .yellowteamradio{color:#d1ba22!important}.theme-light .yell{font-weight:700}.theme-light .alert,.theme-light .valert{color:red}.theme-light h1.alert,.theme-light h2.alert{color:#000}.theme-light .userdanger{color:red;font-weight:700;font-size:185%}.theme-light .bolddanger{color:red;font-weight:700}.theme-light .danger,.theme-light .vdanger{color:red}.theme-light .tinydanger{color:red;font-size:85%}.theme-light .smalldanger{color:red;font-size:90%}.theme-light .warning,.theme-light .vwarning{color:red;font-style:italic}.theme-light .alertwarning{color:red;font-weight:700}.theme-light .boldwarning{color:red;font-style:italic;font-weight:700}.theme-light .announce{color:#228b22;font-weight:700}.theme-light .boldannounce{color:red;font-weight:700}.theme-light .minorannounce{color:red;font-weight:700;font-size:185%}.theme-light .minoralert{color:#000;font-size:125%}.theme-light .priorityannounce{color:#000;font-weight:700;font-size:225%}.theme-light .prioritytitle{color:#00f;font-weight:700;font-size:185%}.theme-light .priorityalert{color:red;font-size:140%}.theme-light .greenannounce{color:#0f0;font-weight:700}.theme-light .rose{color:#ff5050}.theme-light .info{color:#00c}.theme-light .notice,.theme-light .vnotice{color:#009}.theme-light .tinynotice{color:#009;font-size:85%}.theme-light .tinynoticeital{color:#009;font-style:italic;font-size:85%}.theme-light .smallnotice{color:#009;font-size:90%}.theme-light .smallnoticeital{color:#009;font-style:italic;font-size:90%}.theme-light .boldnotice{color:#009;font-weight:700}.theme-light .hear{color:#009;font-style:italic}.theme-light .adminnotice{color:#00f}.theme-light .adminhelp{color:red;font-weight:700}.theme-light .log_message{color:#386aff;font-weight:700}.theme-light .unconscious{color:#00f;font-weight:700}.theme-light .suicide{color:#ff5050;font-style:italic}.theme-light .green{color:#03ff39}.theme-light .grey{color:#838383}.theme-light .red{color:red}.theme-light .crimson{color:#dc143c}.theme-light .maroon{color:maroon}.theme-light .brown{color:#8d4925}.theme-light .blue{color:#00f}.theme-light .black,.theme-light .white{color:#000}.theme-light .darkgray{color:gray}.theme-light .gray{color:#a9a9a9}.theme-light .yellow{color:#fc0}.theme-light .pink{color:pink}.theme-light .cyan{color:#0ff}.theme-light .orange{color:#ff8c00}.theme-light .nicegreen{color:#14a833}.theme-light .boldnicegreen{color:#14a833;font-weight:700}.theme-light .cult{color:#973e3b}.theme-light .cultitalic{color:#973e3b;font-style:italic}.theme-light .cultbold{color:#973e3b;font-style:italic;font-weight:700}.theme-light .cultboldtalic,.theme-light .cultlarge{color:#973e3b;font-weight:700;font-size:185%}.theme-light .blob{color:#ee4000}.theme-light .blobannounce{color:#323f1c;font-weight:700;font-size:185%}.theme-light .narsie{color:#973e3b;font-weight:700;font-size:925%}.theme-light .narsiesmall{color:#973e3b;font-weight:700;font-size:370%}.theme-light .colossus{color:#7f282a;font-size:310%}.theme-light .hierophant{color:#609;font-weight:700;font-style:italic}.theme-light .hierophant_warning{color:#609;font-style:italic}.theme-light .purple{color:#5e2d79}.theme-light .lightpurple{color:#ad5aad}.theme-light .darkpink{color:#e3209b}.theme-light .holoparasite{color:#35333a}.theme-light .revennotice{color:#1d2953}.theme-light .revenboldnotice{color:#1d2953;font-weight:700}.theme-light .revenbignotice{color:#1d2953;font-weight:700;font-size:185%}.theme-light .revenminor{color:#823abb}.theme-light .revenwarning{color:#760fbb;font-style:italic}.theme-light .revendanger{color:#760fbb;font-weight:700;font-size:185%}.theme-light .deconversion_message{color:#5000a0;font-size:185%;font-style:italic}.theme-light .ghostalert{color:#5c00e6;font-style:italic;font-weight:700}.theme-light .alien{color:#543354}.theme-light .noticealien{color:#00c000}.theme-light .alertalien{color:#00c000;font-weight:700}.theme-light .changeling{color:purple;font-style:italic}.theme-light .alertsyndie{color:red;font-size:185%;font-weight:700}.theme-light .spiderbroodmother{color:#4d004d;font-weight:700;font-size:185%}.theme-light .spiderbreacher{color:#804b02;font-weight:700;font-size:140%}.theme-light .spiderscout{color:#0c0674;font-weight:700;font-size:120%}.theme-light .interface{color:#303}.theme-light .sans{font-family:Comic Sans MS,cursive,sans-serif}.theme-light .papyrus{font-family:Papyrus,cursive,sans-serif}.theme-light .robot{font-family:Courier New,cursive,sans-serif}.theme-light .tape_recorder{color:maroon;font-family:Courier New,cursive,sans-serif}.theme-light .command_headset{font-weight:700;font-size:160%}.theme-light .small{font-size:60%}.theme-light .big{font-size:185%}.theme-light .reallybig{font-size:245%}.theme-light .extremelybig{font-size:310%}.theme-light .greentext{color:#0f0;font-size:185%}.theme-light .redtext{color:red;font-size:185%}.theme-light .clown{color:#ff69bf;font-size:160%;font-family:Comic Sans MS,cursive,sans-serif;font-weight:700}.theme-light .singing{font-family:Trebuchet MS,cursive,sans-serif;font-style:italic}.theme-light .his_grace{color:#15d512;font-family:Courier New,cursive,sans-serif;font-style:italic}.theme-light .hypnophrase{color:#0d0d0d;font-weight:700;animation:hypnocolor 1.5s infinite;animation-direction:alternate}.theme-light .phobia{color:#d00;font-weight:700;animation:phobia .75s infinite}.theme-light .icon{height:1em;width:auto}.theme-light .bigicon{font-size:2.5em}.theme-light .hugeicon{font-size:5em}.theme-light .memo{color:#638500;text-align:center}.theme-light .memoedit{text-align:center;font-size:125%}.theme-light .abductor{color:purple;font-style:italic}.theme-light .mind_control{color:#a00d6f;font-size:100%;font-weight:700;font-style:italic}.theme-light .slime{color:#00ced1}.theme-light .drone{color:#848482}.theme-light .monkey{color:#975032}.theme-light .swarmer{color:#2c75ff}.theme-light .resonate{color:#298f85}.theme-light .upside_down{display:inline;-moz-transform:scale(-1,-1);-webkit-transform:scale(-1,-1);-o-transform:scale(-1,-1);-ms-transform:scale(-1,-1);transform:scale(-1)}.theme-light .connectionClosed,.theme-light .fatalError{background:red;color:#fff;padding:5px}.theme-light .connectionClosed.restored{background:green}.theme-light .internal.boldnshit{color:#00f;font-weight:700}.theme-light .text-normal{font-weight:400;font-style:normal}.theme-light .hidden{display:none;visibility:hidden}.theme-light .ml-1{margin-left:1em}.theme-light .ml-2{margin-left:2em}.theme-light .ml-3{margin-left:3em}.theme-light .examine_block{background:#f2f7fa;border:1px solid #111a27;margin:.5em;padding:.5em .75em}.theme-light .tooltip{font-style:italic;border-bottom:1px dashed #000}.theme-light .major_announcement_title{font-size:175%;padding:0rem .5rem;line-height:100%;text-align:left;text-decoration:none;width:100%}.theme-light .subheader_announcement_text{font-weight:700;padding:.25rem .5rem 0;line-height:100%;width:100%;height:100%;text-align:left;font-size:125%}.theme-light .major_announcement_text{color:#131313;background-color:#eaeaea;font-weight:700;font-size:100%;text-align:left;padding:.5rem;width:100%;height:100%}.theme-light .minor_announcement_title{font-weight:700;padding:0 .5rem;padding-top:0;line-height:100%;width:100%;height:100%;text-align:left;font-size:150%}.theme-light .minor_announcement_text{background-color:#eaeaea;color:#202020;padding:.5rem;text-align:left;font-size:100%}.theme-light .announcement_header{padding:.5rem 0;display:flex;flex-direction:column}.theme-light .ooc_alert{background:#bdc8ff;border:1px solid #002eb8;margin:.5em;padding:.5em .5em .5em .2em;color:#00283a;font-weight:700;display:flex;flex-direction:column}.theme-light .ooc_announcement_text{color:#002eb8;padding:.5em 0 0 .35em;display:flex;flex-direction:column}.theme-light .chat_alert_default{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#bdc8ff,#bdc8ff 10px,#b3bfff 10px,#b3bfff 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.theme-light .chat_alert_default .major_announcement_title,.theme-light .chat_alert_default .minor_announcement_title{color:#003061}.theme-light .chat_alert_default .subheader_announcement_text{color:#6b0020}.theme-light .chat_alert_default .minor_announcement_text,.theme-light .chat_alert_default .major_announcement_text{background-color:#d7ddff}.theme-light .chat_alert_green{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#bdffbd,#bdffbd 10px,#adffad 10px,#adffad 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.theme-light .chat_alert_green .major_announcement_title,.theme-light .chat_alert_green .minor_announcement_title{color:#005229}.theme-light .chat_alert_green .subheader_announcement_text{color:#6b0020}.theme-light .chat_alert_green .minor_announcement_text,.theme-light .chat_alert_green .major_announcement_text{background-color:#d7ffd7}.theme-light .chat_alert_blue{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#bdc8ff,#bdc8ff 10px,#b3bfff 10px,#b3bfff 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.theme-light .chat_alert_blue .major_announcement_title,.theme-light .chat_alert_blue .minor_announcement_title{color:#003061}.theme-light .chat_alert_blue .subheader_announcement_text{color:#6b0020}.theme-light .chat_alert_blue .minor_announcement_text,.theme-light .chat_alert_blue .major_announcement_text{background-color:#d7ddff}.theme-light .chat_alert_pink{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#ffc2e5,#ffc2e5 10px,#ffb3df 10px,#ffb3df 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.theme-light .chat_alert_pink .major_announcement_title,.theme-light .chat_alert_pink .minor_announcement_title{color:#800033}.theme-light .chat_alert_pink .subheader_announcement_text{color:#002c85}.theme-light .chat_alert_pink .minor_announcement_text,.theme-light .chat_alert_pink .major_announcement_text{background-color:#ffdcf0}.theme-light .chat_alert_yellow{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#fff5c2,#fff5c2 10px,#fff3b3 10px,#fff3b3 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.theme-light .chat_alert_yellow .major_announcement_title,.theme-light .chat_alert_yellow .minor_announcement_title{color:#754900}.theme-light .chat_alert_yellow .subheader_announcement_text{color:#002c85}.theme-light .chat_alert_yellow .minor_announcement_text,.theme-light .chat_alert_yellow .major_announcement_text{background-color:#fff9dc}.theme-light .chat_alert_orange{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#ffe8c2,#ffe8c2 10px,#ffe2b3 10px,#ffe2b3 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.theme-light .chat_alert_orange .major_announcement_title,.theme-light .chat_alert_orange .minor_announcement_title{color:#823208}.theme-light .chat_alert_orange .subheader_announcement_text{color:#002c85}.theme-light .chat_alert_orange .minor_announcement_text,.theme-light .chat_alert_orange .major_announcement_text{background-color:#fff2dc}.theme-light .chat_alert_red{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#ffc2c2,#ffc2c2 10px,#ffb3b3 10px,#ffb3b3 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.theme-light .chat_alert_red .major_announcement_title,.theme-light .chat_alert_red .minor_announcement_title{color:#800029}.theme-light .chat_alert_red .subheader_announcement_text{color:#002c85}.theme-light .chat_alert_red .minor_announcement_text,.theme-light .chat_alert_red .major_announcement_text{background-color:#ffdcdc}.theme-light .chat_alert_purple{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#fbd1ff,#fbd1ff 10px,#fac2ff 10px,#fac2ff 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.theme-light .chat_alert_purple .major_announcement_title,.theme-light .chat_alert_purple .minor_announcement_title{color:#450d8c}.theme-light .chat_alert_purple .subheader_announcement_text{color:#002c85}.theme-light .chat_alert_purple .minor_announcement_text,.theme-light .chat_alert_purple .major_announcement_text{background-color:#fdebff}.theme-light .chat_alert_grey{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#ebebeb,#ebebeb 10px,#e3e3e3 10px,#e3e3e3 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.theme-light .chat_alert_grey .major_announcement_title,.theme-light .chat_alert_grey .minor_announcement_title{color:#800033}.theme-light .chat_alert_grey .subheader_announcement_text{color:#002c85}.theme-light .chat_alert_grey .minor_announcement_text,.theme-light .chat_alert_grey .major_announcement_text{background-color:#f8f8f8}.theme-light .tajaran{color:#803b56}.theme-light .tajaran_signlang{color:#941c1c}.theme-light .akhani{color:#ac398c}.theme-light .skrell{color:#00b0b3}.theme-light .skrellfar{color:#70fcff}.theme-light .soghun{color:#50ba6c}.theme-light .solcom{color:#3333ce}.theme-light .sergal{color:#07f}.theme-light .birdsongc{color:#c90}.theme-light .vulpkanin{color:#b97a57}.theme-light .tavan{color:#f54298;font-family:Arial}.theme-light .echosong{color:#826d8c}.theme-light .enochian{color:#848a33;letter-spacing:-1pt;word-spacing:4pt;font-family:Lucida Sans Unicode,Lucida Grande,sans-serif}.theme-light .daemon{color:#5e339e;letter-spacing:-1pt;word-spacing:0pt;font-family:Courier New,Courier,monospace}.theme-light .drudakar{color:#bb2463;word-spacing:0pt;font-family:High Tower Text,monospace}.theme-light .bug{color:#9e9e39}.theme-light .vox{color:#a0a}.theme-light .promethean{color:#5a5a5a;font-family:Comic Sans MS,Comic Sans,cursive}.theme-light .zaddat{color:#941c1c}.theme-light .rough{font-family:Trebuchet MS,cursive,sans-serif}.theme-light .say_quote{font-family:Georgia,Verdana,sans-serif}.theme-light .say_quote_italics{font-style:italic;font-family:Georgia,Verdana,sans-serif}.theme-light .terminus{font-family:Times New Roman,Times,serif,sans-serif}.theme-light .spacer{color:#9c660b}.theme-light .teppi{color:#816540;word-spacing:4pt;font-family:Segoe Script Bold,Segoe Script,sans-serif,Verdana}.theme-light .shadekin{color:#be3cc5;font-size:150%;font-weight:700;font-family:Gabriola,cursive,sans-serif;line-height:.3}.theme-vchatlight .color-black{color:#000!important}.theme-vchatlight .color-white{color:#e6e6e6!important}.theme-vchatlight .color-red{color:#c82121!important}.theme-vchatlight .color-orange{color:#e6630d!important}.theme-vchatlight .color-yellow{color:#e5c304!important}.theme-vchatlight .color-olive{color:#a3b816!important}.theme-vchatlight .color-green{color:#1d9f3b!important}.theme-vchatlight .color-teal{color:#00a39c!important}.theme-vchatlight .color-blue{color:#1e78bb!important}.theme-vchatlight .color-violet{color:#5a30b5!important}.theme-vchatlight .color-purple{color:#932eb4!important}.theme-vchatlight .color-pink{color:#db228a!important}.theme-vchatlight .color-brown{color:#955d39!important}.theme-vchatlight .color-grey{color:#e6e6e6!important}.theme-vchatlight .color-light-grey{color:#999!important}.theme-vchatlight .color-good{color:#529923!important}.theme-vchatlight .color-average{color:#da810e!important}.theme-vchatlight .color-bad{color:#c82121!important}.theme-vchatlight .color-label{color:#353535!important}.theme-vchatlight .color-bg-black{background-color:#000!important}.theme-vchatlight .color-bg-white{background-color:#bfbfbf!important}.theme-vchatlight .color-bg-red{background-color:#a61c1c!important}.theme-vchatlight .color-bg-orange{background-color:#c0530b!important}.theme-vchatlight .color-bg-yellow{background-color:#bfa303!important}.theme-vchatlight .color-bg-olive{background-color:#889912!important}.theme-vchatlight .color-bg-green{background-color:#188532!important}.theme-vchatlight .color-bg-teal{background-color:#008882!important}.theme-vchatlight .color-bg-blue{background-color:#19649c!important}.theme-vchatlight .color-bg-violet{background-color:#4b2897!important}.theme-vchatlight .color-bg-purple{background-color:#7a2696!important}.theme-vchatlight .color-bg-pink{background-color:#b61d73!important}.theme-vchatlight .color-bg-brown{background-color:#7c4d2f!important}.theme-vchatlight .color-bg-grey{background-color:#bfbfbf!important}.theme-vchatlight .color-bg-light-grey{background-color:gray!important}.theme-vchatlight .color-bg-good{background-color:#44801d!important}.theme-vchatlight .color-bg-average{background-color:#b56b0b!important}.theme-vchatlight .color-bg-bad{background-color:#a61c1c!important}.theme-vchatlight .color-bg-label{background-color:#2c2c2c!important}.theme-vchatlight .Tabs{display:flex;align-items:stretch;overflow:hidden;background-color:#fff}.theme-vchatlight .Tabs--fill{height:100%}.theme-vchatlight .Section .Tabs{background-color:rgba(0,0,0,0)}.theme-vchatlight .Section:not(.Section--fitted) .Tabs{margin:0 -.5em .5em}.theme-vchatlight .Section:not(.Section--fitted) .Tabs:first-child{margin-top:-.5em}.theme-vchatlight .Tabs--vertical{flex-direction:column;padding:.25em 0 .25em .25em}.theme-vchatlight .Tabs--horizontal{margin-bottom:.5em;padding:.25em .25em 0}.theme-vchatlight .Tabs--horizontal:last-child{margin-bottom:0}.theme-vchatlight .Tabs__Tab{flex-grow:0}.theme-vchatlight .Tabs--fluid .Tabs__Tab{flex-grow:1}.theme-vchatlight .Tab{display:flex;align-items:center;justify-content:space-between;background-color:rgba(0,0,0,0);color:rgba(0,0,0,.5);min-height:2.25em;min-width:4em}.theme-vchatlight .Tab:not(.Tab--selected):hover{background-color:rgba(255,255,255,.075)}.theme-vchatlight .Tab--selected{background-color:rgba(255,255,255,.125);color:#404040}.theme-vchatlight .Tab__text{flex-grow:1;margin:0 .5em}.theme-vchatlight .Tab__left{min-width:1.5em;text-align:center;margin-left:.25em}.theme-vchatlight .Tab__right{min-width:1.5em;text-align:center;margin-right:.25em}.theme-vchatlight .Tabs--horizontal .Tab{border-top:.1666666667em solid rgba(0,0,0,0);border-bottom:.1666666667em solid rgba(0,0,0,0);border-top-left-radius:.25em;border-top-right-radius:.25em}.theme-vchatlight .Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #000}.theme-vchatlight .Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid rgba(0,0,0,0);border-right:.1666666667em solid rgba(0,0,0,0);border-top-left-radius:.25em;border-bottom-left-radius:.25em}.theme-vchatlight .Tabs--vertical .Tab--selected{border-right:.1666666667em solid #000}.theme-vchatlight .Tab--selected.Tab--color--black{color:#404040}.theme-vchatlight .Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#000}.theme-vchatlight .Tabs--vertical .Tab--selected.Tab--color--black{border-right-color:#000}.theme-vchatlight .Tab--selected.Tab--color--white{color:#ececec}.theme-vchatlight .Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#e6e6e6}.theme-vchatlight .Tabs--vertical .Tab--selected.Tab--color--white{border-right-color:#e6e6e6}.theme-vchatlight .Tab--selected.Tab--color--red{color:#e14d4d}.theme-vchatlight .Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#c82121}.theme-vchatlight .Tabs--vertical .Tab--selected.Tab--color--red{border-right-color:#c82121}.theme-vchatlight .Tab--selected.Tab--color--orange{color:#f48942}.theme-vchatlight .Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#e6630d}.theme-vchatlight .Tabs--vertical .Tab--selected.Tab--color--orange{border-right-color:#e6630d}.theme-vchatlight .Tab--selected.Tab--color--yellow{color:#fcdd33}.theme-vchatlight .Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#e5c304}.theme-vchatlight .Tabs--vertical .Tab--selected.Tab--color--yellow{border-right-color:#e5c304}.theme-vchatlight .Tab--selected.Tab--color--olive{color:#d0e732}.theme-vchatlight .Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#a3b816}.theme-vchatlight .Tabs--vertical .Tab--selected.Tab--color--olive{border-right-color:#a3b816}.theme-vchatlight .Tab--selected.Tab--color--green{color:#33da5a}.theme-vchatlight .Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#1d9f3b}.theme-vchatlight .Tabs--vertical .Tab--selected.Tab--color--green{border-right-color:#1d9f3b}.theme-vchatlight .Tab--selected.Tab--color--teal{color:#00faef}.theme-vchatlight .Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00a39c}.theme-vchatlight .Tabs--vertical .Tab--selected.Tab--color--teal{border-right-color:#00a39c}.theme-vchatlight .Tab--selected.Tab--color--blue{color:#419ce1}.theme-vchatlight .Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#1e78bb}.theme-vchatlight .Tabs--vertical .Tab--selected.Tab--color--blue{border-right-color:#1e78bb}.theme-vchatlight .Tab--selected.Tab--color--violet{color:#7f58d3}.theme-vchatlight .Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#5a30b5}.theme-vchatlight .Tabs--vertical .Tab--selected.Tab--color--violet{border-right-color:#5a30b5}.theme-vchatlight .Tab--selected.Tab--color--purple{color:#b455d4}.theme-vchatlight .Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#932eb4}.theme-vchatlight .Tabs--vertical .Tab--selected.Tab--color--purple{border-right-color:#932eb4}.theme-vchatlight .Tab--selected.Tab--color--pink{color:#e558a7}.theme-vchatlight .Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#db228a}.theme-vchatlight .Tabs--vertical .Tab--selected.Tab--color--pink{border-right-color:#db228a}.theme-vchatlight .Tab--selected.Tab--color--brown{color:#c0825a}.theme-vchatlight .Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#955d39}.theme-vchatlight .Tabs--vertical .Tab--selected.Tab--color--brown{border-right-color:#955d39}.theme-vchatlight .Tab--selected.Tab--color--grey{color:#ececec}.theme-vchatlight .Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#e6e6e6}.theme-vchatlight .Tabs--vertical .Tab--selected.Tab--color--grey{border-right-color:#e6e6e6}.theme-vchatlight .Tab--selected.Tab--color--light-grey{color:#b3b3b3}.theme-vchatlight .Tabs--horizontal .Tab--selected.Tab--color--light-grey{border-bottom-color:#999}.theme-vchatlight .Tabs--vertical .Tab--selected.Tab--color--light-grey{border-right-color:#999}.theme-vchatlight .Tab--selected.Tab--color--good{color:#77d23b}.theme-vchatlight .Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#529923}.theme-vchatlight .Tabs--vertical .Tab--selected.Tab--color--good{border-right-color:#529923}.theme-vchatlight .Tab--selected.Tab--color--average{color:#f3a23a}.theme-vchatlight .Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#da810e}.theme-vchatlight .Tabs--vertical .Tab--selected.Tab--color--average{border-right-color:#da810e}.theme-vchatlight .Tab--selected.Tab--color--bad{color:#e14d4d}.theme-vchatlight .Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#c82121}.theme-vchatlight .Tabs--vertical .Tab--selected.Tab--color--bad{border-right-color:#c82121}.theme-vchatlight .Tab--selected.Tab--color--label{color:#686868}.theme-vchatlight .Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#353535}.theme-vchatlight .Tabs--vertical .Tab--selected.Tab--color--label{border-right-color:#353535}.theme-vchatlight .Section{position:relative;margin-bottom:.5em;background-color:#fff;box-sizing:border-box}.theme-vchatlight .Section:last-child{margin-bottom:0}.theme-vchatlight .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #fff}.theme-vchatlight .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#000}.theme-vchatlight .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-vchatlight .Section__rest{position:relative}.theme-vchatlight .Section__content{padding:.66em .5em}.theme-vchatlight .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-vchatlight .Section--fill{display:flex;flex-direction:column;height:100%}.theme-vchatlight .Section--fill>.Section__rest{flex-grow:1}.theme-vchatlight .Section--fill>.Section__rest>.Section__content{height:100%}.theme-vchatlight .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-vchatlight .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-vchatlight .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-vchatlight .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-vchatlight .Section--scrollable>.Section__rest>.Section__content{overflow-y:scroll;overflow-x:hidden}.theme-vchatlight .Section--scrollableHorizontal{overflow-x:hidden;overflow-y:hidden}.theme-vchatlight .Section--scrollableHorizontal>.Section__rest>.Section__content{overflow-y:hidden;overflow-x:scroll}.theme-vchatlight .Section--scrollable.Section--scrollableHorizontal{overflow-x:hidden;overflow-y:hidden}.theme-vchatlight .Section--scrollable.Section--scrollableHorizontal>.Section__rest>.Section__content{overflow-y:scroll;overflow-x:scroll}.theme-vchatlight .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-vchatlight .Section .Section:first-child{margin-top:-.5em}.theme-vchatlight .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-vchatlight .Section .Section .Section .Section__titleText{font-size:1em}.theme-vchatlight .Section--flex{display:flex;flex-flow:column}.theme-vchatlight .Section--flex .Section__content{overflow:auto;flex-grow:1}.theme-vchatlight .Section__content--noTopPadding{padding-top:0}.theme-vchatlight .Section__content--stretchContents{height:calc(100% - 3rem)}.theme-vchatlight .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-vchatlight .Button:last-child{margin-right:0;margin-bottom:0}.theme-vchatlight .Button .fa,.theme-vchatlight .Button .fas,.theme-vchatlight .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-vchatlight .Button--dropdown{line-height:1.3333333333em;height:1.8333333333em;padding:.2rem .5rem}.theme-vchatlight .Button--hasContent .fa,.theme-vchatlight .Button--hasContent .fas,.theme-vchatlight .Button--hasContent .far{margin-right:.25em}.theme-vchatlight .Button--hasContent.Button--iconPosition--right .fa,.theme-vchatlight .Button--hasContent.Button--iconPosition--right .fas,.theme-vchatlight .Button--hasContent.Button--iconPosition--right .far{margin-right:0;margin-left:3px}.theme-vchatlight .Button--ellipsis{text-overflow:ellipsis;overflow:hidden}.theme-vchatlight .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-vchatlight .Button--circular{border-radius:50%}.theme-vchatlight .Button--compact{padding:0 .25em;line-height:1.333em}.theme-vchatlight .Button--color--black{transition:color 50ms,background-color 50ms;background-color:#000;color:#fff}.theme-vchatlight .Button--color--black:hover{transition:color 0ms,background-color 0ms}.theme-vchatlight .Button--color--black:focus{transition:color .1s,background-color .1s}.theme-vchatlight .Button--color--black:hover,.theme-vchatlight .Button--color--black:focus{background-color:#131313;color:#fff}.theme-vchatlight .Button--color--white{transition:color 50ms,background-color 50ms;background-color:#bfbfbf;color:#000}.theme-vchatlight .Button--color--white:hover{transition:color 0ms,background-color 0ms}.theme-vchatlight .Button--color--white:focus{transition:color .1s,background-color .1s}.theme-vchatlight .Button--color--white:hover,.theme-vchatlight .Button--color--white:focus{background-color:#efefef;color:#000}.theme-vchatlight .Button--color--red{transition:color 50ms,background-color 50ms;background-color:#a61c1c;color:#fff}.theme-vchatlight .Button--color--red:hover{transition:color 0ms,background-color 0ms}.theme-vchatlight .Button--color--red:focus{transition:color .1s,background-color .1s}.theme-vchatlight .Button--color--red:hover,.theme-vchatlight .Button--color--red:focus{background-color:#d23333;color:#fff}.theme-vchatlight .Button--color--orange{transition:color 50ms,background-color 50ms;background-color:#c0530b;color:#fff}.theme-vchatlight .Button--color--orange:hover{transition:color 0ms,background-color 0ms}.theme-vchatlight .Button--color--orange:focus{transition:color .1s,background-color .1s}.theme-vchatlight .Button--color--orange:hover,.theme-vchatlight .Button--color--orange:focus{background-color:#ea7426;color:#fff}.theme-vchatlight .Button--color--yellow{transition:color 50ms,background-color 50ms;background-color:#bfa303;color:#fff}.theme-vchatlight .Button--color--yellow:hover{transition:color 0ms,background-color 0ms}.theme-vchatlight .Button--color--yellow:focus{transition:color .1s,background-color .1s}.theme-vchatlight .Button--color--yellow:hover,.theme-vchatlight .Button--color--yellow:focus{background-color:#efce17;color:#fff}.theme-vchatlight .Button--color--olive{transition:color 50ms,background-color 50ms;background-color:#889912;color:#fff}.theme-vchatlight .Button--color--olive:hover{transition:color 0ms,background-color 0ms}.theme-vchatlight .Button--color--olive:focus{transition:color .1s,background-color .1s}.theme-vchatlight .Button--color--olive:hover,.theme-vchatlight .Button--color--olive:focus{background-color:#afc328;color:#fff}.theme-vchatlight .Button--color--green{transition:color 50ms,background-color 50ms;background-color:#188532;color:#fff}.theme-vchatlight .Button--color--green:hover{transition:color 0ms,background-color 0ms}.theme-vchatlight .Button--color--green:focus{transition:color .1s,background-color .1s}.theme-vchatlight .Button--color--green:hover,.theme-vchatlight .Button--color--green:focus{background-color:#2fac4c;color:#fff}.theme-vchatlight .Button--color--teal{transition:color 50ms,background-color 50ms;background-color:#008882;color:#fff}.theme-vchatlight .Button--color--teal:hover{transition:color 0ms,background-color 0ms}.theme-vchatlight .Button--color--teal:focus{transition:color .1s,background-color .1s}.theme-vchatlight .Button--color--teal:hover,.theme-vchatlight .Button--color--teal:focus{background-color:#13afa9;color:#fff}.theme-vchatlight .Button--color--blue{transition:color 50ms,background-color 50ms;background-color:#19649c;color:#fff}.theme-vchatlight .Button--color--blue:hover{transition:color 0ms,background-color 0ms}.theme-vchatlight .Button--color--blue:focus{transition:color .1s,background-color .1s}.theme-vchatlight .Button--color--blue:hover,.theme-vchatlight .Button--color--blue:focus{background-color:#3086c7;color:#fff}.theme-vchatlight .Button--color--violet{transition:color 50ms,background-color 50ms;background-color:#4b2897;color:#fff}.theme-vchatlight .Button--color--violet:hover{transition:color 0ms,background-color 0ms}.theme-vchatlight .Button--color--violet:focus{transition:color .1s,background-color .1s}.theme-vchatlight .Button--color--violet:hover,.theme-vchatlight .Button--color--violet:focus{background-color:#6a41c1;color:#fff}.theme-vchatlight .Button--color--purple{transition:color 50ms,background-color 50ms;background-color:#7a2696;color:#fff}.theme-vchatlight .Button--color--purple:hover{transition:color 0ms,background-color 0ms}.theme-vchatlight .Button--color--purple:focus{transition:color .1s,background-color .1s}.theme-vchatlight .Button--color--purple:hover,.theme-vchatlight .Button--color--purple:focus{background-color:#a03fc0;color:#fff}.theme-vchatlight .Button--color--pink{transition:color 50ms,background-color 50ms;background-color:#b61d73;color:#fff}.theme-vchatlight .Button--color--pink:hover{transition:color 0ms,background-color 0ms}.theme-vchatlight .Button--color--pink:focus{transition:color .1s,background-color .1s}.theme-vchatlight .Button--color--pink:hover,.theme-vchatlight .Button--color--pink:focus{background-color:#da3f96;color:#fff}.theme-vchatlight .Button--color--brown{transition:color 50ms,background-color 50ms;background-color:#7c4d2f;color:#fff}.theme-vchatlight .Button--color--brown:hover{transition:color 0ms,background-color 0ms}.theme-vchatlight .Button--color--brown:focus{transition:color .1s,background-color .1s}.theme-vchatlight .Button--color--brown:hover,.theme-vchatlight .Button--color--brown:focus{background-color:#a26c49;color:#fff}.theme-vchatlight .Button--color--grey{transition:color 50ms,background-color 50ms;background-color:#bfbfbf;color:#000}.theme-vchatlight .Button--color--grey:hover{transition:color 0ms,background-color 0ms}.theme-vchatlight .Button--color--grey:focus{transition:color .1s,background-color .1s}.theme-vchatlight .Button--color--grey:hover,.theme-vchatlight .Button--color--grey:focus{background-color:#efefef;color:#000}.theme-vchatlight .Button--color--light-grey{transition:color 50ms,background-color 50ms;background-color:gray;color:#fff}.theme-vchatlight .Button--color--light-grey:hover{transition:color 0ms,background-color 0ms}.theme-vchatlight .Button--color--light-grey:focus{transition:color .1s,background-color .1s}.theme-vchatlight .Button--color--light-grey:hover,.theme-vchatlight .Button--color--light-grey:focus{background-color:#a6a6a6;color:#fff}.theme-vchatlight .Button--color--good{transition:color 50ms,background-color 50ms;background-color:#44801d;color:#fff}.theme-vchatlight .Button--color--good:hover{transition:color 0ms,background-color 0ms}.theme-vchatlight .Button--color--good:focus{transition:color .1s,background-color .1s}.theme-vchatlight .Button--color--good:hover,.theme-vchatlight .Button--color--good:focus{background-color:#62a635;color:#fff}.theme-vchatlight .Button--color--average{transition:color 50ms,background-color 50ms;background-color:#b56b0b;color:#fff}.theme-vchatlight .Button--color--average:hover{transition:color 0ms,background-color 0ms}.theme-vchatlight .Button--color--average:focus{transition:color .1s,background-color .1s}.theme-vchatlight .Button--color--average:hover,.theme-vchatlight .Button--color--average:focus{background-color:#e48f20;color:#fff}.theme-vchatlight .Button--color--bad{transition:color 50ms,background-color 50ms;background-color:#a61c1c;color:#fff}.theme-vchatlight .Button--color--bad:hover{transition:color 0ms,background-color 0ms}.theme-vchatlight .Button--color--bad:focus{transition:color .1s,background-color .1s}.theme-vchatlight .Button--color--bad:hover,.theme-vchatlight .Button--color--bad:focus{background-color:#d23333;color:#fff}.theme-vchatlight .Button--color--label{transition:color 50ms,background-color 50ms;background-color:#2c2c2c;color:#fff}.theme-vchatlight .Button--color--label:hover{transition:color 0ms,background-color 0ms}.theme-vchatlight .Button--color--label:focus{transition:color .1s,background-color .1s}.theme-vchatlight .Button--color--label:hover,.theme-vchatlight .Button--color--label:focus{background-color:#464646;color:#fff}.theme-vchatlight .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#bbb;color:#000}.theme-vchatlight .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-vchatlight .Button--color--default:focus{transition:color .1s,background-color .1s}.theme-vchatlight .Button--color--default:hover,.theme-vchatlight .Button--color--default:focus{background-color:#eaeaea;color:#000}.theme-vchatlight .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#be6209;color:#fff}.theme-vchatlight .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-vchatlight .Button--color--caution:focus{transition:color .1s,background-color .1s}.theme-vchatlight .Button--color--caution:hover,.theme-vchatlight .Button--color--caution:focus{background-color:#ec8420;color:#fff}.theme-vchatlight .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#9a9d00;color:#fff}.theme-vchatlight .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-vchatlight .Button--color--danger:focus{transition:color .1s,background-color .1s}.theme-vchatlight .Button--color--danger:hover,.theme-vchatlight .Button--color--danger:focus{background-color:#c4c813;color:#fff}.theme-vchatlight .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#eee;color:#000;background-color:rgba(238,238,238,0);color:rgba(0,0,0,.5)}.theme-vchatlight .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-vchatlight .Button--color--transparent:focus{transition:color .1s,background-color .1s}.theme-vchatlight .Button--color--transparent:hover,.theme-vchatlight .Button--color--transparent:focus{background-color:#fcfcfc;color:#000}.theme-vchatlight .Button--disabled{background-color:#363636!important}.theme-vchatlight .Button--selected{transition:color 50ms,background-color 50ms;background-color:#0668b8;color:#fff}.theme-vchatlight .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-vchatlight .Button--selected:focus{transition:color .1s,background-color .1s}.theme-vchatlight .Button--selected:hover,.theme-vchatlight .Button--selected:focus{background-color:#1a8be7;color:#fff}.theme-vchatlight .Button--flex{display:inline-flex;flex-direction:column}.theme-vchatlight .Button--flex--fluid{width:100%}.theme-vchatlight .Button--verticalAlignContent--top{justify-content:flex-start}.theme-vchatlight .Button--verticalAlignContent--middle{justify-content:center}.theme-vchatlight .Button--verticalAlignContent--bottom{justify-content:flex-end}.theme-vchatlight .Button__content{display:block;align-self:stretch}.theme-vchatlight .Button__textMargin{margin-left:.4rem}.theme-vchatlight .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;color:#353535;background-color:#fff;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-vchatlight .NumberInput--fluid{display:block}.theme-vchatlight .NumberInput__content{margin-left:.5em}.theme-vchatlight .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-vchatlight .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #353535;background-color:#353535}.theme-vchatlight .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#fff;color:#000;text-align:right}.theme-vchatlight .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;color:#000;background-color:#fff;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible}.theme-vchatlight .Input--fluid{display:block;width:auto}.theme-vchatlight .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-vchatlight .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#000;color:inherit}.theme-vchatlight .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-vchatlight .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-vchatlight .TextArea{position:relative;display:inline-block;border:.0833333333em solid #353535;border:.0833333333em solid rgba(53,53,53,.75);border-radius:.16em;background-color:#fff;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-vchatlight .TextArea--fluid{display:block;width:auto;height:auto}.theme-vchatlight .TextArea--noborder{border:0px}.theme-vchatlight .TextArea__textarea.TextArea__textarea--scrollable{overflow:auto;overflow-x:hidden;overflow-y:scroll}.theme-vchatlight .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-vchatlight .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-vchatlight .TextArea__textarea_custom{overflow:visible;white-space:pre-wrap}.theme-vchatlight .TextArea__nowrap{white-space:nowrap;overflow-wrap:normal;overflow-x:scroll}.theme-vchatlight .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-vchatlight .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-vchatlight .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-vchatlight .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-vchatlight .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-vchatlight .Knob__popupValue{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-vchatlight .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-vchatlight .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-vchatlight .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-vchatlight .Knob__ringFillPivot{transform:rotate(135deg)}.theme-vchatlight .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-vchatlight .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms ease-out}.theme-vchatlight .Knob--color--black .Knob__ringFill{stroke:#000}.theme-vchatlight .Knob--color--white .Knob__ringFill{stroke:#e6e6e6}.theme-vchatlight .Knob--color--red .Knob__ringFill{stroke:#c82121}.theme-vchatlight .Knob--color--orange .Knob__ringFill{stroke:#e6630d}.theme-vchatlight .Knob--color--yellow .Knob__ringFill{stroke:#e5c304}.theme-vchatlight .Knob--color--olive .Knob__ringFill{stroke:#a3b816}.theme-vchatlight .Knob--color--green .Knob__ringFill{stroke:#1d9f3b}.theme-vchatlight .Knob--color--teal .Knob__ringFill{stroke:#00a39c}.theme-vchatlight .Knob--color--blue .Knob__ringFill{stroke:#1e78bb}.theme-vchatlight .Knob--color--violet .Knob__ringFill{stroke:#5a30b5}.theme-vchatlight .Knob--color--purple .Knob__ringFill{stroke:#932eb4}.theme-vchatlight .Knob--color--pink .Knob__ringFill{stroke:#db228a}.theme-vchatlight .Knob--color--brown .Knob__ringFill{stroke:#955d39}.theme-vchatlight .Knob--color--grey .Knob__ringFill{stroke:#e6e6e6}.theme-vchatlight .Knob--color--light-grey .Knob__ringFill{stroke:#999}.theme-vchatlight .Knob--color--good .Knob__ringFill{stroke:#529923}.theme-vchatlight .Knob--color--average .Knob__ringFill{stroke:#da810e}.theme-vchatlight .Knob--color--bad .Knob__ringFill{stroke:#c82121}.theme-vchatlight .Knob--color--label .Knob__ringFill{stroke:#353535}.theme-vchatlight .Slider{cursor:e-resize}.theme-vchatlight .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-vchatlight .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #000}.theme-vchatlight .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #000}.theme-vchatlight .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-vchatlight .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-width:.0833333333em!important;border-style:solid!important;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .9s ease-out}.theme-vchatlight .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-vchatlight .ProgressBar__fill--animated{transition:background-color .9s ease-out,width .9s ease-out}.theme-vchatlight .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-vchatlight .ProgressBar--color--default{border:.0833333333em solid #bfbfbf}.theme-vchatlight .ProgressBar--color--default .ProgressBar__fill{background-color:#bfbfbf}.theme-vchatlight .ProgressBar--color--black{border-color:#000!important}.theme-vchatlight .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-vchatlight .ProgressBar--color--white{border-color:#bfbfbf!important}.theme-vchatlight .ProgressBar--color--white .ProgressBar__fill{background-color:#bfbfbf}.theme-vchatlight .ProgressBar--color--red{border-color:#a61c1c!important}.theme-vchatlight .ProgressBar--color--red .ProgressBar__fill{background-color:#a61c1c}.theme-vchatlight .ProgressBar--color--orange{border-color:#c0530b!important}.theme-vchatlight .ProgressBar--color--orange .ProgressBar__fill{background-color:#c0530b}.theme-vchatlight .ProgressBar--color--yellow{border-color:#bfa303!important}.theme-vchatlight .ProgressBar--color--yellow .ProgressBar__fill{background-color:#bfa303}.theme-vchatlight .ProgressBar--color--olive{border-color:#889912!important}.theme-vchatlight .ProgressBar--color--olive .ProgressBar__fill{background-color:#889912}.theme-vchatlight .ProgressBar--color--green{border-color:#188532!important}.theme-vchatlight .ProgressBar--color--green .ProgressBar__fill{background-color:#188532}.theme-vchatlight .ProgressBar--color--teal{border-color:#008882!important}.theme-vchatlight .ProgressBar--color--teal .ProgressBar__fill{background-color:#008882}.theme-vchatlight .ProgressBar--color--blue{border-color:#19649c!important}.theme-vchatlight .ProgressBar--color--blue .ProgressBar__fill{background-color:#19649c}.theme-vchatlight .ProgressBar--color--violet{border-color:#4b2897!important}.theme-vchatlight .ProgressBar--color--violet .ProgressBar__fill{background-color:#4b2897}.theme-vchatlight .ProgressBar--color--purple{border-color:#7a2696!important}.theme-vchatlight .ProgressBar--color--purple .ProgressBar__fill{background-color:#7a2696}.theme-vchatlight .ProgressBar--color--pink{border-color:#b61d73!important}.theme-vchatlight .ProgressBar--color--pink .ProgressBar__fill{background-color:#b61d73}.theme-vchatlight .ProgressBar--color--brown{border-color:#7c4d2f!important}.theme-vchatlight .ProgressBar--color--brown .ProgressBar__fill{background-color:#7c4d2f}.theme-vchatlight .ProgressBar--color--grey{border-color:#bfbfbf!important}.theme-vchatlight .ProgressBar--color--grey .ProgressBar__fill{background-color:#bfbfbf}.theme-vchatlight .ProgressBar--color--light-grey{border-color:gray!important}.theme-vchatlight .ProgressBar--color--light-grey .ProgressBar__fill{background-color:gray}.theme-vchatlight .ProgressBar--color--good{border-color:#44801d!important}.theme-vchatlight .ProgressBar--color--good .ProgressBar__fill{background-color:#44801d}.theme-vchatlight .ProgressBar--color--average{border-color:#b56b0b!important}.theme-vchatlight .ProgressBar--color--average .ProgressBar__fill{background-color:#b56b0b}.theme-vchatlight .ProgressBar--color--bad{border-color:#a61c1c!important}.theme-vchatlight .ProgressBar--color--bad .ProgressBar__fill{background-color:#a61c1c}.theme-vchatlight .ProgressBar--color--label{border-color:#2c2c2c!important}.theme-vchatlight .ProgressBar--color--label .ProgressBar__fill{background-color:#2c2c2c}.theme-vchatlight .Chat{color:#000}.theme-vchatlight .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s ease-out}.theme-vchatlight .Chat__badge:before{content:"x"}.theme-vchatlight .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-vchatlight .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-vchatlight .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-vchatlight .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:#fff}.theme-vchatlight .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-vchatlight .Chat__highlight{color:#000}.theme-vchatlight .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-vchatlight .ChatMessage{word-wrap:break-word}.theme-vchatlight .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-vchatlight .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-vchatlight .Layout,.theme-vchatlight .Layout *{scrollbar-base-color:#f2f2f2;scrollbar-face-color:#d6d6d6;scrollbar-3dlight-color:#eee;scrollbar-highlight-color:#eee;scrollbar-track-color:#f2f2f2;scrollbar-arrow-color:#777;scrollbar-shadow-color:#d6d6d6}.theme-vchatlight .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden}.theme-vchatlight .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-vchatlight .Layout__content--flexRow{display:flex;flex-flow:row}.theme-vchatlight .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-vchatlight .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#000;background-color:#eee;background-image:linear-gradient(to bottom,#eee,#eee)}.theme-vchatlight .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-vchatlight .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-vchatlight .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-vchatlight .Window__contentPadding:after{height:0}.theme-vchatlight .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-vchatlight .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(252,252,252,.25);pointer-events:none}.theme-vchatlight .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-vchatlight .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-vchatlight .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-vchatlight .TitleBar{background-color:#eee;border-bottom:1px solid rgba(0,0,0,.25);box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-vchatlight .TitleBar__clickable{color:rgba(0,0,0,.5);background-color:#eee;transition:color .25s ease-out,background-color .25s ease-out}.theme-vchatlight .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-vchatlight .TitleBar__title{position:absolute;display:inline-block;top:0;left:46px;left:3.8333333333rem;color:rgba(0,0,0,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap;pointer-events:none}.theme-vchatlight .TitleBar__buttons{pointer-events:initial;display:inline-block;width:100%;margin-left:10px}.theme-vchatlight .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-vchatlight .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-vchatlight .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-vchatlight .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-vchatlight html,.theme-vchatlight body{padding:0;margin:0;height:100%;color:#000}.theme-vchatlight body{background:#fff;font-family:Verdana,sans-serif;font-size:13px;line-height:1.2;overflow-x:hidden;overflow-y:scroll;word-wrap:break-word}.theme-vchatlight img{margin:0;padding:0;line-height:1;-ms-interpolation-mode:nearest-neighbor;image-rendering:pixelated}.theme-vchatlight img.icon{height:1em;min-height:16px;width:auto;vertical-align:bottom}.theme-vchatlight a{color:#00f}.theme-vchatlight a.visited,.theme-vchatlight a:visited{color:#f0f}.theme-vchatlight a.popt{text-decoration:none}.theme-vchatlight .popup{position:fixed;top:50%;left:50%;background:#ddd}.theme-vchatlight .popup .close{position:absolute;background:#aaa;top:0;right:0;color:#333;text-decoration:none;z-index:2;padding:0 10px;height:30px;line-height:30px}.theme-vchatlight .popup .close:hover{background:#999}.theme-vchatlight .popup .head{background:#999;color:#ddd;padding:0 10px;height:30px;line-height:30px;text-transform:uppercase;font-size:.9em;font-weight:700;border-bottom:2px solid green}.theme-vchatlight .popup input{border:1px solid #999;background:#fff;margin:0;padding:5px;outline:none;color:#333}.theme-vchatlight .popup input[type=text]:hover,.theme-vchatlight .popup input[type=text]:active,.theme-vchatlight .popup input[type=text]:focus{border-color:green}.theme-vchatlight .popup input[type=submit]{padding:5px 10px;background:#999;color:#ddd;text-transform:uppercase;font-size:.9em;font-weight:700}.theme-vchatlight .popup input[type=submit]:hover,.theme-vchatlight .popup input[type=submit]:focus,.theme-vchatlight .popup input[type=submit]:active{background:#aaa;cursor:pointer}.theme-vchatlight .changeFont{padding:10px}.theme-vchatlight .changeFont a{display:block;text-decoration:none;padding:3px;color:#333}.theme-vchatlight .changeFont a:hover{background:#ccc}.theme-vchatlight .highlightPopup{padding:10px;text-align:center}.theme-vchatlight .highlightPopup input[type=text]{display:block;width:215px;text-align:left;margin-top:5px}.theme-vchatlight .highlightPopup input.highlightColor{background-color:#ff0}.theme-vchatlight .highlightPopup input.highlightTermSubmit{margin-top:5px}.theme-vchatlight .contextMenu{background-color:#ddd;position:fixed;margin:2px;width:150px}.theme-vchatlight .contextMenu a{display:block;padding:2px 5px;text-decoration:none;color:#333}.theme-vchatlight .contextMenu a:hover{background-color:#ccc}.theme-vchatlight .filterMessages{padding:5px}.theme-vchatlight .filterMessages div{padding:2px 0}.theme-vchatlight .icon-stack{height:1em;line-height:1em;width:1em;vertical-align:middle;margin-top:-2px}.theme-vchatlight .motd{color:#638500;font-family:Verdana,sans-serif;white-space:normal}.theme-vchatlight .motd h1,.theme-vchatlight .motd h2,.theme-vchatlight .motd h3,.theme-vchatlight .motd h4,.theme-vchatlight .motd h5,.theme-vchatlight .motd h6{color:#638500;text-decoration:underline}.theme-vchatlight .motd a,.theme-vchatlight .motd a:link,.theme-vchatlight .motd a:visited,.theme-vchatlight .motd a:active,.theme-vchatlight .motd a:hover{color:#638500}.theme-vchatlight .bold,.theme-vchatlight .name,.theme-vchatlight .prefix,.theme-vchatlight .ooc,.theme-vchatlight .looc,.theme-vchatlight .adminooc,.theme-vchatlight .admin,.theme-vchatlight .medal,.theme-vchatlight .yell{font-weight:700}.theme-vchatlight .italic,.theme-vchatlight .italics{font-style:italic}.theme-vchatlight .highlight{background:#ff0}.theme-vchatlight h1,.theme-vchatlight h2,.theme-vchatlight h3,.theme-vchatlight h4,.theme-vchatlight h5,.theme-vchatlight h6{color:#00f;font-family:Georgia,Verdana,sans-serif}.theme-vchatlight em{font-style:normal;font-weight:700}.theme-vchatlight .ooc{color:#002eb8;font-weight:700}.theme-vchatlight .ooc .elevated{color:#2e78d9}.theme-vchatlight .ooc .moderator{color:#184880}.theme-vchatlight .ooc .developer{color:#1b521f}.theme-vchatlight .ooc .admin{color:#b82e00}.theme-vchatlight .ooc .event_manager{color:#603}.theme-vchatlight .ooc .aooc{color:#960018}.theme-vchatlight img.text_tag{width:32px;height:10px;min-height:10px}.theme-vchatlight img.icon{vertical-align:middle;max-height:1em}.theme-vchatlight img.icon.bigicon{max-height:32px}.theme-vchatlight .looc{color:#3a9696;font-weight:700}.theme-vchatlight .rlooc{color:#3abb96;font-weight:700}.theme-vchatlight .adminobserverooc{color:#09c;font-weight:700}.theme-vchatlight .adminooc{color:#700038;font-weight:700}.theme-vchatlight .adminsay{color:#ff4500;font-weight:700}.theme-vchatlight .admin{color:#4473ff;font-weight:700}.theme-vchatlight .mentor_channel{color:olive;font-weight:700}.theme-vchatlight .mod_channel{color:#735638;font-weight:700}.theme-vchatlight .admin_channel{color:#9611d4;font-weight:700}.theme-vchatlight .event_channel{color:#c39;font-weight:700}.theme-vchatlight .name{font-weight:700}.theme-vchatlight .hivemind{font-style:italic}.theme-vchatlight .psay,.theme-vchatlight .pemote{color:purple;font-style:italic}.theme-vchatlight .deadsay{color:#530fad}.theme-vchatlight .binarysay{font-style:italic;color:#000}.theme-vchatlight .binarysay a{color:#0f0}.theme-vchatlight .binarysay a:active,.theme-vchatlight .binarysay a:visited{color:#8f8}.theme-vchatlight .radio{color:green}.theme-vchatlight .sciradio{color:#939}.theme-vchatlight .comradio{color:#193a7a}.theme-vchatlight .secradio{color:#a30000}.theme-vchatlight .medradio{color:#008160}.theme-vchatlight .engradio{color:#a66300}.theme-vchatlight .supradio{color:#5f4519}.theme-vchatlight .srvradio{color:#6eaa2c}.theme-vchatlight .expradio{color:#555}.theme-vchatlight .syndradio{color:#6d3f40}.theme-vchatlight .gangradio{color:#ac2ea1}.theme-vchatlight .centradio{color:#5c5c8a}.theme-vchatlight .airadio{color:#f0f}.theme-vchatlight .redteamradio{color:red!important}.theme-vchatlight .blueteamradio{color:#00f!important}.theme-vchatlight .greenteamradio{color:#0f0!important}.theme-vchatlight .yellowteamradio{color:#d1ba22!important}.theme-vchatlight .yell{font-weight:700}.theme-vchatlight .alert,.theme-vchatlight .valert{color:red}.theme-vchatlight h1.alert,.theme-vchatlight h2.alert{color:#000}.theme-vchatlight .userdanger{color:red;font-weight:700;font-size:185%}.theme-vchatlight .bolddanger{color:red;font-weight:700}.theme-vchatlight .danger,.theme-vchatlight .vdanger{color:red}.theme-vchatlight .tinydanger{color:red;font-size:85%}.theme-vchatlight .smalldanger{color:red;font-size:90%}.theme-vchatlight .warning,.theme-vchatlight .vwarning{color:red;font-style:italic}.theme-vchatlight .alertwarning{color:red;font-weight:700}.theme-vchatlight .boldwarning{color:red;font-style:italic;font-weight:700}.theme-vchatlight .announce{color:#228b22;font-weight:700}.theme-vchatlight .boldannounce{color:red;font-weight:700}.theme-vchatlight .minorannounce{color:red;font-weight:700;font-size:185%}.theme-vchatlight .minoralert{color:#000;font-size:125%}.theme-vchatlight .priorityannounce{color:#000;font-weight:700;font-size:225%}.theme-vchatlight .prioritytitle{color:#00f;font-weight:700;font-size:185%}.theme-vchatlight .priorityalert{color:red;font-size:140%}.theme-vchatlight .greenannounce{color:#0f0;font-weight:700}.theme-vchatlight .rose{color:#ff5050}.theme-vchatlight .info{color:#00c}.theme-vchatlight .notice,.theme-vchatlight .vnotice{color:#009}.theme-vchatlight .tinynotice{color:#009;font-size:85%}.theme-vchatlight .tinynoticeital{color:#009;font-style:italic;font-size:85%}.theme-vchatlight .smallnotice{color:#009;font-size:90%}.theme-vchatlight .smallnoticeital{color:#009;font-style:italic;font-size:90%}.theme-vchatlight .boldnotice{color:#009;font-weight:700}.theme-vchatlight .hear{color:#009;font-style:italic}.theme-vchatlight .adminnotice{color:#00f}.theme-vchatlight .adminhelp{color:red;font-weight:700}.theme-vchatlight .log_message{color:#386aff;font-weight:700}.theme-vchatlight .unconscious{color:#00f;font-weight:700}.theme-vchatlight .suicide{color:#ff5050;font-style:italic}.theme-vchatlight .green{color:#03ff39}.theme-vchatlight .grey{color:#838383}.theme-vchatlight .red{color:red}.theme-vchatlight .crimson{color:#dc143c}.theme-vchatlight .maroon{color:maroon}.theme-vchatlight .brown{color:#8d4925}.theme-vchatlight .blue{color:#00f}.theme-vchatlight .black,.theme-vchatlight .white{color:#000}.theme-vchatlight .darkgray{color:gray}.theme-vchatlight .gray{color:#a9a9a9}.theme-vchatlight .yellow{color:#fc0}.theme-vchatlight .pink{color:pink}.theme-vchatlight .cyan{color:#0ff}.theme-vchatlight .orange{color:#ff8c00}.theme-vchatlight .nicegreen{color:#14a833}.theme-vchatlight .boldnicegreen{color:#14a833;font-weight:700}.theme-vchatlight .cult{color:#973e3b}.theme-vchatlight .cultitalic{color:#973e3b;font-style:italic}.theme-vchatlight .cultbold{color:#973e3b;font-style:italic;font-weight:700}.theme-vchatlight .cultboldtalic,.theme-vchatlight .cultlarge{color:#973e3b;font-weight:700;font-size:185%}.theme-vchatlight .blob{color:#ee4000}.theme-vchatlight .blobannounce{color:#323f1c;font-weight:700;font-size:185%}.theme-vchatlight .narsie{color:#973e3b;font-weight:700;font-size:925%}.theme-vchatlight .narsiesmall{color:#973e3b;font-weight:700;font-size:370%}.theme-vchatlight .colossus{color:#7f282a;font-size:310%}.theme-vchatlight .hierophant{color:#609;font-weight:700;font-style:italic}.theme-vchatlight .hierophant_warning{color:#609;font-style:italic}.theme-vchatlight .purple{color:#5e2d79}.theme-vchatlight .lightpurple{color:#ad5aad}.theme-vchatlight .darkpink{color:#e3209b}.theme-vchatlight .holoparasite{color:#35333a}.theme-vchatlight .revennotice{color:#1d2953}.theme-vchatlight .revenboldnotice{color:#1d2953;font-weight:700}.theme-vchatlight .revenbignotice{color:#1d2953;font-weight:700;font-size:185%}.theme-vchatlight .revenminor{color:#823abb}.theme-vchatlight .revenwarning{color:#760fbb;font-style:italic}.theme-vchatlight .revendanger{color:#760fbb;font-weight:700;font-size:185%}.theme-vchatlight .deconversion_message{color:#5000a0;font-size:185%;font-style:italic}.theme-vchatlight .ghostalert{color:#5c00e6;font-style:italic;font-weight:700}.theme-vchatlight .alien{color:#543354}.theme-vchatlight .noticealien{color:#00c000}.theme-vchatlight .alertalien{color:#00c000;font-weight:700}.theme-vchatlight .changeling{color:purple;font-style:italic}.theme-vchatlight .alertsyndie{color:red;font-size:185%;font-weight:700}.theme-vchatlight .spiderbroodmother{color:#4d004d;font-weight:700;font-size:185%}.theme-vchatlight .spiderbreacher{color:#804b02;font-weight:700;font-size:140%}.theme-vchatlight .spiderscout{color:#0c0674;font-weight:700;font-size:120%}.theme-vchatlight .interface{color:#303}.theme-vchatlight .sans{font-family:Comic Sans MS,cursive,sans-serif}.theme-vchatlight .papyrus{font-family:Papyrus,cursive,sans-serif}.theme-vchatlight .robot{font-family:Courier New,cursive,sans-serif}.theme-vchatlight .tape_recorder{color:maroon;font-family:Courier New,cursive,sans-serif}.theme-vchatlight .command_headset{font-weight:700;font-size:160%}.theme-vchatlight .small{font-size:60%}.theme-vchatlight .big{font-size:185%}.theme-vchatlight .reallybig{font-size:245%}.theme-vchatlight .extremelybig{font-size:310%}.theme-vchatlight .greentext{color:#0f0;font-size:185%}.theme-vchatlight .redtext{color:red;font-size:185%}.theme-vchatlight .clown{color:#ff69bf;font-size:160%;font-family:Comic Sans MS,cursive,sans-serif;font-weight:700}.theme-vchatlight .singing{font-family:Trebuchet MS,cursive,sans-serif;font-style:italic}.theme-vchatlight .his_grace{color:#15d512;font-family:Courier New,cursive,sans-serif;font-style:italic}.theme-vchatlight .hypnophrase{color:#0d0d0d;font-weight:700;animation:hypnocolor 1.5s infinite;animation-direction:alternate}@keyframes hypnocolor{0%{color:#0d0d0d}25%{color:#410194}50%{color:#7f17d8}75%{color:#410194}to{color:#3bb5d3}}.theme-vchatlight .phobia{color:#d00;font-weight:700;animation:phobia .75s infinite}@keyframes phobia{0%{color:#0d0d0d}50%{color:#d00}to{color:#0d0d0d}}.theme-vchatlight .icon{height:1em;width:auto}.theme-vchatlight .bigicon{font-size:2.5em}.theme-vchatlight .hugeicon{font-size:5em}.theme-vchatlight .memo{color:#638500;text-align:center}.theme-vchatlight .memoedit{text-align:center;font-size:125%}.theme-vchatlight .abductor{color:purple;font-style:italic}.theme-vchatlight .mind_control{color:#a00d6f;font-size:100%;font-weight:700;font-style:italic}.theme-vchatlight .slime{color:#00ced1}.theme-vchatlight .drone{color:#848482}.theme-vchatlight .monkey{color:#975032}.theme-vchatlight .swarmer{color:#2c75ff}.theme-vchatlight .resonate{color:#298f85}.theme-vchatlight .upside_down{display:inline;-moz-transform:scale(-1,-1);-webkit-transform:scale(-1,-1);-o-transform:scale(-1,-1);-ms-transform:scale(-1,-1);transform:scale(-1)}.theme-vchatlight .connectionClosed,.theme-vchatlight .fatalError{background:red;color:#fff;padding:5px}.theme-vchatlight .connectionClosed.restored{background:green}.theme-vchatlight .internal.boldnshit{color:#00f;font-weight:700}.theme-vchatlight .text-normal{font-weight:400;font-style:normal}.theme-vchatlight .hidden{display:none;visibility:hidden}.theme-vchatlight .ml-1{margin-left:1em}.theme-vchatlight .ml-2{margin-left:2em}.theme-vchatlight .ml-3{margin-left:3em}.theme-vchatlight .examine_block{background:#f2f7fa;border:1px solid #111a27;margin:.5em;padding:.5em .75em}.theme-vchatlight .tooltip{font-style:italic;border-bottom:1px dashed #000}.theme-vchatlight .major_announcement_title{font-size:175%;padding:0rem .5rem;line-height:100%;text-align:left;text-decoration:none;width:100%}.theme-vchatlight .subheader_announcement_text{font-weight:700;padding:.25rem .5rem 0;line-height:100%;width:100%;height:100%;text-align:left;font-size:125%}.theme-vchatlight .major_announcement_text{color:#131313;background-color:#eaeaea;font-weight:700;font-size:100%;text-align:left;padding:.5rem;width:100%;height:100%}.theme-vchatlight .minor_announcement_title{font-weight:700;padding:0 .5rem;padding-top:0;line-height:100%;width:100%;height:100%;text-align:left;font-size:150%}.theme-vchatlight .minor_announcement_text{background-color:#eaeaea;color:#202020;padding:.5rem;text-align:left;font-size:100%}.theme-vchatlight .announcement_header{padding:.5rem 0;display:flex;flex-direction:column}.theme-vchatlight .ooc_alert{background:#bdc8ff;border:1px solid #002eb8;margin:.5em;padding:.5em .5em .5em .2em;color:#00283a;font-weight:700;display:flex;flex-direction:column}.theme-vchatlight .ooc_announcement_text{color:#002eb8;padding:.5em 0 0 .35em;display:flex;flex-direction:column}.theme-vchatlight .chat_alert_default{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#bdc8ff,#bdc8ff 10px,#b3bfff 10px,#b3bfff 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.theme-vchatlight .chat_alert_default .major_announcement_title,.theme-vchatlight .chat_alert_default .minor_announcement_title{color:#003061}.theme-vchatlight .chat_alert_default .subheader_announcement_text{color:#6b0020}.theme-vchatlight .chat_alert_default .minor_announcement_text,.theme-vchatlight .chat_alert_default .major_announcement_text{background-color:#d7ddff}.theme-vchatlight .chat_alert_green{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#bdffbd,#bdffbd 10px,#adffad 10px,#adffad 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.theme-vchatlight .chat_alert_green .major_announcement_title,.theme-vchatlight .chat_alert_green .minor_announcement_title{color:#005229}.theme-vchatlight .chat_alert_green .subheader_announcement_text{color:#6b0020}.theme-vchatlight .chat_alert_green .minor_announcement_text,.theme-vchatlight .chat_alert_green .major_announcement_text{background-color:#d7ffd7}.theme-vchatlight .chat_alert_blue{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#bdc8ff,#bdc8ff 10px,#b3bfff 10px,#b3bfff 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.theme-vchatlight .chat_alert_blue .major_announcement_title,.theme-vchatlight .chat_alert_blue .minor_announcement_title{color:#003061}.theme-vchatlight .chat_alert_blue .subheader_announcement_text{color:#6b0020}.theme-vchatlight .chat_alert_blue .minor_announcement_text,.theme-vchatlight .chat_alert_blue .major_announcement_text{background-color:#d7ddff}.theme-vchatlight .chat_alert_pink{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#ffc2e5,#ffc2e5 10px,#ffb3df 10px,#ffb3df 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.theme-vchatlight .chat_alert_pink .major_announcement_title,.theme-vchatlight .chat_alert_pink .minor_announcement_title{color:#800033}.theme-vchatlight .chat_alert_pink .subheader_announcement_text{color:#002c85}.theme-vchatlight .chat_alert_pink .minor_announcement_text,.theme-vchatlight .chat_alert_pink .major_announcement_text{background-color:#ffdcf0}.theme-vchatlight .chat_alert_yellow{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#fff5c2,#fff5c2 10px,#fff3b3 10px,#fff3b3 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.theme-vchatlight .chat_alert_yellow .major_announcement_title,.theme-vchatlight .chat_alert_yellow .minor_announcement_title{color:#754900}.theme-vchatlight .chat_alert_yellow .subheader_announcement_text{color:#002c85}.theme-vchatlight .chat_alert_yellow .minor_announcement_text,.theme-vchatlight .chat_alert_yellow .major_announcement_text{background-color:#fff9dc}.theme-vchatlight .chat_alert_orange{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#ffe8c2,#ffe8c2 10px,#ffe2b3 10px,#ffe2b3 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.theme-vchatlight .chat_alert_orange .major_announcement_title,.theme-vchatlight .chat_alert_orange .minor_announcement_title{color:#823208}.theme-vchatlight .chat_alert_orange .subheader_announcement_text{color:#002c85}.theme-vchatlight .chat_alert_orange .minor_announcement_text,.theme-vchatlight .chat_alert_orange .major_announcement_text{background-color:#fff2dc}.theme-vchatlight .chat_alert_red{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#ffc2c2,#ffc2c2 10px,#ffb3b3 10px,#ffb3b3 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.theme-vchatlight .chat_alert_red .major_announcement_title,.theme-vchatlight .chat_alert_red .minor_announcement_title{color:#800029}.theme-vchatlight .chat_alert_red .subheader_announcement_text{color:#002c85}.theme-vchatlight .chat_alert_red .minor_announcement_text,.theme-vchatlight .chat_alert_red .major_announcement_text{background-color:#ffdcdc}.theme-vchatlight .chat_alert_purple{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#fbd1ff,#fbd1ff 10px,#fac2ff 10px,#fac2ff 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.theme-vchatlight .chat_alert_purple .major_announcement_title,.theme-vchatlight .chat_alert_purple .minor_announcement_title{color:#450d8c}.theme-vchatlight .chat_alert_purple .subheader_announcement_text{color:#002c85}.theme-vchatlight .chat_alert_purple .minor_announcement_text,.theme-vchatlight .chat_alert_purple .major_announcement_text{background-color:#fdebff}.theme-vchatlight .chat_alert_grey{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#ebebeb,#ebebeb 10px,#e3e3e3 10px,#e3e3e3 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.theme-vchatlight .chat_alert_grey .major_announcement_title,.theme-vchatlight .chat_alert_grey .minor_announcement_title{color:#800033}.theme-vchatlight .chat_alert_grey .subheader_announcement_text{color:#002c85}.theme-vchatlight .chat_alert_grey .minor_announcement_text,.theme-vchatlight .chat_alert_grey .major_announcement_text{background-color:#f8f8f8}.theme-vchatlight .tajaran{color:#803b56}.theme-vchatlight .tajaran_signlang{color:#941c1c}.theme-vchatlight .akhani{color:#ac398c}.theme-vchatlight .skrell{color:#00b0b3}.theme-vchatlight .skrellfar{color:#70fcff}.theme-vchatlight .soghun{color:#50ba6c}.theme-vchatlight .solcom{color:#3333ce}.theme-vchatlight .sergal{color:#07f}.theme-vchatlight .birdsongc{color:#c90}.theme-vchatlight .vulpkanin{color:#b97a57}.theme-vchatlight .tavan{color:#f54298;font-family:Arial}.theme-vchatlight .echosong{color:#826d8c}.theme-vchatlight .enochian{color:#848a33;letter-spacing:-1pt;word-spacing:4pt;font-family:Lucida Sans Unicode,Lucida Grande,sans-serif}.theme-vchatlight .daemon{color:#5e339e;letter-spacing:-1pt;word-spacing:0pt;font-family:Courier New,Courier,monospace}.theme-vchatlight .drudakar{color:#bb2463;word-spacing:0pt;font-family:High Tower Text,monospace}.theme-vchatlight .bug{color:#9e9e39}.theme-vchatlight .vox{color:#a0a}.theme-vchatlight .promethean{color:#5a5a5a;font-family:Comic Sans MS,Comic Sans,cursive}.theme-vchatlight .zaddat{color:#941c1c}.theme-vchatlight .rough{font-family:Trebuchet MS,cursive,sans-serif}.theme-vchatlight .say_quote{font-family:Georgia,Verdana,sans-serif}.theme-vchatlight .say_quote_italics{font-style:italic;font-family:Georgia,Verdana,sans-serif}.theme-vchatlight .terminus{font-family:Times New Roman,Times,serif,sans-serif}.theme-vchatlight .spacer{color:#9c660b}.theme-vchatlight .teppi{color:#816540;word-spacing:4pt;font-family:Segoe Script Bold,Segoe Script,sans-serif,Verdana}.theme-vchatlight .shadekin{color:#be3cc5;font-size:150%;font-weight:700;font-family:Gabriola,cursive,sans-serif;line-height:.3}.theme-vchatdark .color-black{color:#1a1a1a!important}.theme-vchatdark .color-white{color:#fff!important}.theme-vchatdark .color-red{color:#df3e3e!important}.theme-vchatdark .color-orange{color:#f37f33!important}.theme-vchatdark .color-yellow{color:#fbda21!important}.theme-vchatdark .color-olive{color:#cbe41c!important}.theme-vchatdark .color-green{color:#25ca4c!important}.theme-vchatdark .color-teal{color:#00d6cc!important}.theme-vchatdark .color-blue{color:#2e93de!important}.theme-vchatdark .color-violet{color:#7349cf!important}.theme-vchatdark .color-purple{color:#ad45d0!important}.theme-vchatdark .color-pink{color:#e34da1!important}.theme-vchatdark .color-brown{color:#b97447!important}.theme-vchatdark .color-grey{color:#848484!important}.theme-vchatdark .color-light-grey{color:#b3b3b3!important}.theme-vchatdark .color-good{color:#68c22d!important}.theme-vchatdark .color-average{color:#f29a29!important}.theme-vchatdark .color-bad{color:#df3e3e!important}.theme-vchatdark .color-label{color:#8b9bb0!important}.theme-vchatdark .color-bg-black{background-color:#000!important}.theme-vchatdark .color-bg-white{background-color:#d9d9d9!important}.theme-vchatdark .color-bg-red{background-color:#bd2020!important}.theme-vchatdark .color-bg-orange{background-color:#d95e0c!important}.theme-vchatdark .color-bg-yellow{background-color:#d9b804!important}.theme-vchatdark .color-bg-olive{background-color:#9aad14!important}.theme-vchatdark .color-bg-green{background-color:#1b9638!important}.theme-vchatdark .color-bg-teal{background-color:#009a93!important}.theme-vchatdark .color-bg-blue{background-color:#1c71b1!important}.theme-vchatdark .color-bg-violet{background-color:#552dab!important}.theme-vchatdark .color-bg-purple{background-color:#8b2baa!important}.theme-vchatdark .color-bg-pink{background-color:#cf2082!important}.theme-vchatdark .color-bg-brown{background-color:#8c5836!important}.theme-vchatdark .color-bg-grey{background-color:#646464!important}.theme-vchatdark .color-bg-light-grey{background-color:#919191!important}.theme-vchatdark .color-bg-good{background-color:#4d9121!important}.theme-vchatdark .color-bg-average{background-color:#cd7a0d!important}.theme-vchatdark .color-bg-bad{background-color:#bd2020!important}.theme-vchatdark .color-bg-label{background-color:#657a94!important}.theme-vchatdark .Tabs{display:flex;align-items:stretch;overflow:hidden;background-color:rgba(0,0,0,.33)}.theme-vchatdark .Tabs--fill{height:100%}.theme-vchatdark .Section .Tabs{background-color:rgba(0,0,0,0)}.theme-vchatdark .Section:not(.Section--fitted) .Tabs{margin:0 -.5em .5em}.theme-vchatdark .Section:not(.Section--fitted) .Tabs:first-child{margin-top:-.5em}.theme-vchatdark .Tabs--vertical{flex-direction:column;padding:.25em 0 .25em .25em}.theme-vchatdark .Tabs--horizontal{margin-bottom:.5em;padding:.25em .25em 0}.theme-vchatdark .Tabs--horizontal:last-child{margin-bottom:0}.theme-vchatdark .Tabs__Tab{flex-grow:0}.theme-vchatdark .Tabs--fluid .Tabs__Tab{flex-grow:1}.theme-vchatdark .Tab{display:flex;align-items:center;justify-content:space-between;background-color:rgba(0,0,0,0);color:rgba(255,255,255,.5);min-height:2.25em;min-width:4em}.theme-vchatdark .Tab:not(.Tab--selected):hover{background-color:rgba(255,255,255,.075)}.theme-vchatdark .Tab--selected{background-color:rgba(255,255,255,.125);color:#dfe7f0}.theme-vchatdark .Tab__text{flex-grow:1;margin:0 .5em}.theme-vchatdark .Tab__left{min-width:1.5em;text-align:center;margin-left:.25em}.theme-vchatdark .Tab__right{min-width:1.5em;text-align:center;margin-right:.25em}.theme-vchatdark .Tabs--horizontal .Tab{border-top:.1666666667em solid rgba(0,0,0,0);border-bottom:.1666666667em solid rgba(0,0,0,0);border-top-left-radius:.25em;border-top-right-radius:.25em}.theme-vchatdark .Tabs--horizontal .Tab--selected{border-bottom:.1666666667em solid #d4dfec}.theme-vchatdark .Tabs--vertical .Tab{min-height:2em;border-left:.1666666667em solid rgba(0,0,0,0);border-right:.1666666667em solid rgba(0,0,0,0);border-top-left-radius:.25em;border-bottom-left-radius:.25em}.theme-vchatdark .Tabs--vertical .Tab--selected{border-right:.1666666667em solid #d4dfec}.theme-vchatdark .Tab--selected.Tab--color--black{color:#535353}.theme-vchatdark .Tabs--horizontal .Tab--selected.Tab--color--black{border-bottom-color:#1a1a1a}.theme-vchatdark .Tabs--vertical .Tab--selected.Tab--color--black{border-right-color:#1a1a1a}.theme-vchatdark .Tab--selected.Tab--color--white{color:#fff}.theme-vchatdark .Tabs--horizontal .Tab--selected.Tab--color--white{border-bottom-color:#fff}.theme-vchatdark .Tabs--vertical .Tab--selected.Tab--color--white{border-right-color:#fff}.theme-vchatdark .Tab--selected.Tab--color--red{color:#e76e6e}.theme-vchatdark .Tabs--horizontal .Tab--selected.Tab--color--red{border-bottom-color:#df3e3e}.theme-vchatdark .Tabs--vertical .Tab--selected.Tab--color--red{border-right-color:#df3e3e}.theme-vchatdark .Tab--selected.Tab--color--orange{color:#f69f66}.theme-vchatdark .Tabs--horizontal .Tab--selected.Tab--color--orange{border-bottom-color:#f37f33}.theme-vchatdark .Tabs--vertical .Tab--selected.Tab--color--orange{border-right-color:#f37f33}.theme-vchatdark .Tab--selected.Tab--color--yellow{color:#fce358}.theme-vchatdark .Tabs--horizontal .Tab--selected.Tab--color--yellow{border-bottom-color:#fbda21}.theme-vchatdark .Tabs--vertical .Tab--selected.Tab--color--yellow{border-right-color:#fbda21}.theme-vchatdark .Tab--selected.Tab--color--olive{color:#d8eb55}.theme-vchatdark .Tabs--horizontal .Tab--selected.Tab--color--olive{border-bottom-color:#cbe41c}.theme-vchatdark .Tabs--vertical .Tab--selected.Tab--color--olive{border-right-color:#cbe41c}.theme-vchatdark .Tab--selected.Tab--color--green{color:#53e074}.theme-vchatdark .Tabs--horizontal .Tab--selected.Tab--color--green{border-bottom-color:#25ca4c}.theme-vchatdark .Tabs--vertical .Tab--selected.Tab--color--green{border-right-color:#25ca4c}.theme-vchatdark .Tab--selected.Tab--color--teal{color:#21fff5}.theme-vchatdark .Tabs--horizontal .Tab--selected.Tab--color--teal{border-bottom-color:#00d6cc}.theme-vchatdark .Tabs--vertical .Tab--selected.Tab--color--teal{border-right-color:#00d6cc}.theme-vchatdark .Tab--selected.Tab--color--blue{color:#62aee6}.theme-vchatdark .Tabs--horizontal .Tab--selected.Tab--color--blue{border-bottom-color:#2e93de}.theme-vchatdark .Tabs--vertical .Tab--selected.Tab--color--blue{border-right-color:#2e93de}.theme-vchatdark .Tab--selected.Tab--color--violet{color:#9676db}.theme-vchatdark .Tabs--horizontal .Tab--selected.Tab--color--violet{border-bottom-color:#7349cf}.theme-vchatdark .Tabs--vertical .Tab--selected.Tab--color--violet{border-right-color:#7349cf}.theme-vchatdark .Tab--selected.Tab--color--purple{color:#c274db}.theme-vchatdark .Tabs--horizontal .Tab--selected.Tab--color--purple{border-bottom-color:#ad45d0}.theme-vchatdark .Tabs--vertical .Tab--selected.Tab--color--purple{border-right-color:#ad45d0}.theme-vchatdark .Tab--selected.Tab--color--pink{color:#ea79b9}.theme-vchatdark .Tabs--horizontal .Tab--selected.Tab--color--pink{border-bottom-color:#e34da1}.theme-vchatdark .Tabs--vertical .Tab--selected.Tab--color--pink{border-right-color:#e34da1}.theme-vchatdark .Tab--selected.Tab--color--brown{color:#ca9775}.theme-vchatdark .Tabs--horizontal .Tab--selected.Tab--color--brown{border-bottom-color:#b97447}.theme-vchatdark .Tabs--vertical .Tab--selected.Tab--color--brown{border-right-color:#b97447}.theme-vchatdark .Tab--selected.Tab--color--grey{color:#a3a3a3}.theme-vchatdark .Tabs--horizontal .Tab--selected.Tab--color--grey{border-bottom-color:#848484}.theme-vchatdark .Tabs--vertical .Tab--selected.Tab--color--grey{border-right-color:#848484}.theme-vchatdark .Tab--selected.Tab--color--light-grey{color:#c6c6c6}.theme-vchatdark .Tabs--horizontal .Tab--selected.Tab--color--light-grey{border-bottom-color:#b3b3b3}.theme-vchatdark .Tabs--vertical .Tab--selected.Tab--color--light-grey{border-right-color:#b3b3b3}.theme-vchatdark .Tab--selected.Tab--color--good{color:#8cd95a}.theme-vchatdark .Tabs--horizontal .Tab--selected.Tab--color--good{border-bottom-color:#68c22d}.theme-vchatdark .Tabs--vertical .Tab--selected.Tab--color--good{border-right-color:#68c22d}.theme-vchatdark .Tab--selected.Tab--color--average{color:#f5b35e}.theme-vchatdark .Tabs--horizontal .Tab--selected.Tab--color--average{border-bottom-color:#f29a29}.theme-vchatdark .Tabs--vertical .Tab--selected.Tab--color--average{border-right-color:#f29a29}.theme-vchatdark .Tab--selected.Tab--color--bad{color:#e76e6e}.theme-vchatdark .Tabs--horizontal .Tab--selected.Tab--color--bad{border-bottom-color:#df3e3e}.theme-vchatdark .Tabs--vertical .Tab--selected.Tab--color--bad{border-right-color:#df3e3e}.theme-vchatdark .Tab--selected.Tab--color--label{color:#a8b4c4}.theme-vchatdark .Tabs--horizontal .Tab--selected.Tab--color--label{border-bottom-color:#8b9bb0}.theme-vchatdark .Tabs--vertical .Tab--selected.Tab--color--label{border-right-color:#8b9bb0}.theme-vchatdark .Section{position:relative;margin-bottom:.5em;background-color:#191919;background-color:rgba(0,0,0,.33);box-sizing:border-box}.theme-vchatdark .Section:last-child{margin-bottom:0}.theme-vchatdark .Section__title{position:relative;padding:.5em;border-bottom:.1666666667em solid #4972a1}.theme-vchatdark .Section__titleText{font-size:1.1666666667em;font-weight:700;color:#fff}.theme-vchatdark .Section__buttons{position:absolute;display:inline-block;right:.5em;margin-top:-.0833333333em}.theme-vchatdark .Section__rest{position:relative}.theme-vchatdark .Section__content{padding:.66em .5em}.theme-vchatdark .Section--fitted>.Section__rest>.Section__content{padding:0}.theme-vchatdark .Section--fill{display:flex;flex-direction:column;height:100%}.theme-vchatdark .Section--fill>.Section__rest{flex-grow:1}.theme-vchatdark .Section--fill>.Section__rest>.Section__content{height:100%}.theme-vchatdark .Section--fill.Section--scrollable>.Section__rest>.Section__content{position:absolute;top:0;left:0;right:0;bottom:0}.theme-vchatdark .Section--fill.Section--iefix{display:table!important;width:100%!important;height:100%!important;border-collapse:collapse;border-spacing:0}.theme-vchatdark .Section--fill.Section--iefix>.Section__rest{display:table-row!important;height:100%!important}.theme-vchatdark .Section--scrollable{overflow-x:hidden;overflow-y:hidden}.theme-vchatdark .Section--scrollable>.Section__rest>.Section__content{overflow-y:scroll;overflow-x:hidden}.theme-vchatdark .Section--scrollableHorizontal{overflow-x:hidden;overflow-y:hidden}.theme-vchatdark .Section--scrollableHorizontal>.Section__rest>.Section__content{overflow-y:hidden;overflow-x:scroll}.theme-vchatdark .Section--scrollable.Section--scrollableHorizontal{overflow-x:hidden;overflow-y:hidden}.theme-vchatdark .Section--scrollable.Section--scrollableHorizontal>.Section__rest>.Section__content{overflow-y:scroll;overflow-x:scroll}.theme-vchatdark .Section .Section{background-color:rgba(0,0,0,0);margin-left:-.5em;margin-right:-.5em}.theme-vchatdark .Section .Section:first-child{margin-top:-.5em}.theme-vchatdark .Section .Section .Section__titleText{font-size:1.0833333333em}.theme-vchatdark .Section .Section .Section .Section__titleText{font-size:1em}.theme-vchatdark .Section--flex{display:flex;flex-flow:column}.theme-vchatdark .Section--flex .Section__content{overflow:auto;flex-grow:1}.theme-vchatdark .Section__content--noTopPadding{padding-top:0}.theme-vchatdark .Section__content--stretchContents{height:calc(100% - 3rem)}.theme-vchatdark .Button{position:relative;display:inline-block;line-height:1.667em;padding:0 .5em;margin-right:.1666666667em;white-space:nowrap;outline:0;border-radius:.16em;margin-bottom:.1666666667em;user-select:none;-ms-user-select:none}.theme-vchatdark .Button:last-child{margin-right:0;margin-bottom:0}.theme-vchatdark .Button .fa,.theme-vchatdark .Button .fas,.theme-vchatdark .Button .far{margin-left:-.25em;margin-right:-.25em;min-width:1.333em;text-align:center}.theme-vchatdark .Button--dropdown{line-height:1.3333333333em;height:1.8333333333em;padding:.2rem .5rem}.theme-vchatdark .Button--hasContent .fa,.theme-vchatdark .Button--hasContent .fas,.theme-vchatdark .Button--hasContent .far{margin-right:.25em}.theme-vchatdark .Button--hasContent.Button--iconPosition--right .fa,.theme-vchatdark .Button--hasContent.Button--iconPosition--right .fas,.theme-vchatdark .Button--hasContent.Button--iconPosition--right .far{margin-right:0;margin-left:3px}.theme-vchatdark .Button--ellipsis{text-overflow:ellipsis;overflow:hidden}.theme-vchatdark .Button--fluid{display:block;margin-left:0;margin-right:0}.theme-vchatdark .Button--circular{border-radius:50%}.theme-vchatdark .Button--compact{padding:0 .25em;line-height:1.333em}.theme-vchatdark .Button--color--black{transition:color 50ms,background-color 50ms;background-color:#000;color:#fff}.theme-vchatdark .Button--color--black:hover{transition:color 0ms,background-color 0ms}.theme-vchatdark .Button--color--black:focus{transition:color .1s,background-color .1s}.theme-vchatdark .Button--color--black:hover,.theme-vchatdark .Button--color--black:focus{background-color:#131313;color:#fff}.theme-vchatdark .Button--color--white{transition:color 50ms,background-color 50ms;background-color:#d9d9d9;color:#000}.theme-vchatdark .Button--color--white:hover{transition:color 0ms,background-color 0ms}.theme-vchatdark .Button--color--white:focus{transition:color .1s,background-color .1s}.theme-vchatdark .Button--color--white:hover,.theme-vchatdark .Button--color--white:focus{background-color:#f8f8f8;color:#000}.theme-vchatdark .Button--color--red{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.theme-vchatdark .Button--color--red:hover{transition:color 0ms,background-color 0ms}.theme-vchatdark .Button--color--red:focus{transition:color .1s,background-color .1s}.theme-vchatdark .Button--color--red:hover,.theme-vchatdark .Button--color--red:focus{background-color:#dc4848;color:#fff}.theme-vchatdark .Button--color--orange{transition:color 50ms,background-color 50ms;background-color:#d95e0c;color:#fff}.theme-vchatdark .Button--color--orange:hover{transition:color 0ms,background-color 0ms}.theme-vchatdark .Button--color--orange:focus{transition:color .1s,background-color .1s}.theme-vchatdark .Button--color--orange:hover,.theme-vchatdark .Button--color--orange:focus{background-color:#f0853f;color:#fff}.theme-vchatdark .Button--color--yellow{transition:color 50ms,background-color 50ms;background-color:#d9b804;color:#000}.theme-vchatdark .Button--color--yellow:hover{transition:color 0ms,background-color 0ms}.theme-vchatdark .Button--color--yellow:focus{transition:color .1s,background-color .1s}.theme-vchatdark .Button--color--yellow:hover,.theme-vchatdark .Button--color--yellow:focus{background-color:#f5d72e;color:#000}.theme-vchatdark .Button--color--olive{transition:color 50ms,background-color 50ms;background-color:#9aad14;color:#fff}.theme-vchatdark .Button--color--olive:hover{transition:color 0ms,background-color 0ms}.theme-vchatdark .Button--color--olive:focus{transition:color .1s,background-color .1s}.theme-vchatdark .Button--color--olive:hover,.theme-vchatdark .Button--color--olive:focus{background-color:#c4da2b;color:#fff}.theme-vchatdark .Button--color--green{transition:color 50ms,background-color 50ms;background-color:#1b9638;color:#fff}.theme-vchatdark .Button--color--green:hover{transition:color 0ms,background-color 0ms}.theme-vchatdark .Button--color--green:focus{transition:color .1s,background-color .1s}.theme-vchatdark .Button--color--green:hover,.theme-vchatdark .Button--color--green:focus{background-color:#32c154;color:#fff}.theme-vchatdark .Button--color--teal{transition:color 50ms,background-color 50ms;background-color:#009a93;color:#fff}.theme-vchatdark .Button--color--teal:hover{transition:color 0ms,background-color 0ms}.theme-vchatdark .Button--color--teal:focus{transition:color .1s,background-color .1s}.theme-vchatdark .Button--color--teal:hover,.theme-vchatdark .Button--color--teal:focus{background-color:#13c4bc;color:#fff}.theme-vchatdark .Button--color--blue{transition:color 50ms,background-color 50ms;background-color:#1c71b1;color:#fff}.theme-vchatdark .Button--color--blue:hover{transition:color 0ms,background-color 0ms}.theme-vchatdark .Button--color--blue:focus{transition:color .1s,background-color .1s}.theme-vchatdark .Button--color--blue:hover,.theme-vchatdark .Button--color--blue:focus{background-color:#3a95d9;color:#fff}.theme-vchatdark .Button--color--violet{transition:color 50ms,background-color 50ms;background-color:#552dab;color:#fff}.theme-vchatdark .Button--color--violet:hover{transition:color 0ms,background-color 0ms}.theme-vchatdark .Button--color--violet:focus{transition:color .1s,background-color .1s}.theme-vchatdark .Button--color--violet:hover,.theme-vchatdark .Button--color--violet:focus{background-color:#7953cc;color:#fff}.theme-vchatdark .Button--color--purple{transition:color 50ms,background-color 50ms;background-color:#8b2baa;color:#fff}.theme-vchatdark .Button--color--purple:hover{transition:color 0ms,background-color 0ms}.theme-vchatdark .Button--color--purple:focus{transition:color .1s,background-color .1s}.theme-vchatdark .Button--color--purple:hover,.theme-vchatdark .Button--color--purple:focus{background-color:#ad4fcd;color:#fff}.theme-vchatdark .Button--color--pink{transition:color 50ms,background-color 50ms;background-color:#cf2082;color:#fff}.theme-vchatdark .Button--color--pink:hover{transition:color 0ms,background-color 0ms}.theme-vchatdark .Button--color--pink:focus{transition:color .1s,background-color .1s}.theme-vchatdark .Button--color--pink:hover,.theme-vchatdark .Button--color--pink:focus{background-color:#e257a5;color:#fff}.theme-vchatdark .Button--color--brown{transition:color 50ms,background-color 50ms;background-color:#8c5836;color:#fff}.theme-vchatdark .Button--color--brown:hover{transition:color 0ms,background-color 0ms}.theme-vchatdark .Button--color--brown:focus{transition:color .1s,background-color .1s}.theme-vchatdark .Button--color--brown:hover,.theme-vchatdark .Button--color--brown:focus{background-color:#b47851;color:#fff}.theme-vchatdark .Button--color--grey{transition:color 50ms,background-color 50ms;background-color:#646464;color:#fff}.theme-vchatdark .Button--color--grey:hover{transition:color 0ms,background-color 0ms}.theme-vchatdark .Button--color--grey:focus{transition:color .1s,background-color .1s}.theme-vchatdark .Button--color--grey:hover,.theme-vchatdark .Button--color--grey:focus{background-color:#868686;color:#fff}.theme-vchatdark .Button--color--light-grey{transition:color 50ms,background-color 50ms;background-color:#919191;color:#fff}.theme-vchatdark .Button--color--light-grey:hover{transition:color 0ms,background-color 0ms}.theme-vchatdark .Button--color--light-grey:focus{transition:color .1s,background-color .1s}.theme-vchatdark .Button--color--light-grey:hover,.theme-vchatdark .Button--color--light-grey:focus{background-color:#bababa;color:#fff}.theme-vchatdark .Button--color--good{transition:color 50ms,background-color 50ms;background-color:#4d9121;color:#fff}.theme-vchatdark .Button--color--good:hover{transition:color 0ms,background-color 0ms}.theme-vchatdark .Button--color--good:focus{transition:color .1s,background-color .1s}.theme-vchatdark .Button--color--good:hover,.theme-vchatdark .Button--color--good:focus{background-color:#6cba39;color:#fff}.theme-vchatdark .Button--color--average{transition:color 50ms,background-color 50ms;background-color:#cd7a0d;color:#fff}.theme-vchatdark .Button--color--average:hover{transition:color 0ms,background-color 0ms}.theme-vchatdark .Button--color--average:focus{transition:color .1s,background-color .1s}.theme-vchatdark .Button--color--average:hover,.theme-vchatdark .Button--color--average:focus{background-color:#ed9d35;color:#fff}.theme-vchatdark .Button--color--bad{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.theme-vchatdark .Button--color--bad:hover{transition:color 0ms,background-color 0ms}.theme-vchatdark .Button--color--bad:focus{transition:color .1s,background-color .1s}.theme-vchatdark .Button--color--bad:hover,.theme-vchatdark .Button--color--bad:focus{background-color:#dc4848;color:#fff}.theme-vchatdark .Button--color--label{transition:color 50ms,background-color 50ms;background-color:#657a94;color:#fff}.theme-vchatdark .Button--color--label:hover{transition:color 0ms,background-color 0ms}.theme-vchatdark .Button--color--label:focus{transition:color .1s,background-color .1s}.theme-vchatdark .Button--color--label:hover,.theme-vchatdark .Button--color--label:focus{background-color:#91a1b3;color:#fff}.theme-vchatdark .Button--color--default{transition:color 50ms,background-color 50ms;background-color:#3e6189;color:#fff}.theme-vchatdark .Button--color--default:hover{transition:color 0ms,background-color 0ms}.theme-vchatdark .Button--color--default:focus{transition:color .1s,background-color .1s}.theme-vchatdark .Button--color--default:hover,.theme-vchatdark .Button--color--default:focus{background-color:#5c83b0;color:#fff}.theme-vchatdark .Button--color--caution{transition:color 50ms,background-color 50ms;background-color:#d9b804;color:#000}.theme-vchatdark .Button--color--caution:hover{transition:color 0ms,background-color 0ms}.theme-vchatdark .Button--color--caution:focus{transition:color .1s,background-color .1s}.theme-vchatdark .Button--color--caution:hover,.theme-vchatdark .Button--color--caution:focus{background-color:#f5d72e;color:#000}.theme-vchatdark .Button--color--danger{transition:color 50ms,background-color 50ms;background-color:#bd2020;color:#fff}.theme-vchatdark .Button--color--danger:hover{transition:color 0ms,background-color 0ms}.theme-vchatdark .Button--color--danger:focus{transition:color .1s,background-color .1s}.theme-vchatdark .Button--color--danger:hover,.theme-vchatdark .Button--color--danger:focus{background-color:#dc4848;color:#fff}.theme-vchatdark .Button--color--transparent{transition:color 50ms,background-color 50ms;background-color:#252525;color:#fff;background-color:rgba(37,37,37,0);color:rgba(255,255,255,.5)}.theme-vchatdark .Button--color--transparent:hover{transition:color 0ms,background-color 0ms}.theme-vchatdark .Button--color--transparent:focus{transition:color .1s,background-color .1s}.theme-vchatdark .Button--color--transparent:hover,.theme-vchatdark .Button--color--transparent:focus{background-color:#3e3e3e;color:#fff}.theme-vchatdark .Button--disabled{background-color:#999!important}.theme-vchatdark .Button--selected{transition:color 50ms,background-color 50ms;background-color:#1b9638;color:#fff}.theme-vchatdark .Button--selected:hover{transition:color 0ms,background-color 0ms}.theme-vchatdark .Button--selected:focus{transition:color .1s,background-color .1s}.theme-vchatdark .Button--selected:hover,.theme-vchatdark .Button--selected:focus{background-color:#32c154;color:#fff}.theme-vchatdark .Button--flex{display:inline-flex;flex-direction:column}.theme-vchatdark .Button--flex--fluid{width:100%}.theme-vchatdark .Button--verticalAlignContent--top{justify-content:flex-start}.theme-vchatdark .Button--verticalAlignContent--middle{justify-content:center}.theme-vchatdark .Button--verticalAlignContent--bottom{justify-content:flex-end}.theme-vchatdark .Button__content{display:block;align-self:stretch}.theme-vchatdark .Button__textMargin{margin-left:.4rem}.theme-vchatdark .NumberInput{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#88bfff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;text-align:right;overflow:visible;cursor:n-resize}.theme-vchatdark .NumberInput--fluid{display:block}.theme-vchatdark .NumberInput__content{margin-left:.5em}.theme-vchatdark .NumberInput__barContainer{position:absolute;top:.1666666667em;bottom:.1666666667em;left:.1666666667em}.theme-vchatdark .NumberInput__bar{position:absolute;bottom:0;left:0;width:.25em;box-sizing:border-box;border-bottom:.0833333333em solid #88bfff;background-color:#88bfff}.theme-vchatdark .NumberInput__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:#0a0a0a;color:#fff;text-align:right}.theme-vchatdark .Input{position:relative;display:inline-block;width:10em;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;color:#fff;background-color:#0a0a0a;padding:0 .3333333333em;margin-right:.1666666667em;line-height:1.4166666667em;overflow:visible}.theme-vchatdark .Input--fluid{display:block;width:auto}.theme-vchatdark .Input__baseline{display:inline-block;color:rgba(0,0,0,0)}.theme-vchatdark .Input__input{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;font-size:1em;line-height:1.4166666667em;height:1.4166666667em;margin:0;padding:0 .5em;font-family:Verdana,sans-serif;background-color:rgba(0,0,0,0);color:#fff;color:inherit}.theme-vchatdark .Input__input:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-vchatdark .Input--monospace .Input__input{font-family:Consolas,monospace}.theme-vchatdark .TextArea{position:relative;display:inline-block;border:.0833333333em solid #88bfff;border:.0833333333em solid rgba(136,191,255,.75);border-radius:.16em;background-color:#0a0a0a;margin-right:.1666666667em;line-height:1.4166666667em;box-sizing:border-box;width:100%}.theme-vchatdark .TextArea--fluid{display:block;width:auto;height:auto}.theme-vchatdark .TextArea--noborder{border:0px}.theme-vchatdark .TextArea__textarea.TextArea__textarea--scrollable{overflow:auto;overflow-x:hidden;overflow-y:scroll}.theme-vchatdark .TextArea__textarea{display:block;position:absolute;top:0;bottom:0;left:0;right:0;border:0;outline:0;width:100%;height:100%;font-size:1em;line-height:1.4166666667em;min-height:1.4166666667em;margin:0;padding:0 .5em;font-family:inherit;background-color:rgba(0,0,0,0);color:inherit;box-sizing:border-box;word-wrap:break-word;overflow:hidden}.theme-vchatdark .TextArea__textarea:-ms-input-placeholder{font-style:italic;color:#777;color:rgba(255,255,255,.45)}.theme-vchatdark .TextArea__textarea_custom{overflow:visible;white-space:pre-wrap}.theme-vchatdark .TextArea__nowrap{white-space:nowrap;overflow-wrap:normal;overflow-x:scroll}.theme-vchatdark .Knob{position:relative;font-size:1rem;width:2.6em;height:2.6em;margin:0 auto -.2em;cursor:n-resize}.theme-vchatdark .Knob:after{content:".";color:rgba(0,0,0,0);line-height:2.5em}.theme-vchatdark .Knob__circle{position:absolute;top:.1em;bottom:.1em;left:.1em;right:.1em;margin:.3em;background-color:#333;background-image:linear-gradient(to bottom,rgba(255,255,255,.15),rgba(255,255,255,0));border-radius:50%;box-shadow:0 .05em .5em rgba(0,0,0,.5)}.theme-vchatdark .Knob__cursorBox{position:absolute;top:0;bottom:0;left:0;right:0}.theme-vchatdark .Knob__cursor{position:relative;top:.05em;margin:0 auto;width:.2em;height:.8em;background-color:rgba(255,255,255,.9)}.theme-vchatdark .Knob__popupValue{position:absolute;top:-2rem;right:50%;font-size:1rem;text-align:center;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-vchatdark .Knob__ring{position:absolute;top:0;bottom:0;left:0;right:0;padding:.1em}.theme-vchatdark .Knob__ringTrackPivot{transform:rotate(135deg)}.theme-vchatdark .Knob__ringTrack{fill:rgba(0,0,0,0);stroke:rgba(255,255,255,.1);stroke-width:8;stroke-linecap:round;stroke-dasharray:235.62}.theme-vchatdark .Knob__ringFillPivot{transform:rotate(135deg)}.theme-vchatdark .Knob--bipolar .Knob__ringFillPivot{transform:rotate(270deg)}.theme-vchatdark .Knob__ringFill{fill:rgba(0,0,0,0);stroke:#6a96c9;stroke-width:8;stroke-linecap:round;stroke-dasharray:314.16;transition:stroke 50ms ease-out}.theme-vchatdark .Knob--color--black .Knob__ringFill{stroke:#1a1a1a}.theme-vchatdark .Knob--color--white .Knob__ringFill{stroke:#fff}.theme-vchatdark .Knob--color--red .Knob__ringFill{stroke:#df3e3e}.theme-vchatdark .Knob--color--orange .Knob__ringFill{stroke:#f37f33}.theme-vchatdark .Knob--color--yellow .Knob__ringFill{stroke:#fbda21}.theme-vchatdark .Knob--color--olive .Knob__ringFill{stroke:#cbe41c}.theme-vchatdark .Knob--color--green .Knob__ringFill{stroke:#25ca4c}.theme-vchatdark .Knob--color--teal .Knob__ringFill{stroke:#00d6cc}.theme-vchatdark .Knob--color--blue .Knob__ringFill{stroke:#2e93de}.theme-vchatdark .Knob--color--violet .Knob__ringFill{stroke:#7349cf}.theme-vchatdark .Knob--color--purple .Knob__ringFill{stroke:#ad45d0}.theme-vchatdark .Knob--color--pink .Knob__ringFill{stroke:#e34da1}.theme-vchatdark .Knob--color--brown .Knob__ringFill{stroke:#b97447}.theme-vchatdark .Knob--color--grey .Knob__ringFill{stroke:#848484}.theme-vchatdark .Knob--color--light-grey .Knob__ringFill{stroke:#b3b3b3}.theme-vchatdark .Knob--color--good .Knob__ringFill{stroke:#68c22d}.theme-vchatdark .Knob--color--average .Knob__ringFill{stroke:#f29a29}.theme-vchatdark .Knob--color--bad .Knob__ringFill{stroke:#df3e3e}.theme-vchatdark .Knob--color--label .Knob__ringFill{stroke:#8b9bb0}.theme-vchatdark .Slider{cursor:e-resize}.theme-vchatdark .Slider__cursorOffset{position:absolute;top:0;left:0;bottom:0;transition:none!important}.theme-vchatdark .Slider__cursor{position:absolute;top:0;right:-.0833333333em;bottom:0;width:0;border-left:.1666666667em solid #fff}.theme-vchatdark .Slider__pointer{position:absolute;right:-.4166666667em;bottom:-.3333333333em;width:0;height:0;border-left:.4166666667em solid rgba(0,0,0,0);border-right:.4166666667em solid rgba(0,0,0,0);border-bottom:.4166666667em solid #fff}.theme-vchatdark .Slider__popupValue{position:absolute;right:0;top:-2rem;font-size:1rem;padding:.25rem .5rem;color:#fff;background-color:#000;transform:translate(50%);white-space:nowrap}.theme-vchatdark .ProgressBar{display:inline-block;position:relative;width:100%;padding:0 .5em;border-width:.0833333333em!important;border-style:solid!important;border-radius:.16em;background-color:rgba(0,0,0,0);transition:border-color .9s ease-out}.theme-vchatdark .ProgressBar__fill{position:absolute;top:-.5px;left:0;bottom:-.5px}.theme-vchatdark .ProgressBar__fill--animated{transition:background-color .9s ease-out,width .9s ease-out}.theme-vchatdark .ProgressBar__content{position:relative;line-height:1.4166666667em;width:100%;text-align:right}.theme-vchatdark .ProgressBar--color--default{border:.0833333333em solid #3e6189}.theme-vchatdark .ProgressBar--color--default .ProgressBar__fill{background-color:#3e6189}.theme-vchatdark .ProgressBar--color--black{border-color:#000!important}.theme-vchatdark .ProgressBar--color--black .ProgressBar__fill{background-color:#000}.theme-vchatdark .ProgressBar--color--white{border-color:#d9d9d9!important}.theme-vchatdark .ProgressBar--color--white .ProgressBar__fill{background-color:#d9d9d9}.theme-vchatdark .ProgressBar--color--red{border-color:#bd2020!important}.theme-vchatdark .ProgressBar--color--red .ProgressBar__fill{background-color:#bd2020}.theme-vchatdark .ProgressBar--color--orange{border-color:#d95e0c!important}.theme-vchatdark .ProgressBar--color--orange .ProgressBar__fill{background-color:#d95e0c}.theme-vchatdark .ProgressBar--color--yellow{border-color:#d9b804!important}.theme-vchatdark .ProgressBar--color--yellow .ProgressBar__fill{background-color:#d9b804}.theme-vchatdark .ProgressBar--color--olive{border-color:#9aad14!important}.theme-vchatdark .ProgressBar--color--olive .ProgressBar__fill{background-color:#9aad14}.theme-vchatdark .ProgressBar--color--green{border-color:#1b9638!important}.theme-vchatdark .ProgressBar--color--green .ProgressBar__fill{background-color:#1b9638}.theme-vchatdark .ProgressBar--color--teal{border-color:#009a93!important}.theme-vchatdark .ProgressBar--color--teal .ProgressBar__fill{background-color:#009a93}.theme-vchatdark .ProgressBar--color--blue{border-color:#1c71b1!important}.theme-vchatdark .ProgressBar--color--blue .ProgressBar__fill{background-color:#1c71b1}.theme-vchatdark .ProgressBar--color--violet{border-color:#552dab!important}.theme-vchatdark .ProgressBar--color--violet .ProgressBar__fill{background-color:#552dab}.theme-vchatdark .ProgressBar--color--purple{border-color:#8b2baa!important}.theme-vchatdark .ProgressBar--color--purple .ProgressBar__fill{background-color:#8b2baa}.theme-vchatdark .ProgressBar--color--pink{border-color:#cf2082!important}.theme-vchatdark .ProgressBar--color--pink .ProgressBar__fill{background-color:#cf2082}.theme-vchatdark .ProgressBar--color--brown{border-color:#8c5836!important}.theme-vchatdark .ProgressBar--color--brown .ProgressBar__fill{background-color:#8c5836}.theme-vchatdark .ProgressBar--color--grey{border-color:#646464!important}.theme-vchatdark .ProgressBar--color--grey .ProgressBar__fill{background-color:#646464}.theme-vchatdark .ProgressBar--color--light-grey{border-color:#919191!important}.theme-vchatdark .ProgressBar--color--light-grey .ProgressBar__fill{background-color:#919191}.theme-vchatdark .ProgressBar--color--good{border-color:#4d9121!important}.theme-vchatdark .ProgressBar--color--good .ProgressBar__fill{background-color:#4d9121}.theme-vchatdark .ProgressBar--color--average{border-color:#cd7a0d!important}.theme-vchatdark .ProgressBar--color--average .ProgressBar__fill{background-color:#cd7a0d}.theme-vchatdark .ProgressBar--color--bad{border-color:#bd2020!important}.theme-vchatdark .ProgressBar--color--bad .ProgressBar__fill{background-color:#bd2020}.theme-vchatdark .ProgressBar--color--label{border-color:#657a94!important}.theme-vchatdark .ProgressBar--color--label .ProgressBar__fill{background-color:#657a94}.theme-vchatdark .Chat{color:#fff}.theme-vchatdark .Chat__badge{display:inline-block;min-width:.5em;font-size:.7em;padding:.2em .3em;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#dc143c;border-radius:10px;transition:font-size .2s ease-out}.theme-vchatdark .Chat__badge:before{content:"x"}.theme-vchatdark .Chat__badge--animate{font-size:.9em;transition:font-size 0ms}.theme-vchatdark .Chat__scrollButton{position:fixed;right:2em;bottom:1em}.theme-vchatdark .Chat__reconnected{font-size:.85em;text-align:center;margin:1em 0 2em}.theme-vchatdark .Chat__reconnected:before{content:"Reconnected";display:inline-block;border-radius:1em;padding:0 .7em;color:#db2828;background-color:rgba(0,0,0,.33)}.theme-vchatdark .Chat__reconnected:after{content:"";display:block;margin-top:-.75em;border-bottom:.1666666667em solid #db2828}.theme-vchatdark .Chat__highlight{color:#000}.theme-vchatdark .Chat__highlight--restricted{color:#fff;background-color:#a00;font-weight:700}.theme-vchatdark .ChatMessage{word-wrap:break-word}.theme-vchatdark .ChatMessage--highlighted{position:relative;border-left:.1666666667em solid #fd4;padding-left:.5em}.theme-vchatdark .ChatMessage--highlighted:after{content:"";position:absolute;top:0;bottom:0;left:0;right:0;background-color:rgba(255,221,68,.1);pointer-events:none}.theme-vchatdark .Layout,.theme-vchatdark .Layout *{scrollbar-base-color:#1c1c1c;scrollbar-face-color:#3b3b3b;scrollbar-3dlight-color:#252525;scrollbar-highlight-color:#252525;scrollbar-track-color:#1c1c1c;scrollbar-arrow-color:#929292;scrollbar-shadow-color:#3b3b3b}.theme-vchatdark .Layout__content{position:absolute;top:0;bottom:0;left:0;right:0;overflow-x:hidden;overflow-y:hidden}.theme-vchatdark .Layout__content--scrollable{overflow-y:scroll;margin-bottom:0}.theme-vchatdark .Layout__content--flexRow{display:flex;flex-flow:row}.theme-vchatdark .Layout__content--flexColumn{display:flex;flex-flow:column}.theme-vchatdark .Window{position:fixed;top:0;bottom:0;left:0;right:0;color:#fff;background-color:#252525;background-image:linear-gradient(to bottom,#2a2a2a,#202020)}.theme-vchatdark .Window__titleBar{position:fixed;z-index:1;top:0;left:0;width:100%;height:32px;height:2.6666666667rem}.theme-vchatdark .Window__rest{position:fixed;top:32px;top:2.6666666667rem;bottom:0;left:0;right:0}.theme-vchatdark .Window__contentPadding{margin:.5rem;height:100%;height:calc(100% - 1.01rem)}.theme-vchatdark .Window__contentPadding:after{height:0}.theme-vchatdark .Layout__content--scrollable .Window__contentPadding:after{display:block;content:"";height:.5rem}.theme-vchatdark .Window__dimmer{position:fixed;top:0;bottom:0;left:0;right:0;background-color:rgba(62,62,62,.25);pointer-events:none}.theme-vchatdark .Window__resizeHandle__se{position:fixed;bottom:0;right:0;width:20px;width:1.6666666667rem;height:20px;height:1.6666666667rem;cursor:se-resize}.theme-vchatdark .Window__resizeHandle__s{position:fixed;bottom:0;left:0;right:0;height:6px;height:.5rem;cursor:s-resize}.theme-vchatdark .Window__resizeHandle__e{position:fixed;top:0;bottom:0;right:0;width:3px;width:.25rem;cursor:e-resize}.theme-vchatdark .TitleBar{background-color:#363636;border-bottom:1px solid #161616;box-shadow:0 2px 2px rgba(0,0,0,.1);box-shadow:0 .1666666667rem .1666666667rem rgba(0,0,0,.1);user-select:none;-ms-user-select:none}.theme-vchatdark .TitleBar__clickable{color:rgba(255,255,255,.5);background-color:#363636;transition:color .25s ease-out,background-color .25s ease-out}.theme-vchatdark .TitleBar__clickable:hover{color:#fff;background-color:#c00;transition:color 0ms,background-color 0ms}.theme-vchatdark .TitleBar__title{position:absolute;display:inline-block;top:0;left:46px;left:3.8333333333rem;color:rgba(255,255,255,.75);font-size:14px;font-size:1.1666666667rem;line-height:31px;line-height:2.5833333333rem;white-space:nowrap;pointer-events:none}.theme-vchatdark .TitleBar__buttons{pointer-events:initial;display:inline-block;width:100%;margin-left:10px}.theme-vchatdark .TitleBar__dragZone{position:absolute;top:0;left:0;right:0;height:32px;height:2.6666666667rem}.theme-vchatdark .TitleBar__statusIcon{position:absolute;top:0;left:12px;left:1rem;transition:color .5s;font-size:20px;font-size:1.6666666667rem;line-height:32px!important;line-height:2.6666666667rem!important}.theme-vchatdark .TitleBar__close{position:absolute;top:-1px;right:0;width:45px;width:3.75rem;height:32px;height:2.6666666667rem;font-size:20px;font-size:1.6666666667rem;line-height:31px;line-height:2.5833333333rem;text-align:center}.theme-vchatdark .TitleBar__devBuildIndicator{position:absolute;top:6px;top:.5rem;right:52px;right:4.3333333333rem;min-width:20px;min-width:1.6666666667rem;padding:2px 4px;padding:.1666666667rem .3333333333rem;background-color:rgba(91,170,39,.75);color:#fff;text-align:center}.theme-vchatdark img{margin:0;padding:0;line-height:1;-ms-interpolation-mode:nearest-neighbor;image-rendering:pixelated}.theme-vchatdark img.icon{height:1em;min-height:16px;width:auto;vertical-align:bottom}.theme-vchatdark a{color:#397ea5}.theme-vchatdark a.visited,.theme-vchatdark a:visited{color:#7c00e6}.theme-vchatdark a.popt{text-decoration:none}.theme-vchatdark .popup{position:fixed;top:50%;left:50%;background:#ddd}.theme-vchatdark .popup .close{position:absolute;background:#aaa;top:0;right:0;color:#333;text-decoration:none;z-index:2;padding:0 10px;height:30px;line-height:30px}.theme-vchatdark .popup .close:hover{background:#999}.theme-vchatdark .popup .head{background:#999;color:#ddd;padding:0 10px;height:30px;line-height:30px;text-transform:uppercase;font-size:.9em;font-weight:700;border-bottom:2px solid green}.theme-vchatdark .popup input{border:1px solid #999;background:#fff;margin:0;padding:5px;outline:none;color:#333}.theme-vchatdark .popup input[type=text]:hover,.theme-vchatdark .popup input[type=text]:active,.theme-vchatdark .popup input[type=text]:focus{border-color:green}.theme-vchatdark .popup input[type=submit]{padding:5px 10px;background:#999;color:#ddd;text-transform:uppercase;font-size:.9em;font-weight:700}.theme-vchatdark .popup input[type=submit]:hover,.theme-vchatdark .popup input[type=submit]:focus,.theme-vchatdark .popup input[type=submit]:active{background:#aaa;cursor:pointer}.theme-vchatdark .changeFont{padding:10px}.theme-vchatdark .changeFont a{display:block;text-decoration:none;padding:3px;color:#333}.theme-vchatdark .changeFont a:hover{background:#ccc}.theme-vchatdark .highlightPopup{padding:10px;text-align:center}.theme-vchatdark .highlightPopup input[type=text]{display:block;width:215px;text-align:left;margin-top:5px}.theme-vchatdark .highlightPopup input.highlightColor{background-color:#ff0}.theme-vchatdark .highlightPopup input.highlightTermSubmit{margin-top:5px}.theme-vchatdark .contextMenu{background-color:#ddd;position:fixed;margin:2px;width:150px}.theme-vchatdark .contextMenu a{display:block;padding:2px 5px;text-decoration:none;color:#333}.theme-vchatdark .contextMenu a:hover{background-color:#ccc}.theme-vchatdark .filterMessages{padding:5px}.theme-vchatdark .filterMessages div{padding:2px 0}.theme-vchatdark .icon-stack{height:1em;line-height:1em;width:1em;vertical-align:middle;margin-top:-2px}.theme-vchatdark .motd{color:#638500;font-family:Verdana,sans-serif;white-space:normal}.theme-vchatdark .motd h1,.theme-vchatdark .motd h2,.theme-vchatdark .motd h3,.theme-vchatdark .motd h4,.theme-vchatdark .motd h5,.theme-vchatdark .motd h6{color:#638500;text-decoration:underline}.theme-vchatdark .motd a,.theme-vchatdark .motd a:link,.theme-vchatdark .motd a:visited,.theme-vchatdark .motd a:active,.theme-vchatdark .motd a:hover{color:#638500}.theme-vchatdark .bold,.theme-vchatdark .name,.theme-vchatdark .prefix,.theme-vchatdark .ooc,.theme-vchatdark .looc,.theme-vchatdark .adminooc,.theme-vchatdark .admin,.theme-vchatdark .medal,.theme-vchatdark .yell{font-weight:700}.theme-vchatdark .italic,.theme-vchatdark .italics{font-style:italic}.theme-vchatdark .highlight{background:#ff0}.theme-vchatdark h1,.theme-vchatdark h2,.theme-vchatdark h3,.theme-vchatdark h4,.theme-vchatdark h5,.theme-vchatdark h6{color:#a4bad6;font-family:Georgia,Verdana,sans-serif}.theme-vchatdark h1.alert,.theme-vchatdark h2.alert{color:#a4bad6}.theme-vchatdark em{font-style:normal;font-weight:700}.theme-vchatdark .ooc{color:#004ed8;font-weight:700}.theme-vchatdark .ooc .elevated{color:#2e78d9}.theme-vchatdark .ooc .moderator{color:#184880}.theme-vchatdark .ooc .developer{color:#1b521f}.theme-vchatdark .ooc .admin{color:#b82e00}.theme-vchatdark .ooc .event_manager{color:#603}.theme-vchatdark .ooc .aooc{color:#960018}.theme-vchatdark img.text_tag{width:32px;height:10px;min-height:10px}.theme-vchatdark img.icon{vertical-align:middle;max-height:1em}.theme-vchatdark img.icon.bigicon{max-height:32px}.theme-vchatdark .looc{color:#3a9696;font-weight:700}.theme-vchatdark .rlooc{color:#3abb96;font-weight:700}.theme-vchatdark .adminobserverooc{color:#09c;font-weight:700}.theme-vchatdark .adminooc{color:#3d5bc3;font-weight:700}.theme-vchatdark .adminsay{color:#ff4500;font-weight:700}.theme-vchatdark .admin{color:#5975da;font-weight:700}.theme-vchatdark .mentor_channel{color:olive;font-weight:700}.theme-vchatdark .mod_channel{color:#735638;font-weight:700}.theme-vchatdark .admin_channel{color:#9611d4;font-weight:700}.theme-vchatdark .event_channel{color:#c39;font-weight:700}.theme-vchatdark .name{font-weight:700}.theme-vchatdark .hivemind{font-style:italic;color:#fff}.theme-vchatdark .psay,.theme-vchatdark .pemote{color:#e300e4;font-style:italic}.theme-vchatdark .deadsay{color:#732fcd}.theme-vchatdark .binarysay{font-style:italic;color:#fff}.theme-vchatdark .binarysay a{color:#0f0}.theme-vchatdark .binarysay a:active,.theme-vchatdark .binarysay a:visited{color:#8f8}.theme-vchatdark .radio{color:#00a800}.theme-vchatdark .sciradio{color:#939}.theme-vchatdark .comradio{color:#395a9a}.theme-vchatdark .secradio{color:#a30000}.theme-vchatdark .medradio{color:#008160}.theme-vchatdark .engradio{color:#a66300}.theme-vchatdark .supradio{color:#5f4519}.theme-vchatdark .srvradio{color:#6eaa2c}.theme-vchatdark .expradio{color:#555}.theme-vchatdark .syndradio{color:#6d3f40}.theme-vchatdark .gangradio{color:#ac2ea1}.theme-vchatdark .centradio{color:#5c5c8a}.theme-vchatdark .airadio{color:#f0f}.theme-vchatdark .redteamradio{color:#f44!important}.theme-vchatdark .blueteamradio{color:#3434fd!important}.theme-vchatdark .greenteamradio{color:#34fd34!important}.theme-vchatdark .yellowteamradio{color:#fdfd34!important}.theme-vchatdark .yell{font-weight:700}.theme-vchatdark .alert{color:red}.theme-vchatdark .valert{color:#d82020}.theme-vchatdark .userdanger{color:#c51e1e;font-weight:700;font-size:185%}.theme-vchatdark .bolddanger{color:#c51e1e;font-weight:700}.theme-vchatdark .danger,.theme-vchatdark .vdanger{color:#c51e1e}.theme-vchatdark .warning,.theme-vchatdark .vwarning{color:#c51e1e;font-style:italic}.theme-vchatdark .alertwarning{color:red;font-weight:700}.theme-vchatdark .boldwarning{color:#c51e1e;font-style:italic;font-weight:700}.theme-vchatdark .announce,.theme-vchatdark .boldannounce{color:#c51e1e;font-weight:700}.theme-vchatdark .minorannounce{color:#c51e1e;font-weight:700;font-size:185%}.theme-vchatdark .minoralert{color:#a4bad6;font-size:125%}.theme-vchatdark .priorityannounce{color:#a4bad6;font-weight:700;font-size:225%}.theme-vchatdark .prioritytitle{color:#6685f5;font-weight:700;font-size:185%}.theme-vchatdark .priorityalert{color:#c51e1e;font-size:140%}.theme-vchatdark .greenannounce{color:#059223;font-weight:700}.theme-vchatdark .rose{color:#ff5050}.theme-vchatdark .info,.theme-vchatdark .notice,.theme-vchatdark .vnotice{color:#6060c9}.theme-vchatdark .tinynotice{color:#6060c9;font-size:85%}.theme-vchatdark .tinynoticeital{color:#6060c9;font-style:italic;font-size:85%}.theme-vchatdark .smallnotice{color:#6060c9;font-size:90%}.theme-vchatdark .smallnoticeital{color:#6060c9;font-style:italic;font-size:90%}.theme-vchatdark .bolditalic{font-style:italic;font-weight:700}.theme-vchatdark .boldnotice{color:#6060c9;font-weight:700}.theme-vchatdark .hear{color:#6060c9;font-style:italic}.theme-vchatdark .adminnotice{color:#6060c9}.theme-vchatdark .adminhelp{color:red;font-weight:700}.theme-vchatdark .log_message{color:#386aff;font-weight:700}.theme-vchatdark .unconscious{color:#a4bad6;font-weight:700}.theme-vchatdark .suicide{color:#ff5050;font-style:italic}.theme-vchatdark .green{color:#4f4}.theme-vchatdark .grey{color:#a9a9a9}.theme-vchatdark .red{color:red}.theme-vchatdark .crimson{color:#dc143c}.theme-vchatdark .maroon{color:#c60000}.theme-vchatdark .brown{color:#db733b}.theme-vchatdark .blue{color:#66f}.theme-vchatdark .black,.theme-vchatdark .white{color:#fff}.theme-vchatdark .darkgray{color:gray}.theme-vchatdark .gray{color:#a9a9a9}.theme-vchatdark .yellow{color:#fc0}.theme-vchatdark .pink{color:pink}.theme-vchatdark .cyan{color:#0ff}.theme-vchatdark .orange{color:#ff8c00}.theme-vchatdark .nicegreen{color:#059223}.theme-vchatdark .boldnicegreen{color:#059223;font-weight:700}.theme-vchatdark .blob{color:#ee4000}.theme-vchatdark .blobannounce{color:#556b2f;font-weight:700;font-size:185%}.theme-vchatdark .cult{color:#973e3b}.theme-vchatdark .cultitalic{color:#973e3b;font-style:italic}.theme-vchatdark .cultbold{color:#973e3b;font-style:italic;font-weight:700}.theme-vchatdark .cultboldtalic,.theme-vchatdark .cultlarge{color:#973e3b;font-weight:700;font-size:185%}.theme-vchatdark .narsie{color:#973e3b;font-weight:700;font-size:925%}.theme-vchatdark .narsiesmall{color:#973e3b;font-weight:700;font-size:370%}.theme-vchatdark .colossus{color:#7f282a;font-size:310%}.theme-vchatdark .hierophant{color:#b441ee;font-weight:700;font-style:italic}.theme-vchatdark .hierophant_warning{color:#c56bf1;font-style:italic}.theme-vchatdark .purple{color:#9956d3}.theme-vchatdark .lightpurple{color:#ad5aad}.theme-vchatdark .darkpink{color:#e3209b}.theme-vchatdark .holoparasite{color:#88809c}.theme-vchatdark .revennotice{color:#c099e2}.theme-vchatdark .revenboldnotice{color:#c099e2;font-weight:700}.theme-vchatdark .revenbignotice{color:#c099e2;font-weight:700;font-size:185%}.theme-vchatdark .revenminor{color:#823abb}.theme-vchatdark .revenwarning{color:#760fbb;font-style:italic}.theme-vchatdark .revendanger{color:#760fbb;font-weight:700;font-size:185%}.theme-vchatdark .deconversion_message{color:#a947ff;font-size:185%;font-style:italic}.theme-vchatdark .ghostalert{color:#60f;font-style:italic;font-weight:700}.theme-vchatdark .alien{color:#855d85}.theme-vchatdark .noticealien{color:#059223}.theme-vchatdark .alertalien{color:#059223;font-weight:700}.theme-vchatdark .changeling{color:#b000b1;font-style:italic}.theme-vchatdark .alertsyndie{color:red;font-size:185%;font-weight:700}.theme-vchatdark .spiderbroodmother{color:#80f;font-weight:700;font-size:185%}.theme-vchatdark .spiderbreacher{color:#e8b670;font-weight:700;font-size:140%}.theme-vchatdark .spiderscout{color:#231d98;font-weight:700;font-size:120%}.theme-vchatdark .interface{color:#750e75}.theme-vchatdark .sans{font-family:Comic Sans MS,cursive,sans-serif}.theme-vchatdark .papyrus{font-family:Papyrus,cursive,sans-serif}.theme-vchatdark .robot{font-family:Courier New,cursive,sans-serif}.theme-vchatdark .tape_recorder{color:red;font-family:Courier New,cursive,sans-serif}.theme-vchatdark .command_headset{font-weight:700;font-size:160%}.theme-vchatdark .small{font-size:60%}.theme-vchatdark .big{font-size:185%}.theme-vchatdark .reallybig{font-size:245%}.theme-vchatdark .extremelybig{font-size:310%}.theme-vchatdark .greentext{color:#059223;font-size:185%}.theme-vchatdark .redtext{color:#c51e1e;font-size:185%}.theme-vchatdark .clown{color:#ff70c1;font-size:160%;font-family:Comic Sans MS,cursive,sans-serif;font-weight:700}.theme-vchatdark .singing{font-family:Trebuchet MS,cursive,sans-serif;font-style:italic}.theme-vchatdark .his_grace{color:#15d512;font-family:Courier New,cursive,sans-serif;font-style:italic}.theme-vchatdark .hypnophrase{color:#202020;font-weight:700;animation:hypnocolor 1.5s infinite;animation-direction:alternate}@keyframes hypnocolor{0%{color:#202020}25%{color:#4b02ac}50%{color:#9f41f1}75%{color:#541c9c}to{color:#7adbf3}}.theme-vchatdark .phobia{color:#d00;font-weight:700;animation:phobia .75s infinite}@keyframes phobia{0%{color:#f75a5a}50%{color:#d00}to{color:#f75a5a}}.theme-vchatdark .icon{height:1em;width:auto}.theme-vchatdark .bigicon{font-size:2.5em}.theme-vchatdark .hugeicon{font-size:5em}.theme-vchatdark .memo{color:#638500;text-align:center}.theme-vchatdark .memoedit{text-align:center;font-size:125%}.theme-vchatdark .abductor{color:#c204c2;font-style:italic}.theme-vchatdark .mind_control{color:#df3da9;font-size:100%;font-weight:700;font-style:italic}.theme-vchatdark .slime{color:#00ced1}.theme-vchatdark .drone{color:#848482}.theme-vchatdark .monkey{color:#975032}.theme-vchatdark .swarmer{color:#2c75ff}.theme-vchatdark .resonate{color:#298f85}.theme-vchatdark .upside_down{display:inline;-moz-transform:scale(-1,-1);-webkit-transform:scale(-1,-1);-o-transform:scale(-1,-1);-ms-transform:scale(-1,-1);transform:scale(-1)}.theme-vchatdark .connectionClosed,.theme-vchatdark .fatalError{background:red;color:#fff;padding:5px}.theme-vchatdark .connectionClosed.restored{background:green}.theme-vchatdark .internal.boldnshit{color:#3d5bc3;font-weight:700}.theme-vchatdark .text-normal{font-weight:400;font-style:normal}.theme-vchatdark .hidden{display:none;visibility:hidden}.theme-vchatdark .ml-1{margin-left:1em}.theme-vchatdark .ml-2{margin-left:2em}.theme-vchatdark .ml-3{margin-left:3em}.theme-vchatdark .examine_block{background:#1b1c1e;border:1px solid #a4bad6;margin:.5em;padding:.5em .75em}.theme-vchatdark .tooltip{font-style:italic;border-bottom:1px dashed #fff}.theme-vchatdark .major_announcement_title{font-size:175%;padding:0rem .5rem;line-height:100%;text-align:left;text-decoration:none;width:100%}.theme-vchatdark .subheader_announcement_text{font-weight:700;padding:.25rem .5rem 0;line-height:100%;width:100%;height:100%;text-align:left;font-size:125%}.theme-vchatdark .major_announcement_text{color:#eaeaea;background-color:#131313;font-weight:700;font-size:100%;text-align:left;padding:.5rem;width:100%;height:100%}.theme-vchatdark .minor_announcement_title{font-weight:700;padding:0 .5rem;padding-top:0;line-height:100%;width:100%;height:100%;text-align:left;font-size:150%}.theme-vchatdark .minor_announcement_text{background-color:#202020;color:#eaeaea;padding:.5rem;text-align:left;font-size:100%}.theme-vchatdark .announcement_header{padding:.5rem 0;display:flex;flex-direction:column}.theme-vchatdark .ooc_alert{background:#4d4100;border:1px solid #cca300;margin:.5em;padding:.5em .5em .5em .2em;color:#fff;font-weight:700;display:flex;flex-direction:column}.theme-vchatdark .ooc_announcement_text{color:#cca300;padding:.5em 0 0 .35em;display:flex;flex-direction:column}.theme-vchatdark .chat_alert_default{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#003045,#003045 10px,#00283a 10px,#00283a 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.theme-vchatdark .chat_alert_default .major_announcement_title,.theme-vchatdark .chat_alert_default .minor_announcement_title{color:#33d5ff}.theme-vchatdark .chat_alert_default .subheader_announcement_text{color:#ff5297}.theme-vchatdark .chat_alert_default .minor_announcement_text,.theme-vchatdark .chat_alert_default .major_announcement_text{background-color:#001621}.theme-vchatdark .chat_alert_green{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#004700,#004700 10px,#003d00 10px,#003d00 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.theme-vchatdark .chat_alert_green .major_announcement_title,.theme-vchatdark .chat_alert_green .minor_announcement_title{color:#00ff80}.theme-vchatdark .chat_alert_green .subheader_announcement_text{color:#ff85b5}.theme-vchatdark .chat_alert_green .minor_announcement_text,.theme-vchatdark .chat_alert_green .major_announcement_text{background-color:#002400}.theme-vchatdark .chat_alert_blue{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#003045,#003045 10px,#00283a 10px,#00283a 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.theme-vchatdark .chat_alert_blue .major_announcement_title,.theme-vchatdark .chat_alert_blue .minor_announcement_title{color:#33d5ff}.theme-vchatdark .chat_alert_blue .subheader_announcement_text{color:#ff5297}.theme-vchatdark .chat_alert_blue .minor_announcement_text,.theme-vchatdark .chat_alert_blue .major_announcement_text{background-color:#001621}.theme-vchatdark .chat_alert_pink{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#400025,#400025 10px,#30001b 10px,#30001b 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.theme-vchatdark .chat_alert_pink .major_announcement_title,.theme-vchatdark .chat_alert_pink .minor_announcement_title{color:#ff5297}.theme-vchatdark .chat_alert_pink .subheader_announcement_text{color:#33d5ff}.theme-vchatdark .chat_alert_pink .minor_announcement_text,.theme-vchatdark .chat_alert_pink .major_announcement_text{background-color:#17000d}.theme-vchatdark .chat_alert_yellow{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#4d4100,#4d4100 10px,#574a00 10px,#574a00 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.theme-vchatdark .chat_alert_yellow .major_announcement_title,.theme-vchatdark .chat_alert_yellow .minor_announcement_title{color:#fff4e0}.theme-vchatdark .chat_alert_yellow .subheader_announcement_text{color:#33d5ff}.theme-vchatdark .chat_alert_yellow .minor_announcement_text,.theme-vchatdark .chat_alert_yellow .major_announcement_text{background-color:#3e3400}.theme-vchatdark .chat_alert_orange{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#6b4200,#6b4200 10px,#593400 10px,#593400 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.theme-vchatdark .chat_alert_orange .major_announcement_title,.theme-vchatdark .chat_alert_orange .minor_announcement_title{color:#feefe7}.theme-vchatdark .chat_alert_orange .subheader_announcement_text{color:#33d5ff}.theme-vchatdark .chat_alert_orange .minor_announcement_text,.theme-vchatdark .chat_alert_orange .major_announcement_text{background-color:#402500}.theme-vchatdark .chat_alert_red{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#520000,#520000 10px,#420000 10px,#420000 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.theme-vchatdark .chat_alert_red .major_announcement_title,.theme-vchatdark .chat_alert_red .minor_announcement_title{color:#ff5297}.theme-vchatdark .chat_alert_red .subheader_announcement_text{color:#33d5ff}.theme-vchatdark .chat_alert_red .minor_announcement_text,.theme-vchatdark .chat_alert_red .major_announcement_text{background-color:#290000}.theme-vchatdark .chat_alert_purple{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#38003d,#38003d 10px,#2c0030 10px,#2c0030 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.theme-vchatdark .chat_alert_purple .major_announcement_title,.theme-vchatdark .chat_alert_purple .minor_announcement_title{color:#c7a1f7}.theme-vchatdark .chat_alert_purple .subheader_announcement_text{color:#33d5ff}.theme-vchatdark .chat_alert_purple .minor_announcement_text,.theme-vchatdark .chat_alert_purple .major_announcement_text{background-color:#150017}.theme-vchatdark .chat_alert_grey{color:#fff;padding:.5rem;box-shadow:none;font-weight:700;margin:1rem 0;padding:0;display:flex;flex-direction:column;border-image:repeating-linear-gradient(-45deg,#292929,#292929 10px,#252525 10px,#252525 20px);border-image-slice:4 fill;border-width:4px;border-image-width:4px;border-image-outset:0 0 0 0;border-image-repeat:repeat repeat;border-style:solid}.theme-vchatdark .chat_alert_grey .major_announcement_title,.theme-vchatdark .chat_alert_grey .minor_announcement_title{color:#ff5297}.theme-vchatdark .chat_alert_grey .subheader_announcement_text{color:#33d5ff}.theme-vchatdark .chat_alert_grey .minor_announcement_text,.theme-vchatdark .chat_alert_grey .major_announcement_text{background-color:#181818}.theme-vchatdark .tajaran{color:#803b56}.theme-vchatdark .tajaran_signlang{color:#941c1c}.theme-vchatdark .akhani{color:#ac398c}.theme-vchatdark .skrell{color:#00b0b3}.theme-vchatdark .skrellfar{color:#70fcff}.theme-vchatdark .soghun{color:#50ba6c}.theme-vchatdark .solcom{color:#6da6f0}.theme-vchatdark .sergal{color:#07f}.theme-vchatdark .birdsongc{color:#c90}.theme-vchatdark .vulpkanin{color:#b97a57}.theme-vchatdark .tavan{color:#f54298;font-family:Arial}.theme-vchatdark .echosong{color:#826d8c}.theme-vchatdark .enochian{color:#848a33;letter-spacing:-1pt;word-spacing:4pt;font-family:Lucida Sans Unicode,Lucida Grande,sans-serif}.theme-vchatdark .daemon{color:#5e339e;letter-spacing:-1pt;word-spacing:0pt;font-family:Courier New,Courier,monospace}.theme-vchatdark .drudakar{color:#bb2463;word-spacing:0pt;font-family:High Tower Text,monospace}.theme-vchatdark .bug{color:#9e9e39}.theme-vchatdark .vox{color:#a0a}.theme-vchatdark .promethean{color:#a5a5a5;font-family:Comic Sans MS,Comic Sans,cursive}.theme-vchatdark .zaddat{color:#941c1c}.theme-vchatdark .rough{font-family:Trebuchet MS,cursive,sans-serif}.theme-vchatdark .say_quote{font-family:Georgia,Verdana,sans-serif}.theme-vchatdark .say_quote_italics{font-style:italic;font-family:Georgia,Verdana,sans-serif}.theme-vchatdark .terminus{font-family:Times New Roman,Times,serif,sans-serif}.theme-vchatdark .spacer{color:#9c660b}.theme-vchatdark .teppi{color:#816540;word-spacing:4pt;font-family:Segoe Script Bold,Segoe Script,sans-serif,Verdana}.theme-vchatdark .shadekin{color:#be3cc5;font-size:150%;font-weight:700;font-family:Gabriola,cursive,sans-serif;line-height:.3} diff --git a/tgui/public/tgui-panel.bundle.js b/tgui/public/tgui-panel.bundle.js deleted file mode 100644 index 705a833353..0000000000 --- a/tgui/public/tgui-panel.bundle.js +++ /dev/null @@ -1,598 +0,0 @@ -(function(){(function(){var Fc={75614:function(d,m,t){"use strict";/** - * @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. - */function n(e,r){return r!=null&&typeof Symbol!="undefined"&&r[Symbol.hasInstance]?!!r[Symbol.hasInstance](e):e instanceof r}function o(e){"@swc/helpers - typeof";return e&&typeof Symbol!="undefined"&&e.constructor===Symbol?"symbol":typeof e}var i=t(61358),s=t(20686);function u(e){for(var r="https://reactjs.org/docs/error-decoder.html?invariant="+e,a=1;ar}return!1}function j(e,r,a,c,T,M,$){this.acceptsBooleans=r===2||r===3||r===4,this.attributeName=c,this.attributeNamespace=T,this.mustUseProperty=a,this.propertyName=e,this.type=r,this.sanitizeURL=M,this.removeEmptyString=$}var B={};"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style".split(" ").forEach(function(e){B[e]=new j(e,0,!1,e,null,!1,!1)}),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach(function(e){var r=e[0];B[r]=new j(r,1,!1,e[1],null,!1,!1)}),["contentEditable","draggable","spellCheck","value"].forEach(function(e){B[e]=new j(e,2,!1,e.toLowerCase(),null,!1,!1)}),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach(function(e){B[e]=new j(e,2,!1,e,null,!1,!1)}),"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(e){B[e]=new j(e,3,!1,e.toLowerCase(),null,!1,!1)}),["checked","multiple","muted","selected"].forEach(function(e){B[e]=new j(e,3,!0,e,null,!1,!1)}),["capture","download"].forEach(function(e){B[e]=new j(e,4,!1,e,null,!1,!1)}),["cols","rows","size","span"].forEach(function(e){B[e]=new j(e,6,!1,e,null,!1,!1)}),["rowSpan","start"].forEach(function(e){B[e]=new j(e,5,!1,e.toLowerCase(),null,!1,!1)});var F=/[\-:]([a-z])/g;function P(e){return e[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(e){var r=e.replace(F,P);B[r]=new j(r,1,!1,e,null,!1,!1)}),"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type".split(" ").forEach(function(e){var r=e.replace(F,P);B[r]=new j(r,1,!1,e,"http://www.w3.org/1999/xlink",!1,!1)}),["xml:base","xml:lang","xml:space"].forEach(function(e){var r=e.replace(F,P);B[r]=new j(r,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1,!1)}),["tabIndex","crossOrigin"].forEach(function(e){B[e]=new j(e,1,!1,e.toLowerCase(),null,!1,!1)}),B.xlinkHref=new j("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0,!1),["src","href","action","formAction"].forEach(function(e){B[e]=new j(e,1,!1,e.toLowerCase(),null,!0,!0)});function b(e,r,a,c){var T=B.hasOwnProperty(r)?B[r]:null;(T!==null?T.type!==0:c||!(2q||T[$]!==M[q]){var mt="\n"+T[$].replace(" at new "," at ");return e.displayName&&mt.includes("")&&(mt=mt.replace("",e.displayName)),mt}while(1<=$&&0<=q);break}}}finally{ht=!1,Error.prepareStackTrace=a}return(e=e?e.displayName||e.name:"")?rt(e):""}function bt(e){switch(e.tag){case 5:return rt(e.type);case 16:return rt("Lazy");case 13:return rt("Suspense");case 19:return rt("SuspenseList");case 0:case 2:case 15:return e=vt(e.type,!1),e;case 11:return e=vt(e.type.render,!1),e;case 1:return e=vt(e.type,!0),e;default:return""}}function gt(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case K:return"Fragment";case W:return"Portal";case J:return"Profiler";case k:return"StrictMode";case at:return"Suspense";case et:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case X:return(e.displayName||"Context")+".Consumer";case H:return(e._context.displayName||"Context")+".Provider";case Y:var r=e.render;return e=e.displayName,e||(e=r.displayName||r.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case it:return r=e.displayName||null,r!==null?r:gt(e.type)||"Memo";case z:r=e._payload,e=e._init;try{return gt(e(r))}catch(a){}}return null}function pt(e){var r=e.type;switch(e.tag){case 24:return"Cache";case 9:return(r.displayName||"Context")+".Consumer";case 10:return(r._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=r.render,e=e.displayName||e.name||"",r.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return r;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return gt(r);case 8:return r===k?"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(typeof r=="function")return r.displayName||r.name||null;if(typeof r=="string")return r}return null}function Ut(e){switch(typeof e=="undefined"?"undefined":o(e)){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function xe(e){var r=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(r==="checkbox"||r==="radio")}function Se(e){var r=xe(e)?"checked":"value",a=Object.getOwnPropertyDescriptor(e.constructor.prototype,r),c=""+e[r];if(!e.hasOwnProperty(r)&&typeof a!="undefined"&&typeof a.get=="function"&&typeof a.set=="function"){var T=a.get,M=a.set;return Object.defineProperty(e,r,{configurable:!0,get:function(){return T.call(this)},set:function(q){c=""+q,M.call(this,q)}}),Object.defineProperty(e,r,{enumerable:a.enumerable}),{getValue:function(){return c},setValue:function(q){c=""+q},stopTracking:function(){e._valueTracker=null,delete e[r]}}}}function ee(e){e._valueTracker||(e._valueTracker=Se(e))}function jt(e){if(!e)return!1;var r=e._valueTracker;if(!r)return!0;var a=r.getValue(),c="";return e&&(c=xe(e)?e.checked?"true":"false":e.value),e=c,e!==a?(r.setValue(e),!0):!1}function Ft(e){if(e=e||(typeof document!="undefined"?document:void 0),typeof e=="undefined")return null;try{return e.activeElement||e.body}catch(r){return e.body}}function Gt(e,r){var a=r.checked;return Q({},r,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:a!=null?a:e._wrapperState.initialChecked})}function Ht(e,r){var a=r.defaultValue==null?"":r.defaultValue,c=r.checked!=null?r.checked:r.defaultChecked;a=Ut(r.value!=null?r.value:a),e._wrapperState={initialChecked:c,initialValue:a,controlled:r.type==="checkbox"||r.type==="radio"?r.checked!=null:r.value!=null}}function ve(e,r){r=r.checked,r!=null&&b(e,"checked",r,!1)}function he(e,r){ve(e,r);var a=Ut(r.value),c=r.type;if(a!=null)c==="number"?(a===0&&e.value===""||e.value!=a)&&(e.value=""+a):e.value!==""+a&&(e.value=""+a);else if(c==="submit"||c==="reset"){e.removeAttribute("value");return}r.hasOwnProperty("value")?zt(e,r.type,a):r.hasOwnProperty("defaultValue")&&zt(e,r.type,Ut(r.defaultValue)),r.checked==null&&r.defaultChecked!=null&&(e.defaultChecked=!!r.defaultChecked)}function ie(e,r,a){if(r.hasOwnProperty("value")||r.hasOwnProperty("defaultValue")){var c=r.type;if(!(c!=="submit"&&c!=="reset"||r.value!==void 0&&r.value!==null))return;r=""+e._wrapperState.initialValue,a||r===e.value||(e.value=r),e.defaultValue=r}a=e.name,a!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,a!==""&&(e.name=a)}function zt(e,r,a){(r!=="number"||Ft(e.ownerDocument)!==e)&&(a==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+a&&(e.defaultValue=""+a))}var Vt=Array.isArray;function wt(e,r,a,c){if(e=e.options,r){r={};for(var T=0;T"+r.valueOf().toString()+"",r=Oe.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;r.firstChild;)e.appendChild(r.firstChild)}});function de(e,r){if(r){var a=e.firstChild;if(a&&a===e.lastChild&&a.nodeType===3){a.nodeValue=r;return}}e.textContent=r}var Et={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},Rt=["Webkit","ms","Moz","O"];Object.keys(Et).forEach(function(e){Rt.forEach(function(r){r=r+e.charAt(0).toUpperCase()+e.substring(1),Et[r]=Et[e]})});function te(e,r,a){return r==null||typeof r=="boolean"||r===""?"":a||typeof r!="number"||r===0||Et.hasOwnProperty(e)&&Et[e]?(""+r).trim():r+"px"}function Ie(e,r){e=e.style;for(var a in r)if(r.hasOwnProperty(a)){var c=a.indexOf("--")===0,T=te(a,r[a],c);a==="float"&&(a="cssFloat"),c?e.setProperty(a,T):e[a]=T}}var Ke=Q({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function Fe(e,r){if(r){if(Ke[e]&&(r.children!=null||r.dangerouslySetInnerHTML!=null))throw Error(u(137,e));if(r.dangerouslySetInnerHTML!=null){if(r.children!=null)throw Error(u(60));if(typeof r.dangerouslySetInnerHTML!="object"||!("__html"in r.dangerouslySetInnerHTML))throw Error(u(61))}if(r.style!=null&&typeof r.style!="object")throw Error(u(62))}}function ir(e,r){if(e.indexOf("-")===-1)return typeof r.is=="string";switch(e){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!1;default:return!0}}var ar=null;function dr(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var nt=null,St=null,ut=null;function xt(e){if(e=Ma(e)){if(typeof nt!="function")throw Error(u(280));var r=e.stateNode;r&&(r=ja(r),nt(e.stateNode,e.type,r))}}function Pt(e){St?ut?ut.push(e):ut=[e]:St=e}function Kt(){if(St){var e=St,r=ut;if(ut=St=null,xt(e),r)for(e=0;e>>=0,e===0?32:31-(Hr(e)/En|0)|0}var sn=64,wr=4194304;function hn(e){switch(e&-e){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 e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Gr(e,r){var a=e.pendingLanes;if(a===0)return 0;var c=0,T=e.suspendedLanes,M=e.pingedLanes,$=a&268435455;if($!==0){var q=$&~T;q!==0?c=hn(q):(M&=$,M!==0&&(c=hn(M)))}else $=a&~T,$!==0?c=hn($):M!==0&&(c=hn(M));if(c===0)return 0;if(r!==0&&r!==c&&!(r&T)&&(T=c&-c,M=r&-r,T>=M||T===16&&(M&4194240)!==0))return r;if(c&4&&(c|=a&16),r=e.entangledLanes,r!==0)for(e=e.entanglements,r&=c;0a;a++)r.push(e);return r}function kr(e,r,a){e.pendingLanes|=r,r!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,r=31-Br(r),e[r]=a}function To(e,r){var a=e.pendingLanes&~r;e.pendingLanes=r,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=r,e.mutableReadLanes&=r,e.entangledLanes&=r,r=e.entanglements;var c=e.eventTimes;for(e=e.expirationTimes;0=_a),Pi=" ",Ci=!1;function ms(e,r){switch(e){case"keyup":return mu.indexOf(r.keyCode)!==-1;case"keydown":return r.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function gs(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var so=!1;function ys(e,r){switch(e){case"compositionend":return gs(r);case"keypress":return r.which!==32?null:(Ci=!0,Pi);case"textInput":return e=r.data,e===Pi&&Ci?null:e;default:return null}}function xs(e,r){if(so)return e==="compositionend"||!Ai&&ms(e,r)?(e=jr(),Ge=ye=Jt=null,so=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(r.ctrlKey||r.altKey||r.metaKey)||r.ctrlKey&&r.altKey){if(r.char&&1=r)return{node:a,offset:r-e};e=c}t:{for(;a;){if(a.nextSibling){a=a.nextSibling;break t}a=a.parentNode}a=void 0}a=Es(a)}}function Ea(e,r){return e&&r?e===r?!0:e&&e.nodeType===3?!1:r&&r.nodeType===3?Ea(e,r.parentNode):"contains"in e?e.contains(r):e.compareDocumentPosition?!!(e.compareDocumentPosition(r)&16):!1:!1}function Ts(){for(var e=window,r=Ft();n(r,e.HTMLIFrameElement);){try{var a=typeof r.contentWindow.location.href=="string"}catch(c){a=!1}if(a)e=r.contentWindow;else break;r=Ft(e.document)}return r}function bi(e){var r=e&&e.nodeName&&e.nodeName.toLowerCase();return r&&(r==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||r==="textarea"||e.contentEditable==="true")}function ra(e){var r=Ts(),a=e.focusedElem,c=e.selectionRange;if(r!==a&&a&&a.ownerDocument&&Ea(a.ownerDocument.documentElement,a)){if(c!==null&&bi(a)){if(r=c.start,e=c.end,e===void 0&&(e=r),"selectionStart"in a)a.selectionStart=r,a.selectionEnd=Math.min(e,a.value.length);else if(e=(r=a.ownerDocument||document)&&r.defaultView||window,e.getSelection){e=e.getSelection();var T=a.textContent.length,M=Math.min(c.start,T);c=c.end===void 0?M:Math.min(c.end,T),!e.extend&&M>c&&(T=c,c=M,M=T),T=Os(a,M);var $=Os(a,c);T&&$&&(e.rangeCount!==1||e.anchorNode!==T.node||e.anchorOffset!==T.offset||e.focusNode!==$.node||e.focusOffset!==$.offset)&&(r=r.createRange(),r.setStart(T.node,T.offset),e.removeAllRanges(),M>c?(e.addRange(r),e.extend($.node,$.offset)):(r.setEnd($.node,$.offset),e.addRange(r)))}}for(r=[],e=a;e=e.parentNode;)e.nodeType===1&&r.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof a.focus=="function"&&a.focus(),a=0;a=document.documentMode,Mo=null,Di=null,Oa=null,Is=!1;function Bi(e,r,a){var c=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;Is||Mo==null||Mo!==Ft(c)||(c=Mo,"selectionStart"in c&&bi(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset}),Oa&&Sa(Oa,c)||(Oa=c,c=Pa(Di,"onSelect"),0Na||(e.current=js[Na],js[Na]=null,Na--)}function xr(e,r){Na++,js[Na]=e.current,e.current=r}var Ko={},un=eo(Ko),gn=eo(!1),Vo=Ko;function Ho(e,r){var a=e.type.contextTypes;if(!a)return Ko;var c=e.stateNode;if(c&&c.__reactInternalMemoizedUnmaskedChildContext===r)return c.__reactInternalMemoizedMaskedChildContext;var T={},M;for(M in a)T[M]=r[M];return c&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=r,e.__reactInternalMemoizedMaskedChildContext=T),T}function In(e){return e=e.childContextTypes,e!=null}function Zi(){Ir(gn),Ir(un)}function ia(e,r,a){if(un.current!==Ko)throw Error(u(168));xr(un,r),xr(gn,a)}function Ns(e,r,a){var c=e.stateNode;if(r=r.childContextTypes,typeof c.getChildContext!="function")return a;c=c.getChildContext();for(var T in c)if(!(T in r))throw Error(u(108,pt(e)||"Unknown",T));return Q({},a,c)}function Ji(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Ko,Vo=un.current,xr(un,e),xr(gn,gn.current),!0}function qi(e,r,a){var c=e.stateNode;if(!c)throw Error(u(169));a?(e=Ns(e,r,Vo),c.__reactInternalMemoizedMergedChildContext=e,Ir(gn),Ir(un),xr(un,e)):Ir(gn),xr(gn,a)}var Hn=null,ii=!1,_i=!1;function si(e){Hn===null?Hn=[e]:Hn.push(e)}function Mu(e){ii=!0,si(e)}function vo(){if(!_i&&Hn!==null){_i=!0;var e=0,r=or;try{var a=Hn;for(or=1;e>=$,T-=$,po=1<<32-Br(r)+T|a<qe?(cn=Ye,Ye=null):cn=Ye.sibling;var mr=_t(At,Ye,Ct[qe],pe);if(mr===null){Ye===null&&(Ye=cn);break}e&&Ye&&mr.alternate===null&&r(At,Ye),yt=M(mr,yt,qe),ke===null?Be=mr:ke.sibling=mr,ke=mr,Ye=cn}if(qe===Ct.length)return a(At,Ye),br&&sa(At,qe),Be;if(Ye===null){for(;qeqe?(cn=Ye,Ye=null):cn=Ye.sibling;var ha=_t(At,Ye,mr.value,pe);if(ha===null){Ye===null&&(Ye=cn);break}e&&Ye&&ha.alternate===null&&r(At,Ye),yt=M(ha,yt,qe),ke===null?Be=ha:ke.sibling=ha,ke=ha,Ye=cn}if(mr.done)return a(At,Ye),br&&sa(At,qe),Be;if(Ye===null){for(;!mr.done;qe++,mr=Ct.next())mr=re(At,mr.value,pe),mr!==null&&(yt=M(mr,yt,qe),ke===null?Be=mr:ke.sibling=mr,ke=mr);return br&&sa(At,qe),Be}for(Ye=c(At,Ye);!mr.done;qe++,mr=Ct.next())mr=Ce(Ye,At,qe,mr.value,pe),mr!==null&&(e&&mr.alternate!==null&&Ye.delete(mr.key===null?qe:mr.key),yt=M(mr,yt,qe),ke===null?Be=mr:ke.sibling=mr,ke=mr);return e&&Ye.forEach(function(mf){return r(At,mf)}),br&&sa(At,qe),Be}function Yr(At,yt,Ct,pe){if(typeof Ct=="object"&&Ct!==null&&Ct.type===K&&Ct.key===null&&(Ct=Ct.props.children),typeof Ct=="object"&&Ct!==null){switch(Ct.$$typeof){case L:t:{for(var Be=Ct.key,ke=yt;ke!==null;){if(ke.key===Be){if(Be=Ct.type,Be===K){if(ke.tag===7){a(At,ke.sibling),yt=T(ke,Ct.props.children),yt.return=At,At=yt;break t}}else if(ke.elementType===Be||typeof Be=="object"&&Be!==null&&Be.$$typeof===z&&st(Be)===ke.type){a(At,ke.sibling),yt=T(ke,Ct.props),yt.ref=lt(At,ke,Ct),yt.return=At,At=yt;break t}a(At,ke);break}else r(At,ke);ke=ke.sibling}Ct.type===K?(yt=Ha(Ct.props.children,At.mode,pe,Ct.key),yt.return=At,At=yt):(pe=qs(Ct.type,Ct.key,Ct.props,null,At.mode,pe),pe.ref=lt(At,yt,Ct),pe.return=At,At=pe)}return $(At);case W:t:{for(ke=Ct.key;yt!==null;){if(yt.key===ke)if(yt.tag===4&&yt.stateNode.containerInfo===Ct.containerInfo&&yt.stateNode.implementation===Ct.implementation){a(At,yt.sibling),yt=T(yt,Ct.children||[]),yt.return=At,At=yt;break t}else{a(At,yt);break}else r(At,yt);yt=yt.sibling}yt=cl(Ct,At.mode,pe),yt.return=At,At=yt}return $(At);case z:return ke=Ct._init,Yr(At,yt,ke(Ct._payload),pe)}if(Vt(Ct))return Ne(At,yt,Ct,pe);if(G(Ct))return be(At,yt,Ct,pe);tt(At,Ct)}return typeof Ct=="string"&&Ct!==""||typeof Ct=="number"?(Ct=""+Ct,yt!==null&&yt.tag===6?(a(At,yt.sibling),yt=T(yt,Ct),yt.return=At,At=yt):(a(At,yt),yt=ll(Ct,At.mode,pe),yt.return=At,At=yt),$(At)):a(At,yt)}return Yr}var Wt=Dt(!0),Nt=Dt(!1),kt=eo(null),se=null,ue=null,ce=null;function Ae(){ce=ue=se=null}function De(e){var r=kt.current;Ir(kt),e._currentValue=r}function Yt(e,r,a){for(;e!==null;){var c=e.alternate;if((e.childLanes&r)!==r?(e.childLanes|=r,c!==null&&(c.childLanes|=r)):c!==null&&(c.childLanes&r)!==r&&(c.childLanes|=r),e===a)break;e=e.return}}function Ee(e,r){se=e,ce=ue=null,e=e.dependencies,e!==null&&e.firstContext!==null&&(e.lanes&r&&(Bn=!0),e.firstContext=null)}function Pe(e){var r=e._currentValue;if(ce!==e)if(e={context:e,memoizedValue:r,next:null},ue===null){if(se===null)throw Error(u(308));ue=e,se.dependencies={lanes:0,firstContext:e}}else ue=ue.next=e;return r}var Ze=null;function $e(e){Ze===null?Ze=[e]:Ze.push(e)}function tr(e,r,a,c){var T=r.interleaved;return T===null?(a.next=a,$e(r)):(a.next=T.next,T.next=a),r.interleaved=a,oe(e,c)}function oe(e,r){e.lanes|=r;var a=e.alternate;for(a!==null&&(a.lanes|=r),a=e,e=e.return;e!==null;)e.childLanes|=r,a=e.alternate,a!==null&&(a.childLanes|=r),a=e,e=e.return;return a.tag===3?a.stateNode:null}var Ue=!1;function He(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}function cr(e,r){e=e.updateQueue,r.updateQueue===e&&(r.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,effects:e.effects})}function yr(e,r){return{eventTime:e,lane:r,tag:0,payload:null,callback:null,next:null}}function Wr(e,r,a){var c=e.updateQueue;if(c===null)return null;if(c=c.shared,hr&2){var T=c.pending;return T===null?r.next=r:(r.next=T.next,T.next=r),c.pending=r,oe(e,a)}return T=c.interleaved,T===null?(r.next=r,$e(c)):(r.next=T.next,T.next=r),c.interleaved=r,oe(e,a)}function Sr(e,r,a){if(r=r.updateQueue,r!==null&&(r=r.shared,(a&4194240)!==0)){var c=r.lanes;c&=e.pendingLanes,a|=c,r.lanes=a,Xr(e,a)}}function rn(e,r){var a=e.updateQueue,c=e.alternate;if(c!==null&&(c=c.updateQueue,a===c)){var T=null,M=null;if(a=a.firstBaseUpdate,a!==null){do{var $={eventTime:a.eventTime,lane:a.lane,tag:a.tag,payload:a.payload,callback:a.callback,next:null};M===null?T=M=$:M=M.next=$,a=a.next}while(a!==null);M===null?T=M=r:M=M.next=r}else T=M=r;a={baseState:c.baseState,firstBaseUpdate:T,lastBaseUpdate:M,shared:c.shared,effects:c.effects},e.updateQueue=a;return}e=a.lastBaseUpdate,e===null?a.firstBaseUpdate=r:e.next=r,a.lastBaseUpdate=r}function Ln(e,r,a,c){var T=e.updateQueue;Ue=!1;var M=T.firstBaseUpdate,$=T.lastBaseUpdate,q=T.shared.pending;if(q!==null){T.shared.pending=null;var mt=q,Lt=mt.next;mt.next=null,$===null?M=Lt:$.next=Lt,$=mt;var $t=e.alternate;$t!==null&&($t=$t.updateQueue,q=$t.lastBaseUpdate,q!==$&&(q===null?$t.firstBaseUpdate=Lt:q.next=Lt,$t.lastBaseUpdate=mt))}if(M!==null){var re=T.baseState;$=0,$t=Lt=mt=null,q=M;do{var _t=q.lane,Ce=q.eventTime;if((c&_t)===_t){$t!==null&&($t=$t.next={eventTime:Ce,lane:0,tag:q.tag,payload:q.payload,callback:q.callback,next:null});t:{var Ne=e,be=q;switch(_t=r,Ce=a,be.tag){case 1:if(Ne=be.payload,typeof Ne=="function"){re=Ne.call(Ce,re,_t);break t}re=Ne;break t;case 3:Ne.flags=Ne.flags&-65537|128;case 0:if(Ne=be.payload,_t=typeof Ne=="function"?Ne.call(Ce,re,_t):Ne,_t==null)break t;re=Q({},re,_t);break t;case 2:Ue=!0}}q.callback!==null&&q.lane!==0&&(e.flags|=64,_t=T.effects,_t===null?T.effects=[q]:_t.push(q))}else Ce={eventTime:Ce,lane:_t,tag:q.tag,payload:q.payload,callback:q.callback,next:null},$t===null?(Lt=$t=Ce,mt=re):$t=$t.next=Ce,$|=_t;if(q=q.next,q===null){if(q=T.shared.pending,q===null)break;_t=q,q=_t.next,_t.next=null,T.lastBaseUpdate=_t,T.shared.pending=null}}while(!0);if($t===null&&(mt=re),T.baseState=mt,T.firstBaseUpdate=Lt,T.lastBaseUpdate=$t,r=T.shared.interleaved,r!==null){T=r;do $|=T.lane,T=T.next;while(T!==r)}else M===null&&(T.shared.lanes=0);Wa|=$,e.lanes=$,e.memoizedState=re}}function pr(e,r,a){if(e=r.effects,r.effects=null,e!==null)for(r=0;ra?a:4,e(!0);var c=es.transition;es.transition={};try{e(!1),r()}finally{or=a,es.transition=c}}function zl(){return Pn().memoizedState}function zc(e,r,a){var c=fa(e);if(a={lane:c,action:a,hasEagerState:!1,eagerState:null,next:null},Wl(e))$l(r,a);else if(a=tr(e,r,a,c),a!==null){var T=Rn();So(a,e,c,T),Kl(a,r,c)}}function Wc(e,r,a){var c=fa(e),T={lane:c,action:a,hasEagerState:!1,eagerState:null,next:null};if(Wl(e))$l(r,T);else{var M=e.alternate;if(e.lanes===0&&(M===null||M.lanes===0)&&(M=r.lastRenderedReducer,M!==null))try{var $=r.lastRenderedState,q=M($,a);if(T.hasEagerState=!0,T.eagerState=q,Mn(q,$)){var mt=r.interleaved;mt===null?(T.next=T,$e(r)):(T.next=mt.next,mt.next=T),r.interleaved=T;return}}catch(Lt){}finally{}a=tr(e,r,T,c),a!==null&&(T=Rn(),So(a,e,c,T),Kl(a,r,c))}}function Wl(e){var r=e.alternate;return e===Cr||r!==null&&r===Cr}function $l(e,r){Gn=ci=!0;var a=e.pending;a===null?r.next=r:(r.next=a.next,a.next=r),e.pending=r}function Kl(e,r,a){if(a&4194240){var c=r.lanes;c&=e.pendingLanes,a|=c,r.lanes=a,Xr(e,a)}}var Us={readContext:Pe,useCallback:on,useContext:on,useEffect:on,useImperativeHandle:on,useInsertionEffect:on,useLayoutEffect:on,useMemo:on,useReducer:on,useRef:on,useState:on,useDebugValue:on,useDeferredValue:on,useTransition:on,useMutableSource:on,useSyncExternalStore:on,useId:on,unstable_isNewReconciler:!1},$c={readContext:Pe,useCallback:function(r,a){return kn().memoizedState=[r,a===void 0?null:a],r},useContext:Pe,useEffect:jl,useImperativeHandle:function(r,a,c){return c=c!=null?c.concat([r]):null,Bs(4194308,4,Ll.bind(null,a,r),c)},useLayoutEffect:function(r,a){return Bs(4194308,4,r,a)},useInsertionEffect:function(r,a){return Bs(4,2,r,a)},useMemo:function(r,a){var c=kn();return a=a===void 0?null:a,r=r(),c.memoizedState=[r,a],r},useReducer:function(r,a,c){var T=kn();return a=c!==void 0?c(a):a,T.memoizedState=T.baseState=a,r={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:r,lastRenderedState:a},T.queue=r,r=r.dispatch=zc.bind(null,Cr,r),[T.memoizedState,r]},useRef:function(r){var a=kn();return r={current:r},a.memoizedState=r},useState:wl,useDebugValue:Bu,useDeferredValue:function(r){return kn().memoizedState=r},useTransition:function(){var r=wl(!1),a=r[0];return r=Uc.bind(null,r[1]),kn().memoizedState=r,[a,r]},useMutableSource:function(){},useSyncExternalStore:function(r,a,c){var T=Cr,M=kn();if(br){if(c===void 0)throw Error(u(407));c=c()}else{if(c=a(),ln===null)throw Error(u(349));Go&30||Il(T,a,c)}M.memoizedState=c;var $={value:c,getSnapshot:a};return M.queue=$,jl(Pl.bind(null,T,$,r),[r]),T.flags|=2048,ns(9,Al.bind(null,T,$,c,a),void 0,null),c},useId:function(){var r=kn(),a=ln.identifierPrefix;if(br){var c=bo,T=po;c=(T&~(1<<32-Br(T)-1)).toString(32)+c,a=":"+a+"R"+c,c=Do++,0<\/script>",e=e.removeChild(e.firstChild)):typeof c.is=="string"?e=$.createElement(a,{is:c.is}):(e=$.createElement(a),a==="select"&&($=e,c.multiple?$.multiple=!0:c.size&&($.size=c.size))):e=$.createElementNS(e,a),e[Vn]=r,e[$o]=c,uc(e,r,!1,!1),r.stateNode=e;t:{switch($=ir(a,c),a){case"dialog":Tr("cancel",e),Tr("close",e),T=c;break;case"iframe":case"object":case"embed":Tr("load",e),T=c;break;case"video":case"audio":for(T=0;Tmi&&(r.flags|=128,c=!0,os(M,!1),r.lanes=4194304)}else{if(!c)if(e=li($),e!==null){if(r.flags|=128,c=!0,a=e.updateQueue,a!==null&&(r.updateQueue=a,r.flags|=4),os(M,!0),M.tail===null&&M.tailMode==="hidden"&&!$.alternate&&!br)return xn(r),null}else 2*Qe()-M.renderingStartTime>mi&&a!==1073741824&&(r.flags|=128,c=!0,os(M,!1),r.lanes=4194304);M.isBackwards?($.sibling=r.child,r.child=$):(a=M.last,a!==null?a.sibling=$:r.child=$,M.last=$)}return M.tail!==null?(r=M.tail,M.rendering=r,M.tail=r.sibling,M.renderingStartTime=Qe(),r.sibling=null,a=Ar.current,xr(Ar,c?a&1|2:a&1),r):(xn(r),null);case 22:case 23:return il(),c=r.memoizedState!==null,e!==null&&e.memoizedState!==null!==c&&(r.flags|=8192),c&&r.mode&1?Yn&1073741824&&(xn(r),r.subtreeFlags&6&&(r.flags|=8192)):xn(r),null;case 24:return null;case 25:return null}throw Error(u(156,r.tag))}function Qc(e,r){switch(Ls(r),r.tag){case 1:return In(r.type)&&Zi(),e=r.flags,e&65536?(r.flags=e&-65537|128,r):null;case 3:return no(),Ir(gn),Ir(un),ts(),e=r.flags,e&65536&&!(e&128)?(r.flags=e&-65537|128,r):null;case 5:return mo(r),null;case 13:if(Ir(Ar),e=r.memoizedState,e!==null&&e.dehydrated!==null){if(r.alternate===null)throw Error(u(340));U()}return e=r.flags,e&65536?(r.flags=e&-65537|128,r):null;case 19:return Ir(Ar),null;case 4:return no(),null;case 10:return De(r.type._context),null;case 22:case 23:return il(),null;case 24:return null;default:return null}}var Ks=!1,Sn=!1,Zc=typeof WeakSet=="function"?WeakSet:Set,je=null;function hi(e,r){var a=e.ref;if(a!==null)if(typeof a=="function")try{a(null)}catch(c){Kr(e,r,c)}else a.current=null}function Xu(e,r,a){try{a()}catch(c){Kr(e,r,c)}}var fc=!1;function Jc(e,r){if(Ki=$n,e=Ts(),bi(e)){if("selectionStart"in e)var a={start:e.selectionStart,end:e.selectionEnd};else t:{a=(a=e.ownerDocument)&&a.defaultView||window;var c=a.getSelection&&a.getSelection();if(c&&c.rangeCount!==0){a=c.anchorNode;var T=c.anchorOffset,M=c.focusNode;c=c.focusOffset;try{a.nodeType,M.nodeType}catch(pe){a=null;break t}var $=0,q=-1,mt=-1,Lt=0,$t=0,re=e,_t=null;e:for(;;){for(var Ce;re!==a||T!==0&&re.nodeType!==3||(q=$+T),re!==M||c!==0&&re.nodeType!==3||(mt=$+c),re.nodeType===3&&($+=re.nodeValue.length),(Ce=re.firstChild)!==null;)_t=re,re=Ce;for(;;){if(re===e)break e;if(_t===a&&++Lt===T&&(q=$),_t===M&&++$t===c&&(mt=$),(Ce=re.nextSibling)!==null)break;re=_t,_t=re.parentNode}re=Ce}a=q===-1||mt===-1?null:{start:q,end:mt}}else a=null}a=a||{start:0,end:0}}else a=null;for(Vi={focusedElem:e,selectionRange:a},$n=!1,je=r;je!==null;)if(r=je,e=r.child,(r.subtreeFlags&1028)!==0&&e!==null)e.return=r,je=e;else for(;je!==null;){r=je;try{var Ne=r.alternate;if(r.flags&1024)switch(r.tag){case 0:case 11:case 15:break;case 1:if(Ne!==null){var be=Ne.memoizedProps,Yr=Ne.memoizedState,At=r.stateNode,yt=At.getSnapshotBeforeUpdate(r.elementType===r.type?be:go(r.type,be),Yr);At.__reactInternalSnapshotBeforeUpdate=yt}break;case 3:var Ct=r.stateNode.containerInfo;Ct.nodeType===1?Ct.textContent="":Ct.nodeType===9&&Ct.documentElement&&Ct.removeChild(Ct.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(u(163))}}catch(pe){Kr(r,r.return,pe)}if(e=r.sibling,e!==null){e.return=r.return,je=e;break}je=r.return}return Ne=fc,fc=!1,Ne}function as(e,r,a){var c=r.updateQueue;if(c=c!==null?c.lastEffect:null,c!==null){var T=c=c.next;do{if((T.tag&e)===e){var M=T.destroy;T.destroy=void 0,M!==void 0&&Xu(r,a,M)}T=T.next}while(T!==c)}}function Vs(e,r){if(r=r.updateQueue,r=r!==null?r.lastEffect:null,r!==null){var a=r=r.next;do{if((a.tag&e)===e){var c=a.create;a.destroy=c()}a=a.next}while(a!==r)}}function Qu(e){var r=e.ref;if(r!==null){var a=e.stateNode;switch(e.tag){case 5:e=a;break;default:e=a}typeof r=="function"?r(e):r.current=e}}function dc(e){var r=e.alternate;r!==null&&(e.alternate=null,dc(r)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(r=e.stateNode,r!==null&&(delete r[Vn],delete r[$o],delete r[Xi],delete r[Qi],delete r[wu])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function vc(e){return e.tag===5||e.tag===3||e.tag===4}function hc(e){t:for(;;){for(;e.sibling===null;){if(e.return===null||vc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue t;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Zu(e,r,a){var c=e.tag;if(c===5||c===6)e=e.stateNode,r?a.nodeType===8?a.parentNode.insertBefore(e,r):a.insertBefore(e,r):(a.nodeType===8?(r=a.parentNode,r.insertBefore(e,a)):(r=a,r.appendChild(e)),a=a._reactRootContainer,a!=null||r.onclick!==null||(r.onclick=ai));else if(c!==4&&(e=e.child,e!==null))for(Zu(e,r,a),e=e.sibling;e!==null;)Zu(e,r,a),e=e.sibling}function Ju(e,r,a){var c=e.tag;if(c===5||c===6)e=e.stateNode,r?a.insertBefore(e,r):a.appendChild(e);else if(c!==4&&(e=e.child,e!==null))for(Ju(e,r,a),e=e.sibling;e!==null;)Ju(e,r,a),e=e.sibling}var dn=null,yo=!1;function ua(e,r,a){for(a=a.child;a!==null;)pc(e,r,a),a=a.sibling}function pc(e,r,a){if(Pr&&typeof Pr.onCommitFiberUnmount=="function")try{Pr.onCommitFiberUnmount(vr,a)}catch(q){}switch(a.tag){case 5:Sn||hi(a,r);case 6:var c=dn,T=yo;dn=null,ua(e,r,a),dn=c,yo=T,dn!==null&&(yo?(e=dn,a=a.stateNode,e.nodeType===8?e.parentNode.removeChild(a):e.removeChild(a)):dn.removeChild(a.stateNode));break;case 18:dn!==null&&(yo?(e=dn,a=a.stateNode,e.nodeType===8?wa(e.parentNode,a):e.nodeType===1&&wa(e,a),Wn(e)):wa(dn,a.stateNode));break;case 4:c=dn,T=yo,dn=a.stateNode.containerInfo,yo=!0,ua(e,r,a),dn=c,yo=T;break;case 0:case 11:case 14:case 15:if(!Sn&&(c=a.updateQueue,c!==null&&(c=c.lastEffect,c!==null))){T=c=c.next;do{var M=T,$=M.destroy;M=M.tag,$!==void 0&&(M&2||M&4)&&Xu(a,r,$),T=T.next}while(T!==c)}ua(e,r,a);break;case 1:if(!Sn&&(hi(a,r),c=a.stateNode,typeof c.componentWillUnmount=="function"))try{c.props=a.memoizedProps,c.state=a.memoizedState,c.componentWillUnmount()}catch(q){Kr(a,r,q)}ua(e,r,a);break;case 21:ua(e,r,a);break;case 22:a.mode&1?(Sn=(c=Sn)||a.memoizedState!==null,ua(e,r,a),Sn=c):ua(e,r,a);break;default:ua(e,r,a)}}function mc(e){var r=e.updateQueue;if(r!==null){e.updateQueue=null;var a=e.stateNode;a===null&&(a=e.stateNode=new Zc),r.forEach(function(c){var T=sf.bind(null,e,c);a.has(c)||(a.add(c),c.then(T,T))})}}function xo(e,r){var a=r.deletions;if(a!==null)for(var c=0;cT&&(T=$),c&=~M}if(c=T,c=Qe()-c,c=(120>c?120:480>c?480:1080>c?1080:1920>c?1920:3e3>c?3e3:4320>c?4320:1960*_c(c/1960))-c,10e?16:e,ca===null)var c=!1;else{if(e=ca,ca=null,Xs=0,hr&6)throw Error(u(331));var T=hr;for(hr|=4,je=e.current;je!==null;){var M=je,$=M.child;if(je.flags&16){var q=M.deletions;if(q!==null){for(var mt=0;mtQe()-tl?Ka(e,0):_u|=a),Un(e,r)}function wc(e,r){r===0&&(e.mode&1?(r=wr,wr<<=1,!(wr&130023424)&&(wr=4194304)):r=1);var a=Rn();e=oe(e,r),e!==null&&(kr(e,r,a),Un(e,a))}function af(e){var r=e.memoizedState,a=0;r!==null&&(a=r.retryLane),wc(e,a)}function sf(e,r){var a=0;switch(e.tag){case 13:var c=e.stateNode,T=e.memoizedState;T!==null&&(a=T.retryLane);break;case 19:c=e.stateNode;break;default:throw Error(u(314))}c!==null&&c.delete(r),wc(e,a)}var Mc;Mc=function(r,a,c){if(r!==null)if(r.memoizedProps!==a.pendingProps||gn.current)Bn=!0;else{if(!(r.lanes&c)&&!(a.flags&128))return Bn=!1,Yc(r,a,c);Bn=!!(r.flags&131072)}else Bn=!1,br&&a.flags&1048576&&ui(a,Da,a.index);switch(a.lanes=0,a.tag){case 2:var T=a.type;$s(r,a),r=a.pendingProps;var M=Ho(a,un.current);Ee(a,c),M=fi(null,a,T,r,M,c);var $=di();return a.flags|=1,typeof M=="object"&&M!==null&&typeof M.render=="function"&&M.$$typeof===void 0?(a.tag=1,a.memoizedState=null,a.updateQueue=null,In(T)?($=!0,Ji(a)):$=!1,a.memoizedState=M.state!==null&&M.state!==void 0?M.state:null,He(a),M.updater=zs,a.stateNode=M,M._reactInternals=a,Uu(a,T,r,c),a=Ku(null,a,T,!0,$,c)):(a.tag=0,br&&$&&bs(a),Cn(null,a,M,c),a=a.child),a;case 16:T=a.elementType;t:{switch($s(r,a),r=a.pendingProps,M=T._init,T=M(T._payload),a.type=T,M=a.tag=lf(T),r=go(T,r),M){case 0:a=$u(null,a,T,r,c);break t;case 1:a=rc(null,a,T,r,c);break t;case 11:a=Jl(null,a,T,r,c);break t;case 14:a=ql(null,a,T,go(T.type,r),c);break t}throw Error(u(306,T,""))}return a;case 0:return T=a.type,M=a.pendingProps,M=a.elementType===T?M:go(T,M),$u(r,a,T,M,c);case 1:return T=a.type,M=a.pendingProps,M=a.elementType===T?M:go(T,M),rc(r,a,T,M,c);case 3:t:{if(nc(a),r===null)throw Error(u(387));T=a.pendingProps,$=a.memoizedState,M=$.element,cr(r,a),Ln(a,T,null,c);var q=a.memoizedState;if(T=q.element,$.isDehydrated)if($={element:T,isDehydrated:!1,cache:q.cache,pendingSuspenseBoundaries:q.pendingSuspenseBoundaries,transitions:q.transitions},a.updateQueue.baseState=$,a.memoizedState=$,a.flags&256){M=vi(Error(u(423)),a),a=oc(r,a,T,c,M);break t}else if(T!==M){M=vi(Error(u(424)),a),a=oc(r,a,T,c,M);break t}else for(bn=Kn(a.stateNode.containerInfo.firstChild),Nn=a,br=!0,An=null,c=Nt(a,null,T,c),a.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{if(U(),T===M){a=ko(r,a,c);break t}Cn(r,a,T,c)}a=a.child}return a;case 5:return Ba(a),r===null&&y(a),T=a.type,M=a.pendingProps,$=r!==null?r.memoizedProps:null,q=M.children,Ra(T,M)?q=null:$!==null&&Ra(T,$)&&(a.flags|=32),ec(r,a),Cn(r,a,q,c),a.child;case 6:return r===null&&y(a),null;case 13:return ac(r,a,c);case 4:return ro(a,a.stateNode.containerInfo),T=a.pendingProps,r===null?a.child=Wt(a,null,T,c):Cn(r,a,T,c),a.child;case 11:return T=a.type,M=a.pendingProps,M=a.elementType===T?M:go(T,M),Jl(r,a,T,M,c);case 7:return Cn(r,a,a.pendingProps,c),a.child;case 8:return Cn(r,a,a.pendingProps.children,c),a.child;case 12:return Cn(r,a,a.pendingProps.children,c),a.child;case 10:t:{if(T=a.type._context,M=a.pendingProps,$=a.memoizedProps,q=M.value,xr(kt,T._currentValue),T._currentValue=q,$!==null)if(Mn($.value,q)){if($.children===M.children&&!gn.current){a=ko(r,a,c);break t}}else for($=a.child,$!==null&&($.return=a);$!==null;){var mt=$.dependencies;if(mt!==null){q=$.child;for(var Lt=mt.firstContext;Lt!==null;){if(Lt.context===T){if($.tag===1){Lt=yr(-1,c&-c),Lt.tag=2;var $t=$.updateQueue;if($t!==null){$t=$t.shared;var re=$t.pending;re===null?Lt.next=Lt:(Lt.next=re.next,re.next=Lt),$t.pending=Lt}}$.lanes|=c,Lt=$.alternate,Lt!==null&&(Lt.lanes|=c),Yt($.return,c,a),mt.lanes|=c;break}Lt=Lt.next}}else if($.tag===10)q=$.type===a.type?null:$.child;else if($.tag===18){if(q=$.return,q===null)throw Error(u(341));q.lanes|=c,mt=q.alternate,mt!==null&&(mt.lanes|=c),Yt(q,c,a),q=$.sibling}else q=$.child;if(q!==null)q.return=$;else for(q=$;q!==null;){if(q===a){q=null;break}if($=q.sibling,$!==null){$.return=q.return,q=$;break}q=q.return}$=q}Cn(r,a,M.children,c),a=a.child}return a;case 9:return M=a.type,T=a.pendingProps.children,Ee(a,c),M=Pe(M),T=T(M),a.flags|=1,Cn(r,a,T,c),a.child;case 14:return T=a.type,M=go(T,a.pendingProps),M=go(T.type,M),ql(r,a,T,M,c);case 15:return _l(r,a,a.type,a.pendingProps,c);case 17:return T=a.type,M=a.pendingProps,M=a.elementType===T?M:go(T,M),$s(r,a),a.tag=1,In(T)?(r=!0,Ji(a)):r=!1,Ee(a,c),Hl(a,T,M),Uu(a,T,M,c),Ku(null,a,T,!0,r,c);case 19:return sc(r,a,c);case 22:return tc(r,a,c)}throw Error(u(156,a.tag))};function jc(e,r){return ae(e,r)}function uf(e,r,a,c){this.tag=e,this.key=a,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=r,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=c,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function ao(e,r,a,c){return new uf(e,r,a,c)}function ul(e){return e=e.prototype,!(!e||!e.isReactComponent)}function lf(e){if(typeof e=="function")return ul(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Y)return 11;if(e===it)return 14}return 2}function va(e,r){var a=e.alternate;return a===null?(a=ao(e.tag,r,e.key,e.mode),a.elementType=e.elementType,a.type=e.type,a.stateNode=e.stateNode,a.alternate=e,e.alternate=a):(a.pendingProps=r,a.type=e.type,a.flags=0,a.subtreeFlags=0,a.deletions=null),a.flags=e.flags&14680064,a.childLanes=e.childLanes,a.lanes=e.lanes,a.child=e.child,a.memoizedProps=e.memoizedProps,a.memoizedState=e.memoizedState,a.updateQueue=e.updateQueue,r=e.dependencies,a.dependencies=r===null?null:{lanes:r.lanes,firstContext:r.firstContext},a.sibling=e.sibling,a.index=e.index,a.ref=e.ref,a}function qs(e,r,a,c,T,M){var $=2;if(c=e,typeof e=="function")ul(e)&&($=1);else if(typeof e=="string")$=5;else t:switch(e){case K:return Ha(a.children,T,M,r);case k:$=8,T|=8;break;case J:return e=ao(12,a,r,T|2),e.elementType=J,e.lanes=M,e;case at:return e=ao(13,a,r,T),e.elementType=at,e.lanes=M,e;case et:return e=ao(19,a,r,T),e.elementType=et,e.lanes=M,e;case V:return _s(a,T,M,r);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case H:$=10;break t;case X:$=9;break t;case Y:$=11;break t;case it:$=14;break t;case z:$=16,c=null;break t}throw Error(u(130,e==null?e:typeof e=="undefined"?"undefined":o(e),""))}return r=ao($,a,r,T),r.elementType=e,r.type=c,r.lanes=M,r}function Ha(e,r,a,c){return e=ao(7,e,c,r),e.lanes=a,e}function _s(e,r,a,c){return e=ao(22,e,c,r),e.elementType=V,e.lanes=a,e.stateNode={isHidden:!1},e}function ll(e,r,a){return e=ao(6,e,null,r),e.lanes=a,e}function cl(e,r,a){return r=ao(4,e.children!==null?e.children:[],e.key,r),r.lanes=a,r.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},r}function cf(e,r,a,c,T){this.tag=r,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=Oo(0),this.expirationTimes=Oo(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=Oo(0),this.identifierPrefix=c,this.onRecoverableError=T,this.mutableSourceEagerHydrationData=null}function fl(e,r,a,c,T,M,$,q,mt){return e=new cf(e,r,a,q,mt),r===1?(r=1,M===!0&&(r|=8)):r=0,M=ao(3,null,null,r),e.current=M,M.stateNode=e,M.memoizedState={element:c,isDehydrated:a,cache:null,transitions:null,pendingSuspenseBoundaries:null},He(M),e}function ff(e,r,a){var c=3Tt.length)&&(Mt=Tt.length);for(var Xt=0,ge=new Array(Mt);Xt1?Xt-1:0),Oe=1;Oe/gm),jt=w(/\${[\w\W]*}/gm),Ft=w(/^data-[\-\w.\u00B7-\uFFFF]/),Gt=w(/^aria-[\-\w]+$/),Ht=w(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),ve=w(/^(?:\w+script|data):/i),he=w(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),ie=w(/^html$/i),zt=w(/^[a-z][.\w]*(-[.\w]+)+$/i),Vt=function(){return typeof window=="undefined"?null:window},wt=function(Mt,Xt){if(t(Mt)!=="object"||typeof Mt.createPolicy!="function")return null;var ge=null,Oe="data-tt-policy-suffix";Xt.currentScript&&Xt.currentScript.hasAttribute(Oe)&&(ge=Xt.currentScript.getAttribute(Oe));var Te="dompurify"+(ge?"#"+ge:"");try{return Mt.createPolicy(Te,{createHTML:function(Et){return Et},createScriptURL:function(Et){return Et}})}catch(de){return console.warn("TrustedTypes policy "+Te+" could not be created."),null}};function qt(){var Tt=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Vt(),Mt=function(ft){return qt(ft)};if(Mt.version="2.5.3",Mt.removed=[],!Tt||!Tt.document||Tt.document.nodeType!==9)return Mt.isSupported=!1,Mt;var Xt=Tt.document,ge=Tt.document,Oe=Tt.DocumentFragment,Te=Tt.HTMLTemplateElement,de=Tt.Node,Et=Tt.Element,Rt=Tt.NodeFilter,te=Tt.NamedNodeMap,Ie=te===void 0?Tt.NamedNodeMap||Tt.MozNamedAttrMap:te,Ke=Tt.HTMLFormElement,Fe=Tt.DOMParser,ir=Tt.trustedTypes,ar=Et.prototype,dr=_(ar,"cloneNode"),nt=_(ar,"nextSibling"),St=_(ar,"childNodes"),ut=_(ar,"parentNode");if(typeof Te=="function"){var xt=ge.createElement("template");xt.content&&xt.content.ownerDocument&&(ge=xt.content.ownerDocument)}var Pt=wt(ir,Xt),Kt=Pt?Pt.createHTML(""):"",fe=ge,le=fe.implementation,Re=fe.createNodeIterator,ne=fe.createDocumentFragment,Ve=fe.getElementsByTagName,We=Xt.importNode,Je={};try{Je=V(ge).documentMode?ge.documentMode:{}}catch(Me){}var Le={};Mt.isSupported=typeof ut=="function"&&le&&le.createHTMLDocument!==void 0&&Je!==9;var Xe=Se,er=ee,ze=jt,sr=Ft,ur=Gt,Dr=ve,_r=he,dt=zt,Qt=Ht,It=null,Ot=z({},[].concat(s(G),s(Q),s(ct),s(ht),s(bt))),Bt=null,we=z({},[].concat(s(gt),s(pt),s(Ut),s(xe))),ae=Object.seal(Object.create(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),_e=null,fr=null,lr=!0,Qe=!0,Zt=!1,rr=!0,gr=!1,Vr=!0,Rr=!1,zr=!1,vr=!1,Pr=!1,wn=!1,Br=!1,Hr=!0,En=!1,Xn="user-content-",sn=!0,wr=!1,hn={},Gr=null,Xo=z({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]),io=null,pn=z({},["audio","video","img","source","image","track"]),Eo=null,Oo=z({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),kr="http://www.w3.org/1998/Math/MathML",To="http://www.w3.org/2000/svg",Xr="http://www.w3.org/1999/xhtml",or=Xr,Io=!1,zn=null,Qo=z({},[kr,To,Xr],W),Qn,Ga=["application/xhtml+xml","text/html"],ka="text/html",Mr,On=null,mn=255,Zn=ge.createElement("form"),Tn=function(ft){return m(ft,RegExp)||m(ft,Function)},Jn=function(ft){On&&On===ft||((!ft||t(ft)!=="object")&&(ft={}),ft=V(ft),Qn=Ga.indexOf(ft.PARSER_MEDIA_TYPE)===-1?Qn=ka:Qn=ft.PARSER_MEDIA_TYPE,Mr=Qn==="application/xhtml+xml"?W:L,It="ALLOWED_TAGS"in ft?z({},ft.ALLOWED_TAGS,Mr):Ot,Bt="ALLOWED_ATTR"in ft?z({},ft.ALLOWED_ATTR,Mr):we,zn="ALLOWED_NAMESPACES"in ft?z({},ft.ALLOWED_NAMESPACES,W):Qo,Eo="ADD_URI_SAFE_ATTR"in ft?z(V(Oo),ft.ADD_URI_SAFE_ATTR,Mr):Oo,io="ADD_DATA_URI_TAGS"in ft?z(V(pn),ft.ADD_DATA_URI_TAGS,Mr):pn,Gr="FORBID_CONTENTS"in ft?z({},ft.FORBID_CONTENTS,Mr):Xo,_e="FORBID_TAGS"in ft?z({},ft.FORBID_TAGS,Mr):{},fr="FORBID_ATTR"in ft?z({},ft.FORBID_ATTR,Mr):{},hn="USE_PROFILES"in ft?ft.USE_PROFILES:!1,lr=ft.ALLOW_ARIA_ATTR!==!1,Qe=ft.ALLOW_DATA_ATTR!==!1,Zt=ft.ALLOW_UNKNOWN_PROTOCOLS||!1,rr=ft.ALLOW_SELF_CLOSE_IN_ATTR!==!1,gr=ft.SAFE_FOR_TEMPLATES||!1,Vr=ft.SAFE_FOR_XML!==!1,Rr=ft.WHOLE_DOCUMENT||!1,Pr=ft.RETURN_DOM||!1,wn=ft.RETURN_DOM_FRAGMENT||!1,Br=ft.RETURN_TRUSTED_TYPE||!1,vr=ft.FORCE_BODY||!1,Hr=ft.SANITIZE_DOM!==!1,En=ft.SANITIZE_NAMED_PROPS||!1,sn=ft.KEEP_CONTENT!==!1,wr=ft.IN_PLACE||!1,Qt=ft.ALLOWED_URI_REGEXP||Qt,or=ft.NAMESPACE||Xr,ae=ft.CUSTOM_ELEMENT_HANDLING||{},ft.CUSTOM_ELEMENT_HANDLING&&Tn(ft.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(ae.tagNameCheck=ft.CUSTOM_ELEMENT_HANDLING.tagNameCheck),ft.CUSTOM_ELEMENT_HANDLING&&Tn(ft.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(ae.attributeNameCheck=ft.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),ft.CUSTOM_ELEMENT_HANDLING&&typeof ft.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements=="boolean"&&(ae.allowCustomizedBuiltInElements=ft.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),gr&&(Qe=!1),wn&&(Pr=!0),hn&&(It=z({},s(bt)),Bt=[],hn.html===!0&&(z(It,G),z(Bt,gt)),hn.svg===!0&&(z(It,Q),z(Bt,pt),z(Bt,xe)),hn.svgFilters===!0&&(z(It,ct),z(Bt,pt),z(Bt,xe)),hn.mathMl===!0&&(z(It,ht),z(Bt,Ut),z(Bt,xe))),ft.ADD_TAGS&&(It===Ot&&(It=V(It)),z(It,ft.ADD_TAGS,Mr)),ft.ADD_ATTR&&(Bt===we&&(Bt=V(Bt)),z(Bt,ft.ADD_ATTR,Mr)),ft.ADD_URI_SAFE_ATTR&&z(Eo,ft.ADD_URI_SAFE_ATTR,Mr),ft.FORBID_CONTENTS&&(Gr===Xo&&(Gr=V(Gr)),z(Gr,ft.FORBID_CONTENTS,Mr)),sn&&(It["#text"]=!0),Rr&&z(It,["html","head","body"]),It.table&&(z(It,["tbody"]),delete _e.tbody),I&&I(ft),On=ft)},Ao=z({},["mi","mo","mn","ms","mtext"]),tn=z({},["foreignobject","annotation-xml"]),Ya=z({},["title","style","font","a","script"]),Po=z({},Q);z(Po,ct),z(Po,rt);var fn=z({},ht);z(fn,vt);var Fo=function(ft){var Jt=ut(ft);(!Jt||!Jt.tagName)&&(Jt={namespaceURI:or,tagName:"template"});var ye=L(ft.tagName),Ge=L(Jt.tagName);return zn[ft.namespaceURI]?ft.namespaceURI===To?Jt.namespaceURI===Xr?ye==="svg":Jt.namespaceURI===kr?ye==="svg"&&(Ge==="annotation-xml"||Ao[Ge]):!!Po[ye]:ft.namespaceURI===kr?Jt.namespaceURI===Xr?ye==="math":Jt.namespaceURI===To?ye==="math"&&tn[Ge]:!!fn[ye]:ft.namespaceURI===Xr?Jt.namespaceURI===To&&!tn[Ge]||Jt.namespaceURI===kr&&!Ao[Ge]?!1:!fn[ye]&&(Ya[ye]||!Po[ye]):!!(Qn==="application/xhtml+xml"&&zn[ft.namespaceURI]):!1},Qr=function(ft){D(Mt.removed,{element:ft});try{ft.parentNode.removeChild(ft)}catch(Jt){try{ft.outerHTML=Kt}catch(ye){ft.remove()}}},Fr=function(ft,Jt){try{D(Mt.removed,{attribute:Jt.getAttributeNode(ft),from:Jt})}catch(ye){D(Mt.removed,{attribute:null,from:Jt})}if(Jt.removeAttribute(ft),ft==="is"&&!Bt[ft])if(Pr||wn)try{Qr(Jt)}catch(ye){}else try{Jt.setAttribute(ft,"")}catch(ye){}},pa=function(ft){var Jt,ye;if(vr)ft=""+ft;else{var Ge=K(ft,/^[\r\n\t ]+/);ye=Ge&&Ge[0]}Qn==="application/xhtml+xml"&&or===Xr&&(ft=''+ft+"");var jr=Pt?Pt.createHTML(ft):ft;if(or===Xr)try{Jt=new Fe().parseFromString(jr,Qn)}catch(Er){}if(!Jt||!Jt.documentElement){Jt=le.createDocument(or,"template",null);try{Jt.documentElement.innerHTML=Io?Kt:jr}catch(Er){}}var Ur=Jt.body||Jt.documentElement;return ft&&ye&&Ur.insertBefore(ge.createTextNode(ye),Ur.childNodes[0]||null),or===Xr?Ve.call(Jt,Rr?"html":"body")[0]:Rr?Jt.documentElement:Ur},Xa=function(ft){return Re.call(ft.ownerDocument||ft,ft,Rt.SHOW_ELEMENT|Rt.SHOW_COMMENT|Rt.SHOW_TEXT|Rt.SHOW_PROCESSING_INSTRUCTION|Rt.SHOW_CDATA_SECTION,null,!1)},Co=function(ft){return m(ft,Ke)&&(typeof ft.__depth!="undefined"&&typeof ft.__depth!="number"||typeof ft.__removalCount!="undefined"&&typeof ft.__removalCount!="number"||typeof ft.nodeName!="string"||typeof ft.textContent!="string"||typeof ft.removeChild!="function"||!m(ft.attributes,Ie)||typeof ft.removeAttribute!="function"||typeof ft.setAttribute!="function"||typeof ft.namespaceURI!="string"||typeof ft.insertBefore!="function"||typeof ft.hasChildNodes!="function")},Wn=function(ft){return t(de)==="object"?m(ft,de):ft&&t(ft)==="object"&&typeof ft.nodeType=="number"&&typeof ft.nodeName=="string"},en=function(ft,Jt,ye){Le[ft]&&P(Le[ft],function(Ge){Ge.call(Mt,Jt,ye,On)})},$n=function(ft){var Jt;if(en("beforeSanitizeElements",ft,null),Co(ft)||X(/[\u0080-\uFFFF]/,ft.nodeName))return Qr(ft),!0;var ye=Mr(ft.nodeName);if(en("uponSanitizeElement",ft,{tagName:ye,allowedTags:It}),ft.hasChildNodes()&&!Wn(ft.firstElementChild)&&(!Wn(ft.content)||!Wn(ft.content.firstElementChild))&&X(/<[/\w]/g,ft.innerHTML)&&X(/<[/\w]/g,ft.textContent)||ye==="select"&&X(/